0Pricing
Cyber Security Academy · บทเรียน

การรักษาความปลอดภัยตัวแทนปัญญาประดิษฐ์และการใช้เครื่องมือ

จำกัดการดำเนินการของเอเจนต์อัตโนมัติ

การรักษาความปลอดภัยตัวแทนปัญญาประดิษฐ์และการใช้เครื่องมือ เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดเอเจนต์จึงมีความเสี่ยง

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

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

เนื่องจากเนื้อหาที่ไม่น่าเชื่อถือสามารถเข้าสู่ลูปการให้เหตุผลได้ เครื่องมือทุกชิ้นที่เอเจนต์ถือครองจึงเป็นพื้นผิวการโจมตีสำหรับการฉีดคำสั่ง

การให้สิทธิ์น้อยที่สุดแก่เครื่องมือ

มาตรการควบคุมที่สำคัญที่สุดเพียงข้อเดียวคือการให้สิทธิ์น้อยที่สุด ให้แต่ละเครื่องมือมีขอบเขตที่แคบที่สุดเท่าที่จะยังทำงานได้

  • เลือกการอ่านอย่างเดียวแทนการอ่านและเขียน และจำกัดการอ่านไว้เฉพาะข้อมูลของผู้ใช้ปัจจุบัน
  • แยกเครื่องมือที่มีขอบเขตกว้างให้เป็นเครื่องมือที่แคบลง (เครื่องมือ get_invoice แทนเครื่องมือเอสคิวแอลดิบ)
  • ผูกข้อมูลรับรองของเครื่องมือกับข้อมูลระบุตัวตนของผู้ใช้ปลายทาง ไม่ใช่บัญชีบริการร่วม เพื่อให้เอเจนต์สืบทอดเฉพาะสิทธิ์ที่ผู้ใช้ทำได้
# Scope queries to the authenticated user, never raw SQL
def get_invoice(invoice_id: str, *, user_id: str):
    return db.query(
        "SELECT * FROM invoices WHERE id=%s AND owner=%s",
        (invoice_id, user_id),
    )

จุดตรวจสอบโดยมนุษย์ในกระบวนการ

สำหรับการกระทำที่มีผลกระทบสูงหรือย้อนกลับไม่ได้ ให้กำหนดว่าต้องได้รับการอนุมัติจากมนุษย์อย่างชัดเจนก่อนดำเนินการ เอเจนต์เป็นผู้เสนอ และบุคคลเป็นผู้ยืนยัน

  • การส่งอีเมลหรือข้อความไปยังภายนอก
  • ธุรกรรมทางการเงินหรือการซื้อ
  • การลบหรือเขียนทับข้อมูล
  • การนำโค้ดไปใช้งานหรือการเปลี่ยนแปลงโครงสร้างพื้นฐาน

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

การแยกโค้ดและคำสั่งไว้ในแซนด์บ็อกซ์

เอเจนต์ที่เรียกใช้โค้ดหรือคำสั่งเชลล์ต้องทำงานในแซนด์บ็อกซ์ที่แยกออกจากระบบ และต้องไม่ทำงานบนโฮสต์โดยเด็ดขาด

  • ใช้คอนเทนเนอร์ชั่วคราวหรือ microVMs ที่ไม่มีจุดเมานต์ของโฮสต์
  • ปิดการเข้าถึงเครือข่ายเป็นค่าเริ่มต้น และอนุญาตเฉพาะการส่งข้อมูลออกตามรายการอนุญาตที่ระบุไว้อย่างชัดเจน
  • กำหนดขีดจำกัด CPU หน่วยความจำ และเวลา เพื่อควบคุมโค้ดที่ทำงานไม่หยุดหรือเป็นอันตราย
  • เรียกใช้ในฐานะผู้ใช้ที่ไม่มีสิทธิ์ผู้ดูแลระบบ พร้อมระบบไฟล์รากแบบอ่านอย่างเดียว
docker run --rm \
  --network none \
  --read-only \
  --user 1000:1000 \
  --memory 256m --cpus 0.5 \
  --pids-limit 64 \
  agent-sandbox:latest python /work/task.py

การตัดสามประสานร้ายแรง

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

ออกแบบให้เอาองค์ประกอบออกอย่างน้อยหนึ่งข้อในแต่ละกระบวนการ:

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

ผลลัพธ์จากเครื่องมือที่ไม่น่าเชื่อถือ

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

  • ครอบผลลัพธ์จากเครื่องมือด้วยตัวคั่นที่ชัดเจน และระบุว่าเป็นข้อมูล ไม่ใช่คำสั่ง
  • ลบหรือทำให้ข้อความที่ซ่อนอยู่ไม่มีผล (ความคิดเห็น HTML อักขระความกว้างศูนย์ และ CSS ที่อยู่นอกหน้าจอ)
  • จำกัดขนาดเนื้อหาที่ฉีดเพื่อจำกัดพื้นที่สำหรับข้อมูลโจมตี

อย่าปล่อยให้ผลลัพธ์ดิบจากเครื่องมือกำหนดการเรียกใช้เครื่องมือครั้งถัดไปอย่างเงียบ ๆ โดยไม่มีการตรวจสอบตามนโยบาย

รายการอนุญาตการกระทำและการบังคับใช้นโยบาย

อย่าพึ่งพาให้โมเดลตรวจสอบตัวเอง ให้บังคับใช้ชั้นนโยบายในโค้ดระหว่างเอเจนต์กับเครื่องมือทุกชิ้น

  • validate การเรียกใช้เครื่องมือแต่ละครั้งเทียบกับรายการอนุญาตของการกระทำและรูปแบบอาร์กิวเมนต์ที่อนุญาต
  • ปฏิเสธการเรียกที่อยู่นอกขอบเขตงานปัจจุบัน
  • ใช้ขีดจำกัดอัตราและงบประมาณแยกตามเครื่องมือและผู้ใช้

ด่านแบบกำหนดแน่นอนนี้ทำงานไม่ว่าผลการตัดสินใจของโมเดลจะเป็นอย่างไร ดังนั้นแม้การฉีดคำสั่งจะสำเร็จ ก็ยังต้องพบกำแพงสกัดกั้นที่แน่นหนา

def authorize(call):
    if call.name not in ALLOWED_TOOLS:
        raise PolicyError("tool not allowed")
    if not SCHEMA[call.name].validate(call.args):
        raise PolicyError("bad arguments")
    if exceeds_budget(call):
        raise PolicyError("rate limit")

การจำกัดลูป

ลูปอัตโนมัติอาจควบคุมไม่ได้ เช่น การลองซ้ำไม่สิ้นสุด การเรียกใช้เครื่องมือแบบวนซ้ำ และการใช้จ่ายที่พุ่งไม่หยุด (การโจมตีให้ค่าใช้จ่ายพุ่ง) จึงต้องกำหนดขอบเขตให้ลูปเหล่านี้

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

ขีดจำกัดเหล่านี้ยังช่วยลดผลกระทบจากการโจมตีแบบปฏิเสธการให้บริการและการใช้ทรัพยากรแบบไร้ขอบเขต (OWASP LLM10)

ความเสี่ยงจากหน่วยความจำและหลายเอเจนต์

ระบบที่มีหน่วยความจำถาวรของเอเจนต์และหลายเอเจนต์เพิ่มพื้นผิวการโจมตีรูปแบบใหม่:

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

การบันทึกข้อมูลและความสามารถในการสังเกตการณ์

คุณไม่สามารถรักษาความปลอดภัยให้สิ่งที่มองไม่เห็นได้ จึงต้องติดตั้งการเก็บข้อมูลติดตามเอเจนต์อย่างครบถ้วน:

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

ข้อมูลตรวจวัดที่ดีจะเปลี่ยนการถูกเจาะที่ไม่แสดงร่องรอยให้กลายเป็นเหตุการณ์ที่ตรวจจับและสืบสวนได้

สถาปัตยกรรมเอเจนต์แบบหลายชั้น

เมื่อนำทุกอย่างมารวมกัน สแตกเอเจนต์ที่ป้องกันได้ควรมีลักษณะดังนี้:

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

สมมติว่าโมเดลอาจถูกยึดการควบคุมได้ และตรวจสอบให้แน่ใจว่าเมื่อเกิดขึ้น ขอบเขตความเสียหายจะยังคงเล็กที่สุด

ตรวจสอบความเข้าใจอย่างรวดเร็ว

โปรดทดสอบความเข้าใจของคุณเกี่ยวกับการควบคุมความปลอดภัยของเอเจนต์

ทบทวน

การรักษาความปลอดภัยของเอเจนต์ปัญญาประดิษฐ์และการใช้เครื่องมือ:

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

คำถามที่พบบ่อย

บทเรียน “การรักษาความปลอดภัยตัวแทนปัญญาประดิษฐ์และการใช้เครื่องมือ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การรักษาความปลอดภัยตัวแทนปัญญาประดิษฐ์และการใช้เครื่องมือ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การรักษาความปลอดภัยตัวแทนปัญญาประดิษฐ์และการใช้เครื่องมือ”

จำกัดการดำเนินการของเอเจนต์อัตโนมัติ คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การรักษาความปลอดภัยตัวแทนปัญญาประดิษฐ์และการใช้เครื่องมือ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม

ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การฉีดพรอมต์และการเจลเบรก
  2. OWASP LLM Top 10
  3. การรักษาความปลอดภัยตัวแทนปัญญาประดิษฐ์และการใช้เครื่องมือ
  4. ความเสี่ยงจากโมเดล ข้อมูล และห่วงโซ่อุปทาน
← กลับไปที่ Cyber Security Academy