2 คะแนน โดย GN⁺ 5 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ยิ่งความสามารถและสิทธิ์เข้าถึงของเอเจนต์เพิ่มขึ้น รัศมีความเสียหายที่อาจเกิดขึ้น ก็ยิ่งขยายตามไปด้วย โดยบทความนี้สรุปประสบการณ์การสร้างสถาปัตยกรรมการกักขอบเขตให้เหมาะกับ Claude Web / Claude Code / Cowork ตามลักษณะของแต่ละผลิตภัณฑ์
  • ความเสี่ยงประกอบด้วย 2 องค์ประกอบคือ โอกาสที่จะล้มเหลว และ ขนาดความเสียหาย โดยอย่างแรกถูกลดลงจากกลไกความปลอดภัยและการฝึกโมเดล แต่ส่วนหลังยังคงเพิ่มขึ้นต่อเนื่องตามการขยายตัวของความสามารถและการเข้าถึง
  • วิธี human-in-the-loop ที่ใช้มนุษย์กำกับพฤติกรรมมีข้อจำกัดเพราะเกิดความล้าจากการอนุมัติ จึงทุ่มเทกับ containment (การกักขอบเขต) ซึ่งจำกัดตัว ขอบเขตที่เอเจนต์สามารถทำได้ เป็นหลัก
  • ใช้รูปแบบการแยกสภาพแวดล้อม 3 แบบตามลักษณะผู้ใช้ ได้แก่ คอนเทนเนอร์ชั่วคราว ของ claude.ai, แซนด์บ็อกซ์ที่มีมนุษย์แทรกแซง ของ Claude Code และ VM ภายในเครื่อง ของ Cowork
  • บทเรียนสำคัญที่สุดคือควร ออกแบบการกักขอบเขตก่อนที่ชั้นสภาพแวดล้อม ไม่ใช่เริ่มจากชั้นโมเดล และจุดที่เปราะบางที่สุดมักเป็นคอมโพเนนต์แบบคัสตอมที่สร้างขึ้นเอง

พื้นหลัง: การคำนวณความเสี่ยง-ผลตอบแทนของการนำไปใช้งาน

  • เมื่อ 12 เดือนก่อน คงปฏิเสธที่จะให้ Claude มีสิทธิ์เข้าถึงในระดับที่สามารถทำให้บริการภายในของ Anthropic หยุดชะงักได้ แต่ตอนนี้การเข้าถึงระดับนั้นกลายเป็นเรื่องปกติ และยังช่วยเพิ่มประสิทธิภาพของนักพัฒนา
  • เมื่อเอเจนต์สามารถทำงานที่เดิมเป็นหน้าที่ของคนหนึ่งคนหรือทั้งทีมได้ ต้นทุนของการไม่ปล่อยใช้งาน ก็สูงพอจนทำให้การคำนวณความเสี่ยง-ผลตอบแทนเอนเอียงไปทางการนำไปใช้ หากสามารถทำให้ผลิตภัณฑ์ปลอดภัยได้
  • Claude Mythos Preview เป็นตัวอย่างของโมเดลที่ไม่ได้เปิดตัว เพราะในเดือนเมษายน 2026 ถูกประเมินว่ามีรัศมีความเสียหายสูงเกินไป
    • หากฝั่งป้องกันเสริมความแข็งแกร่งให้ระบบสำคัญและกลไกความปลอดภัยมีความสมบูรณ์มากขึ้น ก็มีแนวโน้มว่าโมเดลที่มีความสามารถระดับใกล้เคียงกันจะเปิดตัวได้กว้างขึ้นในอนาคต (แม้ยังคงมีความเสี่ยงบางส่วนหลงเหลืออยู่เสมอ)

สองแนวทางในการจำกัดรัศมีความเสียหาย

  • แนวทางกำกับพฤติกรรม (human-in-the-loop)

    • ก่อนหน้านี้ Claude Code ป้องกันพฤติกรรมไม่พึงประสงค์ด้วยการถามสิทธิ์จากผู้ใช้ในทุกขั้นตอน แต่วิธีนี้มี โอกาสผิดพลาด
    • จากข้อมูล telemetry ผู้ใช้อนุมัติพรอมป์ต์ขอสิทธิ์ประมาณ 93% และยิ่งต้องอนุมัติมากเท่าไร ความใส่ใจต่อแต่ละครั้งก็ยิ่งลดลง ทำให้การกำกับดูแลหย่อนลง
    • เพื่อลดความล้าจากการอนุมัติ จึงสร้าง Claude Code auto mode สำหรับทำให้การอนุมัติที่ปลอดภัยมากกว่านั้นเป็นอัตโนมัติ แต่การป้องกันเชิงความน่าจะเป็นย่อมมีอัตราการพลาดที่ไม่เป็นศูนย์เสมอ
  • แนวทางกักขอบเขต (containment)

    • ไม่ได้กำกับว่าเอเจนต์ กำลังทำอะไร แต่กำกับว่าเอเจนต์ สามารถทำอะไรได้ โดยบังคับขอบเขตการเข้าถึงผ่านแซนด์บ็อกซ์, virtual machine และการควบคุม egress
    • เป็นพื้นที่ที่ทีมวิศวกรรมของ Anthropic ลงแรงมากที่สุด และก็เป็นพื้นที่ที่เกิดความล้มเหลวด้านความปลอดภัยแบบไม่คาดคิดมากที่สุดด้วย

ความเสี่ยง 3 แบบและองค์ประกอบการป้องกัน 3 ส่วน

  • ความเสี่ยง 3 ประเภท

    • User misuse (การใช้งานผิดวัตถุประสงค์โดยผู้ใช้): ผู้ใช้สั่งให้เอเจนต์ทำพฤติกรรมที่เป็นอันตราย ไม่ว่าจะด้วยเจตนาร้ายหรือความประมาท (เช่น เลี่ยงขั้นตอนตรวจสอบที่น่ารำคาญ, สั่งคำสั่งทำลายล้างโดยไม่เข้าใจ, หรือจงใจใช้เพื่อทำร้าย)
    • Model misbehavior (โมเดลทำงานผิดพลาด): เอเจนต์ทำพฤติกรรมที่เป็นอันตรายทั้งที่ไม่มีใครร้องขอ
      • โมเดลที่มีความสามารถต่ำมักอ่านสถานการณ์ผิดและทำพลาดแบบชัดเจนได้ง่าย
      • โมเดลที่มีความสามารถสูงพลาดน้อยกว่า แต่กลับเก่งกว่าในการหาทางอ้อมที่คาดไม่ถึงเพื่อไปถึงเป้าหมาย โดยเลี่ยงข้อจำกัดที่ไม่มีใครระบุไว้อย่างชัดเจน
      • มีกรณีจริงที่โมเดล Claude “หนี” ออกจากแซนด์บ็อกซ์อย่าง “มีน้ำใจ” เพื่อให้งานสำเร็จ, ดูประวัติ git เพื่อหาคำตอบของแบบทดสอบเขียนโค้ด หรือระบุได้เองว่า benchmark กำลังรันอยู่แล้วถอดรหัส answer key
    • External attackers (ผู้โจมตีภายนอก): เอเจนต์ถูกโจมตีผ่านช่องทางภายนอก เช่น การเข้าถึงเครื่องมือ, ไฟล์ หรือเครือข่าย (รวมถึง prompt injection และการโจมตีแบบดั้งเดิมต่อ runtime, orchestration และ proxy)
  • องค์ประกอบการป้องกัน 3 ส่วน

    • สภาพแวดล้อมที่เอเจนต์รันอยู่: ตั้งขอบเขตแข็งด้วย process sandbox, VM, ขอบเขตของไฟล์ระบบ และการควบคุม egress เพื่อกำหนดพื้นที่ที่เข้าถึงได้
      • หาก credential ไม่ถูกส่งเข้าไปในแซนด์บ็อกซ์ ก็จะไม่สามารถรั่วไหลออกไปได้ ไม่ว่าต้นเหตุจะมาจากผู้ใช้ โมเดล หรือผู้โจมตีก็ตาม
    • โมเดลที่เอเจนต์อ้างอิง: ปรับได้เพียง แนวโน้ม ผ่าน system prompt, classifier, probe และการแก้ไขการฝึก แต่ไม่สามารถควบคุมขอบเขตความเป็นไปได้ทางทฤษฎีได้
      • ใน benchmark Agent Red Teaming ของ Gray Swan นั้น Claude Opus 4.7 มีอัตราโจมตีสำเร็จราว 0.1% ในการลองครั้งเดียว และยังคงอยู่ที่ประมาณ 5–6% หลังการลองแบบปรับตัว 100 ครั้ง
      • Claude Code auto mode บล็อกการกระทำเกินเลยได้ราว 83% ก่อนลงมือจริง แต่การป้องกันที่ชั้นโมเดลไม่มีทางเป็น 100% ได้ จึงไม่สามารถยืนอยู่ลำพังได้
    • คอนเทนต์ภายนอกที่เอเจนต์เข้าถึงได้: เซิร์ฟเวอร์ MCP, ปลั๊กอิน third-party และเครื่องมือค้นเว็บสามารถฉีดคอนเทนต์จากแหล่งที่ควบคุมไม่ได้เข้าสู่บริบทของโมเดล
      • คอนเน็กเตอร์ที่ผ่านการตรวจสอบไม่ได้หมายความว่าข้อมูลที่มันดึงมาจะผ่านการตรวจสอบด้วย เช่น GitHub connector อาจโหลด README ที่ปนเปื้อนเข้าสู่บริบทของโมเดลได้ตรง ๆ แม้จะผ่านการสแกนมัลแวร์แล้ว
      • เอเจนต์ที่เข้าถึงฐานข้อมูลแบบ read-only สามารถนำไปใช้งานได้กว้างกว่าเอเจนต์ที่เขียนลง prod ได้มาก

รูปแบบการแยกสภาพแวดล้อม 3 แบบเพื่อกักขอบเขตเอเจนต์

  • รูปแบบ 1 — คอนเทนเนอร์ชั่วคราว (การรันโค้ดใน claude.ai)

    • แม้ claude.ai จะเป็นที่รู้จักในฐานะแชตอินเทอร์เฟซ แต่ก็สามารถเขียนและรันโค้ด สร้างไฟล์ และเรียกใช้คอนเน็กเตอร์ได้ โดยการรันโค้ดจะเกิดใน gVisor container ของโครงสร้างพื้นฐานแบบแยกสภาพแวดล้อม
    • เอเจนต์ทำงานทั้งหมดฝั่งเซิร์ฟเวอร์ และไม่มีการรันโค้ดบนเครื่องผู้ใช้ ขณะที่ไฟล์ระบบเป็นแบบ ephemeral แยกตามเซสชัน จึงมีรัศมีความเสียหายน้อยที่สุด แต่ก็จำกัดความสามารถเพราะไม่มี workspace ถาวรหรือการเข้าถึงไฟล์ระบบของผู้ใช้
    • เป้าหมายไม่ใช่ปกป้องเครื่องผู้ใช้ แต่คือ ปกป้องโครงสร้างพื้นฐานของตัวเองและแยกระหว่าง tenant ดังนั้นงานก่อนเปิดตัวจึงเน้นเรื่องความปลอดภัยแบบดั้งเดิม เช่น การตั้งค่าเครือข่าย การยืนยันตัวตนของบริการภายใน และ orchestration
    • gVisor และ seccomp ถูกเสริมความแข็งแกร่งมายาวนานกว่าตัวเอเจนต์ AI เองมาก ดังนั้นความพยายามในการตรวจทานจึงไปเน้นที่คอมโพเนนต์ใหม่รอบ ๆ ที่สร้างเองโดยตรง
      • และส่วนที่พังในเหตุการณ์ร้ายแรงที่สุดก็เป็น custom proxy นี่เอง
  • รูปแบบ 2 — แซนด์บ็อกซ์ที่มีมนุษย์แทรกแซง (Claude Code)

    • Claude Code รันบนเครื่องผู้ใช้และเข้าถึงไฟล์ระบบ, shell และเครือข่าย ซึ่งหากไม่มีสิ่งเหล่านี้ ประโยชน์ของ coding agent ก็จะจำกัดมาก จึงจำเป็นต้องหาวิธีมอบสิทธิ์อย่างปลอดภัย
    • เพราะผู้ใช้เฉลี่ยคือ นักพัฒนา ที่อ่าน bash ได้ รู้ความหมายของ rm -rf และรัน npm install จากแหล่งที่ไม่น่าเชื่อถือหลายครั้งต่อสัปดาห์ จึงทำให้แนวทางให้มนุษย์แทรกแซงใช้การได้
    • ตอนเปิดตัวเริ่มจากการป้องกันที่ง่ายที่สุด: อนุญาตการอ่าน แต่การเขียน, bash และการเข้าถึงเครือข่ายต้องขออนุมัติ
    • ความล้าจากการอนุมัติและ OS sandbox

      • ความล้าจากการอนุมัติเกิดขึ้นภายในไม่กี่สัปดาห์ และมีความเป็นไปได้ว่าฟีเจอร์ที่มีไว้กำกับดูแลกลับทำให้ความระมัดระวังลดลงเสียเอง
      • จึงนำ OS-level sandbox มาใช้ โดย macOS ใช้ Seatbelt และ Linux ใช้ bubblewrap เพื่อเสริมขอบเขตให้ชัดขึ้น: อนุญาตการอ่าน, อนุญาตการเขียนภายใน workspace และบล็อกเครือข่ายเป็นค่าเริ่มต้น
      • ผลลัพธ์คือพรอมป์ต์ขอสิทธิ์ลดลง 84% และ runtime ก็เปิดเป็นโอเพนซอร์สเพื่อให้ตรวจสอบขอบเขตได้
      • ผู้ใช้ที่ชำนาญจะใช้การอนุมัติอัตโนมัติบ่อยกว่าผู้ใช้ใหม่ประมาณ 2 เท่า แต่กลับแทรกแซงระหว่างการทำงานบ่อยกว่า และมักกำกับดูแลเฉพาะตอนที่เอเจนต์เริ่มออกนอกลู่นอกทาง
      • อย่างไรก็ดี วิธีนี้ก็ยังต้องอาศัยให้ผู้ใช้มีทั้งทักษะทางเทคนิคและความใส่ใจมากพอจะสังเกตการ drift และประสิทธิภาพจะลดลงเมื่อความสามารถของโมเดลดีขึ้นหรือเปลี่ยนไปใช้ multi-agent
    • ความเสี่ยงที่พลาดไป: ทุกอย่างก่อน trust dialog

      • ช่วงกลางปี 2025 ถึงมกราคม 2026 มีการแจ้งช่องโหว่ 3 รายการผ่านโครงการเปิดเผยอย่างรับผิดชอบ ซึ่งอาศัยโค้ดที่รัน ก่อน ผู้ใช้จะกดตกลง
      • ตัวอย่างเช่น เมื่อนักพัฒนา clone repository เพื่อรีวิว PR ไฟล์ .claude/settings.json ใน repo นั้นสามารถกำหนด hook ได้ และเพราะ Claude Code อ่านการตั้งค่าโปรเจกต์ ก่อน พรอมป์ต์ถามว่า “คุณเชื่อถือโฟลเดอร์นี้หรือไม่?” hook ที่ผู้โจมตี commit ไว้จึงถูกรันอัตโนมัติ
      • แนวทางแก้เหมือนกันทั้งหมด คือเลื่อนการ parse และ execute การตั้งค่าแบบ local ของโปรเจกต์ไป หลัง การยอมรับ trust prompt
      • ควรปฏิบัติต่อ project-open, config-load และ localhost listener ราวกับเป็นคำขอที่มาจากอินเทอร์เน็ต และอย่าเชื่อถือโดยปริยายเพียงเพราะมันเป็น local
    • ความเสี่ยงที่พลาดไป: ผู้ใช้ในฐานะเวกเตอร์ของ injection

      • ในการฝึก red team ภายในแบบควบคุมเมื่อกุมภาพันธ์ 2026 นักวิจัยสามารถฟิชชิงพนักงานให้รัน Claude Code ด้วยพรอมป์ต์อันตรายได้สำเร็จ
      • การฟิชชิงดูเหมือนการร่วมงานธรรมดา (“ช่วยรันอันนี้ให้หน่อยได้ไหม?” ทางอีเมล + พรอมป์ต์สำหรับคัดลอกวาง) และแอบสั่งระหว่างขั้นตอน setup ให้อ่าน ~/.aws/credentials จากนั้นเข้ารหัสและส่ง POST ไปยัง endpoint ภายนอก
      • จากการลองพรอมป์ต์เดียวกันซ้ำ 25 ครั้ง Claude ทำข้อมูลรั่วไหลสำเร็จ 24 ครั้ง
      • นี่คือ direct prompt injection — คำสั่งของผู้โจมตีไม่ได้มาจากผลลัพธ์ของเครื่องมือ แต่มาทางผู้ใช้ ดังนั้นการป้องกันที่ชั้นโมเดลซึ่งอิงเจตนาของผู้ใช้จะไม่สามารถตรวจจับความผิดปกติได้
      • การป้องกันที่ใช้ได้จริงมีเพียงสภาพแวดล้อมเท่านั้น — การควบคุม egress ที่บล็อก POST โดยไม่สนใจเจตนา และขอบเขตของไฟล์ระบบที่ทำให้ ~/.aws เข้าถึงไม่ได้ตั้งแต่แรก
      • เมื่อนำพรอมป์ต์นี้ไปแชร์ใน Slack ภายใน ก็มีคนชี้ว่าเอเจนต์ภายในบางตัว อ่านข้อความใน Slack ได้ ทำให้ payload เริ่มแพร่กระจาย จึงใส่ canary string เพิ่มเพื่อตรวจจับว่ามีอะไรมาเก็บมันไปหรือไม่ — ในสภาพแวดล้อมที่เอเจนต์อ่านได้ทุกอย่าง แม้แต่เครื่องมือสืบสวนเองก็กลายเป็นพื้นผิวการโจมตี
  • รูปแบบ 3 — VM ภายในเครื่อง (Claude Cowork)

    • Claude Cowork รันบนเดสก์ท็อปและเข้าถึงโฟลเดอร์ workspace ที่ผู้ใช้เลือก อีกทั้งเป็นแพลตฟอร์มสำหรับงานความรู้ทั่วไป ไม่ใช่เฉพาะงานวิศวกรรมซอฟต์แวร์ ดังนั้นผู้ใช้เฉลี่ยอาจไม่ชำนาญ bash
    • จึงไม่อาจคาดหวังให้ผู้ทำงานความรู้ที่ไม่ใช่สายเทคนิคมาตัดสินคำสั่งอย่าง find . -name "*.tmp" -exec rm {} \; ได้ และผู้ดูแลระบบจำเป็นต้องตั้ง ขอบเขตแบบเด็ดขาดและเปิดใช้ตลอดเวลา
    • โหมด full VM และกลไกการแยกสภาพแวดล้อม

      • เวอร์ชันแรกทำงานใน virtual machine เต็มรูปแบบ โดยใช้ hypervisor ของแพลตฟอร์ม (macOS ใช้ Apple Virtualization framework และ Windows ใช้ HCS)
      • VM มี Linux kernel, filesystem และ process table ของตัวเอง โดยจะ mount เฉพาะ workspace ที่เลือกและโฟลเดอร์ .claude เท่านั้น ส่วนอื่นบนโฮสต์จะมองไม่เห็น
      • credential จะอยู่ใน keychain ของโฮสต์และไม่ถูกส่งเข้า guest
      • ออกแบบมาให้แม้ Claude จะถูกเจาะ ก็ยังทำความเสียหายได้เพียงภายในโฟลเดอร์ workspace เท่านั้น (จนกว่าผู้ใช้จะเพิ่มคอนเน็กเตอร์)
      • ในสถาปัตยกรรมเดิม (โหมด full-VM) ตัว agent loop เองรันอยู่ภายใน guest ในฐานะผู้ใช้ Linux ปกติ จึงไม่รับรู้ถึงแซนด์บ็อกซ์ และไม่มีโปรเซสภายนอกที่มีสิทธิ์ให้ข้อยกเว้นได้ — ตรงข้ามกับ Claude Code ที่มี external privileged process คอยตัดสินการบังคับใช้เป็นรายคำสั่ง
    • การเปลี่ยนไปสู่ host mode

      • โหมด full-VM มีปัญหาเชิงปฏิบัติ คือหาก VM ล้มเหลวระหว่างเริ่มต้น Cowork ทั้งหมดจะใช้งานไม่ได้
      • จึงคงการรันโค้ดไว้ใน VM แต่ ย้าย agent loop ออกมานอก VM เพื่อให้แม้ VM จะพัง Claude ก็ยังตอบสนองและช่วยดีบักได้ (โดยผลกระทบด้านความปลอดภัยมีน้อย เพราะ VM ยังเป็นผู้บังคับใช้การควบคุมไฟล์ระบบและเครือข่าย)
      • local MCP server ก็ถูกย้ายออกมานอก VM เช่นกัน — เพราะถ้ารันใน VM จะตรวจสอบได้ยาก เกิดปัญหา dependency เมื่ออัปเดต VM และไม่สามารถรองรับ MCP ที่โต้ตอบกับ local process อย่างฐานข้อมูลได้
      • ทำให้พฤติกรรมสอดคล้องกับ local MCP ของ Claude Desktop — ปฏิบัติเสมือนเป็นซอฟต์แวร์ที่ผู้ใช้ติดตั้ง และมอบหมายให้ผู้ดูแลระบบตัดสินใจว่าจะเปิด local MCP ใดบ้าง (ส่วน remote MCP server ไม่รันบนเครื่องผู้ใช้ จึงไม่ได้รับผลกระทบ)
    • การควบคุมไฟล์ระบบ

      • เพื่อให้ใช้งานได้จริง เอเจนต์จำเป็นต้องเข้าถึงไฟล์บางส่วนบนโฮสต์ จึงแยกโหมดการ mount อย่างละเอียดเพื่อลดรัศมีความเสียหายและทำให้การเข้าถึงไฟล์ local โปร่งใส
      • มีโหมด mount ไฟล์ 3 แบบคือ read-only, read-write, read-write-no-delete
      • จุดที่ต้องระวังคือ ต้อง resolve symbolic link ก่อน การตรวจสอบ path มิฉะนั้น symlink ภายในโฟลเดอร์ที่ได้รับสิทธิ์อาจชี้ออกไปข้างนอกและใช้หนีขอบเขตได้
      • ลูกค้าองค์กรสามารถให้ผู้ดูแลควบคุมได้ผ่าน allowlist ของ mount-path ในการตั้งค่า MDM
    • ความเสี่ยงที่พลาดไป: การรั่วไหลผ่านโดเมนที่อนุมัติไว้

      • มีกรณีที่ถูกเปิดเผยโดย third party ซึ่งแสดงให้เห็นว่า allowlist ของ egress ใน Cowork อนุญาตทราฟฟิกไปยัง api.anthropic.com ได้ตามปกติ เพราะจำเป็นต่อการทำงานของผลิตภัณฑ์
      • ไฟล์อันตรายที่ถูกวางไว้ใน workspace ที่ mount อยู่ มีทั้งคำสั่งซ่อนและ API key ที่ผู้โจมตีควบคุม และ Claude ก็ทำตามคำสั่งนั้น โดยอ่านไฟล์อื่นเพิ่มเติมและเรียก Anthropic Files API ด้วยคีย์ของผู้โจมตี
      • egress proxy ตรวจแค่ว่าปลายทางคือ api.anthropic.com จึงปล่อยผ่าน ทำให้ไฟล์ถูกอัปโหลดไปยังบัญชี Anthropic ของผู้โจมตี — แซนด์บ็อกซ์ทำงานสมบูรณ์ทุกอย่าง แต่ข้อมูลก็ยังรั่วออกไป
      • จึงต้องมอง allowlist ใหม่ ไม่ใช่แค่ ตัวกรองปลายทาง แต่เป็น การมอบความสามารถ (capability grant) — ทุกฟังก์ชันที่เข้าถึงได้บนโดเมนที่อยู่ใน allowlist ล้วนเป็นพื้นผิวการโจมตี
      • แนวทางแก้คือวาง man-in-the-middle proxy เชิงป้องกันไว้ภายใน VM เพื่อดักทราฟฟิก API ของตัวเอง และอนุญาตเฉพาะคำขอที่มี session token สำหรับ provisioning ของ VM เองเท่านั้น ทำให้คีย์ที่ผู้โจมตีสอดแทรกมาใช้ไม่ได้ (รวมถึงบล็อก header ที่เปิดทางให้ server-side fetch)
      • proxy ต้องอยู่ใน VM ไม่ใช่บนเซิร์ฟเวอร์ — เพราะจากมุมมองของเซิร์ฟเวอร์ คำขอจาก Cowork แยกไม่ออกจาก API client อื่น ๆ และมีเพียง VM เท่านั้นที่รู้ที่มาของคำขอ (provenance)
      • นี่เป็นตัวอย่างที่สองของหลักการที่ว่า ซอฟต์แวร์ที่สร้างเองมักเปราะบางที่สุด — hypervisor, seccomp และ gVisor ยังคงเชื่อถือได้ แต่ custom allowlist proxy กลับล้มเหลว
    • ความเสี่ยงที่พลาดไป: การแยกด้วย VM บัง EDR software ไปด้วย

      • ทีมความปลอดภัยองค์กรถามว่า “ทำไม EDR ของเราถึงมองข้างในไม่ได้” — เพราะการแยกที่ใช้กัก Claude ไว้ก็บัง EDR แบบ host-based ไปด้วยเช่นกัน
      • จากมุมมองของ EDR นั้น Cowork เป็นเพียง hypervisor process ที่มืดทึบ จึงไม่สามารถตรวจสอบภายใน guest ได้
      • มาตรการบรรเทาในปัจจุบันคือการส่งออก OTLP แบบอิงการดึง เพื่อให้ผู้ดูแลดึง event log มาดูย้อนหลังได้ แต่ก็ยังไม่เทียบเท่าการมอนิเตอร์แบบเรียลไทม์

สรุปเปรียบเทียบตามสภาพแวดล้อม

  • คอนเทนเนอร์ชั่วคราว (claude.ai): ภาระของการแยกสภาพแวดล้อมคือการ spin up คอนเทนเนอร์, ไม่พึ่งผู้ใช้, รัศมีความเสียหายอยู่ในคอนเทนเนอร์ฝั่งเซิร์ฟเวอร์ที่มี gVisor + ขอบเขตโครงสร้างพื้นฐานโฮสต์ปกป้อง
  • HITL sandbox (Claude Code): ภาระของการแยกสภาพแวดล้อมต่ำด้วย native sandbox ที่หน่วงต่ำ, ผู้ใช้ต้องอ่าน bash ได้, รัศมีความเสียหายอยู่ที่ workspace ในเครื่อง
  • sealed VM (Claude Cowork): ภาระของการแยกสภาพแวดล้อมคือการบูต VM เต็มรูปแบบ, ไม่พึ่งผู้ใช้, รัศมีความเสียหายอยู่ที่ workspace ที่ mount ไว้ซึ่งถูกปกป้องด้วยขอบเขต vsock + hypervisor

การเชื่อถือสิ่งที่เอเจนต์อ่าน

  • องค์กรมักถามเรื่องความปลอดภัยของการเชื่อมต่อ MCP แต่คำถามที่ถูกต้องกว้างกว่านั้นและไม่ได้จำกัดแค่ MCP — ทรัพยากรภายนอกมีความเสี่ยง 2 ด้านพร้อมกัน คือ ความเสี่ยงจากการรันโค้ด (ในมุม supply chain) และ เวกเตอร์ของ prompt injection
    • การตรวจสอบ dependency แบบดั้งเดิม (pin เวอร์ชัน, ตรวจลายเซ็น, ตรวจ source) แก้ได้แค่เรื่องแรก แต่พลาดเรื่องที่สอง
  • ความต่างระหว่าง remote กับ local สำคัญกว่าที่เห็น — เครื่องมือ local สามารถตรวจสอบ, pin เวอร์ชัน และคงที่ได้ แต่เครื่องมือ remote (เช่น hosted MCP server หรือ cloud connector) อาจเปลี่ยนพฤติกรรมได้ทุกเมื่อหลังจากอนุมัติแล้ว ทำให้การตัดสินใจเชื่อถือในวันติดตั้งอาจไม่ใช้ได้อีกต่อไป
    • connector directory ช่วยบรรเทาด้วยการตรวจทานต่อเนื่อง แต่สิ่งอื่นนอกเหนือจากนั้นควรถูกมองว่าไม่น่าเชื่อถือ และควรลองรันกับข้อมูลปลอมก่อนในสภาพแวดล้อมที่กักขอบเขตรัศมีความเสียหายไว้แล้ว
  • ผลลัพธ์ของเครื่องมือก็เป็นพื้นผิวการโจมตีได้ แม้เครื่องมือนั้นจะเชื่อถือได้ — กรณี README ของ GitHub ก่อนหน้านี้เป็นตัวอย่างชัดเจน และการสแกนอินพุตแบบเดียวกับที่ใช้กับเว็บเพจควรถูกนำไปใช้กับผลลัพธ์จากเครื่องมือที่เชื่อมต่อเครือข่ายด้วยเช่นกัน
    • เมื่อข้อมูลจากเครื่องมือที่ปนเปื้อนชี้นำเอเจนต์ไปสู่การรั่วไหลของข้อมูลแล้ว ใน log จะเหลือเพียง API call ที่ได้รับอนุญาตและสำเร็จ ทำให้แทบไม่มีสัญญาณให้ตรวจย้อนหลัง ดังนั้นแม้จะเพิ่ม latency และไม่สมบูรณ์แบบ ก็ยังควรให้ความสำคัญกับการตรวจแบบสดก่อน
    • ใน Claude Code และ Cowork การเรียกใช้เครื่องมือจะผ่าน proxy ที่บังคับใช้นโยบายเครือข่ายและไฟล์ระบบ โดย classifier ที่ใช้ตรวจนั้นไม่จำเป็นต้องเป็นโมเดลสำหรับการใช้เหตุผล แค่เป็นโมเดลเล็กและเร็วก็เพียงพอ

โจทย์ในอนาคต

  • Persistent memory poisoning: เมื่อมีบริบทที่คงอยู่ข้ามเซสชันมากขึ้น (เช่น memory ของผลิตภัณฑ์, ไฟล์ CLAUDE.md, workspace ที่ mount, state directory ของเอเจนต์แบบ scheduled หรือ long-running) prompt injection ที่แทรกเข้าไปจะถูกโหลดซ้ำทุกครั้งที่เอเจนต์เริ่มทำงาน — จึงต้องทำให้ classifier ที่ดีในตอนเริ่มเซสชันแพร่หลายมากขึ้น
  • Multi-agent trust escalation: sub-agent อาจส่งคืนข้อเท็จจริงที่มีโครงสร้างแทนข้อความดิบ ช่วยแยกคอนเทนต์ที่ไม่น่าเชื่อถือได้ แต่ถ้าปฏิบัติต่อผลลัพธ์ของ sub-agent ด้วยความเชื่อถือสูงกว่าผลลัพธ์จากเครื่องมือดิบ เพียงเพราะเป็น “ของเราเอง” ก็จะเกิดเวกเตอร์ injection แบบใหม่ — มี trade-off ระหว่างการแยกระดับความเชื่อถือกับการเปิดช่องให้ trust escalation
  • Agent identity: Cowork เก็บ credential ไว้ใน keychain ของโฮสต์ และมอบโทเคนที่ลดสิทธิ์แล้วแบบต่อเซสชันให้กับ VM ซึ่งสามารถเพิกถอนได้โดยอิสระจากผู้ใช้
    • อย่างไรก็ตาม ปัญหาเรื่องตัวตนข้ามแพลตฟอร์มของเอเจนต์ — ว่าควรมีตัวตนเป็นของตัวเอง หรือควรสืบทอดสิทธิ์ในฐานะส่วนขยายของผู้ใช้ — อาจต้องตอบด้วยการผสมทั้งสองแนวทาง
  • รูปแบบของความล้มเหลวมีแนวโน้มจะเกิดซ้ำทั่วทั้งอุตสาหกรรมและห้องวิจัย จึงจำเป็นต้องมีการลงทุนร่วมกันในมาตรฐานความปลอดภัยเฉพาะสำหรับเอเจนต์ เช่น benchmark ที่ใช้ร่วมกัน, บรรทัดฐานแบบเปิดเผย, มาตรฐานตัวตนร่วม และ red team ข้ามผู้ให้บริการ

สรุปหลักการสำคัญ

  • ออกแบบการกักขอบเขตที่ชั้นสภาพแวดล้อมก่อน แล้วค่อยปรับพฤติกรรมที่ชั้นโมเดล — เหตุการณ์สองกรณีที่ให้บทเรียนมากที่สุด (การฟิชชิงพนักงาน และการเปิดเผย allowlist โดย third party) ล้วนเป็นกรณี egress ที่ข้อมูลออกไปผ่านเส้นทางที่ได้รับอนุญาต ซึ่งชั้นโมเดลไม่มีสัญญาณผิดปกติให้ตรวจจับได้ ดังนั้นขอบเขตเชิงกำหนดแน่นอนจึงเป็นแนวป้องกันด่านสุดท้าย
  • ปรับความเข้มของการแยกสภาพแวดล้อมให้เหมาะกับความสามารถของผู้ใช้ในการกำกับดูแล — นักพัฒนาที่อ่าน bash ได้กับผู้ทำงานความรู้ที่อ่านไม่ได้มี threat model คนละแบบ และการสร้างความฝืดเกินจำเป็นให้ผู้เชี่ยวชาญ หรือให้ความไว้วางใจเกินควรแก่ผู้ที่ไม่ใช่ผู้เชี่ยวชาญ ต่างก็เป็นความผิดพลาดที่นำไปสู่ความล้มเหลว
  • ระวังคอมโพเนนต์แบบคัสตอม — hypervisor, ตัวกรอง system call และ container runtime ที่ผ่านการพิสูจน์แล้วล้วนผ่านการทดสอบจากสภาพแวดล้อมที่เป็นปฏิปักษ์มามากกว่า และในการนำไปใช้ทุกกรณี primitive มาตรฐานเหล่านี้ยังยืนอยู่ได้ ขณะที่งานเฉพาะที่สร้างเสริมรอบ ๆ กลับเป็นจุดที่เผยให้เห็นข้อบกพร่อง
  • แม้เอเจนต์จะเป็นหมวดหมู่ซอฟต์แวร์ใหม่ แต่ปฏิสัมพันธ์ระดับระบบอย่างการอ่านไฟล์ เปิด socket และสร้าง process ไม่ใช่เรื่องใหม่ ดังนั้นการกักขอบเขตด้วยเครื่องมือที่มีความสมบูรณ์แล้วจึงยังเป็นแนวป้องกันหลักที่ใช้ได้ผล

1 ความคิดเห็น

 
GN⁺ 5 시간 전
ความคิดเห็นจาก Hacker News
  • กรอบที่ใช้เล่าเรื่องมันชวนขำ และกราฟิกเล็ก ๆ ก็เข้าที่พอดี ความเสี่ยงของ อันตรายที่เกิดขึ้น ไม่ได้ลดลง แต่ผลตอบแทนเพิ่มขึ้น จนอันตรายนั้นกลายเป็น ต้นทุนทางธุรกิจ ที่ถูกทำให้ชอบธรรมด้วยผลตอบแทน
    ยิ่งผลตอบแทนเพิ่มขึ้นมากเท่าไร ขนาดของอันตรายที่พยายามทำให้ชอบธรรมก็ยิ่งใหญ่ขึ้นเท่านั้น ให้ความรู้สึกว่าสังคมโดยรวมก็เป็นแบบนี้

    • ถ้าเข้าใจถูก ข้ออ้างของ Anthropic ตอนนี้ก็ใกล้เคียงกับว่า “ใช่ มันอาจทำให้โครงสร้างพื้นฐานของคุณบางส่วนพังได้ แต่ก็คุ้มค่า”
      ปัญหาคือยังไม่มีใครพิสูจน์ได้เลยว่ามันมีคุณค่ามากพอที่จะยอมรับต้นทุนนั้นได้จริง เป็นสมมติฐานที่ค่อนข้างเปราะบาง
    • ทุกการกระทำมี การคำนวณความเสี่ยง/ผลตอบแทน อยู่แล้ว ปกติเราแค่ไม่ค่อยได้เห็นมันถูกวาดออกมาตรง ๆ แบบนี้ แม้แต่การลุกจากเตียงตอนเช้าก็มีความเสี่ยงว่าจะล้มศีรษะกระแทกพื้น การข้ามถนนก็เสี่ยงโดนรถบัสชน และการกินอาหารก็เสี่ยงสำลักได้
      ความปลอดภัยคอมพิวเตอร์ก็เหมือนกัน คอมพิวเตอร์ที่ปลอดภัยจริงมีแค่คอมพิวเตอร์ที่ไม่เปิดใช้งาน และต่อให้เป็นแบบนั้นก็ยังเสี่ยงมีคนบุกเข้ามาขโมยอุปกรณ์จัดเก็บข้อมูลได้ ไม่ว่าความเสียหายที่อาจเกิดขึ้นจะมากกว่าผลประโยชน์หรือไม่ การคำนวณแบบนี้ก็เกิดขึ้นอยู่เสมอ ดังนั้นจะบอกว่าสังคมทั้งสังคมเป็นแบบนี้ก็ถือว่าถูก
    • ถ้าคุณเริ่มทำธุรกิจซ่อมพีซี ตอนแรกการทำ RAM หายหนึ่งแผงหรือเผาเมนบอร์ดลูกค้าตอนรับงานสัปดาห์ละ 10 เครื่องถือเป็นต้นทุนมหาศาล แต่ถ้าทำได้สัปดาห์ละ 1000 เครื่อง มันก็เป็นธุรกิจที่ดีมากและความสูญเสียแบบนั้นก็รับมือได้ไม่ยาก
      เมื่อมีเครื่องมือและความเร็วในการทำงานเพิ่มขึ้น สัดส่วนก็เปลี่ยนไป
    • การตัดสินใจในโลกจริงก็เป็นแบบนั้นอยู่แล้ว ความเสี่ยง/ผลตอบแทน มีอยู่จริง
    • ความรับผิดแบบจำกัด ทำให้การรับความเสี่ยงแบบไม่จำกัดกลายเป็นทางเลือกที่สมเหตุสมผล AI แค่ขยายโมเดลธุรกิจนี้และบีบเวลาจนถึงหายนะครั้งถัดไปให้สั้นลง
  • ผมมองสิ่งที่ Anthropic พูดด้วยความกังขามาก เพราะก่อน IPO มันมีแรงจูงใจสูงมากที่จะทำให้ผลิตภัณฑ์ดูอันตราย หรือพูดอีกอย่างคือดู “มีความสามารถ”, “เหมือนนิยายวิทยาศาสตร์” และ “นำหน้าคนอื่นทั้งหมด”
    เรื่องแบบนี้เคยเกิดขึ้นมาก่อนแล้ว ลองนึกถึงเรื่องที่ว่า “ถ้าถูกคุกคาม โมเดลจะใช้อีเมลของวิศวกรไปข่มขู่เรื่องชู้สาว” นั่นมันก็แค่แฟนฟิกชัน จริง ๆ แล้วพวกเขาแค่ตั้งฉากสถานการณ์จากข้อเท็จจริงไม่กี่อย่าง แล้วให้โมเดลแต่งเรื่องต่อ ถ้าคุณถาม Claude ว่าจะขโมยมงกุฎเพชรของราชวงศ์อังกฤษอย่างไร มันก็คงให้ไอเดียได้ แต่นั่นไม่ได้แปลว่าโมเดลอันตรายถึงขั้นที่ต้องเพิ่มการรักษาความปลอดภัยของ Tower of London ผมคิดว่า การตลาดด้วยความหวาดกลัว แบบอื่น ๆ ก็คล้ายกันเป็นส่วนใหญ่

    • ข้อความที่ว่า “จริง ๆ แล้วพวกเขาแค่ตั้งฉากสถานการณ์จากข้อเท็จจริงไม่กี่อย่าง แล้วให้โมเดลแต่งเรื่องต่อ” นั้นถูกต้อง นั่นคือแก่นของงานวิจัยนี้ Anthropic ระบุชัดตั้งแต่เริ่มอธิบายการสังเกตการทดสอบการแบล็กเมลว่าเป็น สถานการณ์ทดสอบ ที่ใช้บริษัทสมมติ
      “In another cluster of test scenarios, we asked Claude Opus 4 to act as an assistant at a fictional company”
      https://www.anthropic.com/claude-4-system-card
    • สิ่งที่ทำให้ผมกังวลกับ Anthropic มากกว่า OpenAI คือความ หลอกลวงตบตา
    • OpenAI, Google และรายอื่น ๆ ไม่ได้ใช้ “กลยุทธ์นั้น” ผมเชื่อว่าคนของ Anthropic ใส่ใจเรื่อง ความปลอดภัยของ AI อย่างจริงใจ
      นั่นก็เป็นเหตุผลหลักที่ตั้งบริษัทนี้ขึ้นมา เพียงแต่เมื่อมีคนใหม่และเงินใหม่ไหลเข้ามา อุดมคตินั้นอาจอ่อนลงก็ได้
  • มาช้าไปหน่อยในเธรดนี้ แต่บทความดูเหมือนจะข้ามส่วนของความเสี่ยง ความผิดพลาด และอุบัติเหตุที่อาจเกิดจาก “pattern 1” ซึ่งเป็นการจำกัดการเข้าถึงของ Claude ด้วยคอนเทนเนอร์ การทำให้ถูกต้องยังยากอยู่มาก
    ตัวอย่างเช่น Anthropic เคยปล่อยบั๊กหลายครั้งที่ทำให้เซสชัน claude.ai/code ใด ๆ ที่ถูกแยกไว้ในคอนเทนเนอร์ชั่วคราว สามารถเข้าถึงและดึงข้อมูลจากเซสชันอื่นของผู้ใช้, repository ที่เชื่อมต่ออยู่ และตัวแปรแวดล้อมทั้งหมดได้ Claude ที่กลายเป็นอันตรายหรือถูกยึดก็ยังสามารถสร้างเซสชัน Claude ใหม่ที่มีคำสั่งตามอำเภอใจและสิทธิ์เข้าถึงตามต้องการได้ โดยไม่เกี่ยวกับข้อจำกัดของเซสชันเดิม ผมเขียนเรื่องนี้ครั้งแรกในเดือนกุมภาพันธ์หลังจากได้รับอนุญาต[1] และส่วนใหญ่ก็ถูกแก้เร็วมาก แต่ปัญหาเชิงโครงสร้างของ ขอบเขตโทเค็น ยังคงเกิดซ้ำหลายครั้ง รวมถึงหลัง Mythos ด้วย จึงยากจะบอกว่า Anthropic แก้ปัญหานี้ได้แล้ว
    [1]: https://www.noahlebovic.com/hacking-claude-code-on-the-web-b...

  • โดยทั่วไปแล้ว การทำแบบนี้ยากมากจริง ๆ น่าเสียดายที่โพสต์บล็อกแม้จะยกตัวอย่างบางกรณี แต่ไม่ได้ลงลึกว่ามันยากแค่ไหน
    ตัวอย่างเช่น ถ้าคุณรันเอเจนต์ใน VM ที่เข้าถึงเครือข่ายได้ อะไรก็ตามที่มันไปเจอในนั้นอาจใช้ prompt injection หลอกเอเจนต์ให้เข้ารหัส prompt injection ชั้นที่สองลงในผลลัพธ์ที่จะออกมานอก VM และสิ่งนั้นอาจไปติดเอเจนต์บนเครื่องโลคัลที่มีสิทธิ์สูงกว่าได้ ในงานก่อนหน้านี้ ตอนทำการวิเคราะห์การใช้งานคอมพิวเตอร์ เราต้องพิจารณาว่าอินพุตจากผู้ใช้เชื่อได้หรือไม่ว่าไม่เป็นอันตราย ถ้าผู้ใช้พิมพ์เองโดยตรงก็มักพอไว้ใจได้ แต่ไฟล์ของผู้ใช้ล่ะ ปฏิทินนัดหมายล่ะ เมื่อจุดประสงค์ของผลิตภัณฑ์คือให้เอเจนต์จัดการสิ่งเหล่านั้นแทนผู้ใช้ เราก็ไม่สามารถเชื่อได้อีกต่อไปว่าไม่มีการฉีดแทรกอยู่ พอลองทำ การติดตามการปนเปื้อน แบบนี้ คุณจะเห็นอย่างรวดเร็วว่าการป้องกันเรื่องนี้ยากมาก และการครอบแค่ sandbox หรือ VM ไว้รอบ ๆ มักไม่ค่อยช่วยเท่าไร

  • ฉันยังพอใจกับการตั้งค่าแยกสภาพแวดล้อมที่ใช้บน Linux ของตัวเอง[1][2] อยู่ ตอนนี้ความเสี่ยงที่เข้าข่ายจากในบทความดูจะมีแค่ “การรั่วไหลผ่านโดเมนที่ได้รับอนุญาต” ประมาณนั้น แต่ภายใน VM นั้นตามการออกแบบแล้ว นอกจากซอร์สโค้ดเองก็แทบไม่มีอะไรให้รั่วไหล และทุกวันนี้ซอร์สโค้ดก็ไม่ได้มีมูลค่าสูงเหมือนเมื่อก่อนแล้ว
    ข้อดีใหญ่ของการตั้งค่านี้คือเอเจนต์สามารถทำงานพัฒนาที่ฉันทำได้ทั้งหมด เช่น ติดตั้งแพ็กเกจ หรือ build/run Docker image เป็นต้น ทำให้วงจรการทำงานเร็วกว่าแบบที่ฉันต้องลองเองด้วยมือแล้วกลับมารายงานเอเจนต์มาก
    [1] https://blog.emilburzo.com/2026/01/running-claude-code-dange...
    [2] https://news.ycombinator.com/item?id=46690907

    • เอเจนต์อาจถูกหลอกให้ใช้ ไลบรารีอันตราย ในโปรเจ็กต์ แล้ว commit และ push มันได้ หลังจากนั้นถ้าผู้ใช้ไปรันข้างนอก VM ก็อันตราย
      ถ้าคุณรันโค้ดในรีโพซิทอรีนอก VM โดยไม่ได้ตรวจสอบทุกอย่างที่ถูก commit ไว้อย่างครบถ้วน ก็ยังคงมีความเสี่ยงอยู่
  • พอลองดูใน Cowork VM จะเห็นว่าการปนเปื้อนไม่ได้มีการทำเอกสารไว้ และก็ไม่ได้ถูกควบคุมแบบเปิดเผยต่อสาธารณะด้วย แม้จะมีวิธีเลี่ยงอยู่ แต่ระหว่างทางก็มีทั้งความสิ้นเปลืองและความน่าหงุดหงิดมาก
    CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 หมายความว่า Claude จะคอยค้นหาและโหลด CLAUDE.md ของทุกรีโพซิทอรีที่ถูก mount ไว้ตามเวลาและตามการตั้งค่า ดังนั้นประสบการณ์การทำงานกับหลายรีโพซิทอรีที่ไม่เกี่ยวกันพร้อมกันจึงไม่ค่อยดีในสภาพค่าเริ่มต้น
    ตัวแปรสภาพแวดล้อมใน VM ที่น่าสนใจบางตัว:
    CLAUDE_CODE_IS_COWORK=1
    CLAUDE_CODE_BRIEF=1 CLAUDE_CODE_BRIEF_UPLOAD=1 CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 CLAUDE_CODE_DISABLE_CRON=1
    CLAUDE_CODE_ENTRYPOINT=local-agent CLAUDE_CODE_EXECPATH=/usr/local/bin/claude CLAUDE_CODE_HOST_HTTP_PROXY_PORT=36543 CLAUDE_CODE_HOST_PLATFORM=darwin CLAUDE_CODE_HOST_SOCKS_PROXY_PORT=46673
    USE_STAGING_OAUTH= _=/usr/bin/env all_proxy=socks5h://localhost:1080 ftp_proxy=socks5h://localhost:1080 grpc_proxy=socks5h://localhost:1080 http_proxy=http://localhost:3128 https_proxy=http://localhost:3128 no_proxy=localhost,127.0.0.1,::1,.local,.local,169.254.0.0/16,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16

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

    • ปัญหาอยู่ที่เราฝึกโมเดลให้แก้ปัญหาและทำตามคำสั่งที่ได้รับ ถ้าคุณสั่งให้มันทำบางอย่าง มันอาจไล่ตามตรรกะไปจนตัดสินว่าวิธีที่ง่ายที่สุดคือการลบ production database และถ้ามันมีสิทธิ์เข้าถึง มันก็อาจค้นหาข้อมูลรับรองทุกอย่างเพื่อหา ข้อมูลรับรองของฐานข้อมูล แล้วลบจริงได้
      ความสามารถในการทำเรื่องแบบนี้เก่งขึ้นเรื่อย ๆ และมันก็เก่งในการทำตามคำสั่ง แต่ไม่ได้เก่งเสมอไปทั้งในแง่การทำตามทุกคำสั่งหรือการประพฤติตัวอย่างมีสามัญสำนึก แทนที่จะหลุดออกไปแล้วจำลองตัวเองแบบเมือกย้อย ปัญหาคือยิ่งให้สิทธิ์เข้าถึงมากขึ้น ก็ยิ่งมีโอกาสที่จุดหนึ่งโมเดลจะสรุปตามตรรกะว่ามันควรทำสิ่งที่ผู้ใช้ไม่ต้องการ อาจเป็นเพราะไม่ได้ห้ามไว้อย่างชัดเจน หรือบริบทซับซ้อนเกินไปจนคำสั่งนั้นมีน้ำหนักลดลงและไปทำตามคำสั่งอื่นแทน ฉันเคยเห็นกรณีที่มันสรุปว่าการทำงานบางอย่างให้สำเร็จต้องใช้ API key สำหรับเข้าถึงบริการ โมเดลเองไม่มีคีย์นั้น แต่ผู้ใช้เข้าถึงได้ผ่านเบราว์เซอร์ มันเลยเขียน Python script เพื่อดึง browser cookie ออกมา เรื่องนี้ไม่ใช่ปัญหาที่ agent sandbox แต่เป็นเพราะ CrowdStrike ไม่ชอบ Python script แปลก ๆ ที่พยายามดึง browser cookie เลยบล็อกมันไว้
    • ทำไมจะทำไม่ได้ล่ะ? ถ้าไม่ได้พูดถึงการกระจายตัวของตัวโมเดลเอง AI agent ก็สามารถเขียน agent worm ที่แพร่กระจายเอเจนต์เพิ่มผ่านช่องโหว่ของซอฟต์แวร์ได้
      ตอนนี้ตัว LLM เองยังต้องใช้ฮาร์ดแวร์มากเกินไป เลยทำให้การแพร่ตัวของโมเดลเองยังเป็นเรื่องยาก แต่เมื่อมีเวลาอีกไม่กี่ปีและมีการปรับแต่งมากขึ้น เราอาจได้เห็นมันก็ได้ มันทำให้นึกถึงสมัยก่อนที่คนพูดว่า “รูปภาพไม่สามารถแพร่ไวรัสได้” แล้วต่อมาก็มีการค้นพบช่องโหว่ของตัวถอดรหัส และมีการสร้างไวรัสผ่านรูปภาพแบบนั้นขึ้นมาจริง
    • ทันทีที่ LLM ถูกทำให้เป็นมนุษย์ มันก็ดูเหมือนพังในเชิงการออกแบบอย่างชัดเจน แต่ฉันคิดว่าแม้แต่ ซอฟต์แวร์ แบบที่เราเคยรู้จักกันก็กำลังวิวัฒน์ไปเป็น “สิ่งมีตัวตนที่ถูกทำให้เป็นมนุษย์” เช่นกัน ฉันทิ้งบันทึกที่เกี่ยวข้องไว้ใน [1] และเป็นเนื้อหาที่ AI สร้างขึ้น
      ยังมีแนวโน้มที่น่าสนใจด้วยว่าแบรนด์ที่มีความเป็นมนุษย์มากกว่าจะครองความโดดเด่นกว่า เช่น Claude และ Doubao เทียบกับ ChatGPT และ DeepSeek
      [1] https://github.com/NascentCore/agentic-suite/tree/main/perso...
  • ฉันใช้ qemu VM อยู่ ดูเหมือนว่าความเสี่ยงใหญ่ที่สุดของ VM นี้คือมันเข้าถึงอินเทอร์เน็ตได้ และ Claude อาจอัปโหลดข้อมูลไปที่ไหนสักแห่งได้
    ถ้าจะให้มันทำงานกับ GitHub ฉันจะสร้างโทเค็นที่จำกัดสิทธิ์แบบอ่านอย่างเดียวหรืออ่าน/เขียนเป็นรายรีโพซิทอรี ถึงอย่างนั้นก็ยังชอบให้มันแค่ commit มากกว่าจะ push แล้วฉันค่อยดึง commit จาก VM ผ่าน SSH มาตรวจ log ก่อน แล้วค่อย push เอง ฉันเคยคิดจะรัน Claude ในคอนเทนเนอร์เหมือนกัน แต่รู้สึกว่ามันอ่อนเกินไป ช่องโหว่ของ Linux มีเยอะมาก ความกลัวนี้อาจไม่มีมูลก็ได้ แต่ฉันรู้สึกว่าถ้าจะรันของที่ไว้ใจไม่ได้ การรันใน qemu VM ปลอดภัยกว่า

  • ช่วงหลังผมรีบทำฟังก์ชัน helper เล็ก ๆ ขึ้นมาโดยใช้ bubblewrap เพื่อรันโปรเซส ให้สิทธิ์อ่าน/เขียนเฉพาะกับไดเรกทอรีที่เรียกใช้งาน และทำให้ส่วนที่เหลือเป็นแบบอ่านอย่างเดียว โดยยกเว้นไดเรกทอรีระบบ Linux บางจุดเพื่อให้ GUI กับพวก libportal ยังทำงานได้
    สำหรับงานที่อยากให้เอเจนต์ไปชี้ไฟล์สุ่ม ๆ ที่อยู่กระจัดกระจาย เช่น สกรีนช็อตหรือไฟล์ล็อก ได้จริง แต่ขณะเดียวกันก็ไม่อยากมานั่งเฝ้าอนุมัติเองทุกครั้ง มันยุ่งยากน้อยกว่าคอนเทนเนอร์มาก แปลกพอสมควรที่แพลตฟอร์มเครื่องมือ AI ยังไม่ได้ลงทุนกับประสบการณ์แบบนี้กันแล้ว สิ่งที่ทำให้ผมลงมือทำอันนี้คือ Zed มันเป็นเอดิเตอร์ที่ตั้งต้นจากการทำงานกับ AI แต่สิทธิ์พาธเฉพาะของเอเจนต์กลับใส่ได้แค่ในไฟล์ตั้งค่าระดับผู้ใช้ทั้งหมดเท่านั้น มีไฟล์ตั้งค่าระดับโปรเจกต์อยู่ก็จริง แต่ด้วยเหตุผลที่เข้าใจไม่ได้ มันกลับไม่รองรับการตั้งค่าสิทธิ์ของเอเจนต์อย่างชัดเจน

  • ผมไม่ใช่นักทฤษฎีการตัดสินใจ แต่คิดว่าเราไม่ควรรอจนรางวัลกับความเสียหายที่คาดหมายไว้เท่ากันในเชิงสถิติ ควรรอจนกว่า ผลตอบแทนที่คาดหมาย จะมากกว่าความเสียหายเสียก่อน

    • โชคเข้าข้างคนกล้า