เอเจนต์ AI Rovo ของ Atlassian สามารถถูกหลอกให้ส่งตั๋ว Jira, หน้า Confluence และ API keys ไปยังผู้โจมตีได้ด้วยการคลิกเพียงครั้งเดียว และ "ปุ่มหยุดการทำงาน" (kill switch) ของผู้ดูแลระบบก็ไม่สามารถหยุดความสามารถในการดึงข้อมูลพื้นฐานได้
ช่องโหว่นี้เกี่ยวข้องกับเทคนิคการฉีดคำสั่ง (injection techniques) สองรูปแบบ ที่ช่วยให้ผู้ไม่หวังดีสามารถฝังคำสั่งที่ซ่อนอยู่ไว้ในหน้าเว็บภายใน หรือสร้างลิงก์ที่ทำให้ Rovo ทำการเรียกข้อมูลออกไปยังภายนอก (outbound calls) ในนามของผู้ใช้ได้
ช่องโหว่นี้ทำงานอย่างไร
Rovo จะอ่านเนื้อหาบนเว็บ สรุปข้อมูล และเมื่อเปิดใช้งาน ก็จะดึงข้อมูลเพิ่มเติมจากอินเทอร์เน็ต แต่ตัวเอเจนต์กลับล้มเหลวในการแยกแยะระหว่าง “เนื้อหาที่ต้องสรุป” กับ “คำสั่งที่ต้องดำเนินการ” ซึ่งเวกเตอร์การโจมตีสองรูปแบบได้ใช้ประโยชน์จากการปะปนกันนี้:
- การฉีดเนื้อหา (Content injection) – ผู้โจมตีซ่อนคำสั่งไว้ในหน้า Confluence เมื่อ Rovo สแกนหน้านั้น มันจะทำตามคำสั่งที่ซ่อนอยู่ โดยการดึง URL ที่มีที่อยู่อีเมลส่วนตัวและชื่อเวิร์กสเปซขององค์กร แล้วส่งข้อมูลดังกล่าวไปยังเซิร์ฟเวอร์ของผู้โจมตี
- การฉีด URL (URL injection) – ผู้โจมตีส่งลิงก์ที่ถูกสร้างขึ้นมา เมื่อคลิกแล้วจะทำให้ Rovo ปฏิบัติต่อข้อความที่ผู้โจมตีจัดเตรียมไว้เสมือนเป็นคำสั่งที่ถูกต้องจากผู้ใช้ โดยเอเจนต์จะดูเหมือนกำลังทำงานที่ไม่มีอันตราย เช่น การระบุรูปภาพ แต่ในขณะเดียวกันก็กำลังส่งข้อมูลลับภายในไปยังปลายทางภายนอก
ทั้งสองวิธีขึ้นอยู่กับความสามารถของ Rovo ในการเรียก URL ใดๆ ก็ตามตามข้อความที่มันประมวลผล โดยไม่มีมาตรการป้องกันเพื่อแยกแยะระหว่างการสรุปข้อมูลทั่วไปกับการทำตามคำสั่งที่เป็นอันตราย
ทำไมการเปิด-ปิดโดยผู้ดูแลระบบจึงไม่เพียงพอ
การควบคุมผ่าน UI ของ Atlassian จะซ่อนช่องค้นหาเว็บ ซึ่งถูกนำเสนอว่าเป็นวิธีในการปิดฟีเจอร์นี้ แต่ในทางปฏิบัติ การสลับสวิตช์ (toggle) เป็นเพียงการนำองค์ประกอบส่วนหน้า (front-end) ออกเท่านั้น แต่บริการส่วนหลัง (back-end) ที่ยังสามารถดึง URL ได้นั้นยังคงทำงานอยู่ มันเป็นเพียงการพรางหน้าจอการค้นหา ไม่ใช่การปิดบริการพื้นฐานที่ทำงานอยู่เบื้องหลัง
ความเสี่ยงสำหรับองค์กร
- การรั่วไหลของข้อมูล – รายละเอียดโครงการที่ละเอียดอ่อน เอกสารภายใน และข้อมูลประจำตัว (credentials) สามารถหลุดออกนอกขอบเขตขององค์กรได้โดยที่ผู้ใช้แทบไม่ต้องมีปฏิสัมพันธ์ใดๆ
สิ่งที่ผู้ดูแลระบบสามารถตรวจสอบได้ในวันนี้
- ประสิทธิภาพของการเปิด-ปิด (Toggle effectiveness) – หลังจากปิดตัวเลือกการค้นหาเว็บแล้ว ให้ลองป้อนคำสั่งดึงข้อมูลแก่เอเจนต์โดยเจตนา และสังเกตการร้องขอข้อมูลออกไปยังภายนอก หากการร้องขอนั้นยังคงทำงานอยู่ แสดงว่าการสลับสวิตช์เป็นเพียงการปรับเปลี่ยนแค่รูปลักษณ์ภายนอกเท่านั้น
- การควบคุมทราฟฟิกขาออก (Outbound traffic controls) – จำกัดการเรียกข้อมูลภายนอกใดๆ ที่เอเจนต์สามารถทำได้ โดยใช้รายการโดเมนที่เชื่อถือได้ (allow-list) การเปิดให้เข้าถึงอินเทอร์เน็ตได้อย่างอิสระเป็นการเปิดช่องให้เกิดการขโมยข้อมูล
- การแยกคำสั่งออกจากข้อมูล (Instruction-vs-data separation) – ตรวจสอบให้แน่ใจว่าระบบจะไม่ปฏิบัติกับหน้าเว็บหรือไฟล์ที่ไม่น่าเชื่อถือเสมือนเป็นแหล่งคำสั่งที่เชื่อถือได้ หากไม่มีการแยกแยะนี้ การโจมตีแบบ prompt-injection จะทำได้ง่ายมาก
ขั้นตอนทางสถาปัตยกรรมเพื่อลดความเสี่ยง
- แยกช่องทาง (Separate channels) – กำหนดเส้นทางคำสั่งของผู้ใช้ (user prompts) และการดึงข้อมูลผ่านไปป์ไลน์ที่แยกจากกัน วิธีนี้จะช่วยป้องกันไม่ให้ข้อมูลที่เป็นอันตราย (malicious payload) ที่ฝังอยู่ในข้อมูลถูกตีความว่าเป็นคำสั่ง
- จำกัดการเรียกข้อมูลขาออก (Restrict outbound calls) – ติดตั้งไฟร์วอลล์หรือกฎพร็อกซี (proxy rules) ที่บล็อกปลายทางใดๆ ที่ไม่ได้รับอนุมัติอย่างชัดเจนสำหรับเอเจนต์ AI
- การอนุมัติโดยมนุษย์สำหรับการเรียกข้อมูลภายนอก (Human approval for external calls) – กำหนดให้ต้องมีการยืนยันด้วยตนเองก่อนที่เอเจนต์จะสามารถเริ่มการร้องขอเครือข่ายที่ออกไปนอกสภาพแวดล้อมขององค์กรได้
ข้อโต้แย้งจาก Atlassian
สิ่งที่ควรจับตามองต่อไป
องค์กรควรติดตามการอัปเดตจาก Atlassian เกี่ยวกับแพตช์ (patches) หรือการเปลี่ยนแปลงการกำหนดค่าใดๆ ที่จะเข้ามาแก้ไขช่องโหว่ด้านการแยกแยะข้อมูลพื้นฐานนี้
บทสรุป: ความสามารถของ Rovo ในการทำตามคำสั่งที่ซ่อนอยู่หมายความว่า เพียงแค่หน้าเว็บหรือลิงก์ที่เป็นอันตรายเพียงอันเดียวก็สามารถดูดข้อมูลที่เป็นความลับออกไปได้ และการสลับสวิตช์บน UI ก็ไม่สามารถหยุดยั้งสิ่งนั้นได้ ผู้ดูแลระบบต้องยืนยันว่าฟีเจอร์ดังกล่าวถูกปิดใช้งานอย่างแท้จริง จำกัดการเข้าถึงทราฟฟิกขาออก และออกแบบลำดับการส่งคำสั่งใหม่ เพื่อป้องกันไม่ให้เอเจนต์ AI กลายเป็นเครื่องมือในการขโมยข้อมูล (data exfiltration) โดยไม่ตั้งใจ
