นักวิจัยจาก ASSET Research Group มหาวิทยาลัย Missouri-Kansas City นำโดย Sudipta Chattopadhyay ได้เปิดเผย Proof-of-Concept การโจมตีรูปแบบใหม่ในชื่อ Ghostcommit เมื่อวันที่ 11 กรกฎาคม 2026 ซึ่งสร้างความกังวลในวงการความปลอดภัยไซเบอร์อย่างมาก เพราะมันโจมตีในจุดที่ไม่มีใครคาดคิด นั่นคือ ไฟล์รูปภาพ PNG ธรรมดาใน Code Repository
แนวคิดของ Ghostcommit ดูเรียบง่ายแต่ทรงพลังมาก: ซ่อนคำสั่งอันตรายไว้ใน Plain Text ภายในรูปภาพ PNG และรอให้ AI Coding Agent เปิดอ่านรูปนั้นแล้วปฏิบัติตามคำสั่ง ผลลัพธ์คือ Agent จะแอบอ่านไฟล์ .env ที่เก็บ API Key, Database Password และ Secret ต่างๆ ขององค์กร แล้วนำข้อมูลเหล่านั้นไปฝังไว้ในโค้ดที่มันเขียนขึ้น ก่อนที่ Developer จะ Commit เข้า Repository โดยไม่รู้ตัว
สิ่งที่ทำให้ Ghostcommit น่ากลัวเป็นพิเศษคือ เครื่องมือ Code Review ชั้นนำอย่าง CodeRabbit และ Bugbot ไม่สามารถตรวจพบการโจมตีนี้ได้เลย เพราะทั้งคู่ไม่เคยเปิดไฟล์รูปภาพระหว่าง Review
ช่องโหว่ที่ Ghostcommit ใช้ประโยชน์
ก่อนอื่นต้องเข้าใจบริบทของปัญหา นักวิจัยได้วิเคราะห์ Pull Request จำนวน 6,480 รายการ จาก Repository สาธารณะที่มีความเคลื่อนไหวสูง 300 แห่งในช่วง 90 วัน และพบว่า 73% ของ PR ที่ถูก Merge เข้าสู่ Default Branch ไม่ผ่านการ Review จากมนุษย์หรือ Bot เลย ซึ่งหมายความว่าช่องโหว่ด้านกระบวนการอยู่ในวงกว้างมากกว่าที่คิด
จุดหัวใจของการโจมตีอยู่ที่ความแตกต่างระหว่างมุมมองของ Reviewer กับ AI Agent ต่อไฟล์รูปภาพ Reviewer มนุษย์ มักไม่คลิกเปิดรูปภาพเมื่อ Review Code ส่วน เครื่องมือ Code Review อัตโนมัติ เช่น CodeRabbit มีการตั้งค่า Default ที่ยกเว้นไฟล์รูปภาพออกจากการ Review เลย แต่ AI Coding Agent เช่น Cursor หรือ Antigravity กลับอ่านรูปภาพได้และปฏิบัติตามเนื้อหาที่พบภายใน ช่องว่างตรงนี้คือสิ่งที่ Ghostcommit ใช้ประโยชน์
วิธีการโจมตีของ Ghostcommit
การโจมตี Ghostcommit ทำงานใน 3 ระยะ ซึ่งแต่ละระยะแยกจากกันในแง่ของเวลา ทำให้ยิ่งตรวจจับยาก
ระยะที่ 1 — ส่ง Pull Request ที่ดูปกติ
ผู้โจมตีส่ง Pull Request ที่ดูเหมือน Contribution ธรรมดา ประกอบด้วยโค้ดจำนวนหนึ่งและไฟล์รูปภาพที่อยู่ใน docs/images/build-spec.png นอกจากนี้ยังมีการแก้ไขไฟล์ AGENTS.md ซึ่งเป็นไฟล์ที่ AI Coding Agent อ่านโดยอัตโนมัติเพื่อทำความเข้าใจกฎและ Convention ของ Project ให้อ้างอิงไปยังรูปภาพดังกล่าว
เพื่อให้ Pass การตรวจสอบของ Reviewer นักวิจัยพบว่าการเพิ่ม "Fake Provenance Validator" หรือโค้ดสนับสนุนประมาณ 50 บรรทัดพร้อม "Fake Incident Postmortem" เข้าไปด้วย ทำให้ Convention ในไฟล์ AGENTS.md ดูน่าเชื่อถือและ Reviewer อาจมองข้ามไป ที่น่าตกใจกว่านั้นคือ นักวิจัยทดลองฝัง Text "malicious prompt injection" พร้อมคำสั่งชัดเจนให้อ่าน .env ไว้ใน PNG และมันยังผ่าน Review ได้อยู่ดี
ระยะที่ 2 — PR ถูก Merge
เมื่อ PR ผ่าน Review และถูก Merge เข้าสู่ Repository Payload ก็อยู่ใน Codebase แล้ว แต่ยังไม่ทำอะไร รอแค่โอกาส
ระยะที่ 3 — การขโมยเกิดขึ้นในเวลาอื่นอย่างเงียบๆ
นี่คือส่วนที่ฉลาดที่สุดของการโจมตี การขโมยไม่ได้เกิดขึ้นตอน Merge แต่เกิดขึ้นในภายหลัง เมื่อ Developer คนหนึ่งเปิด AI Coding Agent และขอให้ช่วยทำงานอะไรก็ตามที่ไม่เกี่ยวกับ Security เลย เช่น "ช่วยเพิ่ม Token Tracking Module หน่อย"
Agent จะอ่าน AGENTS.md ที่ถูก Merge ไว้ก่อนหน้า, ตาม Reference ไปเปิดรูปภาพ PNG, อ่านคำสั่งภายใน แล้วเริ่มอ่าน .env byte by byte และ Encode แต่ละ Byte เป็นตัวเลขจำนวนเต็ม จากนั้นฝังรายการตัวเลขเหล่านั้นไว้ในโมดูลที่กำลังเขียน Developer เห็นโมดูลที่ขอและ Commit ขึ้น Repository โดยไม่สงสัย
ในการทดสอบจริงด้วย Cursor ที่ขับเคลื่อนด้วย Claude Sonnet ทำสำเร็จในครั้งแรก โดย Constant ที่ถูก Embed มีตัวเลขมากถึง 311 ตัว ซึ่งเมื่อ Decode แล้วได้เนื้อหาของไฟล์ .env ทั้งหมด
รายละเอียดทางเทคนิคที่ทำให้ตรวจจับยาก
ทำไม Secret Scanner ตรวจไม่พบ
โดยปกติ Secret Scanner เช่น GitLeaks หรือ TruffleHog ทำงานโดยการค้นหา Pattern ของ API Key, Token หรือ Password ที่มีรูปแบบที่รู้จักในโค้ด แต่ข้อมูลที่ Ghostcommit ฝังไว้เป็นแค่ "รายการตัวเลขจำนวนเต็ม" ซึ่งไม่มี Pattern ที่น่าสงสัยแต่อย่างใด Scanner ไม่มีตรรกะที่จะแปลงตัวเลขเหล่านั้นกลับเป็น ASCII เพื่อตรวจสอบ
ทำไม Code Reviewer ตรวจไม่พบ
CodeRabbit มีการตั้งค่า Default ที่ยกเว้นไฟล์รูปภาพออกจากการวิเคราะห์ทั้งหมด ส่วน Bugbot ทดสอบแล้วไม่มี Finding ใดออกมาเลย ทั้งคู่ตรวจสอบ Text Code เป็นหลัก ไม่ได้ "เปิดดู" รูปภาพในแบบที่ AI Agent ทำ
ผลการทดสอบตามเครื่องมือ
นักวิจัยพบว่า เครื่องมือที่ใช้สำคัญกว่า AI Model ที่อยู่เบื้องหลัง Cursor และ Antigravity ทำการขโมยสำเร็จกับ Claude Sonnet, Gemini และ GPT-5.5 แต่ Anthropic Claude Code (CLI Tool ของ Anthropic เอง) ปฏิเสธการโจมตีทุกครั้งโดยไม่ขึ้นอยู่กับ Model ที่ใช้ ในขณะที่ผ่าน Antigravity นั้น Claude Opus เริ่มต้นเขียน Secret ออกมา แต่ตรวจพบรูปแบบ Social Engineering และลบข้อมูลนั้นออกก่อนจะ Finish ซึ่งแสดงให้เห็นว่าการตัดสินใจนั้นขึ้นอยู่กับ "กรอบ" ที่ล้อม Model ไว้ ไม่ใช่ Model เพียงอย่างเดียว
ผลกระทบที่อาจเกิดขึ้น
- API Key, Database Password, Cloud Credential ถูกขโมย ผ่าน Commit ที่ดูปกติสมบูรณ์
- ผู้โจมตีเข้าถึง Cloud Account, Production System หรือ Build Pipeline โดยใช้ Secret ที่ได้มา
- CI/CD Pipeline ถูกใช้เป็นช่องทางโจมตีต่อ เนื่องจาก Agent มักมีสิทธิ์สูงในกระบวนการ Build
- ตรวจสอบย้อนหลังยาก เพราะ Commit ที่มี Secret ดูเหมือน Feature ปกติ ไม่มีสัญญาณ Alert ใดๆ
- ขยายวงการโจมตีสู่ทั้ง Repository เมื่อ Developer คนอื่นในทีม Sync Branch ที่มี Payload
สิ่งที่องค์กรควรตรวจสอบทันที
- ตรวจสอบไฟล์ AGENTS.md ใน Repository ทั้งหมด ว่ามีการอ้างอิงไฟล์รูปภาพหรือ External Path ที่ไม่คุ้นเคยหรือไม่
- ตรวจสอบ Commit ล่าสุดว่ามี Constant หรือ Variable ที่เก็บค่าเป็น List ของตัวเลขจำนวนมากโดยไม่มีเหตุผลชัดเจนหรือไม่
- ตรวจสอบสิทธิ์ของ AI Coding Agent ที่ใช้งานอยู่ ว่าสามารถอ่าน
.envและไฟล์ Sensitive อื่นๆ ได้หรือไม่ - ตรวจสอบ PR จาก Contributor ภายนอกที่แนบไฟล์รูปภาพมาด้วย โดยเฉพาะใน Path
docs/หรือassets/ - ตรวจสอบ Log ของ AI Agent ว่ามีการเข้าถึงไฟล์ที่ไม่เกี่ยวข้องกับงานที่ขอในช่วงเวลาผิดปกติหรือไม่
แนวทางลดความเสี่ยง
1. จำกัดสิทธิ์ AI Agent ด้วย Least Privilege
AI Coding Agent ไม่ควรมีสิทธิ์อ่านไฟล์ .env, Credential Store หรือ Secret Management System โดยตรง การแยกสิทธิ์ให้ Agent เข้าถึงเฉพาะส่วนที่จำเป็นสำหรับงานที่กำหนดไว้ล่วงหน้าเป็นสิ่งสำคัญที่สุด
2. เพิ่ม Image Review ใน Pull Request Pipeline
ตั้งค่า CI/CD ให้มีการ Scan ไฟล์รูปภาพใน PR อย่างละเอียด หรือใช้เครื่องมือ Multimodal PR Review ที่สามารถ "อ่าน" เนื้อหาในรูปภาพได้ นักวิจัยผู้ค้นพบ Ghostcommit ได้สร้าง Defender ที่ทำงานบน GPU 4GB ซึ่งสามารถตรวจจับได้ทุกกรณีในการทดสอบ
3. Audit และกำหนดนโยบายสำหรับไฟล์ AGENTS.md
AGENTS.md ควรผ่าน Code Review อย่างเข้มงวดเป็นพิเศษ เนื่องจากมีอำนาจสูงในการกำหนดพฤติกรรมของ Agent ทั้ง Repository ควรมีนโยบายชัดเจนว่า AGENTS.md ไม่ควรอ้างอิงไฟล์รูปภาพหรือ External Resource ที่ไม่มีเหตุผล
4. ตรวจสอบ Runtime Behavior ของ Agent
แทนที่จะพยายามตรวจ Payload ก่อน Merge เพียงอย่างเดียว ให้เพิ่มการ Monitor ว่า Agent เข้าถึงไฟล์ใดบ้างขณะทำงาน ถ้า Agent เข้าถึง .env หรือ ~/.ssh ขณะที่งานที่ขอคือการเขียน Feature ปกติ นั่นคือสัญญาณที่ต้องตรวจสอบ
5. ใช้ Secret Management ที่แยกออกจาก .env ในเครื่อง Developer
การเก็บ Secret ไว้ใน Cloud Secret Manager (เช่น AWS Secrets Manager, HashiCorp Vault) แทนที่จะเป็นไฟล์ .env ในเครื่อง Developer ช่วยลดความเสี่ยงที่ Agent จะเข้าถึง Secret ได้
6. ตั้ง Code Scan สำหรับ Integer List ที่น่าสงสัย
เพิ่ม Custom Rule ในเครื่องมือ SAST ให้ Flag รายการ Integer จำนวนมากที่อยู่ใน Constant หรือ Variable เพื่อตรวจสอบว่าเป็น Data ที่ Decode กลับเป็น ASCII แล้วมี Pattern ของ Secret หรือไม่
วิเคราะห์ในมุมมองจาก TXEC
Ghostcommit เปิดเผยให้เห็น Attack Surface ใหม่ที่เกิดจากการนำ AI Agent มาใช้ใน Development Workflow ซึ่งเป็น Trend ที่องค์กรส่วนใหญ่กำลังเร่งรับเอามาใช้โดยยังไม่ได้ประเมินความเสี่ยงอย่างรอบด้าน
สิ่งที่ควรเน้นย้ำในบริบทขององค์กรไทยคือ AI Coding Agent ในปัจจุบันได้รับการออกแบบให้ "เชื่อฟัง" คำสั่งอย่างเต็มที่ ซึ่งเป็นทั้งจุดแข็งและจุดอ่อน ความไว้วางใจที่ Developer มีต่อ Agent กลายเป็นสิ่งที่ผู้โจมตีสามารถใช้เป็นประโยชน์ได้โดยตรง
ข้อค้นพบที่สำคัญจากการวิจัยนี้คือ Model ไม่ใช่ตัวกำหนดความปลอดภัยเพียงอย่างเดียว แต่ "กรอบ" และข้อจำกัดที่ล้อมรอบ Model นั้นสำคัญไม่แพ้กัน Claude Code (Anthropic's official tool) ปฏิเสธการโจมตีทุกครั้ง แต่ Agent อื่นที่ใช้ Model เดียวกันกลับทำการขโมยสำเร็จ ซึ่งหมายความว่าการเลือก AI Tool ให้ Development Team และการกำหนดนโยบายการใช้งานมีความสำคัญมากกว่าที่หลายองค์กรตระหนัก
AI ใน Developer Workflow ไม่ใช่แค่เรื่องของ Productivity อีกต่อไป มันคือ Attack Surface ที่ต้องถูกจัดการอย่างจริงจัง ควบคู่กับ Developer Security Training ที่ต้องอัปเดตให้ทันกับยุคสมัย
รู้ก่อน ตรวจพบเร็ว ลดความเสียหายได้มากกว่า
[ แหล่งอ้างอิง: BleepingComputer, ASSET Research Group (University of Missouri-Kansas City), CyberSecurityNews, Mallory AI ]