3 คะแนน โดย GN⁺ 2025-08-21 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • พบ ช่องโหว่ใน 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 ความคิดเห็น

 
GN⁺ 2025-08-21
ความคิดเห็นจาก 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 ต้องสื่อสารอย่างเป็นทางการว่ารับรู้และแก้ปัญหานี้อย่างไร
    หากเป็นบริษัทที่ใช้ข้อมูลอ่อนไหว เหตุการณ์นี้ควรเป็นสัญญาณเตือนอย่างมาก

    • ฉันคิดว่าไม่ช้าก็เร็ว เนื้อหาไฟล์ที่แคชไว้ในดัชนีก็ต้องถูกใส่เข้าไปใน context ของ LLM และตรงจุดนั้นเองที่น่าจะบันทึก audit log ได้
  • โดยทั่วไปแล้ว ใครก็สามารถลงทะเบียน 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 โดยอัตโนมัติ ซึ่งเป็นพื้นฐานทางวิศวกรรมอยู่แล้ว