สรุปสั้น
บริษัท Sophos เผยแพร่บทวิเคราะห์เมื่อวันที่ 7 กันยายน พ.ศ. 2569 ระบุว่ามัลแวร์ที่เชื่อมโยงกับการเจาะอุปกรณ์ F5 BIG-IP Access Policy Manager ซ่อนเว็บเชลล์ PHP ไว้ในหน่วยความจำ แทนที่จะเป็นไฟล์บนดิสก์ตามที่คุ้นเคย กลไกคือเมื่อ Apache โหลดสคริปต์ PHP ของตัวอุปกรณ์เองตัวใดตัวหนึ่งในสามตัว มัลแวร์จะเติมเว็บเชลล์ลงในสำเนาที่ถูกเก็บอยู่ในหน่วยความจำ ผลคือการตรวจสอบไฟล์บนดิสก์กลับมาสะอาดได้ทั้งที่อุปกรณ์ถูกยึดไปแล้ว
โดยปกติเว็บเชลล์คือสคริปต์เล็ก ๆ ที่ผู้โจมตีวางลงในโฟลเดอร์ของเว็บเซิร์ฟเวอร์เพื่อรันคำสั่งผ่านคำร้องขอเว็บธรรมดา และเนื่องจากมันอยู่บนดิสก์ ผู้ป้องกันจึงมองหามันด้วยการสแกนไฟล์และเทียบกับสำเนาที่รู้ว่าดี แต่วิธีนั้นใช้ไม่ได้กับกรณีนี้ อย่างที่นักวิจัยสรุปไว้ว่าเว็บเชลล์ “ไม่จำเป็นต้องมีอยู่ในรูปแบบสุดท้ายบนดิสก์” สคริปต์ทั้งสามตัวคือ apm_css.php3, full_wt.php3 และ webtop_popup_css.php3 ซึ่งเป็นส่วนหนึ่งของ BIG-IP APM webtop และเป็นสามตัวเดียวกับที่ F5 ชี้ให้ลูกค้าดูเมื่อเดือนมีนาคม พร้อมระบุว่าการที่ไฟล์เหล่านี้เปลี่ยนแปลงเพียงอย่างเดียวไม่ได้บ่งชี้ว่าถูกเจาะ
F5 ยังระบุในตอนนั้นด้วยว่าเคยพบกรณีที่เว็บเชลล์ถูกเขียนลงดิสก์ แต่เว็บเชลล์ “ถูกพบว่าทำงานในหน่วยความจำอย่างเดียว” ซึ่งหมายความว่าไฟล์ที่บริษัทระบุไว้อาจไม่ถูกแก้ไขเลย บทวิเคราะห์ของ Sophos จึงเป็นคำอธิบายว่าทำไมคำแถลงทั้งสองข้อนี้จึงเป็นจริงพร้อมกันได้ ทั้งนี้ Sophos ตรวจสอบตัวอย่างเพียงชิ้นเดียว ไม่ได้ระบุชื่อเหยื่อ และไม่ได้บอกว่าได้ตัวอย่างมาอย่างไร
รายละเอียดข่าว
เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 9 กันยายน พ.ศ. 2569 ว่า มัลแวร์ที่เชื่อมโยงกับการเจาะอุปกรณ์ F5 BIG-IP Access Policy Manager ซ่อนเว็บเชลล์ PHP ไว้ในหน่วยความจำแทนไฟล์บนดิสก์ ตามบทวิเคราะห์ที่บริษัท Sophos เผยแพร่เมื่อวันที่ 7 กันยายน
Sophos ระบุว่า F5 ได้เชื่อมโยงกิจกรรมที่บริษัทติดตามในชื่อ c05d5254 เข้ากับอุปกรณ์ที่ได้รับผลกระทบจาก CVE-2025-53521 โดย F5 เผยแพร่ช่องโหว่นี้ครั้งแรกเมื่อวันที่ 15 ตุลาคม พ.ศ. 2568 ในฐานะปัญหาการปฏิเสธการให้บริการ ต่อมาวันที่ 27 มีนาคม พ.ศ. 2569 F5 ระบุว่าข้อมูลใหม่ทำให้ต้องเปลี่ยนการจัดประเภทช่องโหว่เป็นการรันโค้ดระยะไกล และระบุว่ามันถูกใช้โจมตีจริงแล้ว ผู้โจมตีไม่จำเป็นต้องล็อกอินเพื่อใช้ช่องโหว่นี้ และ F5 ให้คะแนนไว้ที่ 9.8 บน CVSS 3.1 และ 9.3 บน CVSS 4.0
CISA เพิ่มช่องโหว่นี้เข้าแคตตาล็อกช่องโหว่ที่ถูกใช้โจมตีจริงในวันเดียวกัน โดยให้หน่วยงานพลเรือนของรัฐบาลกลางสหรัฐดำเนินการภายในวันที่ 30 มีนาคม ช่องโหว่นี้มีผลในกรณีที่มีการตั้งนโยบายการเข้าถึงของ BIG-IP APM ไว้บน virtual server ซึ่งศูนย์ความมั่นคงปลอดภัยไซเบอร์แห่งชาติของสหราชอาณาจักรระบุว่า BIG-IP APM เป็นส่วนประกอบที่พบได้ทั่วไป โดยเฉพาะในองค์กรขนาดใหญ่
ประกาศของ F5 ระบุเวอร์ชันที่ได้รับผลกระทบและเวอร์ชันที่แก้แล้วไว้ดังนี้ สาย 17.5.0 ถึง 17.5.1 แก้ใน 17.5.1.3 · สาย 17.1.0 ถึง 17.1.2 แก้ใน 17.1.3 · สาย 16.1.0 ถึง 16.1.6 แก้ใน 16.1.6.1 · และสาย 15.1.0 ถึง 15.1.10 แก้ใน 15.1.10.8 จุดที่ต้องย้ำคือแพตช์ที่แก้ปัญหานี้มีอายุเกือบหนึ่งปีแล้ว โดยศูนย์ความมั่นคงปลอดภัยไซเบอร์แห่งชาติของไอร์แลนด์ระบุในประกาศเมื่อวันที่ 31 มีนาคมว่าแพตช์ที่ปล่อยเมื่อเดือนตุลาคมยังใช้ได้อยู่และจะป้องกันการถูกโจมตีได้
เว็บเชลล์เป็นขั้นสุดท้ายของห่วงโซ่ที่ยาวกว่านั้น และขั้นก่อนหน้ามีการแตะดิสก์จริง Sophos ระบุว่ามีตัวติดตั้งแยกต่างหากซึ่งพบในตัวอย่างที่ชื่อ umount ทำหน้าที่ติดเชื้อโปรแกรมเว็บเซิร์ฟเวอร์ Apache ที่ /usr/sbin/httpd ด้วยการเติมโค้ดที่เป็นอันตรายไว้ด้านหน้าของไฟล์จริง โดยขนาดของโค้ดที่ถูกเติมเข้ามาตรงกับเพย์โหลดที่บรรจุอยู่ในตัวติดตั้ง ซึ่ง Sophos ระบุว่าบ่งชี้อย่างหนักแน่นว่าตัวติดตั้งเป็นผู้วางโค้ดนั้นไว้
ก่อนหน้านี้ ESET ซึ่งวิเคราะห์ตัวอย่างที่เกี่ยวข้องเมื่อเดือนเมษายนและตั้งชื่อมัลแวร์ว่า PoisonedRefresh ระบุว่าตัวติดตั้งถูกออกแบบให้รันในฐานะ root และปิดการทำงานของ SELinux นอกจากนี้ยังติดเชื้อ umount, httpd และ rc.local ที่อยู่ภายในอิมเมจติดตั้งของ BIG-IP ด้วย ซึ่ง ESET ระบุว่าน่าจะทำไปเพื่อแพร่มัลแวร์ไปยังระบบอื่นผ่านสื่อการติดตั้ง
วิธีการโจมตี
เนื่องจากมัลแวร์ฝังตัวอยู่ภายในตัวโปรแกรม Apache เอง มันจึงทำงานก่อนที่โค้ดของ Apache จะเริ่มต้น Sophos ระบุว่ามัลแวร์ดักฟังก์ชัน apr_dso_load ของ Apache Portable Runtime แล้วไม่ทำอะไรเลยจนกว่า Apache จะโหลดโมดูล PHP ที่ชื่อ libphp ซึ่งเป็นการรอจังหวะที่แม่นยำมาก เพราะการแทรกแซงจะเกิดขึ้นเมื่อเป้าหมายพร้อมเท่านั้น
เมื่อ PHP ถูกโหลดแล้ว มัลแวร์จะอ่าน /proc/self/maps เพื่อหาตำแหน่งของโมดูลในหน่วยความจำ ทำให้หน้าหน่วยความจำเหล่านั้นเขียนได้ชั่วครู่ เขียนทับการเรียกฟังก์ชันที่โมดูลใช้สำหรับเปิดไฟล์ หาขนาดไฟล์ และแมปไฟล์เข้าหน่วยความจำ แล้วคืนสิทธิ์เดิมกลับไป นับจากจุดนั้นมัลแวร์ควบคุมสิ่งที่ PHP มองเห็นได้ทั้งหมดเมื่อ PHP เปิดสคริปต์ทั้งสามตัว และเมื่อไฟล์ถูกแมปเข้าหน่วยความจำ มัลแวร์จะวางเว็บเชลล์ไว้ด้านหน้าเนื้อหาต้นฉบับ นี่คือเหตุผลที่ไฟล์บนดิสก์ไม่จำเป็นต้องเปลี่ยนแปลงแม้แต่ไบต์เดียว
ตัวเว็บเชลล์ทำงานเรียบง่ายแต่อำพรางได้ดี มันอ่านเนื้อหาดิบของคำร้องขอ ตรวจหาเครื่องหมายสั้น ๆ ถอดรหัสส่วนที่เหลือ แล้วรันโค้ดนั้น จากนั้นตอบกลับด้วยสถานะ HTTP 201 พร้อมชนิดเนื้อหาแบบ CSS ทำให้การสื่อสารที่เกิดขึ้นดูเหมือนคำร้องขอไฟล์สไตล์ชีตธรรมดา ซึ่งเป็นทราฟฟิกที่ไม่มีใครสงสัยบนอุปกรณ์ที่ให้บริการหน้าเว็บพอร์ทัลอยู่แล้ว
นอกจากช่องทางผ่านเว็บ มัลแวร์ยังเปิดซ็อกเก็ตภายในเครื่องไว้ที่ /run/bigtlog.pipe และหลังตรวจโทเค็นที่กำหนดไว้ตายตัวแล้ว จะเชื่อมซ็อกเก็ตนั้นเข้ากับ /bin/bash ทำให้ได้เชลล์แบบโต้ตอบโดยไม่ต้องเปิดพอร์ตเครือข่ายใด ๆ เลย จุดที่ควรบันทึกไว้คือ Sophos ระบุว่าไม่พบโค้ดในตัวอย่างที่ใช้เชื่อมต่อไปยังซ็อกเก็ตนั้น และไม่พบการใช้โทเค็นดังกล่าวที่อื่น ทางเข้าทั้งสองจึงดูเหมือนเป็นฟีเจอร์ที่แยกจากกัน และบริษัทไม่มีหลักฐานทั้งฝั่งสนับสนุนหรือคัดค้านว่าผู้โจมตีเข้าถึงซ็อกเก็ตนี้ผ่านเว็บเชลล์หรือไม่
ผลกระทบ
ผู้ที่ได้รับผลกระทบคือองค์กรที่ใช้ F5 BIG-IP APM เป็นประตูเข้าระบบภายใน ซึ่งตามที่ NCSC ของสหราชอาณาจักรระบุ เป็นส่วนประกอบที่พบได้ทั่วไปโดยเฉพาะในองค์กรขนาดใหญ่ อุปกรณ์ประเภทนี้อยู่ในตำแหน่งที่เลวร้ายที่สุดเมื่อถูกยึด เพราะมันคือจุดที่ผู้ใช้ทุกคนต้องผ่าน และเป็นจุดที่ข้อมูลรับรองและเซสชันไหลผ่าน
ผลกระทบเชิงวิธีการที่หนักที่สุดคือสมมติฐานพื้นฐานของการตรวจหาเว็บเชลล์ถูกทำลายลง องค์กรจำนวนมากวางกระบวนการตรวจสอบความสมบูรณ์ไว้บนการเทียบไฟล์บนดิสก์กับสำเนาที่รู้ว่าดี ซึ่งในกรณีนี้จะให้ผลลบลวงทุกครั้ง สัญญาณที่ใช้ได้จริงจึงย้ายไปอยู่ที่ความไม่ตรงกันระหว่างโค้ดในหน่วยความจำกับโค้ดบนดิสก์ และที่พฤติกรรมของกระบวนการ Apache เอง
ประเด็นที่ยากที่สุดสำหรับผู้ดูแลคือการติดตั้งแพตช์ไม่ได้ตอบคำถามว่าอุปกรณ์ถูกเจาะไปก่อนหน้านั้นหรือไม่ NCSC ของไอร์แลนด์ระบุว่าไม่มีข้อมูลไทม์ไลน์ของการถูกโจมตี และคาดว่าการโจมตีบางส่วนเกิดขึ้นหรืออาจกำลังเกิดขึ้นก่อนที่ช่องโหว่และตัวแก้ไขจะถูกเผยแพร่ครั้งแรกเมื่อเดือนตุลาคม พ.ศ. 2568 ด้วยซ้ำ ขณะที่ NCSC ของสหราชอาณาจักรแนะนำให้สืบสวนหาการถูกเจาะ “ไม่ว่าระบบจะถูกอัปเดตเมื่อใดก็ตาม”
สิ่งที่ยังไม่มีคำตอบมีสามเรื่อง เรื่องแรกคือ F5 ไม่ได้ระบุว่าการโจมตีเริ่มขึ้นเมื่อใด เรื่องที่สองคือไม่มีประกาศหรือบทวิเคราะห์ฉบับใดระบุว่าการอัปเกรดอุปกรณ์ไปยังรุ่นที่แก้แล้วจะลบมัลแวร์ที่ติดตั้งอยู่ก่อนออกไปหรือไม่ ซึ่งเป็นคำถามที่หนักขึ้นเมื่อทั้ง Sophos และ ESET ต่างอธิบายถึงส่วนประกอบที่ออกแบบมาให้รอดจากอิมเมจการอัปเกรด และเรื่องที่สามคือยังไม่มีใครระบุตัวผู้โจมตีได้ โดย Sophos ระบุว่ามีหลักฐานไม่พอที่จะชี้ชื่อกลุ่ม และ ESET ระบุเมื่อเดือนเมษายนว่ายังไม่ได้ข้อสรุปเช่นกัน
คำแนะนำ
ขั้นแรกคือติดตั้งเวอร์ชันที่แก้แล้วตามสายที่ใช้อยู่ ได้แก่ 17.5.1.3, 17.1.3, 16.1.6.1 หรือ 15.1.10.8 หากยังไม่ได้ทำ แต่ต้องเข้าใจว่าการแพตช์เป็นการหยุดทางเข้า ไม่ใช่การล้างสิ่งที่อาจเข้ามาแล้ว ขั้นที่สองซึ่งสำคัญไม่แพ้กันคือดำเนินการสืบสวนหาการถูกเจาะโดยไม่คำนึงว่าอัปเดตไปเมื่อใด
เครื่องมือแรกที่ควรใช้คือการตรวจสอบความสมบูรณ์ที่ติดมากับ F5 คือ sys-eicheck เพราะตัวบ่งชี้ของ F5 เองระบุว่าการเปลี่ยนแปลงที่เกิดกับ /usr/bin/umount และ /usr/sbin/httpd ทำให้เครื่องมือนี้ล้มเหลว ดังนั้นการที่มันล้มเหลวจึงเป็นสัญญาณในตัวเอง ถัดมาคือเก็บรายงาน qkview ส่งให้ F5 และเปิดเคส ซึ่ง NCSC ของไอร์แลนด์ระบุว่า F5 ตรวจรายงานนั้นหาร่องรอยการถูกเจาะได้ และการเปิดเคสประกอบจะทำให้ได้รับการตอบสนองที่เร็วและครบถ้วนกว่า
Sophos แนะนำเพิ่มเติมให้เทียบเนื้อหาของโมดูลในหน่วยความจำกับสำเนาบนดิสก์ และให้เพิ่มขั้นตอนนี้เข้าไปในคู่มือรับมือเหตุการณ์สำหรับเว็บเซิร์ฟเวอร์ที่สำคัญทุกตัว ไม่ใช่เฉพาะอุปกรณ์ F5 ส่วนในกรณีที่ไม่สามารถสืบสวนอย่างเต็มรูปแบบได้ NCSC ของสหราชอาณาจักรแนะนำให้แยกอุปกรณ์ออกจากเครือข่ายและสร้างใหม่ทั้งหมด พร้อมเตือนว่าวิธีนี้อาจทำให้บริการหยุดชะงัก
ข้อควรระวังสุดท้ายคืออย่าใช้การเปลี่ยนแปลงของสคริปต์ .php3 ทั้งสามตัวเป็นเกณฑ์ตัดสิน เพราะ F5 ระบุเองว่าการมีอยู่ของมันเพียงอย่างเดียวไม่ได้แสดงว่ามีปัญหา และบทวิเคราะห์ของ Sophos อธิบายว่าทำไม นั่นคือไฟล์ไม่จำเป็นต้องเปลี่ยนเลย นอกจากนี้ Sophos ยังย้ำว่าสัญญาณเชิงพฤติกรรมของบริษัทเป็นเบาะแสให้ไปสืบต่อ ไม่ใช่หลักฐานในตัวเอง และควรอ่านประกอบกับหลักฐานฝั่งไฟล์ กระบวนการ และหน่วยความจำ อนึ่ง รายการของ F5 ยังมีรายการที่บทวิเคราะห์ของ Sophos ไม่ได้ครอบคลุม เช่น /run/bigstart.ltm และการเปลี่ยนแปลงที่กระทบ sys-eicheck ซึ่งแปลว่าไม่มีเอกสารฉบับใดอธิบายการบุกรุกได้ทั้งกระบวนการ
Indicators of Compromise (IoCs)
รายการนี้รวมสัญญาณเชิงพฤติกรรมของ Sophos เข้ากับตัวบ่งชี้ที่ F5 เผยแพร่เมื่อเดือนมีนาคม · สัญญาณเชิงพฤติกรรมเป็นเบาะแสให้สืบต่อ ไม่ใช่หลักฐานยืนยันในตัวเอง
| ประเภท | ตัวบ่งชี้ | คำอธิบาย |
|---|---|---|
| SHA-256 | 26bd5b0722d1dbab5db749a063c49bc8638653ac2addfead7a9cb3d6d57bccc9 | ตัวอย่างมัลแวร์ |
| File | /run/bigtlog.pipe | ซ็อกเก็ตภายในที่เชื่อมเข้ากับ /bin/bash |
| File | /run/bigstart.ltm | ไฟล์ที่ F5 ระบุไว้ในตัวบ่งชี้ |
| Binary | /usr/bin/umount และ /usr/sbin/httpd | แฮช ขนาด หรือเวลาไม่ตรงกับสำเนาที่รู้ว่าดี · F5 เตือนว่าขนาดและเวลาต่างกันได้ระหว่างรุ่นและ engineering hotfix |
| Tool | sys-eicheck ล้มเหลว | เพราะไฟล์สองตัวข้างต้นถูกเปลี่ยน — การล้มเหลวคือสัญญาณในตัวเอง |
| Log | /var/log/restjavad-audit | รายการที่แสดงผู้ใช้ในเครื่องเรียก iControl REST API จาก localhost |
| Log | /var/log/auditd | รายการที่แสดงการปิด SELinux ผ่านเส้นทางเดียวกัน |
| Log | /var/log/audit | รายการที่แสดงคำสั่ง bash ที่รันผ่าน iControl REST — F5 ระบุว่าจะเห็นข้อมูล base64 ถูกเขียนลงไฟล์และการรัน /run/bigstart.ltm |
| Traffic | ตอบกลับ HTTP 201 พร้อมชนิดเนื้อหาแบบ CSS | การสื่อสารกับเว็บเชลล์ที่อำพรางเป็นคำร้องขอสไตล์ชีต |
| Behavior | Apache worker อ่าน /proc/self/maps · เปลี่ยนสิทธิ์หน่วยความจำรอบ libphp · ผูกซ็อกเก็ตใต้ /run · เรียก /bin/bash | พฤติกรรมของโฮสต์ที่บ่งชี้การแทรกเว็บเชลล์ในหน่วยความจำ |
| File (อ่อนในตัวเอง) | apm_css.php3, full_wt.php3, webtop_popup_css.php3 เปลี่ยนแปลง | F5 ระบุว่าลำพังไม่ได้แสดงว่ามีปัญหา และไฟล์อาจไม่เปลี่ยนเลยก็ได้ |
