Skip to content

Latest commit

 

History

History
120 lines (84 loc) · 30.9 KB

File metadata and controls

120 lines (84 loc) · 30.9 KB

แนวปฏิบัติด้านความปลอดภัยที่ดีที่สุด

การนำ Model Context Protocol (MCP) มาใช้ช่วยเพิ่มขีดความสามารถใหม่ ๆ ให้กับแอปพลิเคชันที่ขับเคลื่อนด้วย AI แต่ก็สร้างความท้าทายด้านความปลอดภัยเฉพาะตัวที่เกินกว่าความเสี่ยงของซอฟต์แวร์ทั่วไป นอกจากความกังวลที่มีอยู่แล้ว เช่น การเขียนโค้ดอย่างปลอดภัย การให้สิทธิ์แบบน้อยที่สุด และความปลอดภัยในห่วงโซ่อุปทาน MCP และงาน AI ยังต้องเผชิญกับภัยคุกคามใหม่ ๆ เช่น การโจมตีด้วย prompt injection, การปลอมแปลงเครื่องมือ และการแก้ไขเครื่องมือแบบไดนามิก ความเสี่ยงเหล่านี้อาจนำไปสู่การรั่วไหลของข้อมูล การละเมิดความเป็นส่วนตัว และพฤติกรรมของระบบที่ไม่คาดคิดหากไม่ได้รับการจัดการอย่างเหมาะสม

บทเรียนนี้จะสำรวจความเสี่ยงด้านความปลอดภัยที่เกี่ยวข้องกับ MCP มากที่สุด เช่น การพิสูจน์ตัวตน การให้สิทธิ์ การอนุญาตเกินความจำเป็น การโจมตีแบบ prompt injection ทางอ้อม และช่องโหว่ในห่วงโซ่อุปทาน พร้อมทั้งให้คำแนะนำและแนวทางปฏิบัติที่สามารถนำไปใช้ได้จริงเพื่อบรรเทาความเสี่ยงเหล่านี้ คุณจะได้เรียนรู้วิธีใช้โซลูชันของ Microsoft เช่น Prompt Shields, Azure Content Safety และ GitHub Advanced Security เพื่อเสริมความแข็งแกร่งให้กับการใช้งาน MCP ของคุณ ด้วยการเข้าใจและนำควบคุมเหล่านี้ไปใช้ คุณจะช่วยลดความเป็นไปได้ของการถูกโจมตีและทำให้ระบบ AI ของคุณมีความน่าเชื่อถือและมั่นคงมากขึ้น

วัตถุประสงค์การเรียนรู้

เมื่อจบบทเรียนนี้ คุณจะสามารถ:

  • ระบุและอธิบายความเสี่ยงด้านความปลอดภัยเฉพาะตัวที่เกิดจาก Model Context Protocol (MCP) รวมถึง prompt injection, การปลอมแปลงเครื่องมือ, การอนุญาตเกินความจำเป็น และช่องโหว่ในห่วงโซ่อุปทาน
  • อธิบายและนำควบคุมที่มีประสิทธิภาพมาใช้เพื่อลดความเสี่ยงด้านความปลอดภัยของ MCP เช่น การพิสูจน์ตัวตนที่แข็งแกร่ง การให้สิทธิ์แบบน้อยที่สุด การจัดการโทเค็นอย่างปลอดภัย และการตรวจสอบห่วงโซ่อุปทาน
  • เข้าใจและใช้โซลูชันของ Microsoft เช่น Prompt Shields, Azure Content Safety และ GitHub Advanced Security เพื่อปกป้อง MCP และงาน AI
  • ตระหนักถึงความสำคัญของการตรวจสอบข้อมูลเมตาของเครื่องมือ การติดตามการเปลี่ยนแปลงแบบไดนามิก และการป้องกันการโจมตีแบบ prompt injection ทางอ้อม
  • รวมแนวปฏิบัติด้านความปลอดภัยที่ได้รับการยอมรับ เช่น การเขียนโค้ดอย่างปลอดภัย การเสริมความแข็งแกร่งของเซิร์ฟเวอร์ และสถาปัตยกรรม zero trust เข้าไปในการใช้งาน MCP เพื่อช่วยลดโอกาสและผลกระทบจากการถูกโจมตี

ควบคุมความปลอดภัยของ MCP

ระบบใด ๆ ที่เข้าถึงทรัพยากรสำคัญจะมีความท้าทายด้านความปลอดภัยโดยนัย ความท้าทายด้านความปลอดภัยโดยทั่วไปสามารถจัดการได้ด้วยการประยุกต์ใช้ควบคุมและแนวคิดพื้นฐานด้านความปลอดภัยอย่างถูกต้อง เนื่องจาก MCP เป็นโปรโตคอลที่เพิ่งถูกกำหนดขึ้นใหม่ ข้อกำหนดยังเปลี่ยนแปลงอย่างรวดเร็วและมีการพัฒนาอย่างต่อเนื่อง ในที่สุดควบคุมด้านความปลอดภัยภายในจะเติบโตและช่วยให้การรวมเข้ากับสถาปัตยกรรมความปลอดภัยขององค์กรและแนวปฏิบัติที่ได้รับการยอมรับทำได้ดียิ่งขึ้น

งานวิจัยที่เผยแพร่ใน Microsoft Digital Defense Report ระบุว่า 98% ของการละเมิดที่รายงานสามารถป้องกันได้ด้วยสุขอนามัยด้านความปลอดภัยที่เข้มงวด และการป้องกันที่ดีที่สุดต่อการละเมิดใด ๆ คือการทำให้สุขอนามัยด้านความปลอดภัยพื้นฐาน การเขียนโค้ดอย่างปลอดภัย และความปลอดภัยในห่วงโซ่อุปทานถูกต้องและเหมาะสม — แนวทางที่ผ่านการทดสอบและพิสูจน์แล้วเหล่านี้ยังคงมีผลมากที่สุดในการลดความเสี่ยงด้านความปลอดภัย

มาดูวิธีการบางอย่างที่คุณสามารถเริ่มจัดการความเสี่ยงด้านความปลอดภัยเมื่อนำ MCP มาใช้

Note: ข้อมูลต่อไปนี้ถูกต้อง ณ วันที่ 29 พฤษภาคม 2025 โปรโตคอล MCP กำลังพัฒนาอย่างต่อเนื่อง และการใช้งานในอนาคตอาจมีรูปแบบการพิสูจน์ตัวตนและควบคุมใหม่ ๆ สำหรับข้อมูลล่าสุดและคำแนะนำ กรุณาอ้างอิงที่ MCP Specification และที่เก็บโค้ด MCP GitHub repository รวมถึง security best practice page

ปัญหา

ข้อกำหนด MCP เดิมสมมติว่าผู้พัฒนาจะเขียนเซิร์ฟเวอร์พิสูจน์ตัวตนเอง ซึ่งต้องมีความรู้เกี่ยวกับ OAuth และข้อจำกัดด้านความปลอดภัยที่เกี่ยวข้อง เซิร์ฟเวอร์ MCP ทำหน้าที่เป็น OAuth 2.0 Authorization Servers จัดการการพิสูจน์ตัวตนของผู้ใช้โดยตรง แทนที่จะมอบหมายให้บริการภายนอกเช่น Microsoft Entra ID ตั้งแต่วันที่ 26 เมษายน 2025 เป็นต้นมา ข้อกำหนด MCP ได้อัปเดตให้เซิร์ฟเวอร์ MCP สามารถมอบหมายการพิสูจน์ตัวตนของผู้ใช้ให้กับบริการภายนอกได้

ความเสี่ยง

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

Token Passthrough

Token passthrough ถูกห้ามอย่างชัดเจนในข้อกำหนดการให้สิทธิ์เพราะสร้างความเสี่ยงด้านความปลอดภัยหลายประการ เช่น:

การหลีกเลี่ยงควบคุมความปลอดภัย

เซิร์ฟเวอร์ MCP หรือ API ปลายทางอาจมีการใช้งานควบคุมความปลอดภัยสำคัญ เช่น การจำกัดอัตราการใช้งาน การตรวจสอบคำขอ หรือการตรวจจับทราฟฟิก ที่พึ่งพา token audience หรือข้อจำกัดอื่น ๆ ของข้อมูลรับรอง หากไคลเอนต์สามารถขอและใช้โทเค็นโดยตรงกับ API ปลายทางโดยไม่ผ่านการตรวจสอบอย่างถูกต้องจากเซิร์ฟเวอร์ MCP หรือไม่มั่นใจว่าโทเค็นออกให้กับบริการที่ถูกต้อง จะทำให้ควบคุมเหล่านี้ถูกข้ามไป

ปัญหาด้านความรับผิดชอบและการตรวจสอบ

เซิร์ฟเวอร์ MCP จะไม่สามารถระบุหรือแยกแยะไคลเอนต์ MCP ได้เมื่อไคลเอนต์เรียกด้วยโทเค็นที่ออกโดยต้นทางซึ่งอาจเป็นข้อมูลที่เซิร์ฟเวอร์ MCP มองไม่เห็น บันทึกของเซิร์ฟเวอร์ทรัพยากรปลายทางอาจแสดงคำขอที่ดูเหมือนมาจากแหล่งที่ต่างกันและตัวตนที่ต่างจากเซิร์ฟเวอร์ MCP ที่ส่งต่อโทเค็นจริง ปัจจัยทั้งสองนี้ทำให้การสืบสวนเหตุการณ์ การควบคุม และการตรวจสอบทำได้ยากขึ้น หากเซิร์ฟเวอร์ MCP ส่งต่อโทเค็นโดยไม่ตรวจสอบคำอ้างสิทธิ์ (เช่น บทบาท สิทธิพิเศษ หรือ audience) หรือข้อมูลเมตาอื่น ๆ ผู้ไม่หวังดีที่มีโทเค็นที่ถูกขโมยสามารถใช้เซิร์ฟเวอร์เป็นพร็อกซีสำหรับการขโมยข้อมูลได้

ปัญหาขอบเขตความเชื่อถือ

เซิร์ฟเวอร์ทรัพยากรปลายทางมอบความเชื่อถือให้กับหน่วยงานเฉพาะ ความเชื่อนี้อาจรวมถึงสมมติฐานเกี่ยวกับแหล่งที่มา หรือลักษณะการทำงานของไคลเอนต์ การทำลายขอบเขตความเชื่อนี้อาจนำไปสู่ปัญหาที่ไม่คาดคิด หากโทเค็นถูกยอมรับโดยหลายบริการโดยไม่มีการตรวจสอบอย่างเหมาะสม ผู้โจมตีที่เจาะบริการหนึ่งได้สามารถใช้โทเค็นนั้นเพื่อเข้าถึงบริการอื่นที่เชื่อมต่อกันได้

ความเสี่ยงด้านความเข้ากันได้ในอนาคต

แม้ว่าเซิร์ฟเวอร์ MCP จะเริ่มต้นเป็น “พร็อกซีบริสุทธิ์” ในวันนี้ อาจต้องเพิ่มควบคุมความปลอดภัยในภายหลัง การเริ่มต้นด้วยการแยก audience ของโทเค็นอย่างถูกต้องจะช่วยให้การพัฒนารูปแบบความปลอดภัยง่ายขึ้น

ควบคุมที่ช่วยลดความเสี่ยง

เซิร์ฟเวอร์ MCP ต้องไม่รับโทเค็นใด ๆ ที่ไม่ได้ออกให้กับเซิร์ฟเวอร์ MCP โดยเฉพาะ

การอนุญาตเกินความจำเป็นสำหรับเซิร์ฟเวอร์ MCP

ปัญหา

เซิร์ฟเวอร์ MCP อาจได้รับสิทธิ์เกินความจำเป็นสำหรับบริการหรือทรัพยากรที่เข้าถึง เช่น เซิร์ฟเวอร์ MCP ที่เป็นส่วนหนึ่งของแอปพลิเคชัน AI ด้านการขายที่เชื่อมต่อกับคลังข้อมูลองค์กร ควรได้รับสิทธิ์เข้าถึงเฉพาะข้อมูลการขายเท่านั้น และไม่ควรเข้าถึงไฟล์ทั้งหมดในคลังข้อมูล การอ้างอิงกลับไปยังหลักการ least privilege (หนึ่งในหลักการความปลอดภัยที่เก่าแก่ที่สุด) ทรัพยากรใด ๆ ไม่ควรได้รับสิทธิ์เกินกว่าที่จำเป็นสำหรับการทำงานที่ตั้งใจไว้ AI นำความท้าทายเพิ่มขึ้นในพื้นที่นี้เพราะเพื่อให้มีความยืดหยุ่น อาจยากที่จะกำหนดสิทธิ์ที่แน่นอนที่จำเป็น

ความเสี่ยง

  • การให้สิทธิ์เกินความจำเป็นอาจทำให้เกิดการขโมยข้อมูลหรือการแก้ไขข้อมูลที่เซิร์ฟเวอร์ MCP ไม่ควรเข้าถึงได้ ซึ่งอาจเป็นปัญหาด้านความเป็นส่วนตัวหากข้อมูลนั้นเป็นข้อมูลส่วนบุคคล (PII)

ควบคุมที่ช่วยลดความเสี่ยง

  • ใช้หลักการ least privilege: ให้สิทธิ์กับเซิร์ฟเวอร์ MCP เฉพาะที่จำเป็นสำหรับการทำงานที่ต้องการเท่านั้น ตรวจสอบและอัปเดตสิทธิ์เหล่านี้อย่างสม่ำเสมอเพื่อให้แน่ใจว่าไม่เกินความจำเป็น สำหรับคำแนะนำเชิงลึก ดูที่ Secure least-privileged access
  • ใช้การควบคุมการเข้าถึงแบบกำหนดตามบทบาท (RBAC): กำหนดบทบาทให้กับเซิร์ฟเวอร์ MCP ที่จำกัดอย่างเข้มงวดกับทรัพยากรและการกระทำเฉพาะ หลีกเลี่ยงการให้สิทธิ์กว้างหรือไม่จำเป็น
  • ติดตามและตรวจสอบสิทธิ์: ติดตามการใช้สิทธิ์อย่างต่อเนื่องและตรวจสอบบันทึกการเข้าถึงเพื่อค้นหาและแก้ไขสิทธิ์ที่เกินความจำเป็นหรือไม่ได้ใช้งานอย่างรวดเร็ว

การโจมตีแบบ Indirect Prompt Injection

ปัญหา

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

  • การโจมตีแบบ Prompt Injection: ผู้โจมตีฝังคำสั่งที่เป็นอันตรายไว้ใน prompt หรือเนื้อหาภายนอก ทำให้ระบบ AI ทำงานที่ไม่ตั้งใจหรือรั่วไหลข้อมูลที่ละเอียดอ่อน เรียนรู้เพิ่มเติมที่: Prompt Injection
  • การปลอมแปลงเครื่องมือ (Tool Poisoning): ผู้โจมตีแก้ไขข้อมูลเมตาของเครื่องมือ (เช่น คำอธิบายหรือพารามิเตอร์) เพื่อเปลี่ยนพฤติกรรม AI อาจหลีกเลี่ยงการควบคุมความปลอดภัยหรือขโมยข้อมูล รายละเอียด: Tool Poisoning
  • การโจมตีแบบ Cross-Domain Prompt Injection: คำสั่งอันตรายถูกฝังในเอกสาร เว็บเพจ หรืออีเมล แล้วถูกประมวลผลโดย AI ทำให้เกิดการรั่วไหลหรือการเปลี่ยนแปลงข้อมูล
  • การแก้ไขเครื่องมือแบบไดนามิก (Rug Pulls): นิยามเครื่องมือสามารถเปลี่ยนแปลงหลังจากได้รับการอนุมัติจากผู้ใช้ นำไปสู่พฤติกรรมอันตรายใหม่โดยที่ผู้ใช้ไม่รู้ตัว

ช่องโหว่เหล่านี้เน้นความจำเป็นในการตรวจสอบอย่างเข้มงวด การติดตาม และควบคุมความปลอดภัยเมื่อรวมเซิร์ฟเวอร์ MCP และเครื่องมือต่าง ๆ เข้ากับสภาพแวดล้อมของคุณ สำหรับรายละเอียดเพิ่มเติม ดูแหล่งข้อมูลที่ลิงก์ไว้ข้างต้น

prompt-injection-lg-2048x1034

Indirect Prompt Injection (หรือที่รู้จักกันในชื่อ cross-domain prompt injection หรือ XPIA) เป็นช่องโหว่ร้ายแรงในระบบ AI สร้างเนื้อหา รวมถึงระบบที่ใช้ Model Context Protocol (MCP) ในการโจมตีนี้ คำสั่งที่เป็นอันตรายจะถูกซ่อนไว้ในเนื้อหาภายนอก เช่น เอกสาร เว็บเพจ หรืออีเมล เมื่อระบบ AI ประมวลผลเนื้อหานี้ อาจตีความคำสั่งฝังเหล่านี้เป็นคำสั่งของผู้ใช้ที่ถูกต้อง ส่งผลให้เกิดการกระทำที่ไม่ตั้งใจ เช่น การรั่วไหลของข้อมูล การสร้างเนื้อหาที่เป็นอันตราย หรือการเปลี่ยนแปลงปฏิสัมพันธ์กับผู้ใช้ สำหรับคำอธิบายอย่างละเอียดและตัวอย่างจริง ดูที่ Prompt Injection

รูปแบบอันตรายอย่างยิ่งของการโจมตีนี้คือ Tool Poisoning ซึ่งผู้โจมตีฝังคำสั่งอันตรายลงในข้อมูลเมตาของเครื่องมือ MCP (เช่น คำอธิบายหรือพารามิเตอร์ของเครื่องมือ) เนื่องจากโมเดลภาษาขนาดใหญ่ (LLMs) พึ่งพาข้อมูลเมตานี้ในการตัดสินใจเรียกใช้เครื่องมือที่เหมาะสม คำอธิบายที่ถูกแทรกแซงสามารถหลอกโมเดลให้เรียกใช้เครื่องมือที่ไม่ได้รับอนุญาตหรือหลีก

ถัดไป

ถัดไป: บทที่ 3: การเริ่มต้น

ข้อจำกัดความรับผิดชอบ:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาอัตโนมัติ Co-op Translator แม้ว่าเราจะพยายามให้ความถูกต้องสูงสุด โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ แนะนำให้ใช้บริการแปลโดยผู้เชี่ยวชาญมนุษย์ เราจะไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่ผิดพลาดที่เกิดจากการใช้การแปลนี้