ความปลอดภัยในการเขียนโค้ดด้วย AI: Prompt Injection กำลังซ่อนอยู่ในไฟล์โปรเจกต์ของคุณ

ผู้ช่วยเขียนโค้ด AI ของคุณจะอ่านทุกไฟล์ใน repository ของคุณ ไม่ว่าจะเป็นไฟล์ README, ไฟล์การตั้งค่า (config files) และกฎเกณฑ์ต่างๆ โดยมันจะใช้ไฟล์เหล่านี้ในการตัดสินใจว่าจะเขียนโค้ดอย่างไร

ภัยคุกคามด้านความปลอดภัยรูปแบบใหม่กำลังใช้ประโยชน์จากพฤติกรรมนี้โดยเฉพาะ นักวิจัยพบช่องโหว่ในเครื่องมือเขียนโค้ดด้วย AI ถึง 28 ชนิด การโจมตีนี้ไม่ใช่การแฮ็กที่ซับซ้อน แต่มันคือไฟล์ข้อความธรรมดาๆ ที่อยู่ใน repository ของคุณนั่นเอง

กลไกการโจมตีทำงานอย่างไร:

คุณทำการ clone โปรเจกต์ open-source มา ซึ่งดูเหมือนปกติทุกอย่าง คุณเปิดโปรเจกต์นั้นใน AI editor และสั่งให้เพิ่มฟีเจอร์ใหม่ โดยที่คุณไม่เห็นตัวอักษร Unicode ที่ซ่อนอยู่ในไฟล์การตั้งค่า ตัวอักษรเหล่านี้จะซ่อนคำสั่งจากคุณ แต่จะสั่งให้ AI ทำอย่างอื่นแทน

คำสั่งที่ซ่อนอยู่จะบอกให้ AI ส่ง AWS credentials ของคุณไปยังเซิร์ฟเวอร์ภายนอก โดยที่ AI เข้าใจว่านี่คือคำสั่งที่ถูกต้องของโปรเจกต์ มันจึงรันคำสั่งนั้น และข้อมูลความลับของคุณก็จะถูกขโมยไปทันที

ทำไมเรื่องนี้ถึงหยุดยั้งได้ยาก:

  • ตัวอักษรที่ซ่อนอยู่: คุณเห็นเป็นข้อความปกติ แต่ AI กลับเห็นคำสั่งที่เป็นอันตรายผ่านตัวอักษร Unicode ที่มองไม่เห็น
  • ทุกไฟล์คือจุดเริ่มต้นของการโจมตี: ไฟล์ README หรือแม้แต่คอมเมนต์ใน library ก็สามารถบรรจุ payload ไว้ได้
  • สิทธิ์การเข้าถึงที่สูง: AI agent มักจะทำงานด้วยสิทธิ์เดียวกับผู้ใช้ของคุณ ทำให้พวกมันสามารถอ่าน SSH keys และ API tokens ของคุณได้
  • การเรียกใช้เครื่องมือ (Tool calls): AI ใช้การเรียกใช้เครื่องมือเพื่อรันคำสั่งต่างๆ การโจมตีนี้จะมุ่งเป้าไปที่การเรียกใช้เหล่านี้เพื่อหลบเลี่ยงการฝึกฝนด้านความปลอดภัย (safety training)

วิธีป้องกันเวิร์กโฟลว์ของคุณ:

  • ทำความสะอาดเนื้อหาในไฟล์ (Sanitize): ลบตัวอักษรที่ซ่อนอยู่และรูปแบบการฉีดคำสั่ง (injection patterns) ที่พบบ่อยออกก่อนที่ AI จะอ่านไฟล์เหล่านั้น
  • ใช้ Sandbox: รัน AI agent ใน container ที่ไม่มีการเชื่อมต่อเครือข่ายและใช้ระบบไฟล์แบบอ่านอย่างเดียว (read-only filesystems)
  • กำหนดนโยบายที่เข้มงวด: สร้างรายการคำสั่งที่อนุญาต (whitelist) และกำหนดให้ต้องมีการอนุมัติจากมนุษย์สำหรับคำสั่งใดๆ ที่มีการเคลื่อนย้ายข้อมูลหรือลบไฟล์

คุณสามารถทำการสแกนอย่างรวดเร็วก่อนเริ่มเขียนโค้ด โดยตรวจสอบไฟล์ของคุณว่ามีคำที่น่าสงสัย เช่น "ignore all previous" หรือ "curl" และ "exfil" หรือไม่

เครื่องมือเขียนโค้ดด้วย AI ช่วยเพิ่มประสิทธิภาพในการทำงานได้มาก แต่พวกมันตั้งสมมติฐานว่าไฟล์ในเครื่องของคุณนั้นปลอดภัย ซึ่งความจริงแล้วไม่ใช่ ดังนั้นควรปฏิบัติกับทุกไฟล์เสมือนว่าเป็นข้อมูลที่ไม่น่าไว้วางใจ (untrusted input)

คุณมีวิธีจัดการกับความเสี่ยงจาก prompt injection ในเวิร์กโฟลว์ AI ของคุณอย่างไร?

ที่มา: https://dev.to/tyson_cung/ai-coding-security-prompt-injection-is-hiding-in-your-project-files-4be9