สรุปสั้น
บริษัท Pillar Security เปิดเผยช่องโหว่ใน OpenCode เอเจนต์เขียนโค้ด AI แบบโอเพนซอร์สของบริษัท Anomaly ที่ให้เซิร์ฟเวอร์ MCP (Model Context Protocol) อันตรายหรือถูกยึด รันคำสั่งบนเครื่องของนักพัฒนาที่ใช้ Windows หรือ WSL ได้ในสิทธิ์ของนักพัฒนาเอง ช่องโหว่อยู่ในขั้นตอนล็อกอิน OAuth ที่เซิร์ฟเวอร์ MCP เป็นผู้กำหนดที่อยู่หน้าล็อกอินเอง แล้ว OpenCode ส่งที่อยู่นั้นให้ตัวช่วยเปิดเบราว์เซอร์ซึ่งประกอบเป็นคำสั่ง PowerShell โดยไม่ escape ที่อยู่ที่ซ่อนคำสั่ง PowerShell ไว้จึงถูกรันทันที Pillar ประเมินเป็นระดับวิกฤต เสนอคะแนน 9.8 จาก 10 ส่วน macOS และ Linux ไม่กระทบ
ประเด็นที่น่ากังวลไม่แพ้ตัวช่องโหว่คือวิธีที่ผู้พัฒนาจัดการ Anomaly แก้ปัญหาในเวอร์ชัน 1.18.33 เมื่อวันที่ 28 กันยายน 2569 แต่ไม่ขอ CVE ไม่ออก security advisory และ pull request ที่แก้ก็เขียนว่าเป็นแค่การ refactor โค้ดเปิดเบราว์เซอร์ บริษัทให้เหตุผลว่าเซิร์ฟเวอร์ MCP ที่ผู้ใช้ตั้งค่าเองอยู่ “นอกขอบเขตความไว้วางใจ” ผลคือสแกนเนอร์ช่องโหว่และระบบแจ้งเตือน dependency จะไม่แจ้งเตือน OpenCode เวอร์ชัน 1.0.137 ถึง 1.18.32 ที่ยังเสี่ยงอยู่ องค์กรต้องตรวจเวอร์ชันเอง ขณะนี้ยังไม่พบการนำไปใช้โจมตีจริง
รายละเอียดข่าว
เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 22 ตุลาคม 2569 ว่าพบช่องโหว่ใน OpenCode ที่เปิดทางให้เซิร์ฟเวอร์ MCP อันตรายรันโค้ดบนเครื่อง Windows หรือ WSL ของนักพัฒนาในจังหวะที่นักพัฒนาล็อกอินเข้าเซิร์ฟเวอร์นั้น OpenCode เชื่อมต่อเซิร์ฟเวอร์ MCP เพื่อเพิ่มเครื่องมือภายนอกให้เอเจนต์ใช้ และเซิร์ฟเวอร์ MCP แบบรีโมตที่ต้องยืนยันตัวตนจะใช้ OAuth ซึ่งตัวเซิร์ฟเวอร์เองเป็นผู้ส่ง “authorization endpoint” หรือที่อยู่หน้าล็อกอินที่ผู้ใช้จะถูกพาไป
ไทม์ไลน์การเปิดเผยเริ่มเมื่อ Pillar รายงานช่องโหว่แบบเป็นความลับต่อ Anomaly ตั้งแต่วันที่ 29 สิงหาคม 2569 ต่อมาเมื่อขอให้บริษัทพิจารณาขอ CVE ก็ได้คำตอบว่าเซิร์ฟเวอร์ MCP อันตรายอยู่นอก threat model ของ OpenCode Pillar จึงเปิดเผยรายละเอียดเองเมื่อวันที่ 19 ตุลาคม 2569 ทั้งที่ Anomaly เคยออก advisory ให้ช่องโหว่รันโค้ดตัวอื่นของ OpenCode ในปีนี้ รวมถึงตัวที่แก้ในเดือนสิงหาคม (โพสต์ 09/227) การไม่ออก advisory ครั้งนี้จึงเป็นการตัดสินใจเฉพาะกรณีที่ผู้โจมตีอยู่ฝั่งเซิร์ฟเวอร์ MCP ช่องโหว่นี้ยังแยกจากเหตุระบบ Console ของ OpenCode ถูกเจาะที่เปิดเผยในช่วงเดียวกัน ซึ่งอาจทำให้คีย์ API ของ OpenAI, Anthropic และ Google ที่ผู้ใช้บางส่วนเก็บไว้รั่วไหล (โพสต์ 10/166)

รายละเอียดช่องโหว่
ต้นเหตุอยู่ที่แพ็กเกจ open ของนาย Sindre Sorhus ซึ่งเป็นตัวช่วยเปิดลิงก์ในเบราว์เซอร์ที่ใช้กันแพร่หลาย บน Windows และ WSL แพ็กเกจเวอร์ชันเก่าจะประกอบคำสั่ง PowerShell ล้อมรอบที่อยู่ที่ได้รับโดยไม่ escape ผู้โจมตีที่ควบคุมเซิร์ฟเวอร์ MCP จึงส่ง authorization endpoint ที่ฝังคำสั่ง PowerShell ไว้ได้ เมื่อ OpenCode ส่งที่อยู่นั้นให้ open คำสั่งก็ถูกรันบนเครื่องนักพัฒนาทันที ส่วน macOS และ Linux ไม่กระทบ เพราะ OpenCode เปิดเบราว์เซอร์บนระบบเหล่านั้นโดยไม่ผ่าน shell
ปัญหาพฤติกรรมของ open บน Windows เคยถูกรายงานว่าเสี่ยง command injection ตั้งแต่ปี 2566 และแก้แล้วในเวอร์ชัน 11 ของแพ็กเกจ แต่ OpenCode ยังใช้รุ่นเก่าอยู่ ช่องโหว่ลักษณะเดียวกันเคยพบมาแล้วในพร็อกซี mcp-remote เมื่อกรกฎาคม 2568 ซึ่ง authorization endpoint จากเซิร์ฟเวอร์อันตรายไหลเข้าบรรทัดคำสั่งได้เช่นกัน และได้หมายเลข CVE-2025-6514
เงื่อนไขการโจมตีมีข้อจำกัดชัดเจน ขั้นตอนเปิดเบราว์เซอร์จะทำงานเฉพาะเมื่อนักพัฒนาเริ่มล็อกอินเองด้วยคำสั่ง opencode mcp auth หรือส่งคำขอที่เทียบเท่า การแค่ตั้งค่าเซิร์ฟเวอร์ไว้หรือเปิด session ใช้งานตามปกติไม่ทำให้ช่องโหว่ทำงาน ผู้โจมตีต้องควบคุมเซิร์ฟเวอร์ MCP แบบรีโมตที่นักพัฒนาเพิ่มไว้แล้ว แต่เซิร์ฟเวอร์นั้นไม่จำเป็นต้องอันตรายตั้งแต่แรก เซิร์ฟเวอร์ที่ถูกยึดภายหลัง หรือโดเมนที่เปลี่ยนเจ้าของ ก็ส่งที่อยู่อันตรายแบบเดียวกันได้
การป้องกันมาตรฐานของช่องโหว่กลุ่มนี้คือตรวจว่าที่อยู่ขึ้นต้นด้วย HTTP หรือ HTTPS แต่ใช้ไม่ได้ในกรณีนี้ เพราะการโจมตีใช้ที่อยู่ HTTPS ธรรมดา OpenCode เพิ่มการตรวจนี้เข้าไปด้วย แต่สิ่งที่ปิดช่องโหว่จริงคือการอัปเดตแพ็กเกจ open เป็นเวอร์ชันที่แก้แล้ว
ผลกระทบ
นักพัฒนาที่ใช้ OpenCode บน Windows หรือ WSL และเชื่อมเซิร์ฟเวอร์ MCP แบบรีโมตที่ต้องล็อกอิน OAuth คือกลุ่มที่เสี่ยงโดยตรง โค้ดที่รันได้จะมีสิทธิ์เท่ากับนักพัฒนา ซึ่งมักเข้าถึงซอร์สโค้ด คีย์คลาวด์ โทเคน Git และ secret ของระบบ CI/CD ได้ เครื่องนักพัฒนาจึงเป็นจุดตั้งต้นที่ดีสำหรับการโจมตีห่วงโซ่อุปทาน
ผลกระทบในเชิงกระบวนการอาจหนักกว่าตัวช่องโหว่ เมื่อไม่มี CVE เครื่องมือบริหารช่องโหว่และ SBOM ขององค์กรจะไม่เห็นความเสี่ยงนี้เลย ทีมความปลอดภัยที่พึ่งสแกนเนอร์อย่างเดียวจะไม่รู้ว่ามีเครื่องที่ต้องอัปเดต ข้อโต้แย้งระหว่าง Pillar กับ Anomaly ยังสะท้อนคำถามที่วงการ AI agent ยังไม่มีคำตอบร่วมกัน ว่าเซิร์ฟเวอร์ MCP ที่ผู้ใช้เพิ่มเองควรถือเป็นแหล่งที่เชื่อถือได้หรือไม่ ซึ่งสอดคล้องกับกระแสที่ผู้โจมตีหันมาใช้ MCP เป็นช่องทางเจาะเครื่องนักพัฒนามากขึ้น
คำแนะนำ
- อัปเดต OpenCode เป็นเวอร์ชัน 1.18.33 หรือใหม่กว่าบนทุกเครื่อง Windows และ WSL และตรวจเวอร์ชันโดยตรงด้วยคำสั่งของ OpenCode เพราะสแกนเนอร์ช่องโหว่จะไม่แจ้งเตือนเรื่องนี้
- รัน
opencode mcp listเพื่อดูเซิร์ฟเวอร์ MCP ที่ตั้งค่าไว้ แล้วลบเซิร์ฟเวอร์รีโมตที่ไม่ได้ตรวจสอบที่มาออกจากการตั้งค่า โดยเฉพาะถ้ายังอัปเดตไม่ได้ - หลีกเลี่ยงการรัน
opencode mcp authกับเซิร์ฟเวอร์ที่ไม่แน่ใจที่มาจนกว่าจะอัปเดตเสร็จ - ทำบัญชีรายชื่อเครื่องมือ AI สำหรับเขียนโค้ดและเซิร์ฟเวอร์ MCP ที่นักพัฒนาใช้ในองค์กร และกำหนด allowlist ของเซิร์ฟเวอร์ MCP ที่อนุญาต
- ใช้ EDR เฝ้าดู PowerShell ที่ถูกเรียกเป็น process ลูกของ OpenCode หรือ Node.js พร้อมอาร์กิวเมนต์ผิดปกติ เพื่อจับการโจมตีลักษณะนี้
