เวิร์มที่แพร่ตัวเองผ่าน Microsoft Copilot ใน Word — นักวิจัยเปิดเผยหลังรอ Microsoft แก้ 144 วัน แล้วยังแก้ไม่ได้
เรื่องนี้เป็นข่าวย้อนหลังที่เราเพิ่งตามทัน — งานวิจัยเผยแพร่วันที่ 28 กรกฎาคม 2026 (อัปเดต 30 ก.ค.) และเพิ่งถูกสื่อสายเทคหยิบมาขยายต้นเดือนสิงหาคม แต่มันสำคัญพอที่จะเขียนถึงแม้จะช้าไปหนึ่งสัปดาห์ เพราะเป็นการสาธิต prompt injection ที่แพร่ตัวเองได้ ในผลิตภัณฑ์ที่มีผู้ใช้ระดับองค์กรหลายร้อยล้านคน
นักวิจัยด้านความปลอดภัย Håkon Måløy เผยแพร่ Context Collapse, Part 3: AI Worming through Word — บทที่สามของซีรีส์ที่ก่อนหน้านี้สาธิตการวางยาความจำของ Copilot (Part 1) และการฉีดคำสั่งผ่านอีเมล (Part 2) รอบนี้เขาไปไกลกว่าเดิมหนึ่งขั้น: ทำให้คำสั่งที่ฉีดเข้าไป ไม่ต้องพึ่งผู้โจมตีอีกต่อไป มันคัดลอกตัวเองไปยังเอกสารใหม่ที่ Copilot สร้าง แล้วเอกสารใหม่นั้นก็กลายเป็นพาหะรอบถัดไป
กลไก: ข้อความสีขาวบนพื้นขาว ที่โมเดลอ่านแต่คนไม่เห็น
หัวใจของช่องโหว่คือความไม่สมมาตรระหว่างสิ่งที่ คน เห็นกับสิ่งที่ โมเดล เห็น ผู้โจมตีฝังคำสั่งในรูปแบบ JSON ลงไฟล์ Word โดยตั้งเป็นตัวอักษรสีขาวบนพื้นขาว ขนาดเล็กสุด — มนุษย์เปิดไฟล์แล้วมองไม่เห็นอะไรผิดปกติ แต่เมื่อ Copilot ดึงเนื้อหาไปประมวลผล มันจะ ตัดการจัดรูปแบบทิ้งก่อน เหลือแต่ข้อความล้วน คำสั่งที่ซ่อนไว้จึงโผล่ขึ้นมาเป็นข้อความปกติในสายตาโมเดล
จากนั้นการโจมตีเดินสองจังหวะ:
จังหวะที่ 1 — เจาะครั้งแรก เหยื่อใช้เอกสารที่ถูกวางยาเป็น source material ตอนให้ Copilot ร่างงานใหม่ Copilot ทำตามคำสั่งที่ซ่อนอยู่ (ตัวอย่างในงานวิจัยคือแก้ตัวเลขทางการเงิน) และคัดลอกคำสั่งที่ซ่อนนั้นลงเอกสารที่เพิ่งสร้าง ด้วยการจัดรูปแบบซ่อนแบบเดียวกัน
จังหวะที่ 2 — แพร่ตัวเอง เอกสารภายในองค์กรฉบับใหม่นั้นกลายเป็นพาหะ Måløy สรุปไว้ตรง ๆ ว่า “เมื่อเอกสารที่ได้รับผลกระทบมีพรอมป์อยู่ในตัวแล้ว เอกสารใหม่นั้นก็กลายเป็นช่องทางโจมตีใหม่” เพื่อนร่วมงานคนถัดไปที่หยิบไฟล์นี้ไปเป็น source ให้ Copilot ก็โดนซ้ำ — โดย ไม่ต้องมีไฟล์ต้นทางของผู้โจมตีอีกแล้ว และแพร่ต่อผ่านการแชร์บน SharePoint และอีเมลที่เป็นเวิร์กโฟลว์ปกติขององค์กร
พื้นผิวที่ได้รับผลกระทบตามที่รายงานคือฟีเจอร์ “magic pen” ของ Copilot ใน Word, ประสบการณ์ “Edit with Copilot” ในโหมด Work/Work IQ และเอกสารที่เข้าถึงผ่าน OneDrive
ไทม์ไลน์ 144 วัน ที่จบลงด้วยการเปิดเผยทั้งที่ยังไม่มีทางแก้
สิ่งที่ทำให้เคสนี้หนักไม่ใช่แค่เทคนิค แต่คือบันทึกการประสานงานกับ MSRC ที่ Måløy เผยแพร่ทั้งหมด:
| วันที่ | เหตุการณ์ |
|---|---|
| 6 มี.ค. 2026 | ส่งรายงานพร้อมขั้นตอนทำซ้ำและพรอมป์ PoC |
| 9 มี.ค. 2026 | MSRC รับเรื่องและเปิดเคส |
| 31 มี.ค. 2026 | Microsoft ยืนยันพฤติกรรม ทีมผลิตภัณฑ์เริ่มหาทางบรรเทา |
| 3 เม.ย. 2026 | ปล่อยมาตรการบรรเทารอบแรก (ที่ “Edit with Copilot”) |
| 9 เม.ย. 2026 | พรอมป์เดิมถูกปิด แต่พบและรายงาน ตัวแปร XPIA ใหม่ |
| 8 มิ.ย. 2026 | Microsoft ขอเลื่อนการเปิดเผยไป 15 ก.ค. |
| 14 ก.ค. 2026 | บรรเทารอบสอง — อัปเกรดโมเดลเป็น GPT-5.5 |
| 15 ก.ค. 2026 | ทำซ้ำสำเร็จอีกครั้งบน GPT-5.6 ตกลงขยายเวลาอีกสองสัปดาห์ |
| 28 ก.ค. 2026 | เปิดเผยสาธารณะ — ช่องโหว่ระดับคลาสยังไม่ถูกแก้ |
รวมช่วงประสานงาน 144 วัน ขยายจากกรอบ 90 วันเดิมสองครั้ง และประเด็นที่ควรอ่านซ้ำคือบรรทัดวันที่ 14–15 ก.ค.: Microsoft พยายามแก้ด้วยการ อัปเกรดโมเดล แล้วนักวิจัยทำซ้ำสำเร็จบนโมเดลใหม่ภายในหนึ่งวัน ณ วันเผยแพร่ Microsoft ปิดเพย์โหลดเฉพาะตัวไปแล้ว แต่กลไกพื้นฐานยังอยู่ครบ
ทำไม “แพตช์” ถึงไม่ได้ผล
Måløy ชี้ไปที่จุดอ่อนเชิงสถาปัตยกรรมที่แพตช์ไม่ได้ด้วยการกรองคำ: “LLM ต้องประมวลผลเนื้อหาจากภายนอกเพื่อจะรู้ว่ามันหมายถึงอะไร… แต่กว่าจะตัดสินใจได้ โทเคนที่ผู้โจมตีควบคุมก็มีอิทธิพลต่อการคำนวณไปแล้ว” กล่าวคือ การอ่านเพื่อตรวจจับ กับ การอ่านแล้วถูกชักจูง เกิดขึ้นในขั้นตอนคำนวณเดียวกัน แยกออกจากกันไม่ได้
คำแนะนำฝั่งผู้ใช้ในงานวิจัยจึงเป็นมาตรการเชิงกระบวนการล้วน ๆ: ปฏิบัติต่อเอกสารจากภายนอกเสมือน ไม่น่าเชื่อถือ, ตรวจเอกสารแนบก่อนสั่ง Copilot ให้ร่างงานจากมัน, และตรวจสิ่งที่ Copilot สร้างก่อนส่งต่อ — คำแนะนำที่ยอมรับกลาย ๆ ว่าภาระตกอยู่กับผู้ใช้ ไม่ใช่ผลิตภัณฑ์
มุมมอง AI Curator
เราเคยเขียนถึง prompt injection ใน Copilot มาแล้วหลายรอบ ตั้งแต่ CVE-2026-41109 ใน Visual Studio จนถึงงานฝั่งป้องกันอย่าง Snyk แต่เคสนี้ต่างออกไปในจุดเดียวที่สำคัญมาก: มันแพร่ตัวเองได้ ที่ผ่านมา prompt injection เป็นการโจมตีแบบ “หนึ่งเอกสาร หนึ่งเหยื่อ” แต่เมื่อเพย์โหลดสามารถสั่งให้ผู้ช่วย AI เขียนตัวมันเองลงผลลัพธ์ได้ ต้นทุนการโจมตีก็เปลี่ยนจากเชิงเส้นเป็นเชิงทวีคูณ — ผู้โจมตีจ่ายแค่ครั้งเดียว แล้วให้เวิร์กโฟลว์ที่ถูกต้องตามกฎขององค์กรทำงานแพร่กระจายให้ฟรี
บทเรียนที่ตรงตัวที่สุดสำหรับทีมที่กำลังสร้าง agent อยู่ตอนนี้ คือสิ่งที่เกิดขึ้นวันที่ 14–15 กรกฎาคม — Microsoft แก้ด้วยการเปลี่ยนไปใช้โมเดลที่ฉลาดกว่า และมันถูกเจาะซ้ำภายในวันเดียว โมเดลที่ฉลาดขึ้นไม่ใช่มาตรการความปลอดภัย ถ้าสถาปัตยกรรมของคุณยังปล่อยให้ข้อความจากแหล่งที่ไม่น่าเชื่อถือไหลเข้าไปอยู่ใน context เดียวกับคำสั่งที่มีสิทธิ์ทำงาน สิ่งที่ใช้ได้จริงคือมาตรการเชิงโครงสร้าง — แยกช่องทาง instruction ออกจาก data, บังคับ human approval ก่อน action ที่มีผลข้างเคียง, ตัดสิทธิ์ให้แคบที่สุดต่อหนึ่งงาน, และ ทำให้ผลลัพธ์ของ agent เป็นข้อมูลที่ไม่น่าเชื่อถือโดยปริยาย ไม่ใช่ข้อมูลภายในที่ปลอดภัย
สำหรับองค์กรไทยที่กำลังเปิด Microsoft 365 Copilot ให้พนักงานใช้ทั้งบริษัท — ซึ่งเป็นเทรนด์ที่กำลังมาแรงในภาคธนาคารและองค์กรใหญ่ — ประเด็นที่ควรถามฝ่ายจัดซื้อและ IT ไม่ใช่ “มีช่องโหว่นี้ไหม” แต่คือ “เอกสารจากภายนอกที่หลุดเข้ามาใน SharePoint ของเรา จะกลายเป็นพาหะได้ไหม” เพราะพาหะในเคสนี้ไม่ใช่มัลแวร์ที่ EDR จับได้ แต่เป็นไฟล์ .docx ที่ถูกต้องสมบูรณ์ทุกประการ และไม่มีระบบสแกนไวรัสตัวไหนในตลาดที่มองว่าตัวอักษรสีขาวขนาด 1pt คือภัยคุกคาม อย่างน้อยที่สุด: กำหนดนโยบายว่าเอกสารจากภายนอกต้องผ่านการ “ล้างรูปแบบ” ก่อนถูกใช้เป็น source ให้ AI และอย่ารอให้ผู้ขายบอกว่าแก้แล้ว — 144 วันของเคสนี้บอกว่าคำว่า “แก้แล้ว” อาจหมายถึงแค่เพย์โหลดตัวเดียวที่ถูกปิด
แหล่งข่าว
อ่านเพิ่มในหมวด เครื่องมือนักพัฒนา
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