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

Copilot CLI 1.0.83 เพิ่ม MCP OAuth และ policy โมเดล: อย่าให้ความสะดวกข้าม permission gate

พี่โชว์Engineering

Copilot CLI 1.0.83 เพิ่ม Client ID Metadata Document สำหรับ MCP OAuth, รายการโมเดล fallback ใน custom agent และ model-policy: required ครับ ฟีเจอร์เหล่านี้ช่วยให้องค์กรควบคุมการเชื่อมต่อกับโมเดลได้ดีขึ้น แต่การ login สำเร็จไม่ได้แปลว่า tool นั้นควรได้สิทธิ์รันคำสั่ง

หลักฐานที่ตรวจ

release 1.0.83 มาจาก repository ของ GitHub วันที่ 4 กันยายน asset มี SHA-256 digest และมีไฟล์ SHA256SUMS.txt สคริปต์ติดตั้งทางการพยายามตรวจ checksum ก่อนวาง binary แต่มีทางเตือนแล้วข้ามเมื่อเครื่องไม่มี sha256sum หรือ shasum องค์กรจึงควร fail closed ใน pipeline ของตนแทนพฤติกรรมเตือนนั้น

advisory ที่เปิดเผยมี Medium กระทบถึง 1.0.42 และ High กระทบถึง 0.0.422 โดย patched แล้วในรุ่นเก่ากว่า 1.0.83 ไม่พบ known high/critical ที่กระทบรุ่นนี้ ณ วันที่ตรวจ จึงผ่านเกณฑ์คัดกรอง ณ วันที่ตรวจ

เอกสาร permission ระบุว่า read-only บางชนิดผ่านอัตโนมัติ ส่วน write, destructive shell และ URL ขออนุมัติโดยปริยาย Deny มีลำดับเหนือ allow แต่ path/URL detection ของ shell เป็น heuristic และมีกรณี complex construct หรือค่าจาก environment ที่ตรวจไม่ครบ

วิธีใช้ให้ปลอดภัยขึ้น

ใช้ --available-tools ลดชุดเครื่องมือที่โมเดลเห็น แล้วกำหนด --deny-tool สำหรับ push, deploy, credential path และ URL นอก allowlist อย่า alias --allow-all หรือ --yolo เป็นค่าเริ่มต้น เปิด local/cloud sandbox เมื่อทำงาน unattended

สำหรับ MCP แยกสามชั้น: OAuth พิสูจน์ตัว client, server policy จำกัด scope, และ Copilot permission จำกัด tool call ที่โมเดลขอ mTLS ในรุ่นนี้ช่วยยืนยัน proxy/client บน network แต่ไม่แทนแต่ละชั้นดังกล่าว

ความเสี่ยงคงเหลือ

custom agent ที่มีหลายโมเดลอาจ fallback ไปโมเดลซึ่งพฤติกรรมต่างกัน แม้ยังอยู่ในรายการ policy การอนุมัติแบบจำถาวรอาจค้างใน config นานกว่างาน และ shell parsing ไม่ใช่ sandbox สมบูรณ์ MCP server ยังเห็นข้อมูลตาม argument ที่ส่งให้และอาจมี supply-chain risk ของตน

Recap

  • checksum ต้อง fail closed ไม่ใช่เตือนแล้วติดตั้งต่อ
  • authentication, OAuth scope และ tool permission เป็นคนละชั้น
  • ลด available tools ก่อนเขียน allow/deny รายคำสั่ง
  • ทดสอบ fallback model และล้าง approval ที่ไม่ใช้แล้ว