สรุปสั้น

นักวิจัยของบริษัท ReliaQuest คือนาย Austin Ritchie และนาย Daxton Wirth รายงานเหตุบุกรุกที่ผู้โจมตีเปลี่ยน endpoint ของแอปพลิเคชันที่เปิดสู่อินเทอร์เน็ตเพียงจุดเดียวให้กลายเป็นสิทธิ์ผู้ดูแลเต็มรูปแบบบนเซิร์ฟเวอร์ Windows ได้ภายในไม่ถึง 24 ชั่วโมง ตลอดทางใช้คำสั่งหลายร้อยรายการ ขโมย credential และยกระดับสิทธิ์ โดยไม่มีมัลแวร์ใหม่และไม่ใช้ช่องโหว่ zero-day เลย จุดเริ่มต้นคือฟีเจอร์ส่งงานของแอปบน Apache Tomcat ที่ใช้ Spring Batch ซึ่งรับนิยามงานโดยไม่ตรวจสอบตัวตน ผู้โจมตีจึงเรียกเอนจิน JavaScript ชื่อ Nashorn ในสภาพแวดล้อม Java ของแอปมารันโค้ดได้

ReliaQuest ประเมินด้วยความมั่นใจสูงว่าเอเจนต์ที่ขับเคลื่อนด้วยโมเดลภาษาขนาดใหญ่ทำงานส่วนสำคัญของปฏิบัติการ หลักฐานที่หนักแน่นที่สุดคือแดชบอร์ดของ Cairn แพลตฟอร์มโอเพนซอร์สสำหรับประสานงานเอเจนต์ AI หลายขั้นตอน ซึ่งเปิดใช้งานอยู่บน IP เดียวกับที่ส่งงานอันตรายเข้ามา ร่วมกับจังหวะคำสั่งที่ห่างกันเฉลี่ยราว 6 วินาทีและการปรับแก้คำสั่งตามผลตอบกลับ แต่ ReliaQuest ก็ระบุตรง ๆ ว่าพฤติกรรมเหล่านี้ยังพิสูจน์ไม่ได้ว่ามี LLM เกี่ยวข้อง และไม่สามารถระบุโมเดล จำนวนเอเจนต์ หรือระดับที่มนุษย์อนุมัติแต่ละขั้นได้

รายละเอียดข่าว

เว็บไซต์ GBHackers รายงานเมื่อวันที่ 10 ตุลาคม 2569 อ้างรายงาน Threat Spotlight ของ ReliaQuest ว่าโค้ดอันตรายรันอยู่ภายในโปรเซสของแอปพลิเคชันเดิมด้วยสิทธิ์บัญชีของแอป ไม่สร้างโปรเซสลูกใด ๆ ทำให้การตรวจจับที่อาศัยการดูต้นไม้โปรเซสแทบไม่เห็นอะไร และแทนที่จะวางเว็บเชลล์ ผู้โจมตีจงใจทำให้เกิด exception แล้วอ่านผลลัพธ์คำสั่งจากข้อความ error ที่แอปส่งกลับมา

ข้อความ error มีความจุจำกัด ผู้โจมตีจึงดึงข้อมูลออกทีละก้อนขนาดคงที่ 1,800 ไบต์ และใช้หมายเลขงานที่เรียงต่อกันเป็นตัวติดตาม offset ของไฟล์และตำแหน่งการอัปโหลด ทำให้รักษาสถานะการทำงานต่อเนื่องได้ข้ามคำขอหลายร้อยครั้ง ช่องทางสั่งการระดับแอปพลิเคชันนี้ถูกใช้ทั้งสำรวจระบบ ค้นหา credential และโจมตีขั้นต่อไป

ReliaQuest ระบุว่าตัวระบุงานที่สร้างแบบโปรแกรม ผลลัพธ์ที่มีโครงสร้าง การซ่อมไวยากรณ์คำสั่งที่ผิด และการปรับค่า timeout ระหว่างทาง บ่งชี้ว่าเป็นการปรับตัวตามผลตอบกลับ ไม่ใช่ลำดับคำสั่งที่เขียนไว้ตายตัว ส่วน IP ต้นทางอีกตัวที่ส่งทราฟฟิกเข้ามาก่อนเกิดเหตุก็เปิดบริการที่เกี่ยวกับ AI และมีไดเรกทอรีเปิดที่มีไฟล์ชื่อตรงกับเครื่องมือที่ใช้ในเหตุครั้งนี้ รายงานไม่ได้ระบุภาคธุรกิจหรือชื่อองค์กรเหยื่อ

AI agents turn an exposed Spring Batch job endpoint into full SYSTEM control of a Windows server

วิธีการโจมตี

  1. เข้าถึงเริ่มต้น — ส่งนิยามงานเข้า endpoint ของ Spring Batch ที่ไม่ต้องยืนยันตัวตน เพื่อเรียก Nashorn รัน JavaScript ภายในโปรเซสของแอปบน Tomcat
  2. ช่องทางสั่งการผ่าน error — ทำให้เกิด exception เพื่อส่งผลลัพธ์กลับมาทีละ 1,800 ไบต์ เขียนผลลัพธ์ลงไฟล์ /tmp/out_<jobname>.txt และใช้ ID งานต่อเนื่องเป็นตัวนับ offset
  3. ขโมย credential — อ่านไฟล์ตั้งค่าของแอปและพบรหัสผ่าน SQL Server แบบข้อความธรรมดาที่มีสิทธิ์ sysadmin
  4. รันคำสั่งระบบปฏิบัติการ — เปิด xp_cmdshell เพื่อรันคำสั่งด้วยบัญชีบริการของฐานข้อมูล และพบว่าบัญชีนั้นมี SeImpersonatePrivilege
  5. ยกสิทธิ์เป็น SYSTEM — อัปโหลด PrintSpoofer และ GodPotato เป็นชิ้นส่วน base64 ผ่านช่องทางสั่งการ แล้วประกอบกลับด้วย certutil ความพยายามแรกล้มเหลวซ้ำ ๆ เพราะปัญหาสิทธิ์ไฟล์ ผู้โจมตีจึงเปลี่ยนเครื่องมือจนได้สิทธิ์ SYSTEM
  6. เก็บ credential และคงอยู่ — บันทึก registry hive SAM, SYSTEM และ SECURITY ไปถอดแฮชรหัสผ่านแบบออฟไลน์ สร้างบัญชีผู้ดูแลระบบในเครื่องเพิ่ม แล้วพยายามเก็บกวาดร่องรอยและปิด xp_cmdshell คืน

ฝั่งที่เป็น Linux ยังพบไดเรกทอรีซ่อน /var/tmp/.x/ ที่เก็บสคริปต์เชลล์และ runtime ส่วนตัว และไบนารี /var/tmp/kvragent ที่ใช้สแกนหาเป้าหมาย

ผลกระทบ

เหตุนี้แสดงให้เห็นว่าเอเจนต์ AI ไม่จำเป็นต้องใช้ช่องโหว่ใหม่หรือมัลแวร์ล้ำสมัย แค่มีจุดอ่อนพื้นฐานต่อกันเป็นสาย คือ endpoint จัดการที่ไม่ล็อกอิน รหัสผ่านฐานข้อมูลในไฟล์ตั้งค่า บัญชีบริการสิทธิ์สูง และเครื่องมือยกสิทธิ์ที่หาได้ทั่วไป ก็ไล่ต่อจนยึดเซิร์ฟเวอร์ได้ในเวลาไม่ถึงวัน ความเร็วระดับคำสั่งละราว 6 วินาทีและความอดทนที่จะส่งคำขอหลายร้อยครั้งผ่านช่องทางที่จำกัดมาก ทำให้กรอบเวลาที่ทีม SOC มีในการตรวจจับและตอบสนองสั้นลงอย่างมาก

ช่วงแรกของการโจมตีเกิดในโปรเซสของแอปที่ถูกต้องตามปกติ ไม่มีโปรเซสลูกและไม่มีไฟล์เว็บเชลล์ การตรวจจับที่พึ่ง EDR ดูต้นไม้โปรเซสหรือการสแกนไฟล์อย่างเดียวจึงมีแนวโน้มพลาดขั้นแรก และกว่าจะเห็นสัญญาณชัดอย่าง xp_cmdshell หรือ certutil ผู้โจมตีก็มี credential ฐานข้อมูลอยู่ในมือแล้ว

คำแนะนำ

  • บังคับยืนยันตัวตนและจำกัดการเข้าถึง endpoint สำหรับจัดการหรือส่งงาน เช่น Spring Batch admin ให้อยู่หลัง VPN หรือ allowlist และพิจารณาปิดเอนจินสคริปต์อย่าง Nashorn หากแอปไม่ต้องใช้
  • เก็บประวัติงานที่ถูกส่งเข้าระบบไว้ตรวจย้อนหลัง และเชื่อมโยง exception ของแอปพลิเคชันกับ telemetry ของฐานข้อมูลและ endpoint โดยเฉพาะ exception ที่เกิดถี่ผิดปกติจาก IP เดียว
  • ย้าย credential ออกจากไฟล์ตั้งค่าไปเก็บใน secrets storage ที่ป้องกันไว้ และลดสิทธิ์บัญชีบริการ ไม่ให้แอปเชื่อมต่อ SQL Server ด้วยสิทธิ์ sysadmin
  • ปิด xp_cmdshell และแจ้งเตือนทันทีเมื่อมีการเปิดใช้ ตรวจบัญชีบริการที่มี SeImpersonatePrivilege และเฝ้าระวังการใช้ certutil ถอด base64 ในไดเรกทอรี Temp รวมถึงการ dump registry hive SAM/SYSTEM/SECURITY
  • ตั้งการกักกันอัตโนมัติ เพราะช่วงแรกของการโจมตีอยู่ในโปรเซสของแอปที่ถูกต้อง การรอคนตรวจอาจช้าเกินไป

Indicators of Compromise (IoCs)

หมายเหตุ: IP ถูก defang แล้ว

ตัวบ่งชี้บริบท
204.194.55[.]189ต้นทางคำขอที่สร้างงานอันตรายในแอป เปิดหน้า Cairn และมีไฟล์เตรียมการโจมตี
204.194.54[.]240ส่งทราฟฟิกเข้ามาก่อนเกิดเหตุ เปิดบริการด้าน AI และไดเรกทอรีเปิดที่มีไฟล์ชื่อตรงกับเครื่องมือในเหตุนี้
94.177.131[.]113ดึงผลลัพธ์งานและส่ง POST ไปยัง endpoint อัปโหลด อาจทำหน้าที่ relay แต่ยังไม่ยืนยัน
/tmp/out_<jobname>.txtไฟล์ผลลัพธ์คำสั่งที่ตั้งชื่อตามงานที่ส่ง
/var/tmp/.x/ไดเรกทอรีซ่อนที่เก็บสคริปต์เชลล์และ runtime ส่วนตัว
/var/tmp/kvragentไบนารีที่วางบนเซิร์ฟเวอร์และใช้สแกน
C:\Windows\Temp\ps.b64 → C:\Windows\Temp\ps.exePrintSpoofer อัปโหลดเป็นชิ้น base64 แล้วประกอบด้วย certutil
C:\Windows\Temp\gp.b64 → C:\Users\Public\g.exeGodPotato อัปโหลดเป็นชิ้น base64 แล้วประกอบด้วย certutil

แหล่งอ้างอิง