ทางเดินจากหลาย workspace มารวมที่ประตู shell สีเขียวเข้ม โดยชิ้นคำสั่งขรุขระสีอำพันติดอยู่กลางด่าน

Mistral Vibe 2.25.4: ปิด 6 ช่อง Shell Permission Bypass ก่อนเปิด Smart Approve

พี่โชว์Engineering

Mistral Vibe 2.25.4 ไม่ใช่แค่ patch UI: advisory ทางการ MAI-2026-003 ระบุว่าแก้ช่องโหว่ตรวจ shell permission หกรายการ CVE-2026-87983 ถึง CVE-2026-87988 ซึ่งกระทบรุ่นก่อน 2.25.4 ผ่าน syntax/option ที่เลี่ยง workspace หรือ denylist ได้ ทีมที่ใช้ Vibe รันคำสั่งจึงควรอัปก่อนทดลองฟีเจอร์อื่นครับ

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

ตรวจ tag v2.25.4 วันที่ 12 กันยายน, changelog, commit ที่ release ชี้ไป และ asset metadata จาก repository ทางการ GitHub แสดง SHA-256 digest สำหรับ binary/ACP bundles ทุก platform ที่แนบ และ pyproject.toml ตรึง dependency runtime เป็นเวอร์ชันระบุชัด ทีมอ่าน install/update path เท่านั้น ไม่รัน one-line installer, binary หรือ agent กับ repository จริง

release แก้ risky shell syntax/options ให้ขอ approval, ทำให้ Smart Approve แสดงใน mode picker และยกระดับคำขอเสี่ยงซ้ำเป็น confirmation พร้อมเหตุผล เอกสารสิทธิ์ทางการบอกว่า agent profile กำหนด tool/approval, trusted folder คุม project config/skills และการอ่านเขียนหรือรันนอก working directory ต้องถามเสมอ

หน้า GitHub Security ยังไม่มี SECURITY.md และไม่มี advisory ที่ publish ใน repository จึงใช้ advisory ทางการของ Mistral เป็นหลักฐานหลักและถือช่องรายงานใน GitHub เป็นข้อจำกัดด้าน transparency สรุปว่า ผ่านเกณฑ์คัดกรอง ณ วันที่ตรวจ 2026-09-18 เฉพาะ 2.25.4 ขึ้นไปใน isolated canary โดยยังต้องถือว่ามีความเสี่ยงคงเหลือ

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

pin 2.25.4 และตรวจ digest ก่อนติดตั้งจาก artifact ทางการ เริ่มใน folder สังเคราะห์ที่ไม่มี secret อย่า trust repository จากภายนอกก่อนอ่าน AGENTS.md, config, skills, hooks และ Git config ตั้ง agent profile ให้ shell/write/network เป็น ask หรือ deny และอย่าให้ Smart Approve แทน deterministic deny สำหรับ deploy, credential, package publish และ path นอก workspace

ปิด MCP/connectors ที่ไม่ใช้ จำกัด egress กับ token scope และตรวจ tool schema ก่อนเชื่อม หากต้องเพิ่ม directory ด้วย --add-dir ให้ประกาศ path ที่แคบและดูว่า file mention resolve ไป root ใด สำหรับ privacy ให้ตรวจ telemetry และ commit-signature settings แทนการยอมรับค่า default โดยไม่อ่าน

ทดสอบ payload เชิง regression ขององค์กร เช่น quote, command substitution, option ที่เปลี่ยน working tree และ path ข้ามขอบเขต โดยใช้ fixture ไม่มีผลกระทบจริง จากนั้นเก็บ approval log, diff และ destination เป็นหลักฐาน

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

permission parser ของ shell ต้องตาม syntax หลาย platform ต่อเนื่อง ช่องโหว่หกตัวที่เพิ่งแก้แสดงว่าการพึ่ง lexical denylist อย่างเดียวเปราะ Smart Approve ยังเป็นการจัดประเภทจากโมเดลและอาจผิดได้ ส่วน trusted folder เป็นการตัดสินใจครั้งใหญ่ เพราะเปิด project instructions/skills ที่ชักนำ agent ได้

การไม่มี SECURITY.md/advisory feed ใน repository ทำให้เส้นทาง disclosure และการติดตาม remediation ชัดน้อยกว่าที่ควร Dependency ถูก pin ช่วย reproducibility แต่ยังต้อง scan lock/artifact และติดตาม advisory ของ transitive packages แยก

Recap

  • ใช้ 2.25.4 ขึ้นไปและตรวจ digest
  • กำหนด deny/ask แบบ deterministic เหนือ Smart Approve
  • review trusted folder, skills, hooks, MCP และ Git config
  • ตรวจ telemetry/identity data และเก็บ regression fixture ของ shell ครับ