เรื่องเล่าจากเบื้องหลัง AI: เมื่อ “Copilot” ถูกเจาะทะลุถึงราก

ลองจินตนาการว่า AI ผู้ช่วยอัจฉริยะของคุณ—Microsoft Copilot—ที่ควรจะปลอดภัย กลับกลายเป็นช่องทางให้แฮกเกอร์เข้าถึงระบบเบื้องหลังได้ในระดับ root! เรื่องนี้เกิดขึ้นจริงในเดือนเมษายน 2025 เมื่อ Microsoft เปิดตัวฟีเจอร์ใหม่: Python sandbox ที่รันผ่าน Jupyter Notebook เพื่อให้ผู้ใช้สามารถเขียนโค้ดและวิเคราะห์ข้อมูลได้สะดวกขึ้น

แต่ฟีเจอร์นี้กลับเปิดช่องให้แฮกเกอร์จาก Eye Security ใช้เทคนิคง่ายๆ—แค่ปลอมไฟล์ชื่อ “pgrep” แล้ววางไว้ในโฟลเดอร์ที่ระบบค้นหาเป็นอันดับแรก—ก็สามารถหลอกให้ระบบรันโค้ดของตนในสิทธิ์ root ได้ทันที!

แม้จะไม่มีข้อมูลสำคัญรั่วไหล แต่เหตุการณ์นี้สะท้อนถึงความเปราะบางของ AI sandbox ที่แม้จะออกแบบมาอย่างดี ก็ยังมีจุดอ่อนที่ถูกมองข้าม

Copilot เปิดตัว Python sandbox ผ่าน Jupyter Notebook ในเดือนเมษายน 2025
ใช้ Jupyter Notebook syntax (%command) เพื่อรันโค้ดใน backend
รันใน container ที่ใช้ผู้ใช้ชื่อ “ubuntu” ซึ่งอยู่ในกลุ่ม sudo แต่ไม่มี binary ของ sudo

ช่องโหว่เกิดจากการใช้คำสั่ง pgrep โดยไม่ระบุ path แบบเต็มใน script ที่รันเป็น root
ระบบค้นหาไฟล์ pgrep จาก $PATH ซึ่งมีโฟลเดอร์ที่ผู้ใช้สามารถเขียนไฟล์ได้
แฮกเกอร์สร้างไฟล์ pgrep ปลอมที่รันโค้ด Python เพื่ออ่านคำสั่งจากไฟล์และรันด้วย popen

แฮกเกอร์สามารถเข้าถึง root ภายใน container ได้สำเร็จ
ใช้ช่องโหว่ใน script entrypoint.sh ที่รัน keepAliveJupyterSvc.sh ด้วยสิทธิ์ root
สามารถสำรวจไฟล์ระบบและรันคำสั่งได้ในระดับสูงสุด

Microsoft ได้รับรายงานช่องโหว่ในเดือนเมษายน และออก patch แก้ไขในเดือนกรกฎาคม 2025
ช่องโหว่ถูกจัดระดับ “moderate severity”
ไม่มีการให้รางวัล bug bounty แต่มีการยอมรับในหน้า researcher acknowledgments

ระบบ container ของ Copilot มีการป้องกันที่ดี ไม่พบการรั่วไหลของข้อมูลสำคัญ
ไม่มีไฟล์สำคัญใน /root และไม่มีช่องทาง breakout จาก container
ระบบใช้ OverlayFS และจำกัด network ด้วย /32 netmask

AI sandbox แม้จะปลอดภัย ก็ยังมีช่องโหว่จากการตั้งค่าที่ผิดพลาด
การไม่ระบุ path แบบเต็มใน script ที่รันด้วยสิทธิ์ root เป็นช่องทางให้แฮกเกอร์แทรกไฟล์ปลอม
โฟลเดอร์ที่ผู้ใช้สามารถเขียนไฟล์ได้ไม่ควรถูกจัดไว้ใน $PATH ก่อนโฟลเดอร์ระบบ

การให้สิทธิ์ root ในบางส่วนของ container เป็นความเสี่ยงที่ควรหลีกเลี่ยง
แม้จะรันส่วนใหญ่ด้วยสิทธิ์ผู้ใช้ทั่วไป แต่บาง script ยังรันเป็น root โดยไม่จำเป็น
การ drop privileges ควรทำตั้งแต่ต้นและไม่ย้อนกลับ

การเปิดให้ผู้ใช้ upload ไฟล์โดยไม่มีการตรวจสอบอย่างเข้มงวดเป็นช่องทางโจมตี
ไฟล์ที่ upload เข้ามาอาจถูกใช้เป็น payload สำหรับการโจมตี
การตรวจสอบชื่อไฟล์และเนื้อหาควรทำก่อนการรันทุกครั้ง

การไม่ให้รางวัล bug bounty อาจลดแรงจูงใจในการรายงานช่องโหว่จากนักวิจัยอิสระ
ช่องโหว่ระดับ root access ควรได้รับการตอบแทนเพื่อส่งเสริมการเปิดเผยอย่างรับผิดชอบ
การไม่ให้รางวัลอาจทำให้นักวิจัยหันไปสนใจแพลตฟอร์มอื่นที่ให้ผลตอบแทนดีกว่า

https://research.eye.security/how-we-rooted-copilot/
🧠 เรื่องเล่าจากเบื้องหลัง AI: เมื่อ “Copilot” ถูกเจาะทะลุถึงราก ลองจินตนาการว่า AI ผู้ช่วยอัจฉริยะของคุณ—Microsoft Copilot—ที่ควรจะปลอดภัย กลับกลายเป็นช่องทางให้แฮกเกอร์เข้าถึงระบบเบื้องหลังได้ในระดับ root! เรื่องนี้เกิดขึ้นจริงในเดือนเมษายน 2025 เมื่อ Microsoft เปิดตัวฟีเจอร์ใหม่: Python sandbox ที่รันผ่าน Jupyter Notebook เพื่อให้ผู้ใช้สามารถเขียนโค้ดและวิเคราะห์ข้อมูลได้สะดวกขึ้น แต่ฟีเจอร์นี้กลับเปิดช่องให้แฮกเกอร์จาก Eye Security ใช้เทคนิคง่ายๆ—แค่ปลอมไฟล์ชื่อ “pgrep” แล้ววางไว้ในโฟลเดอร์ที่ระบบค้นหาเป็นอันดับแรก—ก็สามารถหลอกให้ระบบรันโค้ดของตนในสิทธิ์ root ได้ทันที! แม้จะไม่มีข้อมูลสำคัญรั่วไหล แต่เหตุการณ์นี้สะท้อนถึงความเปราะบางของ AI sandbox ที่แม้จะออกแบบมาอย่างดี ก็ยังมีจุดอ่อนที่ถูกมองข้าม ✅ Copilot เปิดตัว Python sandbox ผ่าน Jupyter Notebook ในเดือนเมษายน 2025 ➡️ ใช้ Jupyter Notebook syntax (%command) เพื่อรันโค้ดใน backend ➡️ รันใน container ที่ใช้ผู้ใช้ชื่อ “ubuntu” ซึ่งอยู่ในกลุ่ม sudo แต่ไม่มี binary ของ sudo ✅ ช่องโหว่เกิดจากการใช้คำสั่ง pgrep โดยไม่ระบุ path แบบเต็มใน script ที่รันเป็น root ➡️ ระบบค้นหาไฟล์ pgrep จาก $PATH ซึ่งมีโฟลเดอร์ที่ผู้ใช้สามารถเขียนไฟล์ได้ ➡️ แฮกเกอร์สร้างไฟล์ pgrep ปลอมที่รันโค้ด Python เพื่ออ่านคำสั่งจากไฟล์และรันด้วย popen ✅ แฮกเกอร์สามารถเข้าถึง root ภายใน container ได้สำเร็จ ➡️ ใช้ช่องโหว่ใน script entrypoint.sh ที่รัน keepAliveJupyterSvc.sh ด้วยสิทธิ์ root ➡️ สามารถสำรวจไฟล์ระบบและรันคำสั่งได้ในระดับสูงสุด ✅ Microsoft ได้รับรายงานช่องโหว่ในเดือนเมษายน และออก patch แก้ไขในเดือนกรกฎาคม 2025 ➡️ ช่องโหว่ถูกจัดระดับ “moderate severity” ➡️ ไม่มีการให้รางวัล bug bounty แต่มีการยอมรับในหน้า researcher acknowledgments ✅ ระบบ container ของ Copilot มีการป้องกันที่ดี ไม่พบการรั่วไหลของข้อมูลสำคัญ ➡️ ไม่มีไฟล์สำคัญใน /root และไม่มีช่องทาง breakout จาก container ➡️ ระบบใช้ OverlayFS และจำกัด network ด้วย /32 netmask ‼️ AI sandbox แม้จะปลอดภัย ก็ยังมีช่องโหว่จากการตั้งค่าที่ผิดพลาด ⛔ การไม่ระบุ path แบบเต็มใน script ที่รันด้วยสิทธิ์ root เป็นช่องทางให้แฮกเกอร์แทรกไฟล์ปลอม ⛔ โฟลเดอร์ที่ผู้ใช้สามารถเขียนไฟล์ได้ไม่ควรถูกจัดไว้ใน $PATH ก่อนโฟลเดอร์ระบบ ‼️ การให้สิทธิ์ root ในบางส่วนของ container เป็นความเสี่ยงที่ควรหลีกเลี่ยง ⛔ แม้จะรันส่วนใหญ่ด้วยสิทธิ์ผู้ใช้ทั่วไป แต่บาง script ยังรันเป็น root โดยไม่จำเป็น ⛔ การ drop privileges ควรทำตั้งแต่ต้นและไม่ย้อนกลับ ‼️ การเปิดให้ผู้ใช้ upload ไฟล์โดยไม่มีการตรวจสอบอย่างเข้มงวดเป็นช่องทางโจมตี ⛔ ไฟล์ที่ upload เข้ามาอาจถูกใช้เป็น payload สำหรับการโจมตี ⛔ การตรวจสอบชื่อไฟล์และเนื้อหาควรทำก่อนการรันทุกครั้ง ‼️ การไม่ให้รางวัล bug bounty อาจลดแรงจูงใจในการรายงานช่องโหว่จากนักวิจัยอิสระ ⛔ ช่องโหว่ระดับ root access ควรได้รับการตอบแทนเพื่อส่งเสริมการเปิดเผยอย่างรับผิดชอบ ⛔ การไม่ให้รางวัลอาจทำให้นักวิจัยหันไปสนใจแพลตฟอร์มอื่นที่ให้ผลตอบแทนดีกว่า https://research.eye.security/how-we-rooted-copilot/
RESEARCH.EYE.SECURITY
How we Rooted Copilot - Eye Research
Read how we explored the Python sandbox in Copilot and got root on the underlying container
0 ความคิดเห็น 0 การแบ่งปัน 21 มุมมอง 0 รีวิว