Edison Watch

Code Mode Security (Beta)

การทำงานของ MCP-as-code ที่ปลอดภัยด้วย sandboxing, AST analysis และ taint tracking

Code Mode อนุญาตให้ agent ทำงานโค้ด TypeScript เพื่อเชื่อมโยงเครื่องมือ MCP หลายตัวเข้าด้วยกัน แทนที่จะทำการเรียกใช้เครื่องมือแต่ละครั้ง วิธีนี้ช่วยลด latency และการใช้ token อย่างมาก แต่แนะนำข้อพิจารณาด้านความปลอดภัยใหม่ๆ

ฟีเจอร์ Beta: Code Mode Security อยู่ในช่วง beta ในขณะนี้ ฟีเจอร์และ API อาจเปลี่ยนแปลง

Edison Watch ปกป้อง Code Mode ด้วยสถาปัตยกรรม defense-in-depth ที่รวม sandbox execution, static analysis และการติดตามข้อมูลแบบ taint-aware

ทำไมต้อง Code Mode?

Agent แบบดั้งเดิมประสบปัญหาจาก context rot ทุก input และ output ของการเรียกใช้เครื่องมือต้องถูกเพิ่มลงใน context window ของ LLM การเชื่อมต่อ agent กับ MCP server จำนวนมากนำไปสู่ context rot เนื่องจากคำนิยามเครื่องมือใช้ token แม้ก่อนที่จะมีการกระทำใดๆ สำหรับการประมวลผลข้อมูลที่ซับซ้อน (เช่น "สรุปไฟล์ 20 ไฟล์นี้") สิ่งนี้สามารถใช้ token หลายแสนเพียงเพื่อย้ายข้อมูล

Code Mode แก้ปัญหานี้โดยให้ agent เขียน script เพื่อประมวลผลข้อมูล ภายใน สภาพแวดล้อมที่ปลอดภัย LLM จะเห็นเฉพาะผลลัพธ์สุดท้าย ลดการใช้ token มักมากกว่า 90%

MCP-to-TypeScript Generator

สถาปัตยกรรมความปลอดภัย

Edison Watch ใช้การป้องกันสามชั้นเพื่อทำให้ Code Mode ปลอดภัยสำหรับการปรับใช้ระดับองค์กร

1. Deno Sandbox (การป้องกัน RCE)

โค้ดทำงานใน Deno sandbox ที่ปลอดภัยพร้อมสิทธิ์ที่เข้มงวด:

  • No Network Access: Script ไม่สามารถทำ HTTP request ตามอำเภอใจได้ สามารถเรียกใช้เฉพาะเครื่องมือ MCP ที่อนุญาตเท่านั้น
  • No Filesystem Write: Script ไม่สามารถแก้ไข filesystem ของ host ได้
  • Resource Limits: ขีดจำกัดที่คงที่ในเวลาทำงาน (90 วินาที) หน่วยความจำ (256MB) และขนาด output (10MB)
Code Mode Implementation Diagram

2. AST Analysis (Analyzability)

ก่อนการทำงาน Edison Watch parse Abstract Syntax Tree (AST) ของ script เพื่อบังคับใช้ strict subset ของ TypeScript สิ่งนี้ป้องกันเทคนิคการ obfuscate ที่ผู้โจมตีใช้ซ่อนพฤติกรรมที่เป็นอันตราย

Strict Mode: เราบล็อกฟีเจอร์ dynamic เช่น eval(), new Function() และ dynamic import (เช่น import(variable)) โค้ดต้อง statically analyzable จึงจะทำงานได้

3. Taint-Aware Trifecta (การปกป้องข้อมูล)

แบบจำลอง "Lethal Trifecta" ธรรมดา (บล็อก Private Data + Untrusted Content + External Communication) อาจจะก้าวร้าวเกินไปสำหรับการทำงานของโค้ด Code Mode ใช้ taint tracking เพื่อความแม่นยำมากขึ้น

แนวทาง "Scalpel"

แทนที่จะตั้งแฟล็กให้เซสชันทั้งหมดเมื่อมีการเรียกใช้เครื่องมือที่ละเอียดอ่อน Edison Watch จะตามรอยการไหลของตัวแปรข้อมูลภายใน script จริงๆ

ตัวอย่าง: ปัญหาปฏิทิน ลองนึกภาพว่า agent อ่านคำเชิญในปฏิทินเพื่อตรวจสอบความพร้อมของคุณ เนื้อหาคำเชิญมีเนื้อหาที่ไม่น่าเชื่อถือ (อาจมี prompt injection) แต่เวลาเริ่มต้น/สิ้นสุดเป็น metadata ที่ปลอดภัย

  • Vanilla Trifecta: บล็อกการกระทำเพราะ "Calendar" (Private) และ "Invite Body" (Untrusted) ถูกเข้าถึง แม้ว่า agent จะพิมพ์เฉพาะเวลาเท่านั้น
  • Code Mode Taint Tracking: วิเคราะห์ script หากโค้ดทำ console.log(event.startTime) แต่ไม่เคย log event.body Edison รู้ว่าเนื้อหาที่ไม่น่าเชื่อถือไม่เคยออกจาก sandbox การกระทำได้รับอนุญาต

ความแม่นยำนี้ลด false positive ในขณะที่รักษาการรับประกันความปลอดภัยที่เข้มงวด

Observability

ทุกการทำงานของ Code Mode ถูก audit อย่างสมบูรณ์ ระบบบันทึก:

  • โค้ด TypeScript ที่แน่นอนที่สร้างโดย agent
  • ผลการ validate และ AST error ใดๆ
  • Console output และ return value
  • เส้นทางข้อมูลเฉพาะที่ถูกมาร์กว่า tainted

รายละเอียดเหล่านี้ถูกเก็บไว้ใน audit log ที่ปลอดภัย

ขีดจำกัดการดำเนินงาน

เพื่อป้องกัน denial-of-service (DoS) และการใช้งานผิด Code Mode บังคับใช้ขีดจำกัดที่แน่นอน:

Metricขีดจำกัด
Execution Time90 วินาที
Memory256 MB
Output Size10 MB

FAQ