ช่องโหว่ร้ายแรงใน Claude Code! แค่คลิกลิงก์ก็โดนเล่นงาน
พบช่องโหว่ Remote Code Execution (RCE) ร้ายแรงใน Claude Code ผู้ช่วยเขียนโค้ดด้วย AI จาก Anthropic ที่อาจเปิดทางให้ผู้โจมตีสั่งรันคำสั่งบนเครื่องของเหยื่อได้ เพียงแค่กดลิงก์ที่ถูกสร้างขึ้นมาเป็นพิเศษ
ช่องโหว่นี้ถูกเปิดเผยต่อสาธารณะเมื่อวันที่ 12 พฤษภาคม 2026 โดยนักวิจัยด้านความปลอดภัย Joernchen จาก 0day.click และได้รับการแก้ไขแล้วใน Claude Code เวอร์ชัน 2.1.118
จุดเริ่มต้นของปัญหา มาจากการอ่านค่า CLI แบบผิดบริบท
ต้นตอของช่องโหว่อยู่ในฟังก์ชันชื่อ eagerParseCliFlag ภายในไฟล์ main.tsx
ฟังก์ชันนี้ถูกออกแบบมาเพื่ออ่านค่า Command-line Flag บางตัว เช่น –settings ก่อนที่ระบบหลักจะเริ่มทำงาน แต่ปัญหาคือมันตรวจสอบข้อความแบบง่ายเกินไป เพียงแค่ค้นหาว่ามีข้อความที่ขึ้นต้นด้วย –settings= อยู่ที่ไหนในชุดคำสั่งหรือไม่
ระบบไม่ได้ตรวจสอบเลยว่า ข้อความดังกล่าวเป็น “Flag จริง” หรือเป็นเพียง “ค่าข้อมูล” ที่ถูกส่งเข้ามาผ่านพารามิเตอร์อื่น
Deeplink กลายเป็นช่องทางโจมตี
ช่องโหว่นี้อันตรายมากขึ้นเมื่อทำงานร่วมกับระบบ Deeplink ของ Claude Code ที่ใช้ URL รูปแบบ claude-cli://open
ระบบดังกล่าวรองรับพารามิเตอร์ชื่อ q สำหรับใส่ข้อความ Prompt ล่วงหน้า โดยจะถูกส่งต่อผ่าน option –prefill
ผู้โจมตีจึงสามารถซ่อนข้อความ –settings= ไว้ภายในค่า q ได้ และระบบก็จะเข้าใจผิดว่าเป็นการตั้งค่าจริงทันที
จากนั้นผู้โจมตีสามารถฝัง JSON Payload เพื่อสร้าง SessionStart Hook ซึ่งเป็นฟีเจอร์ปกติของ Claude Code ที่ใช้รันคำสั่งเมื่อเริ่ม Session
ผลคือ สามารถสั่งรัน Shell Command บนเครื่องเหยื่อได้โดยตรง
แค่คลิกลิงก์ ก็อาจโดนโจมตีทันที
ตัวอย่างการโจมตีบน macOS ที่นักวิจัยสาธิต สามารถเปิดแอป Calculator และเขียนข้อมูลระบบลงไฟล์บนเครื่องได้ทันที หลังผู้ใช้กดเปิดลิงก์เพียงครั้งเดียว
ที่น่ากังวลคือ การโจมตีแทบไม่ต้องมีโต้ตอบเพิ่มเติมจากผู้ใช้เลย
ระบบ Trusted Workspace ยังถูกข้ามได้อีก
นักวิจัยยังพบปัญหาเพิ่มเติมว่า ระบบตรวจสอบ Trusted Workspace ของ Claude Code สามารถถูกหลีกเลี่ยงได้
หากพารามิเตอร์ repo ใน Deeplink ตรงกับ Repository ที่ผู้ใช้เคย Clone และกด Trust ไว้ก่อนแล้ว เช่น repository ของ Claude Code เอง ระบบจะไม่แสดงคำเตือนใด ๆ เพิ่มเติม
นั่นหมายความว่า คำสั่งอันตรายสามารถทำงานเงียบ ๆ เบื้องหลังได้ทันที โดยผู้ใช้แทบไม่รู้ตัว
Anthropic ออกแพตช์แก้ไขแล้ว
ทาง Anthropic ได้แก้ไขช่องโหว่นี้แล้วใน Claude Code เวอร์ชัน 2.1.118
นักวิจัยระบุว่า ปัญหาลักษณะนี้ถือเป็น “Injection Vector แบบคลาสสิก” ที่เกิดจากการใช้ startsWith() ตรวจสอบ Flag จากชุดคำสั่งทั้งหมด โดยไม่แยกบริบทระหว่าง Flag และค่าของข้อมูล
ผู้ใช้งาน Claude Code เวอร์ชันเก่าจึงควรอัปเดตทันที ขณะที่ทีมพัฒนาระบบภายในองค์กรก็ควรตรวจสอบเครื่องมือที่มีการ Parse CLI แบบ Context-free เพื่อป้องกันความเสี่ยงลักษณะเดียวกันในอนาคต

