บริบทใน Repo ของคุณกลายเป็นช่องโหว่ในการโจมตีแล้ว
ความปลอดภัยในการเขียนโค้ดด้วย AI เป็นมากกว่าแค่การหยุดไม่ให้โมเดลเขียนโค้ดที่ไม่ดี
ความเสี่ยงที่แท้จริงอยู่ที่สิ่งที่ agent อ่านก่อนที่จะเริ่มเขียน Repository ของคุณไม่ใช่แค่ที่เก็บโค้ดอีกต่อไป แต่มันกลายเป็นช่องทางรับข้อมูล (input stream) สำหรับ AI agent ไปแล้ว
ทุกอย่างใน repo ของคุณสามารถกลายเป็นข้อมูลที่ใช้ชี้นำ (steering material) สำหรับ agent ได้:
- ไฟล์ README เก่าๆ
- บันทึกการย้ายระบบ (migration notes) ที่ล้าสมัย
- เอกสารที่ไม่อัปเดต
- ข้อตกลงในการทำงานของโปรเจกต์ที่ซ่อนอยู่
- ไฟล์คำแนะนำภายในเครื่อง (local instruction files)
- สคริปต์สำหรับ dependency และ shell hooks
นักพัฒนามักมองว่าไฟล์เหล่านี้เป็นแค่ขยะที่ไม่มีอันตราย แต่ AI agent ไม่ได้มองเห็นบริบททางสังคม มันมองเห็นเพียงข้อความ เครื่องมือ และรูปแบบ (patterns) หากเอกสารของคุณเก่าหรือยุ่งเหยิง agent ก็จะมองว่าความยุ่งเหยิงนั้นคือมาตรฐาน
บริบทที่ไม่ดีมาในสองรูปแบบ:
- ข้อผิดพลาดที่น่าเบื่อ (Boring errors):
- คำแนะนำการติดตั้งที่ล้าสมัย
- ตัวอย่างที่ใช้ deprecated APIs
- บันทึกสถาปัตยกรรมเก่าๆ
- การโจมตีแบบ Adversarial (Adversarial attacks):
- การทำ prompt injection ภายในไฟล์
- สคริปต์ dependency ที่เป็นอันตราย
- ตัวอย่างที่ถูกวางยา (poisoned examples) เพื่อชี้นำโค้ดไปสู่รูปแบบที่ไม่ปลอดภัย
เมื่อคุณมอบอำนาจให้ agent สามารถรันการทดสอบ, ค้นหาไฟล์ หรือเปิด pull request ได้ คุณกำลังเพิ่มขอบเขตความเสียหาย (blast radius) ระบบ hook ไม่ใช่แค่เครื่องมือเพิ่มประสิทธิภาพอีกต่อไป แต่มันคือระบบอัตโนมัติ (automation) และคุณต้องปฏิบัติต่อมันเหมือนกับระบบอัตโนมัติ
ลองถามคำถามเหล่านี้เกี่ยวกับ workflow ของคุณ:
- ใครสามารถแก้ไข hook ได้บ้าง?
- agent สามารถมองเห็น environment variables อะไรบ้าง?
- agent ได้รับสิทธิ์ (credentials) ของนักพัฒนาไปด้วยหรือไม่?
- เครื่องมือนั้นเขียนไฟล์ออกไปนอก repo หรือไม่?
อย่ามองว่า agent เป็นแค่กล่องข้อความวิเศษ แต่จงมองว่าพวกมันคือโครงสร้างพื้นฐานสำหรับนักพัฒนา (developer infrastructure)
วิธีการรักษาความปลอดภัยให้กับ agentic workflow ของคุณ:
- จำกัดขอบเขต (Narrow the scope): อย่าให้ agent เข้าถึงทั้งโปรเจกต์หากมันต้องการใช้เพียงแค่สามไฟล์
- ทำความสะอาดบริบท (Clean the context): ลบหรือแก้ไขเอกสารที่ล้าสมัยและคำแนะนำเก่าๆ
- เพิ่มความปลอดภัยในการทำงาน (Harden execution): รันงานที่มีความเสี่ยงใน sandbox และจำกัดขอบเขตของ credentials
- ต้องตรวจสอบได้ (Demand visibility): ต้องรู้ให้แน่ชัดว่า agent อ่านอะไรไปบ้าง ใช้เครื่องมืออะไร และรันคำสั่งอะไรไปบ้าง
AI agent เปรียบเสมือนนักพัฒนาฝึกหัด (junior developer) ที่เข้าถึง shell ได้และพิมพ์งานได้เร็วมาก คุณคงไม่มอบสิทธิ์การเข้าถึงระบบ production ทั้งหมดให้กับนักพัฒนาฝึกหัดตั้งแต่วันแรก แต่คุณจะมอบหมายงานเล็กๆ ให้ พร้อมกับบริบทที่สะอาดและสิทธิ์ที่จำกัด
จงปฏิบัติต่อ agent ของคุณในลักษณะเดียวกัน
แหล่งที่มา: https://dev.to/hefty_69a4c2d631c9dd70724/your-repo-context-is-an-attack-surface-now-5dhj
ชุมชนการเรียนรู้เพิ่มเติม (ไม่บังคับ): https://t.me/GyaanSetuAi