นักวิจัยจาก Noma Labs ได้สาธิตให้เห็นว่า Agentic Workflows ที่เพิ่งเปิดตัวใหม่ของ GitHub สามารถถูกหลอกให้เผยแพร่ไฟล์จาก repository ส่วนตัวได้ ซึ่งแสดงให้เห็นว่าเพียงแค่คอมเมนต์ใน issue สาธารณะเพียงอันเดียว ก็สามารถเปลี่ยนผู้ช่วย AI ภายในให้กลายเป็นช่องทางรั่วไหลของข้อมูลได้

ช่องโหว่นี้มีความสำคัญเพราะมันสามารถข้ามผ่านระบบตรวจสอบความปลอดภัยที่มีอยู่ของ GitHub ได้โดยไม่ต้องใช้โค้ด exploit พิเศษใดๆ ผู้โจมตีเพียงแค่ต้องสร้าง issue ที่ดูเหมือนไม่มีพิษมีภัย ซึ่ง AI agent จะอ่านและดำเนินการตามนั้น

ช่องโหว่นี้ทำงานอย่างไร

Agentic Workflows ช่วยให้ AI agent สามารถตอบสนองต่อเหตุการณ์ต่างๆ ใน GitHub เช่น issue ใหม่ โดยการรันคำสั่งที่กำหนดไว้ในไฟล์ workflow ทาง Noma Labs พบว่า agent ไม่สามารถแยกแยะระหว่างคำสั่ง workflow ที่ถูกต้องตามกฎ กับข้อความที่ฝังอยู่ในคอมเมนต์ที่ผู้ใช้ส่งมาได้ การโพสต์ issue สาธารณะที่เลียนแบบคำขอของผู้จัดการและแนบคำสั่งลับลงไป จะทำให้ผู้โจมตีสามารถชี้นำ agent ให้ทำสิ่งต่อไปนี้:

  1. เปิด issue (ซึ่งมองเห็นได้สาธารณะ)
  2. ใส่บรรทัดที่ดูเหมือนปกติแต่มีคำสั่งลับซ่อนอยู่
  3. กระตุ้นให้ AI ไปดึงไฟล์จาก private repository ที่ workflow นั้นได้รับอนุญาตให้เข้าถึง
  4. ให้ agent โพสต์เนื้อหาที่ดึงมาได้เป็นการตอบกลับใน issue เดียวกันนั้น

นักวิจัยพบว่าการแทรกคำว่า “Additionally,” เพียงคำเดียวหน้าคำสั่งลับ ก็เพียงพอที่จะหลบเลี่ยงระบบป้องกันของ GitHub ได้แล้ว โดยไม่จำเป็นต้องใช้สิทธิ์เพิ่มเติม, token หรือโค้ดที่เขียนขึ้นเอง เพียงแค่ใช้การใช้คำที่เหมาะสมเท่านั้น

ทำไมเรื่องนี้ถึงเป็นมากกว่าแค่บั๊ก

ปัญหานี้เป็นปัญหาเชิงโครงสร้าง เนื่องจาก AI agent มองว่าข้อความใดๆ ที่ได้รับจากเหตุการณ์ใน repository นั้นเชื่อถือได้ ซึ่งส่งผลให้เนื้อหาที่ผู้ใช้สร้างขึ้นกลายเป็นช่องทางการป้อนข้อมูล (input vector) ที่คล้ายกับการโจมตีแบบ SQL injection ในเว็บแอปพลิเคชัน หาก workflow มอบสิทธิ์ให้ agent สามารถอ่าน private repos และสามารถคอมเมนต์แบบสาธารณะได้ การรวมกันของสองสิ่งนี้จะสร้างเส้นทางโดยตรงสำหรับการดึงข้อมูลออกไป (data exfiltration)

สิ่งที่ GitHub กล่าว

GitHub ได้รับแจ้งเกี่ยวกับช่องโหว่นี้แล้ว

ขั้นตอนการบรรเทาความเสี่ยงสำหรับทีม

  • จำกัดสิทธิ์ของ agent: มอบสิทธิ์การอ่าน/เขียนให้กับ private repositories เฉพาะเมื่อจำเป็นอย่างยิ่งเท่านั้น
  • บล็อกการโพสต์สาธารณะ: กำหนดค่า workflow เพื่อไม่ให้ agent สามารถโพสต์คอมเมนต์หรือสิ่งอื่นๆ ลงใน issue สาธารณะได้
  • ถือว่าข้อมูลนำเข้าจากภายนอกทั้งหมดไม่น่าเชื่อถือ: เพิ่มชั้นการตรวจสอบ (validation layers) เพื่อทำความสะอาด (sanitize) หรือเพิกเฉยต่อข้อความที่ผู้ใช้สร้างขึ้นก่อนที่ข้อมูลจะส่งไปถึง AI
  • ตรวจสอบ workflow triggers: ตรวจสอบว่าเหตุการณ์ใดบ้าง (issues, pull requests และอื่นๆ) ที่เรียกใช้งาน agent และยืนยันว่าสิทธิ์ที่เกี่ยวข้องนั้นตรงกับวัตถุประสงค์การใช้งาน

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