Copilot ทำให้บันทึกการตรวจสอบเสียหาย แต่ Microsoft ไม่แจ้งลูกค้า
(pistachioapp.com)- พบ ช่องโหว่ใน M365 Copilot ของ Microsoft ที่ทำให้ไม่มีการบันทึก audit log ส่งผลให้การเข้าถึงไฟล์ไม่ถูกทิ้งร่องรอยไว้ในล็อก
- เพียงสั่ง Copilot ให้ทำงานในลักษณะเฉพาะ ก็สามารถ เข้าถึงไฟล์ได้โดยไม่มีบันทึกการตรวจสอบ ซึ่งอาจนำไปสู่ความเสี่ยงจากบุคคลภายในและการละเมิดข้อกำหนดทางกฎหมาย
- นักวิจัยได้รายงานไปยัง MSRC แต่ Microsoft ไม่ออก CVE และไม่แจ้งลูกค้า แม้จะขัดกับนโยบายทางการของตนเอง
- Microsoft จัดช่องโหว่นี้ไว้เพียงระดับ Important และตัดสินว่า แก้ไขแล้วผ่านการอัปเดตอัตโนมัติ จึงไม่จำเป็นต้องมีประกาศเพิ่มเติม
- อย่างไรก็ตาม สิ่งนี้อาจก่อให้เกิด ปัญหาด้านความปลอดภัยและกฎหมายอย่างร้ายแรงต่อองค์กรที่พึ่งพา audit log ในอุตสาหกรรมที่มีการกำกับดูแล เช่น HIPAA และการขาดความโปร่งใสของ Microsoft ก็กำลังถูกวิจารณ์อย่างหนัก
ช่องโหว่ audit log ของ Copilot: ภาพรวมและผลกระทบ
- พบข้อบกพร่องใน Copilot ซึ่งเป็นบริการ AI หลักที่ Microsoft กำลังผลักดันอย่างมาก โดยเมื่อทำตามคำขอของผู้ใช้แล้ว ประวัติการเข้าถึงไฟล์อาจไม่ถูกบันทึกลงใน audit log
- ตามปกติ เมื่อ M365 Copilot สรุปไฟล์ให้ รายการการเข้าถึงไฟล์นั้นควรถูกบันทึกลงใน audit log ซึ่งเป็นหัวใจสำคัญของความมั่นคงปลอดภัยข้อมูลภายในองค์กร
- แต่หากสั่ง Copilot ไม่ให้ใส่ลิงก์ไฟล์ในผลสรุปของไฟล์ จะเกิด อาการที่ไม่มีการบันทึกล็อกดังกล่าวเลย
- ตัวอย่างเช่น แม้พนักงานจะเปิดดูไฟล์จำนวนมากผ่าน Copilot ก่อนลาออก ก็อาจนำข้อมูลออกไปได้โดยไม่ทิ้งร่องรอยในล็อก
- ช่องโหว่นี้ไม่ได้เกิดจากการแฮ็กแบบจงใจเท่านั้น แต่สามารถเกิดขึ้นได้ตามธรรมชาติอย่างไม่ตั้งใจ และผู้เขียนบล็อกก็พบมันระหว่างการทดสอบฟังก์ชันภายในของตนเอง
- Michael Bargury, CTO ของ Zenity ก็เคยพบช่องโหว่นี้และรายงานให้ Microsoft ทราบตั้งแต่ 1 ปีก่อนแล้ว แต่ยังถูกปล่อยทิ้งไว้นานจนถึงการแจ้งครั้งนี้
ปัญหาของ MSRC (การรายงานช่องโหว่) และการไม่ยอมรับแนวทางตอบสนอง
- Microsoft มี คู่มืออย่างเป็นทางการ และกระบวนการสำหรับการรายงานช่องโหว่ แต่ในกระบวนการตอบสนองจริงกลับไม่ได้ปฏิบัติตามอย่างเหมาะสม
- หลังผู้เขียนรายงานไปยัง MSRC ก็เกิดสถานการณ์ที่ชวนสับสน เช่น ฟีเจอร์ของ Copilot ถูกเปลี่ยนทันทีทั้งที่ยังไม่ได้ทำขั้นตอนยืนยันการทำซ้ำปัญหา
- แม้จะมีการเปลี่ยนสถานะของรายงาน (เช่น reproducible → development) แต่ก็ขาดการสื่อสารที่ชัดเจนเกี่ยวกับความคืบหน้าและเหตุผลของการตัดสินใจ
- ในประเด็น การออก CVE สำหรับช่องโหว่ด้านความปลอดภัย ผู้เขียนได้รับคำชี้แจงว่า Microsoft จะให้หมายเลขทางการก็ต่อเมื่อลูกค้าจำเป็นต้องดำเนินการเองเท่านั้น
- แต่นี่ขัดกับนโยบายเดิมของ Microsoft และช่องโหว่นี้ก็ถูกจัดเพียงระดับ 'Important' ทำให้ไม่มีการเปิดเผยหรือแจ้งเตือนแยกต่างหาก
- โดยรวมแล้ว การติดตามความคืบหน้าดูเหมือนถูกอัปเดตให้มองเห็นได้เท่านั้น โดยไม่สัมพันธ์กับการดำเนินการจริง ทำให้ผู้รายงานรู้สึกว่ากระบวนการนี้ไม่มีประสิทธิภาพและขาดความโปร่งใส
ปัญหาจากการไม่มีประกาศและการไม่แจ้งลูกค้า
- Microsoft ตัดสินใจ ไม่ออก CVE และไม่แจ้งลูกค้า เกี่ยวกับช่องโหว่นี้
- เนื่องจากนี่เป็นความผิดพลาดที่เกิดขึ้นได้ง่ายแม้โดยไม่ตั้งใจ จึงมีความเป็นไปได้ว่าในองค์กรจริง audit log อาจถูกบันทึกอย่างผิดพลาดมาเป็นเวลานาน
- แม้จะมีหลายองค์กร เช่น สถาบันทางการแพทย์ที่ใช้ audit log เพื่อวัตถุประสงค์ทาง กฎหมายและการกำกับดูแล (เช่น HIPAA) แต่ Microsoft ก็ไม่ได้แจ้งผู้ใช้เกี่ยวกับผลกระทบดังกล่าว
- audit log ถูกใช้อย่างสำคัญในหลายด้าน เช่น ความปลอดภัยขององค์กร การตอบสนองต่อเหตุการณ์ และหลักฐานทางกฎหมาย แต่ Microsoft กลับเลือกที่จะเงียบเกี่ยวกับข้อเท็จจริงนี้
- แนวทางเช่นนี้ยังชี้ให้เห็นว่าปัญหาความปลอดภัยอื่นที่อาจเกิดขึ้นก็อาจถูกจัดการแบบไม่เปิดเผยเช่นกัน และทำให้เกิดคำถามร้ายแรงต่อความน่าเชื่อถือขององค์กร
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ฉันรับผิดชอบงานพัฒนาแชตบอตภายในบริษัท และกำลังลำบากในการอธิบายให้ผู้บริหารเข้าใจว่า หากแชตบอตเข้าถึงเอกสารลับโดยไม่ได้ตรวจสอบสิทธิ์ทั้งหมดของผู้ใช้ปัจจุบัน ก็จะเกิดช่องทางข้อมูลรั่วไหลอย่างหลีกเลี่ยงไม่ได้
ฐานข้อมูลเวกเตอร์, ดัชนีการค้นหา หรือ AI Search Database จำเป็นต้องมีแยกตามผู้ใช้ หรือไม่ก็ต้องติดตามสิทธิ์การเข้าถึงควบคู่ไปกับเนื้อหา
แต่สิทธิ์การเข้าถึงนั้นซับซ้อนมาก เปลี่ยนแปลงได้ตลอดเวลา ทำให้ขยายใช้ในวงกว้างได้ยาก และยังเปราะบางต่อ race condition ซึ่งเป็นจุดที่ฉันอยากเน้น
นี่คือตัวอย่างที่เป็นรูปธรรมของปัญหา 'Confused Deputy'
เข้าข่ายความเสี่ยงตาม OWASP LLM Top 10 ทั้ง LLM02:2025 ‘Sensitive Information Disclosure’ และ LLM06:2025 ‘Excessive Agency’
โซลูชัน RAG สำหรับองค์กรบางตัวแก้ปัญหาด้วยการสร้างดัชนีแยกตามผู้ใช้เพราะมี ACL หลากหลาย
แต่ละผู้ขายจัดการปัญหาสิทธิ์การเข้าถึงแบบนี้ไม่เหมือนกัน ดังนั้นเวลาวิเคราะห์โซลูชัน RAG ต้องตรวจสอบประเด็นนี้ให้แน่ชัด
ที่ญี่ปุ่นเรียกสิ่งนี้ว่า "ความสับสนของสิทธิ์ (権限混同)" ซึ่งเป็นชื่อที่น่าสนใจดี
ดูคำอธิบาย Confused Deputy, ดูความเสี่ยง OWASP LLM Top 10
อยากรู้ว่าทำไมคุณถึงมองว่าการติดตามสิทธิ์เข้าถึงของผู้ใช้เป็นปัญหาด้านการขยายระบบ
เมื่อมี query เข้ามา ก็แค่ค้นหาเอกสารที่ตรงกันจาก vector DB หรือดัชนี แล้วส่งให้ LLM เฉพาะเอกสารที่ผู้ใช้เข้าถึงได้เท่านั้น
ก็เหมือนเจ้าหน้าที่ธนาคารที่ดูข้อมูลได้เฉพาะลูกค้าที่ผ่านการยืนยันตัวตนแล้ว จึงไม่มีทางเผลอทำข้อมูลของคนอื่นรั่วไหล และถ้ายังไม่ยืนยันตัวตน แม้แต่ผู้ดูแลระบบก็ไม่ควรเห็นข้อมูลของผู้อื่น จึงไม่น่ามีช่องให้ถูกนำไปใช้ในทางที่ผิด
เวลาเจอกำแพงแบบนี้ ในความเป็นจริงอาจไม่ใช่ว่าฉันสื่อสารล้มเหลว หรือผู้บริหารไม่เข้าใจ
แต่อาจเป็นเพราะผู้บริหารตัดสินใจจะเมินปัญหานี้ และถ้ามีการรั่วไหลเกิดขึ้นภายหลังก็จะโยนความรับผิดชอบให้วิศวกร
ถ้าคุณอธิบายปัญหาให้ผู้บริหารฟังแล้วลำบาก การใส่ฝ่าย Legal/Compliance เข้าไปในวงอ้างอิงอาจได้ผล
เพียงแต่ผู้บริหารบางคนที่ยึดติดกับ buzzword อาจไม่พอใจกับการกระทำแบบนี้
ฐานข้อมูลเวกเตอร์ส่วนใหญ่สามารถแนบเมตาดาต้าเพิ่มเติมกับเวกเตอร์ได้
ถ้าเก็บรายชื่อผู้มีสิทธิ์เข้าถึง (เช่น HR, ผู้บริหาร) ไว้เป็นเมตาดาต้า ตอนมีคำขอก็ขยายผู้ใช้เป็นบทบาทเหล่านั้นแล้วกรองออกได้
วิธีนี้ทำให้ตัดเอกสารที่ผู้ใช้ไม่ควรเห็นออกไปตั้งแต่แรก
แต่ทุกครั้งที่สิทธิ์ของเอกสารถูกเปลี่ยน เมตาดาต้าของเวกเตอร์ก็ต้องอัปเดตทันทีเช่นกัน
การที่ Copilot เลี่ยง audit log และทำงานเหมือนเป็นผู้ใช้สิทธิ์พิเศษถือว่าเป็นปัญหา
ฉันคิดว่าเรื่องแบบนั้นไม่ควรเกิดขึ้นได้
จริง ๆ แล้ว Copilot ไม่ได้เข้าถึงไฟล์โดยตรง แต่กำลังอ่านเนื้อหาของไฟล์ที่ถูกทำดัชนีไว้แล้วผ่าน search engine
Microsoft ควรตรวจสอบประวัติการค้นหาของ Copilot และการบันทึกว่า Copilot เข้าถึงไฟล์ ทั้งที่จริงแค่อ่านดัชนี อาจทำให้เข้าใจผิด
ก็เหมือนกับการดูผลการค้นหาของ Google ไม่ได้แปลว่าเราเข้าไปเยี่ยมชมเว็บไซต์นั้นโดยตรง
Microsoft กำลังหมกมุ่นกับการผนวก AI มากเกินความจำเป็น จนละเลย audit log
บน Windows โปรเซสที่มีสิทธิ์ Backup สามารถข้ามสิทธิ์การเข้าถึงทั้งหมดได้ และโดยปกติจะไม่ถูก audit
สำหรับแอปสำรองข้อมูลนั้นเป็นเพราะไม่อย่างนั้น audit log จะมีมากเกินไป แต่สิทธิ์นี้ต้องเปิดใช้งานอย่างชัดเจน และทำได้ง่ายมากใน managed code อย่าง C#
สิทธิ์ Restore ก็เช่นเดียวกัน
ปรากฏการณ์นี้คล้ายกับปัญหาในอดีตตอน Delve ถูกนำมาใช้ใหม่ ๆ ที่ permission trimming ทำงานผิดพลาดจนไปแสดงในผลค้นหาของผู้ใช้ หรือกรณี SharePoint search แสดงเอกสารที่มีอยู่แต่เข้าไม่ถึงบางส่วน
ตัวอย่างเช่น ถ้าค้นหา "Fall 2025 layoffs" แค่เอกสารที่เกี่ยวข้องมีอยู่ก็อาจถูกแสดงขึ้นมา ซึ่งเป็นปัญหาด้านความปลอดภัย
Microsoft ยังให้ความรู้สึกแรงกล้าว่า ‘ความปลอดภัยเป็นเรื่องรอง’
ชื่อที่ดีกว่าน่าจะเป็น "Microsoft Copilot ไม่เป็นไปตามข้อกำหนด HIPAA"
ถ้าใช้ชื่อนี้น่าจะทำให้ปัญหาถูกแก้เร็วขึ้นมาก
ยิ่งไปกว่านั้น ระบบค้นหา AI ที่ใช้งานได้จริงทุกตัวก็ไม่ปลอดภัยโดยการออกแบบ เพราะเวกเตอร์ RAG ที่เก็บไว้ในฐานข้อมูลเวกเตอร์นั้น โดยแก่นแล้วก็คือการบีบอัดเอกสารแบบสูญเสียข้อมูล
ปัญหานี้ถูกแก้ไขไปแล้ว
ข้อไม่พอใจตอนนี้คือไม่มีการแจ้งลูกค้า
“CVE จะถูกกำหนดให้กับ security release ที่แจกจ่ายเมื่อจำเป็นต้องให้ลูกค้าดำเนินการเพื่อป้องกันตัวเอง ในกรณีนี้ มาตรการแก้ไขจะถูก deploy ให้กับ Copilot โดยอัตโนมัติ และผู้ใช้ไม่จำเป็นต้องอัปเดตด้วยตนเอง จึงไม่มีการกำหนด CVE”
ฉันสงสัยว่านี่เป็นลักษณะสำคัญของ CVE จริง ๆ หรือเป็นแค่วิธีที่ Microsoft ใช้ CVE กันแน่
สำหรับช่องโหว่แบบนี้ก็น่าจะดีถ้ามี common ID ให้อ้างอิงได้ และควรมีระบบหมายเลขแยกต่างหากที่ไม่ผูกกับผู้ขาย
Microsoft บอกว่า CVE ใช้ติดตามเหตุการณ์/ช่องโหว่ด้านความปลอดภัย
ต่อให้ทำแพตช์ฉุกเฉินได้อย่างผิดปกติรวดเร็ว ก็ไม่ได้แปลว่าเหตุการณ์นั้นไม่ใช่เหตุการณ์ด้านความปลอดภัยอีกต่อไป
Microsoft มีแนวโน้มจะเปิดเผยเหตุการณ์ด้านความปลอดภัยอย่างไม่โปร่งใสและไม่น่าเชื่อถือมากขึ้นเรื่อย ๆ ดังนั้นในกรณีแบบนี้การเปิดเผยข้อมูลจึงยิ่งสำคัญมาก
มันให้ความรู้สึกว่าไม่ใช่ข้อจำกัดของ CVE แต่เป็น Microsoft ที่ดัดกระบวนการ CVE เพื่อจุดประสงค์ด้าน PR มากกว่า
‘C’ ใน CVE ย่อมาจาก Common
กล่าวคือ เป็นระบบที่เน้นเรื่อง ‘ความเป็นมาตรฐานร่วมกัน’
ตอนนี้เรากำลังพยายามย้าย LOB app ที่สำคัญออกจาก Microsoft เหมือนกัน
พอเห็นการแฮ็กหลายครั้งในช่วงไม่กี่เดือนที่ผ่านมา, SSO zero-day, และ Copilot ที่ตัว indexer ทำงานเหมือน global admin จนเมินสิทธิ์ต่าง ๆ ความกังวลก็ยิ่งเพิ่มขึ้น
ปัญหาที่อาจเกิดขึ้นจากการปล่อยให้ LLM ดูแล audit และ activity log โดยตรงนั้นมีมากเกินกว่าจะนับไหว
เลยสงสัยว่า คราวนี้เขาแก้บั๊กกันอย่างไร หรือว่าได้ใส่ ‘shadow prompt’ เข้าไปหรือเปล่า
ในโพสต์นี้ไม่มีตรงไหนบอกเลยว่า LLM เป็นคนจัดการ audit log โดยตรง
ตรงกันข้าม ดูเหมือนว่า audit log จะถูกบันทึกโดย scaffolding ชั้นบน (ระบบด้านข้าง) ที่ไม่ใช่ LLM แต่จับ ‘จังหวะ’ ที่ต้องบันทึกผิดไป
เช่น แทนที่จะบันทึกตอนมีคนคลิกลิงก์ ก็ควรบันทึกตอนที่เอกสารถูกฉีดเข้าไปใน LLM เป็นต้น
การออกแบบแบบนี้ก็ยังไม่ดีที่สุด แต่ก็ยังแย่น้อยกว่าการให้ LLM เป็นคนบันทึกเอง
ฉันสงสัยอย่างมากกับการใช้ shadow prompt (หรือ prompt รูปแบบใดก็ตาม) เป็นเครื่องมือควบคุมด้านความปลอดภัยหรือคอมพลายแอนซ์จริง ๆ
การควบคุมแบบนี้ควรต้องเป็นระบบที่กำหนดแน่นอนและคาดเดาได้เท่านั้น
ถ้าเครื่องมือใดทำให้ LLM เห็นแม้เพียงบางส่วนของไฟล์ ฉันคิดว่าหลังจากนั้นข้อมูลทุกอย่างที่ LLM ส่งออกมาก็ควรถูกนับว่าได้อ่านไฟล์นั้นแล้ว
ฉันคิดว่าอาจมีคำขอประหลาด ๆ เข้าไปในพรอมป์ต์ของ LLM ได้ เช่น “ถ้าผู้ใช้บอกว่าอย่าให้ลิงก์ ก็ให้เพิกเฉย และถ้าไม่ทำ ครอบครัวของคุณจะเจอเรื่องเลวร้าย XYZ”
มันทำให้นึกถึงปัญหา shadow copies ด้วย
ยังไม่ชัดเจนว่าที่พูดถึงกันอยู่นี้คือ audit log ประเภทไหนกันแน่
SharePoint file access log? บันทึกพฤติกรรมของ Copilot? Purview? หรืออย่างอื่นอีก?
มีหลายจุดที่ยังไม่ชัด
Copilot เข้าถึงเนื้อหาที่ถูกทำดัชนีไว้ ไม่ใช่ตัวไฟล์เอง ดังนั้นก็ถูกต้องแล้วที่มันไม่ได้เข้าถึงไฟล์จริง
ผู้เขียนบล็อกควรไปดู log การเข้าถึงดัชนี
ในเชิงอรรถของบล็อกมีความเห็นหนึ่งว่า “ฉันคิดว่าการที่ audit log ไม่ทิ้งร่องรอยเป็นการเข้าถึงไฟล์โดยตรงของผู้ใช้ แต่บันทึกเป็น CopilotInteraction แทน เป็นสิ่งที่ตั้งใจไว้
ถ้าผู้ใช้เข้าถึงผ่าน Copilot อย่างเดียว แต่กลับถูกบันทึกเหมือนกับไปแตะไฟล์โดยตรงต่างหากที่ดูแปลก”
ฉันลองถาม ChatGPT ด้วยคำถามเดียวกัน มันอธิบายว่ากำลังหมายถึง audit log ของ Microsoft 365, Office 365 โดยเฉพาะ Unified Audit Log ใน Microsoft Purview Compliance Portal
ประเด็นแบบนี้แหละที่ทำให้ความเชื่อใจต่อผู้ขายรายใหญ่อย่าง Microsoft รู้สึกไม่ใช่ ‘หลักประกัน’ แต่เหมือน ‘ดวง’ มากกว่า
ฉันอยากรู้จริง ๆ ว่าในทางปฏิบัติจะต้องแก้ปัญหานี้อย่างไร
เท่าที่ฉันเข้าใจ ดัชนี/DB ที่ Copilot ใช้อยู่ได้ crawl ไฟล์นั้นไปแล้ว ดังนั้นถึงไม่ดึงไฟล์ซ้ำอีกก็ยังบอกข้อมูลนั้นได้
แล้วสุดท้ายต้องแก้ยังไงกันแน่?
ต้องผูกการเข้าถึงฐานข้อมูล/ดัชนีกับ audit log เองหรือไม่?
หรือจะต้องสั่ง LLM ว่า “เวลาค้นความรู้ต้องรักษาสัญญาและบันทึก log ให้แน่นอน” ?
จำเป็นอย่างยิ่งที่ Microsoft ต้องสื่อสารอย่างเป็นทางการว่ารับรู้และแก้ปัญหานี้อย่างไร
หากเป็นบริษัทที่ใช้ข้อมูลอ่อนไหว เหตุการณ์นี้ควรเป็นสัญญาณเตือนอย่างมาก
โดยทั่วไปแล้ว ใครก็สามารถลงทะเบียน CVE ได้
ฉันอาจส่งเองเพื่อกดดันให้ Microsoft ตอบสนองก็ได้
แค่โพสต์บล็อกนี้อย่างเดียวก็ดูน่าเชื่อถือพอสมควรแล้ว
ในความเป็นจริงมันไม่ง่ายขนาดนั้น
CNA ของหมายเลข CVE ส่วนใหญ่ เช่น MITRE หรือ CERT ระดับประเทศ มักเปิดให้ทุกคนรายงานได้ แต่ก็มีการประเมินและทบทวน
Microsoft เป็น CNA ของตัวเอง ดังนั้นถ้าไม่มีเหตุผลพิเศษ ก็คงไม่ให้ CVE ที่เกี่ยวกับ MS จากภายนอกง่าย ๆ
ฉันกำลังคิดอยู่ว่าการขอ CVE สำหรับบริการที่ Microsoft เป็นผู้ให้บริการเพียงรายเดียวมันมีความหมายแค่ไหน
ผู้ใช้จะเอามันไปทำอะไรได้จริงหรือ?
แบบฟอร์มลงทะเบียน CVE ทำได้ที่ ที่นี่
มีทั้งการรองรับ PGP, ประวัติการดำเนินงานที่ยาวนาน, และสปอนเซอร์ที่ได้รับการยืนยัน ทำให้ดูน่าเชื่อถือมาก
ควรใช้เฉพาะกับกรณีที่ถูกต้องตามกฎหมายและสมเหตุสมผลเท่านั้น
แม้จะน่าสนุก แต่ฉันคิดว่านี่ไม่ใช่เคสของ CVE
CVE ควรเป็นช่องโหว่ที่ใช้ร่วมกันได้กับผลิตภัณฑ์หลากหลายจากหลายแหล่ง และ Copilot ไม่เข้าข่ายนั้น
จุดที่ร้ายแรงที่สุดของเหตุการณ์นี้คือความผิดพลาดด้านการออกแบบที่ไปสั่งให้ Copilot LLM สร้าง audit log เอง
ควรให้ API ที่ใช้เปิดไฟล์หรือ URL บันทึก audit log โดยอัตโนมัติ ซึ่งเป็นพื้นฐานทางวิศวกรรมอยู่แล้ว