AI coding assistants เช่น Claude Code, Cursor และ Grok Build สามารถรันคำสั่งใดๆ ก็ได้ทันทีที่นักพัฒนาเปิด repository ที่ไม่น่าเชื่อถือ โดยไม่ต้องคลิกหรือตอบรับใดๆ ช่องโหว่นี้เกิดจากวิธีที่เครื่องมือเหล่านี้เรียกใช้ฟีเจอร์ core.fsmonitor ของ Git เพื่อสแกนไฟล์ในโปรเจกต์

ทำไมเรื่องนี้ถึงสำคัญในตอนนี้

นักพัฒนาเริ่มพึ่งพา AI agent มากขึ้นในการแนะนำโค้ด, ปรับปรุงโครงสร้างฟังก์ชัน (refactor), หรือแม้แต่เขียนโมดูลทั้งชุด Agent เหล่านี้จำเป็นต้องมีข้อมูลภาพรวม (snapshot) ของ workspace อย่างรวดเร็ว จึงมีการรัน git status อยู่เบื้องหลัง เมื่อ Git อ่านไฟล์ .git/config ของ repository ค่าใดๆ ที่ถูกกำหนดให้กับ core.fsmonitor จะถูกปฏิบัติเหมือนเป็นคำสั่ง shell ที่ Git จะรัน ผู้ไม่หวังดีสามารถใส่คำสั่งที่สร้างขึ้นมาไว้ในค่าคอนฟิกนั้น และเมื่อ AI เรียกใช้ Git ในเบื้องหลัง คำสั่งนั้นจะถูกรันทันทีก่อนที่ผู้ใช้จะพิมพ์โค้ดแม้แต่บรรทัดเดียว

โค้ดดังกล่าวจะรันด้วยสิทธิ์ของผู้พัฒนาเอง ซึ่งเป็นการข้ามระบบ sandbox ที่ AI agent มักจะทำงานอยู่ ในทางปฏิบัติ repository ที่ถูกฝังมัลแวร์สามารถติดตั้งมัลแวร์, ขโมยข้อมูลประจำตัว (credentials), หรือแก้ไขไฟล์ต้นฉบับได้ ในขณะที่นักพัฒนายังคงเชื่อว่าผู้ช่วย AI กำลังเพียงแค่ให้คำแนะนำเท่านั้น

ขั้นตอนการโจมตี

  1. การเตรียมการ (Preparation) – ผู้โจมตีสร้าง repository ที่มีไฟล์ .git/config ซึ่งมีบรรทัดอย่าง core.fsmonitor = /path/to/malicious/script
  2. การส่งมอบ (Delivery) – repository ถูกส่งต่อในรูปแบบไฟล์ zip, คัดลอกมาจาก USB, ซิงค์ผ่านไดรฟ์ที่ใช้ร่วมกัน หรือวางไว้ในเครื่องของเหยื่อโดยที่มีโฟลเดอร์ .git ติดไปด้วยอยู่แล้ว
  3. การกระตุ้น (Trigger) – นักพัฒนาเปิดโฟลเดอร์นั้นใน IDE ที่รองรับ AI ผู้ช่วยจะรัน git status เพื่อรวบรวมบริบท (context) Git จะอ่านค่าคอนฟิกในเครื่อง, รันคำสั่ง core.fsmonitor, และสคริปต์อันตรายจะทำงานทันที

การใช้ git clone แบบปกติจะไม่ทำให้เกิดความเสี่ยงนี้ เนื่องจากกระบวนการ clone จะสร้างไดเรกทอรี .git ขึ้นมาใหม่ซึ่งไม่มีค่าคอนฟิกที่ถูกดัดแปลง การโจมตีนี้จะสำเร็จก็ต่อเมื่อผู้โจมตีสามารถส่งมอบโฟลเดอร์ .git ที่มีอยู่ก่อนแล้วมาให้ได้เท่านั้น

สิ่งที่อาจได้รับความเสียหาย

  • นักพัฒนาเป็นรายบุคคล อาจถูกเจาะระบบเครื่องคอมพิวเตอร์โดยไม่รู้ตัว และสูญเสียข้อมูลใดๆ ก็ตามที่ AI agent สามารถเข้าถึงได้
  • ทีมงาน ที่แชร์โค้ดผ่านไดรฟ์ภายในหรือไฟล์ zip จากผู้รับเหมา อาจแพร่กระจายมัลแวร์ไปยังเวิร์กสเตชันหลายเครื่อง
  • ผู้ให้บริการเครื่องมือ เสี่ยงต่อความเสียหายด้านชื่อเสียง หากผู้ใช้คิดว่าการรั่วไหลเกิดจาก AI assistant แทนที่จะเป็นการทำงานของ Git

เนื่องจากคำสั่งอันตรายจะได้รับสิทธิ์เดียวกับผู้ใช้ มันจึงสามารถแก้ไขไฟล์ใดๆ ก็ได้ที่นักพัฒนาเข้าถึงได้ รวมถึง SSH keys, build scripts หรือข้อมูลประจำตัวในการ deploy (deployment credentials)

ขั้นตอนการป้องกันที่นักพัฒนาสามารถทำได้ทันที

  • อย่าเชื่อใจการตั้งค่า Git ในเครื่อง (local Git settings) ค่าคอนฟิกของ repository จะมีลำดับความสำคัญเหนือกว่าค่า global ทุกครั้งที่ AI assistant สอบถามข้อมูลโปรเจกต์

  • ตรวจสอบรายการ core.fsmonitor ก่อนเปิดโฟลเดอร์ด้วยผู้ช่วย AI:

    git config --get core.fsmonitor
    

    หากพบค่าใดๆ ปรากฏอยู่ ให้ถือว่าเป็นสิ่งที่น่าสงสัย

  • ลบรายการดังกล่าวออก ด้วยคำสั่ง:

    git config --local --unset core.fsmonitor
    
  • ตรวจสอบคีย์เสี่ยงอื่นๆ ที่ Git สามารถรันได้: hooksPath, sshCommand, pager, editor, filter โดยใช้รูปแบบ git config --get แบบเดียวกันเพื่อตรวจสอบว่าค่าเหล่านั้นว่างเปล่า

  • เลือกใช้การ clone ที่สะอาด (clean clones) สำหรับโค้ดใดๆ ที่คุณตั้งใจจะส่งให้เครื่องมือ AI หากจำเป็นต้องทำงานกับไฟล์ zip หรือโฟลเดอร์ที่ถูกส่งต่อมา ให้ลบไดเรกทอรี .git ทิ้งแล้วทำการ re-initialize repository ใหม่ หรือทำการตรวจสอบตามขั้นตอนข้างต้นก่อน

ความรับผิดชอบอยู่ที่ใคร

ช่องโหว่นี้ไม่ใช่ข้อบกพร่องของโมเดลภาษา (language models) ที่ขับเคลื่อน Claude Code, Cursor หรือ Grok Build แต่เป็นผลพวงมาจากวิธีที่เครื่องมือเหล่านั้นรวบรวมข้อมูลไฟล์ ผู้ให้บริการบางรายเริ่มมีการทำ sandbox สำหรับการเรียกใช้ Git ให้รัดกุมยิ่งขึ้น แต่พฤติกรรมเริ่มต้น (default behavior) ยังคงเชื่อถือการตั้งค่าใน repository ท้องถิ่น จนกว่าอุตสาหกรรมจะมีการนำมาตรฐานที่ลบหรือเพิกเฉยต่อค่าคอนฟิกที่อาจเป็นอันตรายเมื่อ AI agent สแกน workspace มาใช้ นักพัฒนาจะต้องเป็นปราการด่านสุดท้ายในการป้องกัน

สิ่งที่ควรจับตามองต่อไป

  • การอัปเดตเครื่องมือ ที่มีการล้างค่า (sanitize) การตั้งค่า Git อย่างชัดเจนก่อนที่จะเรียกใช้ git status
  • แนวทางปฏิบัติจากชุมชน สำหรับการพัฒนาโดยใช้ AI อย่างปลอดภัย ซึ่งน่าจะรวมถึงการตรวจสอบความพร้อม (pre-flight checks) ที่แนะนำ
  • งานวิจัยด้านความปลอดภัย ที่อาจค้นพบคีย์คอนฟิกของ Git อื่นๆ ที่สามารถรันโค้ดได้ ซึ่งจะทำให้รายการตรวจสอบขยายกว้างกว่า 5 รายการที่ระบุไว้ข้างต้น

สรุปสั้นๆ: ผู้ช่วย AI อาจเป็นคู่หูเขียนโปรแกรม (pair-programmer) ที่สะดวกสบาย แต่ก็พร้อมจะรันคำสั่งใดๆ ก็ตามที่ซ่อนอยู่ใน Git config ของ repository ได้อย่างเต็มใจ ดังนั้น ควรตรวจสอบ workspace ให้ดีก่อนที่จะปล่อยให้ผู้ช่วย AI เข้าไปจัดการ