สรุปสั้น
DeepSeek Harness ซึ่งเป็นเครื่องมือโอเพนซอร์สของ DeepSeek สำหรับรันเอเจนต์ AI ที่ทำงานเขียนโค้ดบนเครื่องของนักพัฒนา มีช่องโหว่ที่ทำให้เอเจนต์ซึ่งถูกกักอยู่ในแซนด์บ็อกซ์สามารถปิดแซนด์บ็อกซ์ของตัวเองได้ด้วยคำสั่งเพียงคำสั่งเดียว ตามการออกแบบ เครื่องมือจะรันคำสั่งของเอเจนต์ภายในแซนด์บ็อกซ์ระดับระบบปฏิบัติการ เพื่อไม่ให้เอเจนต์ที่กำลังทำงานกับไฟล์ที่ไม่น่าเชื่อถือเขียนไฟล์ออกนอกพื้นที่ทำงานของตน แต่เอเจนต์สามารถถอดข้อจำกัดนั้นออกได้ด้วยการเรียกหน้าเว็บควบคุมของเครื่องมือเองที่ทำงานอยู่บนเครื่องเดียวกัน หลังจากนั้นคำสั่งของเอเจนต์จะทำงานนอกแซนด์บ็อกซ์โดยไม่มีหน้าต่างขออนุมัติปรากฏขึ้นเลย
ช่องโหว่นี้ใช้รหัส CVE-2026-82533 โดย VulnCheck เป็นผู้ออกรหัสและเผยแพร่บันทึกเมื่อวันที่ 8 กันยายน พ.ศ. 2569 พร้อมให้คะแนนความรุนแรง 9.4 เต็ม 10 ส่วนผู้รายงานคือ OX Research ซึ่งระบุว่าคำสั่งเชลล์เพียงคำสั่งเดียวก็เพียงพอ คำสั่งดังกล่าวเรียกไปยังหน้าเว็บควบคุมบนเครื่องแล้วตั้งค่าเซสชันของเอเจนต์ให้เป็นโหมดชื่อ danger-full-access ซึ่งเป็นโหมดที่ปิดแซนด์บ็อกซ์และหยุดการถามอนุมัติ ช่องโหว่ทำงานได้บนการติดตั้งแบบค่าเริ่มต้นจนกระทั่ง DeepSeek แก้ไขเมื่อวันที่ 27 สิงหาคม และเงื่อนไขคือเอเจนต์ต้องอ่านข้อความที่ผู้โจมตีแทรกไว้แล้วถูกชักจูงให้เรียกคำสั่งนั้น
รากของปัญหาอยู่ที่หน้าเว็บควบคุมซึ่งไม่มีการยืนยันตัวตน ในเวอร์ชันที่ได้รับผลกระทบ การตรวจว่าคำขอใดเข้าถึงหน้าเว็บได้อาศัยการอ่านค่า Host header ของคำขอ โดยไม่เคยตรวจว่าการเชื่อมต่อมาจากที่ใด และความคิดเห็นในไฟล์นั้นเองเขียนกำกับไว้ว่าการตรวจดังกล่าว “ไม่ใช่ชั้นยืนยันตัวตน” เวอร์ชันที่ได้รับผลกระทบคือ 0.1.1-rc.2 และเก่ากว่า ส่วนเวอร์ชันแรกที่แก้แล้วและเผยแพร่บน npm จริงคือ 0.1.2-alpha.2 เมื่อวันที่ 30 สิงหาคม ไม่ใช่ 0.1.2-alpha.1 ที่บันทึก CVE ระบุไว้ ซึ่งออกเฉพาะบน GitHub เท่านั้น
รายละเอียดข่าว
เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 9 กันยายน พ.ศ. 2569 ว่าช่องโหว่ใน DeepSeek Harness ซึ่งเป็นเครื่องมือโอเพนซอร์สของ DeepSeek สำหรับรันเอเจนต์ AI ที่เขียนโค้ดบนเครื่องนักพัฒนา เปิดทางให้เอเจนต์ที่อยู่ในแซนด์บ็อกซ์ปิดแซนด์บ็อกซ์ของตัวเองได้ด้วยคำสั่งเดียว
OX Research ซึ่งเป็นบริษัทความปลอดภัยผู้รายงานช่องโหว่ ระบุว่าคำสั่งเชลล์คำสั่งเดียวก็เพียงพอ โดยคำสั่งนั้นเรียกไปยังหน้าเว็บควบคุมที่ทำงานอยู่บนเครื่องเดียวกัน แล้วตั้งค่าเซสชันของเอเจนต์ให้เป็นโหมด danger-full-access ซึ่งเป็นโหมดที่ปิดทั้งแซนด์บ็อกซ์และการถามอนุมัติ จุดที่ทำให้กลไกอนุมัติไม่ทำงานคือคำสั่งทั่วไปไม่ต้องขออนุมัติอยู่แล้ว การขออนุมัติถูกใช้เฉพาะตอนที่คำสั่งร้องขอสิทธิ์กว้างกว่าที่เซสชันมีอยู่ และการเรียกครั้งนี้ไม่ได้ร้องขอสิทธิ์ แต่เป็นการเปลี่ยนค่าตั้งของเซสชันแทน
OX ระบุว่าได้ตรวจยืนยันแล้วว่าแซนด์บ็อกซ์ทำงานอยู่จริงก่อนการหลบหนี โดยรันเซสชันสองชุดจากค่าเริ่มต้นเดียวกันแล้วป้อนคำสั่งเดียวกันให้ทั้งคู่ ผลคือเซสชันที่ได้เรียกหน้าเว็บควบคุมไปแล้วสามารถเขียนไฟล์ลงโฟลเดอร์นอกพื้นที่ทำงานของตนได้ ขณะที่อีกเซสชันหนึ่งถูกบล็อก

เงื่อนไขสำคัญที่ทำให้ช่องโหว่นี้เกิดขึ้นได้คือขอบเขตของแซนด์บ็อกซ์เอง เอกสารอ้างอิงบรรทัดคำสั่งของรุ่นที่ได้รับผลกระทบระบุว่าภายใต้ค่าเริ่มต้น การเขียนไฟล์จะถูกจำกัดอยู่ในพื้นที่ทำงานและโฟลเดอร์ชั่วคราว ขณะที่ “การอ่านและการเข้าถึงเครือข่ายไม่ถูกจำกัด” ผลคือหน้าเว็บควบคุมของเครื่องมือเองยังเข้าถึงได้จากภายในแซนด์บ็อกซ์ ยิ่งไปกว่านั้นเครื่องมือยังส่งที่อยู่ของหน้าเว็บควบคุมและตัวระบุเซสชันปัจจุบันให้กับเชลล์ของเอเจนต์โดยตรง เอเจนต์จึงไม่ต้องค้นหาข้อมูลเหล่านั้นเอง
นอกจากเส้นทางจากภายในเครื่องแล้ว ยังมีความเสี่ยงจากภายนอกด้วย เพราะการตรวจสิทธิ์ที่อาศัย Host header หมายความว่าเครื่องภายนอกสามารถอ้างว่าตนเองเป็นเครื่องท้องถิ่นแล้วสั่งงานเอเจนต์ได้ ซึ่งเป็นสิ่งที่บันทึก CVE อธิบายไว้ อย่างไรก็ตามบรรทัดคำสั่งของเครื่องมือปฏิเสธการรับฟังบนทุกอินเทอร์เฟซเครือข่าย การเข้าถึงจากภายนอกจึงต้องอาศัยการที่ผู้ใช้ทำ port forward หรือ proxy ผ่านอุโมงค์ การ forward ผ่าน SSH หรือผ่านโปรแกรมแก้ไขโค้ดไว้เอง นอกจากนี้หน้าเว็บเดียวกันยังให้บริการคำขอดาวน์โหลดบันทึกการสนทนาทั้งเซสชัน โดยประกาศของ VulnCheck ระบุว่าผู้ที่เข้าถึงหน้าเว็บนั้นได้สามารถดึงบทสนทนาที่เก็บไว้ทั้งหมดออกไปได้โดยไม่ต้องใช้กุญแจใด ๆ
เรื่องเวอร์ชันมีรายละเอียดที่ต้องระวัง บันทึก CVE ระบุว่า 0.1.2-alpha.1 คือเวอร์ชันที่แก้แล้ว แต่เวอร์ชันนั้นไม่เคยถูกเผยแพร่บน npm ซึ่งเป็นที่ที่คำแนะนำการติดตั้งของโครงการเองชี้ให้ผู้ใช้ไป เมื่อ The Hacker News ตรวจสอบ npm เมื่อวันที่ 9 กันยายน พบว่ารุ่นแรกที่เผยแพร่พร้อมการแก้ไขเรื่องการยืนยันตัวตนคือ 0.1.2-alpha.2 ซึ่งออกหลังจากการแก้ไขถูกส่งขึ้น GitHub ถึงสามวัน
อีกประเด็นที่รายงานหยิบขึ้นมาคือมีนักพัฒนาสองรายอธิบายการหลบหนีแบบเดียวกันนี้บนกระดานสนทนาของ DeepSeek เองก่อนที่จะมี CVE โดยเมื่อวันที่ 13 สิงหาคม รายหนึ่งโพสต์รายงานแสดงกระบวนการที่ยังถูกแซนด์บ็อกซ์กักอยู่แต่เรียกไปยังหน้าเว็บควบคุมแล้วสลับเซสชันเป็นโหมด danger-full-access พร้อมผลการทดสอบ และวันที่ 14 สิงหาคม อีกรายโพสต์รายงานเกี่ยวกับหน้าเว็บเดียวกัน พร้อมระบุรายการคำขอที่หน้าเว็บยอมรับโดยไม่ต้องใช้ข้อมูลยืนยันตัวตนใด ๆ รายงานฉบับหลังยังตั้งข้อสังเกตว่าโครงการไม่มีไฟล์นโยบายความปลอดภัยและไม่มีช่องทางส่วนตัวสำหรับแจ้งช่องโหว่ ซึ่งจนถึงขณะนี้โครงการก็ยังไม่มีไฟล์ดังกล่าว ส่วน OX Research รายงานช่องโหว่ไปยัง VulnCheck เมื่อวันที่ 24 สิงหาคมตามไทม์ไลน์ของตนเอง และ VulnCheck ให้เครดิตแก่ นาย Nir Zadok และ นาย Moshe Siman Tov Bustan โดยบทความของ OX ไม่ได้กล่าวถึงรายงานของนักพัฒนาสองรายก่อนหน้า
รายละเอียดช่องโหว่
สิ่งที่ทำให้ช่องโหว่นี้ต่างจากบั๊กความปลอดภัยทั่วไปคือมันไม่ได้อาศัยการทำลายกลไกแซนด์บ็อกซ์ของระบบปฏิบัติการเลย แต่อาศัยการที่ตัวเครื่องมือเปิดช่องทางควบคุมของตัวเองทิ้งไว้ให้สิ่งที่มันกำลังกักขังเข้าถึงได้ แซนด์บ็อกซ์จำกัดเฉพาะการเขียนไฟล์ ไม่ได้จำกัดการเข้าถึงเครือข่าย เมื่อหน้าเว็บควบคุมฟังอยู่บนเครื่องเดียวกันและไม่มีการยืนยันตัวตน เอเจนต์ที่อยู่ข้างในจึงเพียงแค่ “ขอ” ให้ตัวเองได้รับสิทธิ์เต็ม แทนที่จะต้อง “เจาะ” ออกมา และเนื่องจากการเปลี่ยนค่าตั้งของเซสชันไม่ถูกนับเป็นการร้องขอสิทธิ์ที่กว้างขึ้น กลไกขออนุมัติจึงไม่ทำงาน
ตัวจุดชนวนที่ทำให้เอเจนต์ลงมือคือข้อความจากผู้โจมตีที่เอเจนต์อ่านเข้าไป ซึ่งเป็นรูปแบบเดียวกับการโจมตีด้วยการแทรกคำสั่งลงในข้อมูลนำเข้าที่พบในระบบที่ขับเคลื่อนด้วยโมเดลภาษา เนื้อหาดังกล่าวอาจฝังอยู่ในไฟล์ในคลังโค้ด ในรายงานบั๊ก ในความคิดเห็นของ pull request หรือในเอกสารที่เอเจนต์ถูกสั่งให้อ่าน นักพัฒนาที่ปล่อยให้เอเจนต์ทำงานกับคลังโค้ดจากภายนอกจึงตกอยู่ในสถานะที่ไฟล์ซึ่งดูไม่มีพิษภัยกลายเป็นตัวสั่งการได้ และผลลัพธ์คือคำสั่งที่รันด้วยบัญชีผู้ใช้ที่เปิดเครื่องมือขึ้นมา ไม่ใช่บัญชีที่ถูกจำกัดสิทธิ์แต่อย่างใด
| เวอร์ชัน | สถานะ | วันที่เผยแพร่ |
|---|---|---|
| 0.1.1-rc.2 และเก่ากว่า | ได้รับผลกระทบ | 0.1.1-rc.2 เผยแพร่ 21 สิงหาคม |
| 0.1.2-alpha.1 | แก้แล้ว แต่มีเฉพาะบน GitHub | 27 สิงหาคม ไม่มีบน npm |
| 0.1.2-alpha.2 | รุ่นแรกที่แก้แล้วและอยู่บน npm | 30 สิงหาคม |
| 0.1.2-rc.1 | รุ่นปัจจุบันบน npm มีการแก้ไขแล้ว | 3 กันยายน |
การแก้ไขที่ DeepSeek ทำคือเพิ่มการตรวจตัวตนให้หน้าเว็บควบคุม โดยเครื่องมือจะพิมพ์โทเค็นใช้ครั้งเดียวออกมาที่ที่อยู่เริ่มต้น เบราว์เซอร์นำโทเค็นนั้นไปแลกเป็นคุกกี้ที่ลงลายมือชื่อแล้ว และทุกการเรียกไปยังหน้าเว็บต้องมีคุกกี้ดังกล่าว สิ่งที่การแก้ไขไม่ได้เปลี่ยนคือตัวแซนด์บ็อกซ์เอง เพราะในรุ่น 0.1.2-rc.1 เอกสารอ้างอิงฉบับเดียวกันยังคงระบุว่าการอ่านและการเข้าถึงเครือข่ายไม่ถูกจำกัด และเชลล์ของเอเจนต์ยังคงได้รับที่อยู่ของหน้าเว็บควบคุมอยู่เหมือนเดิม โดยไม่มีแหล่งข้อมูลใดตอบว่าเอเจนต์ที่รันอยู่ในพื้นที่ทำงานยังสามารถได้เซสชันที่ใช้งานได้ภายใต้กลไกใหม่หรือไม่
ควรบันทึกไว้ด้วยว่ารายงานฉบับวันที่ 13 สิงหาคมระบุว่าการจำกัดที่อยู่ที่เครื่องมือรับฟังไม่ช่วยแก้ปัญหา เพราะเอเจนต์อยู่บนเครื่องเดียวกันอยู่แล้ว และไม่มีแหล่งข้อมูลใดที่รายงานฉบับนี้ตรวจสอบเสนอวิธีหยุดการหลบหนีจากภายในแซนด์บ็อกซ์บนการติดตั้งแบบค่าเริ่มต้นขณะที่เครื่องมือกำลังทำงาน นอกจากนี้ประกาศความปลอดภัยของโครงการเองระบุว่าซอฟต์แวร์ยังไม่ผ่านการตรวจสอบด้านความปลอดภัย และกลไกแซนด์บ็อกซ์กับหน้าต่างขออนุมัติ “ไม่รับประกันการแยกส่วนและไม่ป้องกันความเสียหาย” พร้อมบอกผู้ใช้ไม่ให้พึ่งเครื่องมือนี้เป็นมาตรการความปลอดภัยเดียวสำหรับงานที่ไม่น่าเชื่อถือ
ผลกระทบ
ผู้ได้รับผลกระทบคือนักพัฒนาและทีมที่รันเอเจนต์เขียนโค้ดบนเครื่องของตนเอง ซึ่งเป็นสภาพแวดล้อมที่มีของมีค่ากระจุกอยู่มากเป็นพิเศษ ได้แก่ ซอร์สโค้ดของโครงการที่กำลังทำอยู่ คีย์ SSH คีย์ API ของบริการคลาวด์ โทเค็นของ git และไฟล์ตั้งค่าที่มักเก็บข้อมูลยืนยันตัวตนไว้แบบข้อความธรรมดา เมื่อแซนด์บ็อกซ์ถูกปิด เอเจนต์จะเขียนไฟล์ที่ใดก็ได้เท่าที่บัญชีผู้ใช้นั้นเขียนได้ ซึ่งรวมถึงการแก้ไฟล์ตั้งค่าของเชลล์เพื่อคงอยู่ถาวรและการแทรกโค้ดเข้าไปในโครงการที่กำลังพัฒนา
ความน่ากังวลเชิงระบบอยู่ที่การทำงานร่วมกันของสองอย่าง คือแซนด์บ็อกซ์ที่จำกัดเฉพาะการเขียนไฟล์แต่ปล่อยเครือข่ายไว้ กับชั้นควบคุมที่วางอยู่บนเครื่องเดียวกันโดยไม่มีการยืนยันตัวตน รูปแบบนี้ไม่ได้จำกัดอยู่ที่เครื่องมือตัวเดียว แต่เป็นรูปแบบที่พบซ้ำในเครื่องมือสำหรับเอเจนต์หลายตัวในปีนี้ ซึ่งนักวิจัยพบการหลุดออกจากแซนด์บ็อกซ์อยู่เรื่อย ๆ รวมถึงชุดช่องโหว่ที่ไฟล์ตั้งค่าของคลังโค้ดเองเป็นตัวทำให้เอเจนต์รันโค้ดของผู้โจมตีนอกแซนด์บ็อกซ์
ในทางปฏิบัติ กลุ่มที่ประเมินความเสี่ยงของตนเองได้ยากที่สุดคือผู้ที่ติดตั้งเครื่องมือผ่านแอปเดสก์ท็อปของบุคคลที่สาม เพราะแอปเหล่านั้นบรรจุสำเนาของ harness มาเอง และเลือกเองว่าจะใช้รุ่นใด ตัวอย่างที่รายงานยกมาคือบิลด์สำหรับวินโดวส์รายหนึ่งที่ตรึงรุ่น 0.1.1-rc.2 ไว้ในช่วงปลายเดือนสิงหาคม แล้วเพิ่งย้ายไป 0.1.3-alpha.1 ซึ่งมีการแก้ไขแล้วเมื่อวันที่ 6 กันยายน ผู้ใช้ที่ติดตั้งผ่านแอปครอบจึงต้องตรวจเองว่าแอปนั้นบรรจุรุ่นใดมา
สิ่งที่ควรบันทึกไว้อีกอย่างคือวิธีที่การแก้ไขถูกสื่อสารออกมา เมื่อ The Hacker News ตรวจรายการประกาศความปลอดภัยของคลังโค้ดเมื่อวันที่ 9 กันยายน ไม่พบประกาศใดถูกเผยแพร่ และรุ่นที่บรรจุการแก้ไขระบุการเปลี่ยนแปลงนี้ปนอยู่กับรายการเปลี่ยนแปลงตามปกติว่าเป็นการถอดช่องทางรับส่งข้อมูลแบบเก่าออกและกำหนดให้ต้องใช้ “การยืนยันตัวตนด้วยโทเค็นใช้ครั้งเดียวสำหรับการเข้าถึงผ่านเครือข่าย” โดยไม่มีประกาศความปลอดภัยและไม่มีการกล่าวถึง CVE ทีมที่ติดตามความปลอดภัยของเครื่องมือด้วยการอ่านบันทึกการเปลี่ยนแปลงจึงมีโอกาสสูงที่จะมองข้ามไป
คำแนะนำ
สิ่งแรกคืออัปเดตเป็นเวอร์ชัน 0.1.2-alpha.2 หรือใหม่กว่า โดยรุ่นปัจจุบันบน npm คือ 0.1.2-rc.1 ผู้ที่ติดตั้งผ่านแอปเดสก์ท็อปของบุคคลที่สามต้องตรวจว่าแอปนั้นบรรจุ harness รุ่นใดมา และอย่าอนุมานจากเลขเวอร์ชันของตัวแอปเอง สำหรับผู้ที่ยังอัปเกรดไม่ได้ ให้ปิดหน้าเว็บควบคุมเมื่อไม่ได้ใช้งาน และถอดอุโมงค์ พร็อกซี หรือ port forward ใด ๆ ที่เปิดทางเข้าถึงหน้าเว็บนั้นออกให้หมด
ข้อควรตระหนักที่สำคัญคือมาตรการข้างต้นปิดได้เฉพาะเส้นทางจากภายนอก ไม่มีแหล่งข้อมูลใดเสนอวิธีหยุดการหลบหนีจากภายในแซนด์บ็อกซ์บนการติดตั้งแบบค่าเริ่มต้นขณะที่เครื่องมือทำงานอยู่ การจำกัดที่อยู่ที่เครื่องมือรับฟังไม่ช่วย เพราะเอเจนต์อยู่บนเครื่องเดียวกันกับหน้าเว็บควบคุมอยู่แล้ว ดังนั้นการควบคุมที่ได้ผลจริงคือการควบคุมว่าเอเจนต์ได้อ่านอะไรและรันอยู่บนเครื่องแบบใด
แนวทางที่ควรใช้กับงานที่เกี่ยวข้องกับโค้ดหรือเอกสารจากภายนอกคือการรันเอเจนต์ในเครื่องเสมือนหรือคอนเทนเนอร์ที่ใช้แล้วทิ้ง แยกจากเครื่องทำงานหลัก ไม่วางคีย์ SSH คีย์ API หรือโทเค็นของ git ไว้ในสภาพแวดล้อมนั้น และจำกัดการเข้าถึงเครือข่ายออกเท่าที่จำเป็น เพราะแซนด์บ็อกซ์ของเครื่องมือเองครอบคลุมเฉพาะการเขียนไฟล์ ไม่ได้ครอบคลุมเครือข่าย การพึ่งแซนด์บ็อกซ์ของเครื่องมือเป็นชั้นป้องกันเดียวจึงขัดกับสิ่งที่ประกาศความปลอดภัยของโครงการเองเตือนไว้
สำหรับทีมที่กำหนดนโยบายการใช้เอเจนต์ในองค์กร ควรกำหนดให้ถือว่าเนื้อหาที่เอเจนต์อ่าน ไม่ว่าจะเป็นไฟล์ในคลังโค้ด รายงานบั๊ก หรือความคิดเห็นใน pull request เป็นข้อมูลนำเข้าที่ไม่น่าเชื่อถือเสมอ และควรเฝ้าดูสัญญาณของการเปลี่ยนโหมดการทำงานของเซสชัน เช่น การเรียกไปยังที่อยู่ของหน้าเว็บควบคุมบนเครื่องท้องถิ่นจากกระบวนการของเอเจนต์ ไฟล์ที่ถูกเขียนนอกพื้นที่ทำงาน และกระบวนการลูกที่ไม่คาดคิดซึ่งเกิดจากเครื่องมือ สุดท้าย เนื่องจากโครงการยังไม่มีไฟล์นโยบายความปลอดภัยและการแก้ไขถูกสื่อสารปนกับรายการเปลี่ยนแปลงทั่วไป ทีมที่ใช้เครื่องมือนี้ควรติดตามประกาศจาก VulnCheck และผู้วิจัยภายนอกควบคู่ไปด้วย แทนการรอประกาศจากคลังโค้ดอย่างเดียว
