CodeQL 2.26.0 ตรวจจับ prompt injection ได้แล้ว — GitHub code scanning เตือนเมื่อ input ผู้ใช้ไหลเข้า system prompt ของ LLM
GitHub ปล่อย CodeQL 2.26.0 (10 ก.ค. 2026) พร้อมความสามารถที่ตรงกับปัญหาความปลอดภัยอันดับต้น ๆ ของยุค LLM โดยตรง: คิวรีใหม่ที่ตรวจจับ prompt injection. คิวรี JavaScript/TypeScript ตัวใหม่ชื่อ js/system-prompt-injection ออกแบบมาเพื่อ “ตรวจจับตอนที่ค่าจากผู้ใช้ที่เชื่อไม่ได้ (untrusted, user-provided values) ไหลเข้าไปใน system prompt ของโมเดล AI” — นั่นคือ static analysis ที่จับช่องโหว่ระดับ prompt injection ให้เห็นตั้งแต่ตอน CI ก่อนโค้ดจะขึ้น production
สิ่งที่ทำให้ข่าวนี้สำคัญกับนักพัฒนาทุกคนที่กำลัง ship ฟีเจอร์ AI คือ มันมาถึงมือฟรีและอัตโนมัติ: CodeQL เป็นเอนจินเบื้องหลัง GitHub code scanning และทุกเวอร์ชันใหม่ของ CodeQL จะถูก deploy ให้ผู้ใช้ code scanning บน github.com โดยอัตโนมัติ ส่วน GitHub Enterprise Server (GHES) จะได้รับในรีลีสถัดไป แปลว่าถ้าคุณเปิด code scanning อยู่แล้ว repo ที่มีโค้ด LLM จะเริ่มถูกสแกนหาช่องนี้ทันที โดยไม่ต้องตั้งอะไรเพิ่ม
prompt injection คืออะไร ทำไม static analysis ถึงจับได้
Prompt injection คือช่องโหว่ที่ค่าจากภายนอก (ข้อความจากผู้ใช้, เนื้อหาเว็บที่ดึงมา, ข้อมูลจาก API) ถูกนำไปต่อกับ system prompt หรือคำสั่งที่ควบคุมพฤติกรรมของโมเดล ผลคือผู้ใช้ที่ไม่หวังดีสามารถ “แทรกคำสั่ง” เพื่อให้โมเดลทำสิ่งที่นักพัฒนาไม่ได้ตั้งใจ เช่น เปิดเผยข้อมูลลับ, ข้ามข้อจำกัด, หรือเรียกเครื่องมือในทางที่ผิด นี่เป็นหนึ่งในความเสี่ยงอันดับต้นของแอป LLM ที่ OWASP จัดไว้ในลำดับสูงสุด
มุมมองของ CodeQL คือ มองปัญหานี้เหมือน taint tracking แบบเดียวกับ SQL injection หรือ XSS: ไล่ดูว่าข้อมูลจาก “source” ที่เชื่อไม่ได้ไหลไปถึง “sink” ที่อันตราย (ในที่นี้คือ system prompt ของโมเดล) โดยไม่ผ่านการกรองหรือแยกส่วนหรือไม่ พอวางกรอบเป็น dataflow แบบนี้ static analysis จึงติดตามเส้นทางของค่าในโค้ดได้ และเตือนตรงจุดที่ input ผู้ใช้เชื่อมเข้ากับคำสั่งระบบ
ครอบคลุม SDK ของ OpenAI, Anthropic และ Google GenAI
จุดที่ทำให้คิวรีนี้ใช้ได้จริงคือความครอบคลุมของ sink ที่รู้จัก 2.26.0 เพิ่ม prompt-injection sink สำหรับ API ของ SDK หลายเจ้า ตามที่ changelog ระบุ ได้แก่:
- OpenAI — รวมถึง Sora prompts และ session instructions ของ OpenAI Realtime
- Anthropic — รวมถึง legacy completion prompts
- Google GenAI — รวมถึง cached content และ system instructions
การที่ CodeQL รู้จัก “ทางเข้า” เหล่านี้ในหลาย SDK พร้อมกันสำคัญ เพราะแอป AI จริงมักไม่ได้ผูกกับ provider เดียว การมี sink ที่แม็ปตรงกับ API ของแต่ละ SDK ทำให้การไล่ dataflow แม่นขึ้นและลด false negative (ช่องที่หลุดสายตา) ในโค้ดที่ใช้ทั้ง OpenAI, Anthropic และ Google ผสมกัน
ไม่ใช่แค่ AI — Kotlin 2.4.0 และอื่น ๆ
นอกจากคิวรี prompt injection แล้ว 2.26.0 ยังขยายการรองรับภาษา: CodeQL รองรับ Kotlin ถึงเวอร์ชัน 2.4.0 แล้ว, ฝั่ง C# เพิ่ม Razor Page handler parameters เป็น remote flow source, Go เพิ่มโมเดลสำหรับแพ็กเกจ log/slog จาก Go 1.21, Python ลด false positive ของคิวรี py/modification-of-locals และ Swift ปรับปรุงการโมเดล CryptoKit สำหรับคิวรี hashing เป็นการอัปเดตที่ครบทั้งงาน AI security และงาน static analysis พื้นฐาน
มุมมอง AI Curator
ปีที่ผ่านมาวงการพูดเรื่อง prompt injection กันมาก แต่ส่วนใหญ่อยู่ในระดับ “บทความเตือน” กับ “แนวปฏิบัติที่ดี” ซึ่งพึ่งวินัยของนักพัฒนาแต่ละคน การที่ GitHub ยกมันขึ้นมาเป็น คิวรี static analysis ที่รันอัตโนมัติใน CI เป็นก้าวเชิงโครงสร้างที่ต่างออกไป — มันเปลี่ยนความปลอดภัยของ LLM จาก “เรื่องที่ต้องจำให้ทำ” เป็น “เรื่องที่เครื่องมือคอยเตือนให้เอง” เหมือนที่ SQL injection และ XSS เคยเดินทางจากคำเตือนสู่กฎ linter มาแล้ว นี่คือสัญญาณว่า AppSec ของแอป AI กำลังกลายเป็นวินัยมาตรฐาน ไม่ใช่ความรู้เฉพาะกลุ่ม
ข้อจำกัดที่ควรเข้าใจตามตรง: static analysis จับได้เฉพาะรูปแบบ dataflow ที่มันรู้จัก — ค่าที่ไหลผ่านทางอ้อม, prompt ที่ประกอบขึ้นแบบซับซ้อน, หรือ injection ที่มาจากเนื้อหาที่โมเดลไป fetch เองระหว่างรัน (indirect prompt injection) อาจยังหลุดได้ คิวรีนี้จึงเป็น “ตาข่ายชั้นแรก” ที่ดี ไม่ใช่การรับประกัน ทีมยังต้องออกแบบให้แยก system instruction ออกจาก user input, จำกัดสิทธิ์ของ tool ที่ agent เรียกได้ และทดสอบด้วย adversarial input อยู่ดี
สำหรับนักพัฒนาไทยและเอเชียตะวันออกเฉียงใต้ที่กำลังต่อ chatbot, RAG และ agent เข้ากับระบบงานจริงมากขึ้นเรื่อย ๆ ข่าวดีคือชั้นป้องกันนี้ ฟรีและเปิดใช้เองได้ทันที: ถ้าโปรเจกต์อยู่บน GitHub แค่เปิด code scanning (มีให้ฟรีสำหรับ repo สาธารณะ และรวมอยู่ใน GitHub Advanced Security สำหรับองค์กร) repo ที่มีโค้ด LLM ก็จะเริ่มได้ประโยชน์จากคิวรีนี้ นับเป็นวิธีที่ต้นทุนต่ำที่สุดในการยกระดับความปลอดภัยของฟีเจอร์ AI ที่ทีมกำลังเร่ง ship
แหล่งข่าว
- CodeQL 2.26.0 adds Kotlin 2.4.0 support and AI prompt injection detection (GitHub Changelog, 10 ก.ค. 2026)
- GitHub code scanning documentation — วิธีเปิดใช้ code scanning ด้วย CodeQL
- OWASP Top 10 for LLM Applications — บริบทของ prompt injection ในฐานะความเสี่ยงอันดับต้น
อ่านเพิ่มในหมวด เครื่องมือนักพัฒนา
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