CSA สิงคโปร์ออกคู่มือประเมินความปลอดภัย AI coding agent: 7 ช่องทางโจมตี ตั้งแต่ไฟล์ instruction, MCP, skill ไปจนถึง hook ใน settings.json พร้อม 25 มาตรการ — การสั่งให้โมเดล 'คิดทบทวนเอง' ถูกจัดไว้ระดับต่ำสุด
หมายเหตุ: เผยแพร่เมื่อ 15 ต.ค. 2026 (3 วันก่อน) เราเก็บตกมาเพราะเป็นเอกสารภาครัฐในอาเซียนที่เจาะจงเรื่อง coding agent อย่าง Claude Code, Codex และ Cursor ได้ละเอียดที่สุดเท่าที่เคยเห็น
Cyber Security Agency of Singapore (CSA) เผยแพร่ Security Assessment Handbook for Agentic AI Coding Assistants v1.0 เป็นภาคต่อของ Guidelines on Securing AI Systems (ต.ค. 2024) และ Addendum on Securing Agentic AI (มิ.ย. 2026) CSA บอกว่าเขียนขึ้น*“Having performed security assessments on AI coding assistants”* คือได้ลองประเมินเครื่องมือจริงมาก่อน แล้วสรุปออกมาเป็นวิธีให้ทีม security และนักพัฒนาใช้ประเมินการติดตั้งในองค์กรของตัวเอง
ตัวคู่มือไม่ได้เป็น PDF แต่เป็นเว็บแบบโต้ตอบที่โฮสต์บน GitHub Pages มี 6 แท็บ ได้แก่ Introduction, System Architecture, Attack Path, Mitigations, Risk Assessment และ FAQ แต่ละแท็บมีแผนภาพ trust boundary ของเอเจนต์แบบ IDE และแบบ CLI ให้คลิกไล่ดูว่าการโจมตีแต่ละขั้นวิ่งผ่านส่วนไหน คู่มือไม่ได้ระบุชื่อผลิตภัณฑ์ แต่ช่องทางที่อธิบายไว้ตรงกับฟีเจอร์ของ Claude Code / Codex / Gemini CLI แทบทุกข้อ
7 attack vector พื้นฐาน
CSA นิยาม vector ตาม “ช่องทางที่คำสั่งไม่น่าไว้ใจเข้าถึงเอเจนต์” ไม่ได้นิยามตามผลที่เกิด แต่ละข้อมีค่า likelihood ก่อนและหลังใช้มาตรการ
| รหัส | ช่องทาง | ใช้กับ | likelihood ก่อน → หลัง |
|---|---|---|---|
| T-001 | ไฟล์ instruction ใน repo ที่ clone มามีพรอมต์อันตราย | IDE + CLI | Possible → Unlikely |
| T-002a | remote MCP server ปลอม หรือผู้โจมตีควบคุม | IDE + CLI | Likely → Unlikely |
| T-002b | remote MCP server ที่เคยเชื่อถือได้ถูกยึด | IDE + CLI | Unlikely → Rare |
| T-003 | local MCP package ฝังโทรจัน ขโมยไฟล์ตอน init โปรเจกต์ | IDE + CLI | Likely → Unlikely |
| T-004 | prompt injection ในแหล่งข้อมูลภายนอก (GitHub Issues, เอกสาร) | IDE + CLI | Likely → Unlikely |
| T-005 | skill package อันตรายจาก repo สาธารณะ | CLI เท่านั้น | Possible → Unlikely |
| T-006 | agent hook อันตรายที่ตั้งไว้ใน settings.json ของ repo | CLI เท่านั้น | Likely → Unlikely |
ข้อ T-006 น่าสนใจที่สุดสำหรับผู้ใช้ CLI agent คู่มือเขียนว่า hook บางชนิดทำงานเมื่อ*“a watched file being modified, so the trigger does not always require the developer to interact with the agent”* แค่ clone repo แล้วเปิด session ก็อาจโดนแล้ว ส่วน attack chain ตัวอย่างของ T-001 ไล่ทีละขั้นตั้งแต่ clone repo ไปจนเอเจนต์สร้าง bash script ที่ฝังคำสั่งเข้ารหัส แล้วขออนุญาตผู้ใช้รันเพื่อเปิด reverse shell ซึ่งเป็นจุดที่ปุ่ม “Allow” กลายเป็นด่านสุดท้าย
25 มาตรการ 3 ระดับ
มาตรการแบ่งเป็น Level 0 (“Fundamental mitigation to be adopted as is”) 14 ข้อ, Level 1 (ปรับใช้ตามสถาปัตยกรรมและ risk appetite) 10 ข้อ และ Level 2 (best practice) 1 ข้อ ตัวอย่างในระดับ 0:
- M-010 แยกสภาพแวดล้อมของเอเจนต์ — ใช้ VM เฉพาะที่ไม่มีเอกสารสำคัญ ใช้ namespaces/seccomp กับ process ที่เอเจนต์สร้างรวมถึง hook และ MCP server ตั้ง outbound เป็น default-deny และบล็อก instance metadata endpoint (link-local) เพราะ request ไปที่นั่นไม่ผ่านขอบของ environment กฎ default-deny จึงไม่ครอบคลุม
- M-011 คนตรวจก่อนเอเจนต์แก้ไฟล์หรือรันคำสั่ง — ปิด auto-run ถ้ารันแบบไม่มีคนเฝ้า (เช่นใน CI) ให้เปลี่ยนเป็นตรวจก่อน merge แทน ให้เอเจนต์ทำงานบน branch แยก บังคับ branch protection และ*“The identity under which the agent runs must not be able to approve or merge its own pull request”*
- M-012 log — ต้องเก็บ chat, การแก้ไฟล์, การเรียก tool/MCP, hook event, DNS และ outbound connection แยกให้ได้ว่าอะไรเป็นการกระทำของเอเจนต์และอะไรเป็นของคน แล้วส่งเข้า SIEM
- M-019 คนอนุมัติก่อนเปิดใช้ skill, hook หรือส่วนประกอบภายนอกใหม่ และ M-020 จำกัดสิทธิ์ของ hook
- M-021/M-022 จำกัดว่าเชื่อม remote MCP endpoint ไหนได้บ้าง และตรวจตัวตนของ server
ในระดับ 1 มีข้อที่ใช้ได้จริงทันที เช่น M-025 ปิดการรัน install script อัตโนมัติของ package และ pin dependency รวมถึง M-014 ให้ credential กับเอเจนต์เท่าที่จำเป็น ส่วนข้อเดียวที่อยู่ระดับ 2 คือ M-017 “Configure the model to self-reflect on the safety and appropriateness of an action before executing it”
แท็บ Risk Assessment มี risk matrix 5×5 และ capability checklist (C1 อ่านไฟล์, C2 เขียนไฟล์, C3 รันคำสั่ง, C4 ดึงข้อมูลจากเน็ต, C5 เชื่อม remote MCP ฯลฯ) คู่มือย้ำว่าความเสี่ยงขึ้นกับ capability ที่เปิดให้เอเจนต์ ไม่ได้ขึ้นกับว่าเป็น IDE หรือ CLI
มุมมอง AI Curator
ตารางระดับมาตรการบอกจุดยืนของ CSA ได้ชัดกว่าข้อความใดๆ ในคู่มือ ทุกอย่างที่บังคับได้ด้วยโครงสร้างพื้นฐาน เช่น sandbox, egress, log และ approval gate ถูกจัดเป็นระดับ 0 ขณะที่ “ให้โมเดลคิดทบทวนเอง” ถูกจัดเป็นข้อเดียวที่อยู่ระดับต่ำสุด หลักเดียวกันนี้อยู่ในadvisory ของ CERT-In อินเดียที่ออกห่างกันไม่ถึงวัน (“at the network layer, not through instructions to the model”) ตอนนี้หน่วยงานไซเบอร์ของสองประเทศใหญ่ในเอเชียเห็นตรงกันแล้วว่า alignment ของโมเดลไม่ใช่ security boundary ทีมที่ยังตอบคำถามเรื่องความปลอดภัยของเอเจนต์ว่า “โมเดลถูกเทรนมาให้ปฏิเสธ” ต้องเปลี่ยนคำตอบ
สำหรับนักพัฒนาไทย ของที่ได้จากเอกสารนี้มีสามอย่าง (1) มอง .claude/settings.json, ไฟล์ skill และ MCP config ใน repo ที่ clone มาเหมือนโค้ดที่รันได้ เพราะมันรันได้จริง ก่อนเปิดเอเจนต์ใน repo ที่ไม่รู้จัก ให้อ่านไฟล์เหล่านี้ก่อน (2) บล็อก metadata endpoint ถ้ารันเอเจนต์บน cloud VM เป็นข้อที่คนลืมบ่อยที่สุด และคู่มือก็อธิบายไว้ชัดว่าทำไม default-deny ปกติจึงไม่ครอบคลุม (3) ถ้ารันเอเจนต์ใน CI ให้ตรวจว่า token ของเอเจนต์ approve PR ของตัวเองไม่ได้ ซึ่งเป็นการตั้งค่า GitHub ที่ทำได้ในห้านาที
ในระดับนโยบาย สิงคโปร์ยังเดินนำอาเซียนอยู่หนึ่งก้าวในการเปลี่ยนหลักการกว้างๆ ให้เป็นเครื่องมือที่ใช้งานได้ คู่มือเป็นเว็บเปิดที่ใครก็ใช้ได้ ทีม security ในไทยเอาไปใช้เป็น checklist ประเมินภายในได้ทันทีโดยไม่ต้องรอแนวปฏิบัติของ สกมช. ข้อจำกัดคือเป็นเวอร์ชัน 1.0 ที่ยังไม่มี repo ให้ส่ง issue หรือเสนอแก้ได้ (repo บน GitHub มีแค่ index.html ไฟล์เดียว) และ vector ชุดนี้เป็น baseline ที่ CSA ย้ำเองว่าต้องเติม vector เฉพาะขององค์กรเพิ่ม
แหล่งข่าว
อ่านเพิ่มในหมวด เครื่องมือนักพัฒนา
Betelgeuse รัน Qwen3.8 Flash Next ขนาด 68GB บน RTX 3060 กับแรม 16GB ส่วน Basalt วัดให้เห็นว่าเอนจินที่เร่งด้วยแฟล็กลัดทำให้โมเดลลืมของ
Betelgeuse ฟอร์ก llama.cpp ที่เปิดเมื่อ 31 ต.ค. ดึง expert จาก NVMe เข้า VRAM ตามต้องการ อ้าง 22 tok/s แบบไม่ทิ้ง expert แต่ README เตือนเองว่ายังทดลองและตัวเลขมาจากคนละรอบ วันเดียวกันผู้พัฒนา Basalt เผยผลวัดว่าแฟล็กเร่งความเร็วทำคุณภาพ Q8 ตกไปใกล้ Q2
กฎห้ามโคลนเกมของ Claude Code เริ่มกระทบงานจริง บริษัทรับทำเกมกระดานร้องงานลูกค้าหยุด แต่รายงานหลายชิ้นปนกับตัวกรองไซเบอร์คนละเรื่อง
ต่อจากที่เราพบกฎนี้ในไบนารี Claude Code ผู้ใช้เริ่มรายงานว่างานเชิงพาณิชย์ถูกปฏิเสธ และ Tom's Hardware กับ Mashable หยิบไปรายงาน แต่เมื่อไล่ issue ที่อ้างถึง พบว่าหลายรายการเกิดก่อนกฎจะมา จึงน่าจะเป็นตัวกรองด้านไซเบอร์ ส่วน Anthropic ยังไม่ชี้แจง
Claude Code ส่ง transcript ของ background agent ให้โมเดลทุก ~30 วินาทีเพื่อเขียนสถานะ 3–5 คำ ผู้วัดรายงานกินราว 16% และยังปิดแบบทางการไม่ได้
รายงานอิสระพบว่าฟีเจอร์ agent_summary ของ Claude Code ส่ง transcript เต็มของ background agent ไปถามสถานะทุก ~30 วินาที คิดเป็น 16.4% ของค่าใช้จ่ายในระบบของผู้วัด Issue เปิดมาตั้งแต่ ส.ค. ยังไม่มีสวิตช์ปิดที่รองรับ เราตรวจพบโค้ดนี้ใน 2.1.314 และพบกฎใหม่เรื่องเกมที่ไม่อยู่ใน changelog