สรุปสั้น

บริษัท Intezer ร่วมกับบริษัท Kodem Security เปิดเผยช่องโหว่ใน AWS Kiro ซึ่งเป็น IDE สำหรับเขียนโค้ดแบบ agentic ของ Amazon ที่ทำให้ข้อความอันตรายที่ซ่อนอยู่ในหน้าเว็บสามารถสั่งให้ agent ของ Kiro เขียนทับไฟล์ตั้งค่า MCP (Model Context Protocol) แล้วรันโค้ดตามต้องการบนเครื่องของนักพัฒนาได้ทันที โดยไม่มีขั้นตอนอนุมัติที่มีประสิทธิภาพเข้ามาขวาง แม้ Kiro จะแสดงหน้าต่างแจ้งเตือนว่าไฟล์ตั้งค่าถูกเปลี่ยน แต่การโหลดค่าใหม่เกิดขึ้นโดยไม่สนใจว่าผู้ใช้จะกดอนุมัติหรือปฏิเสธ ทำให้กลไกป้องกันไม่มีผลจริง

ช่องโหว่นี้ถูกรายงานผ่าน HackerOne เมื่อวันที่ 11 กุมภาพันธ์ 2569 และ AWS ยืนยันว่าแก้ไขแล้วในเวอร์ชัน 0.11.130 ภายในเดือนเมษายน 2569 โดยไม่มีการกำหนดหมายเลข CVE เวอร์ชันปัจจุบันอยู่ในสาย 1.0.x โดย 1.0.165 เป็นเวอร์ชันล่าสุด ณ วันที่ 21 กรกฎาคม 2569 นี่เป็นครั้งที่ 3 ในรอบประมาณ 1 ปีที่นักวิจัยจากคนละทีมพบบั๊กรูปแบบเดียวกันใน Kiro คือ agent สามารถแก้ไขไฟล์ที่กำหนดว่าตัวเองมีสิทธิ์ทำอะไรได้บ้าง

รายละเอียดข่าว

เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 21 กรกฎาคม 2569 ว่าบริษัท Intezer ได้สาธิตการโจมตี Kiro IDE ของ AWS ตั้งแต่ต้นจนจบ โดยใช้เพียงหน้าเว็บเอกสาร API ที่ดูปกติ แต่ซ่อนข้อความคำสั่งไว้ด้วยตัวอักษรสีขาวขนาด 1 พิกเซล (color:#fff;font-size:1px) เมื่อนักพัฒนาขอให้ Kiro สรุปหน้าเว็บดังกล่าว agent จะอ่านข้อความที่ซ่อนอยู่ เขียนคำสั่งเซิร์ฟเวอร์ MCP อันตรายลงในไฟล์ ~/.kiro/settings/mcp.json แล้ว Kiro จะโหลดค่าใหม่และสั่งรันเซิร์ฟเวอร์ที่ถูกฝังมาทันที ทั้งหมดเกิดขึ้นภายในไม่กี่วินาทีหลังจากที่ผู้ใช้แค่อนุมัติการดึงข้อมูลจาก URL เท่านั้น

จุดอ่อนหลักอยู่ที่ไฟล์ mcp.json ซึ่งเป็นไฟล์ที่บอก Kiro ว่าต้องโหลดเครื่องมือภายนอก (MCP server) ตัวไหนบ้าง และใช้คำสั่งอะไรในการเริ่มต้น เมื่อไฟล์นี้ถูกแก้ไข Kiro จะโหลดค่าใหม่และเรียกคำสั่งที่ระบุไว้บนเครื่องของนักพัฒนาด้วยสิทธิ์ของผู้ใช้คนนั้น ในช่วงที่มีช่องโหว่ Kiro สามารถเขียนไฟล์ mcp.json ด้วยเครื่องมือ fsWrite ของตัวเองได้โดยไม่ต้องขออนุมัติ โดยเฉพาะในโหมด Autopilot ที่เป็นโหมดเริ่มต้น ในการสาธิตของ Intezer เพย์โหลดที่ฝังมาส่งชื่อเครื่อง ชื่อผู้ใช้ และแพลตฟอร์มกลับไปทุก 10 วินาที แต่ด้วยสิทธิ์เดียวกันสามารถขโมยข้อมูลประจำตัว ซอร์สโค้ด หรือฝังช่องทางเข้าถาวรได้

เหตุการณ์ลักษณะเดียวกันเคยเกิดขึ้นมาก่อนใน Kiro โดยนาย Johann Rehberger แห่ง Embrace The Red แสดงการโจมตีแบบเดียวกันในวันเปิดตัว Kiro เมื่อกรกฎาคม 2568 และบริษัท Cymulate รายงานช่องโหว่การรันโค้ดผ่าน .vscode/tasks.json ซึ่ง AWS กำหนดเป็น CVE-2026-10591 (CVSS 3.1: 8.8) ทั้ง 3 กรณีมีรูปแบบเดียวกัน คือ agent สามารถแก้ไขไฟล์ที่กำหนดสิทธิ์ของตัวเองได้

รายละเอียดช่องโหว่

ห่วงโซ่การโจมตี (Attack Chain) ประกอบด้วย 3 ขั้นตอน:

ขั้นที่ 1 — ฉีดคำสั่งผ่าน Prompt Injection: ฝังข้อความที่มองไม่เห็นในหน้าเว็บ (ข้อความสีขาวขนาด 1 พิกเซล) เมื่อนักพัฒนาขอให้ Kiro ดึงหรือสรุปหน้าเว็บ agent จะอ่านข้อความที่ซ่อนเข้าไปในบริบทการทำงาน

ขั้นที่ 2 — เขียนทับไฟล์ตั้งค่า MCP: agent ทำตามคำสั่งที่ฉีดมา ใช้เครื่องมือ fsWrite เขียนเซิร์ฟเวอร์ MCP ปลอมลงใน ~/.kiro/settings/mcp.json ในโหมด Autopilot ขั้นตอนนี้ไม่ต้องขออนุมัติ

ขั้นที่ 3 — รันโค้ดอัตโนมัติ: Kiro ตรวจพบว่าไฟล์ตั้งค่าเปลี่ยน โหลดค่าใหม่ และเรียกคำสั่งเริ่มต้นเซิร์ฟเวอร์ MCP ที่ถูกฝังมา ซึ่งเป็นโค้ดของผู้โจมตีที่ทำงานด้วยสิทธิ์ของนักพัฒนา แม้ Kiro จะแสดงหน้าต่างแจ้งเตือน แต่การโหลดค่าเกิดขึ้นไม่ว่าผู้ใช้จะกดอนุมัติหรือไม่

AWS แก้ไขโดยกำหนดให้ไฟล์ mcp.json, .vscode/tasks.json, ไดเรกทอรี .git และไฟล์อื่นที่มีความอ่อนไหวเป็น protected paths ที่ต้องได้รับอนุมัติก่อนเขียนทุกครั้ง โดยการป้องกันนี้ทำงานทั้งในโหมด Autopilot และ Supervised ต่างจากการแก้ไขครั้งก่อนในปี 2568 ที่ป้องกันเฉพาะโหมด Supervised เท่านั้น เอกสารของ Kiro เองระบุชัดว่า “Supervised mode is a code review workflow, not a security control”

ผลกระทบต่อไทย

Kiro เป็น IDE ใหม่ที่เริ่มได้รับความสนใจจากนักพัฒนาไทย โดยเฉพาะทีมที่ใช้บริการ AWS เป็นหลัก ช่องโหว่นี้เป็นตัวอย่างที่ชัดเจนของความเสี่ยงจากเครื่องมือเขียนโค้ดแบบ agentic ที่สามารถเรียกดูเว็บ แก้ไขไฟล์ และรันคำสั่งได้ในตัว ซึ่งไม่ได้จำกัดเฉพาะ Kiro เท่านั้น — เมื่อเดือนธันวาคม 2568 นักวิจัยเคยรวบรวมช่องโหว่มากกว่า 30 รายการในเครื่องมือเขียนโค้ด AI หลายตัว รวมถึง Cursor และ Copilot ที่เปลี่ยนฟีเจอร์ปกติของ editor ให้กลายเป็นช่องทาง prompt injection สู่การรันโค้ดหรือขโมยข้อมูล นักพัฒนาไทยที่ใช้เครื่องมือ AI coding ควรตระหนักว่าการอนุมัติ “ดึงข้อมูลจาก URL” อาจนำไปสู่การรันโค้ดบนเครื่องได้

คำแนะนำ

  1. อัปเดต Kiro เป็นเวอร์ชันล่าสุด (สาย 1.0.x) ทันที — เวอร์ชันก่อน 0.11.130 ยังมีช่องโหว่
  2. ตรวจสอบไฟล์ mcp.json เป็นประจำว่ามีเซิร์ฟเวอร์ MCP ที่ไม่รู้จักถูกเพิ่มเข้ามาหรือไม่
  3. ใช้โหมด Supervised และตรวจสอบทุกการกระทำของ agent ที่เกี่ยวข้องกับไฟล์ตั้งค่า แม้ว่าเวอร์ชันใหม่จะป้องกันทั้ง 2 โหมดแล้ว
  4. ระมัดระวังการให้ AI agent ดึงข้อมูลจาก URL ที่ไม่น่าเชื่อถือ เพราะหน้าเว็บที่ดูปกติอาจซ่อนคำสั่ง prompt injection ไว้
  5. สำหรับทีมที่ใช้เครื่องมือ AI coding ตัวอื่นด้วย ควรตรวจสอบว่ามีไฟล์ตั้งค่าใดบ้างที่ agent สามารถเขียนได้ และกำหนดนโยบายป้องกันในระดับองค์กร

แหล่งอ้างอิง