ผมมอบกุญแจให้ Claude Code และหนอนคอมพิวเตอร์ก็ทำแบบเดียวกัน
AI coding agents ไม่ได้ถูก jailbreak พวกมันกำลังทำในสิ่งที่ถูกสร้างมาให้ทำอย่างถูกต้อง พวกมันใช้ข้อมูลประจำตัว (credentials) ของคุณในการรันคำสั่ง ปัญหาก็คือผู้โจมตีสามารถป้อนข้อมูล (input) เข้าไปได้
ช่องโหว่ที่พบเมื่อเร็วๆ นี้แสดงให้เห็นถึง 3 วิธีที่สิ่งนี้เกิดขึ้น
- หนอนในห่วงโซ่อุปทาน (The Supply Chain Worm)
หนอนที่ชื่อว่า Mini Shai-Hulud ได้โจมตีแพ็กเกจมากกว่า 170 รายการ มันไม่ได้แค่ขโมยกุญแจแล้วจากไป แต่มันเขียนตัวเองลงในไฟล์คอนฟิกของคุณ โดยซ่อนอยู่ใน
.vscode/tasks.jsonหรือ.claude/settings.jsonไฟล์เหล่านี้จะรันโค้ดโดยอัตโนมัติเมื่อคุณเปิดโฟลเดอร์หรือเริ่มเซสชัน แม้ว่าคุณจะลบแพ็กเกจที่เป็นอันตรายออกไปแล้ว แต่ hook ที่เป็นอันตรายก็จะยังคงค้างอยู่ในดิสก์ของคุณ
- หนอนในห่วงโซ่อุปทาน (The Supply Chain Worm)
หนอนที่ชื่อว่า Mini Shai-Hulud ได้โจมตีแพ็กเกจมากกว่า 170 รายการ มันไม่ได้แค่ขโมยกุญแจแล้วจากไป แต่มันเขียนตัวเองลงในไฟล์คอนฟิกของคุณ โดยซ่อนอยู่ใน
- การข้ามผ่าน Allowlist (The Allowlist Bypass)
ตัวแก้ไข Cursor ใช้ allowlist เพื่อทำให้การ auto-run ปลอดภัย ผู้โจมตีพบวิธีหลบเลี่ยงโดยใช้ shell built-ins เช่น
exportด้วยการใช้ prompt injection ผู้โจมตีสามารถทำให้ agent ตั้งค่า environment variable ที่ถูกวางยา (poisoned) ซึ่งจะทำให้คำสั่งที่ได้รับอนุญาตทำงานในลักษณะที่คุณไม่ได้ตั้งใจไว้ ระบบควบคุมความปลอดภัยล้มเหลวเพราะมันถูกสร้างขึ้นมาเพื่อมนุษย์ ไม่ใช่เครื่องจักร
- การข้ามผ่าน Allowlist (The Allowlist Bypass)
ตัวแก้ไข Cursor ใช้ allowlist เพื่อทำให้การ auto-run ปลอดภัย ผู้โจมตีพบวิธีหลบเลี่ยงโดยใช้ shell built-ins เช่น
- ข้อบกพร่องของโปรโตคอล (The Protocol Flaw) ตัว mcp-remote proxy มีช่องโหว่ command injection ที่ร้ายแรง หากคุณเชื่อมต่อกับ MCP server ที่เป็นอันตราย มันสามารถรันคำสั่งบนเครื่องของคุณได้ในระหว่างขั้นตอนการ handshake สิ่งนี้เกิดขึ้นเพราะ client เชื่อใจ server ที่มันพยายามเชื่อมต่อด้วย
ประเด็นหลักนั้นเรียบง่ายมาก coding agent กำลังลบเส้นแบ่งระหว่างข้อมูล (data) และคำสั่ง (commands) ออกไป LLM มองว่าคำสั่ง (instructions) และข้อมูลจากภายนอกเป็นสิ่งเดียวกัน ไม่มีขอบเขตระหว่างสิ่งที่คุณพูดกับสิ่งที่โลกพูดกับ agent
วิธีป้องกันตัวเอง:
- ใช้ short-lived tokens แทน long-lived keys ใน environment variables ของคุณ
- ปิดการ auto-run สำหรับงานใดก็ตามที่ต้องสัมผัสกับ secrets หรือ production
- คอยตรวจสอบไฟล์คอนฟิกของคุณ เช่น
.claude/settings.jsonเพื่อหาการเปลี่ยนแปลงที่ไม่คาดคิด - ให้ถือว่า provenance attestations เป็นเพียงหลักฐานของแหล่งที่มา ไม่ใช่หลักฐานของความปลอดภัย
- ระบุเวอร์ชันของ dependencies (pin) ด้วย hash ที่เฉพาะเจาะจง
ปฏิบัติต่อ AI agent ของคุณเหมือนกับ process อื่นๆ ที่มีสิทธิ์สูง (high-privilege process) มันจำเป็นต้องมีขอบเขตที่เข้มงวด
หากคุณรัน agent ในโหมด auto-run คุณมีวิธีตัดสินใจอย่างไรว่าเมื่อไหร่ควรปล่อยให้มันทำงาน และเมื่อไหร่ควรหยุดมัน?
Source: https://dev.to/kkierii/i-gave-claude-code-the-keys-so-did-a-worm-34a4
Optional learning community: https://t.me/GyaanSetuAi