DEV Community

Cover image for Plugin4Shell ช่องโหว่ Zero-click ใน AI Coding Agent 4 ตัวที่คุณใช้อยู่
Nokka
Nokka

Posted on AI-assisted

Plugin4Shell ช่องโหว่ Zero-click ใน AI Coding Agent 4 ตัวที่คุณใช้อยู่

โดย Nokka (นก-กา) | 22 กันยายน 2569

บทความนี้เขียนโดย AI (โมเดล glm-5.3 ของผู้ให้บริการ ollama-cloud) ผ่าน Hermes Agent จาก Nous Research ตรวจสอบและเรียบเรียงโดย Nokka


ถ้าคุณใช้ Claude Code, Codex, GitHub Copilot หรือ Gemini CLI แล้วเคยติดตั้งปลั๊กอินจาก marketplace เพราะเชื่อว่าระบบรีวิวกับกลไกล็อกเวอร์ชันจะปกป้องคุณ ข่าวชุดนี้ควรอ่านให้จบ AIR Security ห้องวิจัยความปลอดภัยเปิดเผยช่องโหว่ชื่อ Plugin4Shell ซึ่งทำให้ปลั๊กอินที่ผ่านการตรวจสอบและถูกล็อกเวอร์ชันไว้แล้ว ถูกสลับเป็นโค้ดอันตรายได้เงียบ ๆ โดยผู้ใช้ไม่ต้องทำอะไรเลยแม้แต่คลิกเดียว [1]

งานวิจัยนี้น่าสนใจกว่าช่องโหว่ทั่วไปตรงที่มันไม่ได้โจมตีคนใช้ปลั๊กอินอย่างไม่ระวัง แต่โจมตีคนที่ทำทุกอย่างถูกต้องแล้ว: ติดตั้งจาก marketplace ที่เชื่อได้ รอผ่านการรีวิว และมีการล็อกเวอร์ชันตามแบบที่โมเดลความปลอดภัยสั่ง [2]

ภาพประกอบ: กลไก SHA pinning bypass ของ Plugin4Shell

กลไกที่หักได้: ล็อกเวอร์ชันด้วย SHA แต่ไม่ตรวจว่าได้ของจริง

ระบบรีวิวปลั๊กอินทำงานแบบนี้: marketplace ตรวจโค้ดแล้วกำหนดหมายเลข commit (SHA hash) ของเวอร์ชันที่ผ่านการตรวจ ตัว agent จะล็อกไว้ที่หมายเลขนี้ ทุกครั้งที่ติดตั้งหรืออัปเดตจะดึง commit ที่ตรงกับหมายเลขเท่านั้น ทฤษฎีคือแม้เจ้าของ repo จะเปลี่ยนโค้ดทีหลัง ผู้ใช้ก็ไม่มีทางได้ของที่ไม่ได้รีวิว

ช่องโหว่อยู่ตรงประโยคสุดท้ายนั้นเอง: ตัว agent สั่ง checkout หมายเลขนั้น แต่ไม่เคยตรวจย้อนว่าสิ่งที่ได้มาตรงกับหมายเลขจริงไหม [1] [3]

AIR เรียกสิ่งที่เจอว่า "SHA-pinning bypass" มีสองเส้นทางที่ทำงานได้จริง:

  • เส้นทางแรก (Claude Code · Codex · Copilot): git มีพฤติกรรมที่ว่า เมื่อชื่อสิ่งที่ขอ (เช่น branch) ชนกับหมายเลข commit git จะเลือก branch ก่อน ผู้โจมตีที่คุม repo จึงสร้าง branch ที่ตั้งชื่อเป็นตัวเลข hash แบบเดียวกับที่ถูกล็อกไว้ แล้วยัดโค้ดอันตรายเข้าไป ตอน agent สั่ง checkout มันเลยได้ branch ปลอม ไม่ใช่ commit จริง
  • เส้นทางที่สอง (Gemini CLI): กลไกแยกต่างหากเกี่ยวกับวิธีดึงและ checkout แต่ผลลัพธ์เหมือนกันคือได้โค้ดที่ต้องการ [2]

จุดที่ทำให้มันเป็น "zero-click" ไม่ใช่แค่ตอนติดตั้งครั้งแรก: ใน Claude Code และ Codex การอัปเดตเบื้องหลังเป็นค่าเริ่มต้น พอ marketplace ขยับหมายเลข SHA ที่ล็อกไว้ การ swap ก็ไปถึงทุกเครื่องที่ติดตั้งไว้แล้วโดยผู้ใช้ไม่ต้องแตะอะไร [2]

ข้อจำกัดที่ควรรู้: ทั้งหมดนี้ต้องทำบน git host ที่อนุญาตให้ตั้งชื่อ branch เป็นตัวเลข hash ได้ ซึ่ง GitHub ปฏิเสธการตั้งชื่อ 40 ตัวอักษร hex ตรง ๆ แต่บาง host เช่น Bitbucket และ git server ที่ self-host อนุญาต [2]

สองสถานการณ์โจมตีที่นักวิจัยพิสูจน์แล้วว่าเกิดได้จริง

สถานการณ์ที่หนึ่ง: ปล่อนเหยื่อมั่วก่อนแล้วค่อยกลับมาเปลี่ยน

จุดที่ทำให้งานวิจัยนี้หนักแน่นคือมันไม่ได้เดา แต่มีสถิติจากงานก่อนหน้าของทีมเดียวกันรองรับ

ผู้โจมตีเผยแพร่ปลั๊กอินที่ทำงานดีจริง ๆ ผ่านการรีวิว คนใช้กันมาก แล้วค่อยเปลี่ยนเป็นของอันตรายทีหลัง AIR เคยทดสอบแนวนี้ในงานก่อนหน้า ปลั๊กอินที่พวกเขาสร้างกระจายไปถึง 26,000 agent ก่อนถูกดึงออก [2]

สถานการณ์ที่สอง: เข้ายึด repo ของคนอื่นที่คนไว้ใจอยู่แล้ว

ในงานที่ชื่อ SkillJacking ทีมเดียวกันพบว่ามี 925 skill ที่คนใช้งานจริงอยู่ถูกยึดครองจากเจ้าของเดิมไปแล้ว กระจายถึง 134,000 agent [2] [3]

ประโยคสรุปของนักวิจัยเรื่องนี้กระชับมาก: การยึด repo เกิดขึ้นจริงระดับ mass แล้ว Plugin4Shell คือสิ่งที่เอาชนะกลไกที่สร้างมาเพื่อกั้นมัน

สถานะการแก้: แก้ 2 · ค้าง 1 · ทิ้งระบบ 1

ผู้วิจัยพบช่องโหว่เมื่อเดือนพฤษภาคม พร้อม PoC ใช้งานได้จริงทั้งสี่ตัว แล้วแจ้งผู้ผลิตทุกรายในเดือนถัดมา [2] [4] คำตอบของแต่ละเจ้าต่างกันอย่างมีนัยสำคัญ:

  • Anthropic แก้ Claude Code เวอร์ชัน 2.1.179
  • OpenAI แก้ Codex เวอร์ชัน 0.146.0
  • Microsoft ยังไม่ปล่อยแพตช์สำหรับ Copilot — ผู้ใช้ไม่มีตัวแก้ในตอนนี้
  • Google เลือกทางที่ต่างออกไปคือประกาศเลิกพัฒนา Gemini CLI ไปเลยแทนที่จะแก้ ทุกเครื่องที่ติดตั้งไว้จึงเปิดรับความเสี่ยงต่อเรื่อย ๆ โดยคำแนะนำทางการคือย้ายไปใช้ agent ใหม่ชื่อ Antigravity ที่สร้างโดยไม่มีระบบ plugin pinning แบบเดิม [2]

ข้อที่ต้องเน้นคือการตรวจเกิดที่ตัว agent ไม่ใช่ที่ marketplace ไม่มี marketplace ไหนแก้ให้เราได้เอง ทางเดียวที่สมบูรณ์คืออัปเดตตัว agent ที่มีแพตช์

ทำอย่างไรได้ตอนนี้: เช็กลิสต์ 4 ข้อ

  • ถ้าใช้ Claude Code ให้อัปเดตไปที่ 2.1.179 ขึ้นไป ถ้าใช้ Codex ให้อัปเดตไปที่ 0.146.0 ขึ้นไป
  • ถ้าใช้ Copilot ควรติดตามประกาศแพตช์ของ Microsoft ให้ใกล้ชิด และระหว่างนี้ลดการติดตั้งปลั๊กอินใหม่จากแหล่งที่ไม่คุ้นเคย
  • ถ้าใช้ Gemini CLI ควรพิจารณาย้ายไป agent ตัวใหม่ตามคำแนะนำทางการ เพราะตัวเดิมจะไม่มีแพตช์แล้ว
  • ทุกกรณี ให้ตรวจรายการปลั๊กอินที่ติดตั้งไว้ว่ามาจาก repo ที่เจ้าของยังคุมอยู่จริงไหม โดยเฉพาะปลั๊กอินเก่าที่ไม่มีการอัปเดตมานาน เพราะงาน SkillJacking ชี้ว่า repo ที่ถูกยึดส่วนใหญ่เป็นแบบนี้

ผมมองว่าเรื่องนี้สะท้อนบางอย่างที่ใหญ่กว่าตัวช่องโหว่เอง ระบบนิเวศของ AI agent กำลังซ้ำรอย supply chain ของซอฟต์แวร์จริง: ช่วงแรกทุกคนเร่งปล่อยฟีเจอร์ ช่วงถัดมาความเชื่อใจกลายเป็นช่องทางโจมตี และช่วงสุดท้ายทุกฝ่ายต้องยอมรับว่าเส้นทางจาก "รีวิวแล้ว" ถึง "ปลอดภัยจริง" ต้องมีการตรวจที่ปลายทางด้วย ไม่ใช่แค่ต้นทาง ปลั๊กอินและ skill คือ npm ของยุคใหม่ และบทเรียนเดิมกำลังกลับมาเร็วกว่าที่ใครคาด


เขียนโดย Nokka (นก-กา) นักเขียนอิสระแกะรอยเทคโนโลยี สนใจเรื่องความปลอดภัยของ AI agent และการทำคอนเทนต์ให้คนหาเจอมาตลอด ถ้าชอบบทความแนว AI แบบอิงหลักฐานจริง ติดตามได้ที่ dev.to/sarantoon

อ้างอิง:

[1] AIR Security. "Plugin4Shell: Zero Click RCE Vulnerability found in top 4 most popular coding agents, millions of agents affected." air.security/blog-posts/plugin4shell, กันยายน 2026. https://www.air.security/blog-posts/plugin4shell

[2] Sinisa Markovic. "Zero-click RCE vulnerability hit four major AI coding agents, two remain unpatched." Help Net Security, 18 กันยายน 2026. https://www.helpnetsecurity.com/2026/09/18/plugin4shell-ai-coding-agents-vulnerability/

[3] The Hacker News. "Plugin4Shell Lets Repository Owners Swap Pinned Plugin Code Across Four AI Coding Agents." กันยายน 2026. https://thehackernews.com/2026/09/plugin4shell-lets-repository-owners.html

[4] Cyber Security News. "Plugin4Shell Zero-Click RCE Hits Claude Code, Codex, Copilot and Gemini CLI." กันยายน 2026. https://cybersecuritynews.com/plugin4shell-zero-click-rce/

Top comments (0)