
พบช่องโหว่ Remote Code Execution (RCE) ในเครื่องมือ Claude Code CLI ของ Anthropic ซึ่งช่วยให้ผู้โจมตีสามารถรันคำสั่งใด ๆ บนเครื่องของเหยื่อ โดยการหลอกให้เหยื่อคลิก Deeplinks ที่ถูกสร้างขึ้นมาเป็นพิเศษ
ช่องโหว่ดังกล่าว ซึ่งได้รับการแก้ไขแล้วใน Claude Code เวอร์ชัน 2.1.118 โดยมีสาเหตุมาจาก Command-line argument parser ที่ขาดการตรวจสอบอย่างรัดกุม ส่งผลให้ผู้ไม่หวังดีสามารถโจมตีผ่านตัวจัดการ Deeplinks "claude-cli://" ของโปรแกรมได้
Joernchen นักวิจัยด้านความปลอดภัยจากเว็บไซต์ 0day.click เป็นผู้ค้นพบช่องโหว่นี้ ระหว่างที่กำลังตรวจสอบ Source code ของ Claude Code
ช่องโหว่ดังกล่าวเกิดจาก eagerParseCliFlag ซึ่งเป็นฟังก์ชันในไฟล์ main.tsx ที่ถูกออกแบบมาเพื่อประมวลผลคำสั่งสำคัญ เช่น --settings ก่อนที่ Main initialization routine จะเริ่มทำงาน ซึ่งปัญหาคือ ฟังก์ชัน eagerParseCliFlag จะสแกน Command-line argument ทั้งหมดเพื่อหาข้อความที่ขึ้นต้นด้วย --settings= โดยไม่ได้ตรวจสอบว่าข้อความนั้นเป็นคำสั่งจริง ๆ หรือเป็นแค่ค่า Value ที่ถูกส่งต่อไปยังคำสั่งอื่น การแยกส่วนคำสั่งแบบ Context-blind parsing นี้เอง ส่งผลให้เกิดช่องทางในการทำ Argument Injection ที่อันตรายได้
ตัวจัดการ deeplink ของ Claude Code จะใช้ตัวเลือก --prefill เพื่อใส่ content ล่วงหน้าลงใน Prompt ของผู้ใช้ โดยดึงข้อมูลมาจากพารามิเตอร์ q ของ deeplink นั้น และเนื่องจาก Eager parser ไม่ได้แยกความแตกต่างระหว่างคำสั่ง กับค่า Flag arguments ดังนั้นข้อความ --settings=... ที่ถูกฝังอยู่ภายในค่าของพารามิเตอร์ q จึงถูกมองว่าเป็นคำสั่งในการเปลี่ยนค่า Config ที่ถูกต้อง และทำงานไปโดยไม่มีการแจ้งเตือน
การเปลี่ยน Claude Code Hooks ให้เป็นเครื่องมือโจมตี
Claude Code รองรับการตั้งค่า Hooks ที่มีประสิทธิภาพสูง ซึ่งช่วยให้สามารถรันคำสั่งต่าง ๆ ได้โดยอัตโนมัติเมื่อเกิดเหตุการณ์ในแต่ละช่วงของเซสชันที่กำหนดไว้ โดยผู้โจมตีสามารถใช้ประโยชน์จากช่องโหว่ในการวิเคราะห์ข้อมูลเพื่อแทรกโค้ด SessionStart ที่เป็นอันตรายผ่าน URI ที่สร้างขึ้นเป็นพิเศษ
ตัวอย่าง URI:

โดยเมื่อเหยื่อเปิดลิงก์ดังกล่าว Claude Code จะเริ่มทำงานพร้อมกับการตั้งค่าที่ผู้โจมตีป้อนเข้ามา และคำสั่งที่ถูกแทรกจะเริ่มทำงานทันทีเมื่อเริ่มเซสชัน โดยที่ผู้ใช้ไม่จำเป็นต้องโต้ตอบใด ๆ กับระบบ นอกจากการคลิกลิงก์เท่านั้น
ที่ร้ายแรงยิ่งกว่านั้นคือ ช่องโหว่นี้ยังทำให้สามารถ bypass ขั้นตอนการตรวจสอบความน่าเชื่อถือของ workspace ของ Claude Code ได้อย่างสมบูรณ์
Joernchen ระบุว่า เพียงตั้งค่าพารามิเตอร์ repo ของ deeplink ให้เป็น repository ที่เหยื่อเคยโคลน และตั้งค่า trusted ไว้ก่อนหน้านี้แล้ว เช่น anthropics หรือ claude-code เอง จะทำให้การดำเนินการเกิดขึ้นอย่างเงียบ ๆ โดยไม่มีการแสดงข้อความเตือนใด ๆ ต่อผู้ใช้
คำแนะนำ และแนวทางการแก้ไข
Anthropic ได้ดำเนินการแก้ไขช่องโหว่ดังกล่าวใน Claude Code เวอร์ชัน 2.1.118 แล้ว โดยแนวทางการแก้ไขประกอบด้วยการใช้ Context-aware argument parsing ซึ่งสามารถแยกความแตกต่างระหว่างคำสั่ง CLI flags กับค่าของคำสั่งนั้น ๆ ได้อย่างถูกต้อง ส่งผลให้ช่องทางในการทำ Injection ไม่สามารถใช้งานได้ ทั้งนี้ จึงขอแนะนำอย่างยิ่งให้ผู้ใช้ที่ยังคงใช้งานเวอร์ชันเก่าอยู่ ดำเนินการอัปเดตในทันที
นักวิจัยตั้งข้อสังเกตว่า รูปแบบ Anti-pattern อย่างการใช้ฟังก์ชัน startsWith กับอาร์เรย์ process.argv โดยตรงนั้น เป็นความผิดพลาดที่สามารถพบเจอได้ทั่วไป โดยแอปพลิเคชันใดก็ตามที่ทำการ Parse argument แบบ Eager และ Context-blind จะต้องเผชิญกับความเสี่ยงในการถูก Injection ในลักษณะเดียวกันนี้ โดยเฉพาะอย่างยิ่งเมื่อมีการใช้งาน Deeplink handlers ร่วมด้วย
ที่มา : cybersecuritynews

You must be logged in to post a comment.