GitHub โดนเจาะ — Extension ปลอมใน VS Code Marketplace 18 นาที ขโมยรีโพ 3,800 ตัว
GitHub ยืนยันอย่างเป็นทางการเมื่อวันที่ 20 พฤษภาคม 2026 ว่ารีโพภายใน 3,800 ตัวถูกขโมย หลังจากเครื่องของพนักงานคนหนึ่งถูกเจาะ ผ่าน Nx Console ซึ่งเป็น VS Code extension ยอดนิยมเวอร์ชันที่ถูกฝัง malware กลุ่มผู้โจมตีคือ TeamPCP (ที่ Google Threat Intelligence Group เรียกว่า UNC6780) ซึ่งทำการเผยแพร่ extension ปลอมบน Visual Studio Marketplace ในช่วง 18 นาทีเท่านั้น ระหว่าง 12:30-12:48 UTC วันที่ 18 พฤษภาคม
แค่ 18 นาทีนั้นเพียงพอให้ credential stealer แพร่ไปยังเครื่องของนักพัฒนาทุกคนที่ติดตั้ง extension ในช่วงเวลานั้น — และเนื่องจาก VS Code (และ Cursor) เปิด auto-update เป็นค่า default ผู้ใช้ที่มี Nx Console ติดตั้งอยู่ก่อนแล้วก็โดน push update โดยอัตโนมัติ Alexis Wales หัวหน้า CISO ของ GitHub ยืนยันว่า “ยังไม่พบหลักฐานว่ามีผลกระทบต่อข้อมูลของลูกค้าที่เก็บนอกรีโพภายใน” แต่ยอมรับว่ารีโพภายในบางส่วนมี excerpt ของบทสนทนา support กับลูกค้าอยู่
เหยื่อไม่ได้มีแค่ GitHub
The Hacker News รายงานว่า TeamPCP ได้เริ่มแคมเปญนี้ตั้งแต่วันที่ 11 พฤษภาคม ด้วยการเจาะ TanStack npm ecosystem ทำให้ Mini Shai-Hulud worm แพร่ไปยัง 170 npm package และ 2 PyPI package ในแคมเปญเดียว CVE-2026-45321 ได้คะแนน CVSS 9.6
เหยื่อที่ยืนยันแล้วนอกจาก GitHub: OpenAI (พนักงาน 2 เครื่อง โดนขโมย credential จากรีโพ source code, OpenAI ประกาศจะ revoke macOS code-signing certificate เต็มจอ 12 มิถุนายน), Mistral AI (1 เครื่อง โดน TeamPCP ขู่ขอ 25,000 ดอลลาร์ Monero แลกกับการไม่ปล่อย source code 5 GB), European Commission, Grafana Labs และ Mercor Trend Micro ติดตามได้ว่ามีคลื่นโจมตีของ TeamPCP อย่างน้อย 7 ครั้งในปี 2026 ไล่ตั้งแต่ Aqua Trivy, Checkmarx KICS, LiteLLM, Bitwarden CLI, TanStack มาจนถึง Mistral AI
Claude Code config ก็เป็นเป้า
ที่น่าสนใจสำหรับ developer ไทยที่ใช้ AI tooling คือ payload ของ extension ปลอมนี้กำหนดเป้าเฉพาะเจาะจง — รวมถึง ~/.claude/settings.json ของ Claude Code นั่นแปลว่า developer ที่มีทั้ง Nx Console และ Claude Code ติดตั้งบนเครื่องเดียวกัน และอัพเดต Nx Console ในช่วง 18 นาทีนั้น มีโอกาสที่ API token, MCP server config, และข้อมูล credential ที่ Claude Code เก็บไว้ถูก exfiltrate
นอกจาก Claude config payload ยังกวาด 1Password vault, npm token, GitHub personal access token, AWS key — ครอบคลุมทุก credential ที่นักพัฒนาเก็บไว้บนเครื่อง
แค่ 18 นาทีก็พอแล้ว — สิ่งที่ระบบ security ปัจจุบันรับไม่ได้
OX Security ที่วิเคราะห์ malware นี้พบว่า extension ปลอมทำงาน “ดูปกติ” เหมือน Nx Console จริง แต่ตอน startup จะรัน shell command แอบดาวน์โหลด package จาก commit ที่ฝังไว้ในรีโพ nrwl/nx อย่างเป็นทางการ คำสั่งถูก disguise ให้ดูเหมือน MCP setup task ปกติ จึงไม่เรียกความสงสัย
Raphael Silva นักวิจัยของ Aikido สรุปประเด็นเชิงโครงสร้างไว้ตรงประเด็น: “Extension marketplace ทุกแห่งเปิด auto-update เป็น default เหตุผลฟังขึ้นในกรณีเดี่ยว เพราะ developer ส่วนใหญ่ไม่อัพเดตด้วยมือ ถ้าปิดไว้จะมีคนใช้เวอร์ชันที่มีช่องโหว่อยู่นาน แต่เมื่อมี publisher ที่ถูกเจาะ auto-update กลายเป็น push channel ตรงเข้าเครื่องทุกเครื่องที่รัน extension นั้น”
ระบบ endpoint detection แบบดั้งเดิมออกแบบมาเพื่อตรวจ binary executable ที่มี signature รู้จัก แต่ VS Code extension, npm package, PyPI distribution คือ plain-text interpreted artifact ที่ทำงานบน layer ต่างกันโดยสิ้นเชิง ไทม์ไลน์ 18 นาทีจาก publish ถึง credential harvest คือสิ่งที่เครื่องมือ security ปัจจุบันไม่ได้ออกแบบมารับมือ
มุมมอง AI Curator
เหตุการณ์นี้ไม่ใช่ “การแฮก GitHub” — มันคือ การล่มสลายของสมมติฐานความปลอดภัยทั้งระบบของอุตสาหกรรม developer tooling สมมติฐานเดิมคือ “ถ้า publisher verified และ extension มีคนใช้เยอะ ก็น่าจะปลอดภัย” Nx Console มี 2.2 ล้าน install และ verified publisher status — แต่นั่นไม่ช่วยเลย เมื่อ TeamPCP เจาะเครื่อง maintainer แล้ว push update ในนาม publisher ที่ verified
สำหรับทีม developer ไทย เรื่องนี้ควรเป็น wake-up call สามชั้น: (1) rotation token เป็นนิสัย — token ที่อายุยาว 90 วันคือ liability ในยุคที่ leak ใช้เวลา 18 นาที (2) ตรวจ extension ที่ติดตั้งบนเครื่อง โดยเฉพาะถ้ามี Nx Console — ใครที่ใช้ในช่วง 18-20 พฤษภาคม ควร rotate ทุก credential ทันที (3) แยก credential ที่ใช้กับ AI tool ออกจาก credential ที่ใช้กับ production — ถ้าใช้ Claude Code, Cursor, GitHub Copilot, ให้ใช้ API token แยกที่จำกัด scope
ลึกลงไปกว่านั้นคือคำถามเชิง architecture: เราจะออกแบบ developer tooling อย่างไรในยุคที่ supply chain attack เร็วกว่า detection คำตอบที่อุตสาหกรรมเริ่มเสนอ ได้แก่ hardware-backed credential storage (เช่น YubiKey, Secure Enclave), short-lived token (อายุชั่วโมงเดียว), sandbox isolation สำหรับ extension และ MCP server, รวมถึง waiting period ระหว่าง publish กับ install — ทั้งหมดนี้คือสิ่งที่ marketplace ปัจจุบันยังไม่มี
สำหรับ SEA ที่ตลาด developer ยังเล็กกว่าและ security tooling ยังตามหลัง บริษัทไทยที่จริงจังเรื่องนี้ควรเริ่มจาก policy ภายในเลย — ห้ามติดตั้ง VS Code/Cursor extension ที่ไม่ผ่าน internal review, บังคับใช้ password manager ที่แยก vault สำหรับ work, และซ้อมแผน incident response กรณี credential leak ภายใน 24 ชั่วโมง การรอ vendor ภายนอกแก้ปัญหาให้ ในยุคที่ attack กินเวลา 18 นาที คือสูตรของการเป็น case study ต่อไป
แหล่งข่าว
- The Hacker News — GitHub Internal Repositories Breached via Malicious Nx Console VS Code Extension
- Help Net Security — TeamPCP breached GitHub’s internal codebase via poisoned VS Code extension
- OX Security — Nx Console 18.95.0 Incident: How TeamPCP Breached GitHub
- VentureBeat — GitHub confirms 3,800 repos stolen through poisoned VS Code extension
อ่านเพิ่มในหมวด เครื่องมือนักพัฒนา
Betelgeuse รัน Qwen3.8 Flash Next ขนาด 68GB บน RTX 3060 กับแรม 16GB ส่วน Basalt วัดให้เห็นว่าเอนจินที่เร่งด้วยแฟล็กลัดทำให้โมเดลลืมของ
Betelgeuse ฟอร์ก llama.cpp ที่เปิดเมื่อ 31 ต.ค. ดึง expert จาก NVMe เข้า VRAM ตามต้องการ อ้าง 22 tok/s แบบไม่ทิ้ง expert แต่ README เตือนเองว่ายังทดลองและตัวเลขมาจากคนละรอบ วันเดียวกันผู้พัฒนา Basalt เผยผลวัดว่าแฟล็กเร่งความเร็วทำคุณภาพ Q8 ตกไปใกล้ Q2
กฎห้ามโคลนเกมของ Claude Code เริ่มกระทบงานจริง บริษัทรับทำเกมกระดานร้องงานลูกค้าหยุด แต่รายงานหลายชิ้นปนกับตัวกรองไซเบอร์คนละเรื่อง
ต่อจากที่เราพบกฎนี้ในไบนารี Claude Code ผู้ใช้เริ่มรายงานว่างานเชิงพาณิชย์ถูกปฏิเสธ และ Tom's Hardware กับ Mashable หยิบไปรายงาน แต่เมื่อไล่ issue ที่อ้างถึง พบว่าหลายรายการเกิดก่อนกฎจะมา จึงน่าจะเป็นตัวกรองด้านไซเบอร์ ส่วน Anthropic ยังไม่ชี้แจง
Claude Code ส่ง transcript ของ background agent ให้โมเดลทุก ~30 วินาทีเพื่อเขียนสถานะ 3–5 คำ ผู้วัดรายงานกินราว 16% และยังปิดแบบทางการไม่ได้
รายงานอิสระพบว่าฟีเจอร์ agent_summary ของ Claude Code ส่ง transcript เต็มของ background agent ไปถามสถานะทุก ~30 วินาที คิดเป็น 16.4% ของค่าใช้จ่ายในระบบของผู้วัด Issue เปิดมาตั้งแต่ ส.ค. ยังไม่มีสวิตช์ปิดที่รองรับ เราตรวจพบโค้ดนี้ใน 2.1.314 และพบกฎใหม่เรื่องเกมที่ไม่อยู่ใน changelog