สรุปสั้น

Node-RED คือ เครื่องมือเขียนโปรแกรมแบบลากวางที่ใช้ต่อ “flow” เชื่อมเซนเซอร์ เครื่องจักร และบริการต่าง ๆ เข้าด้วยกันผ่านเบราว์เซอร์ จึงถูกฝังมาในอุปกรณ์อุตสาหกรรม (ICS/OT) หลายยี่ห้อ หนึ่งในนั้น คือ เกตเวย์ SIMATIC IoT2050 Advanced ของบริษัท Siemens ซึ่งเมื่อวันที่ 11 สิงหาคม 2569 Siemens ได้เปิดเผย CVE-2026-58115 ช่องโหว่คะแนน CVSS 10.0 ที่ส่วนติดต่อ HTTP ของ Node-RED บนอุปกรณ์นี้ไม่ต้องยืนยันตัวตน ผู้โจมตีจากระยะไกลจึงสร้าง flow อันตรายและรันโค้ดบนเครื่องด้วยสิทธิ์สูงสุดได้ ล่าสุดบริษัท VulnCheck รายงานว่าตั้งแต่วันที่ 30 ตุลาคม 2569 ผู้โจมตีเริ่มใช้ช่องโหว่นี้จริงกับเครือข่าย honeypot ของบริษัท ทั้งดาวน์โหลดบ็อต Linux มารัน และฝังเว็บเชลล์ไว้ใน flow เพื่อสั่งงานต่อภายหลัง

ประเด็นที่ทำให้ข่าวนี้กว้างกว่าอุปกรณ์ Siemens คือ VulnCheck สรุปว่าผู้โจมตีสแกนหา Node-RED ทุกตัวที่ไม่ได้เปิด adminAuth (ระบบล็อกอินของหน้าแก้ไข flow) แล้วยิงด้วยคำขอ HTTP เพียงครั้งเดียวแบบอัตโนมัติ เว็บเชลล์ที่ฝังใน flow ยังอยู่รอดแม้เครื่องรีบูตและบ็อตในหน่วยความจำหายไป ผู้ใช้ IoT2050 ควรอัปเดตเป็นเวอร์ชัน 4.3.4.1 ขึ้นไป ส่วนผู้ที่ใช้ Node-RED ที่ใดก็ตามควรปิดไม่ให้เข้าถึงจากอินเทอร์เน็ต เปิดการยืนยันตัวตน และตรวจ flow ที่ติดตั้งอยู่ทันที

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

เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 3 พฤศจิกายน 2569 ว่า VulnCheck พบผู้โจมตีพยายามใช้ CVE-2026-58115 กับ honeypot ตั้งแต่วันที่ 30 ตุลาคม นาย Patrick Garrity นักวิจัยของ VulnCheck ระบุว่าคำขอของผู้โจมตีเป็นช่องโหว่สำเร็จรูปครบชุด คือ วาง flow ของ Node-RED สั่งให้ทำงานเอง และดึงไบนารีจากเซิร์ฟเวอร์ของผู้โจมตี โดยห่อคำสั่งไว้ 3 ชั้นของการเข้ารหัส (encoding) ด้านเว็บไซต์ SecurityWeek รายงานเพิ่มว่าการโจมตีครั้งแรกมาจาก IP ในเครือข่าย AS8075 ซึ่งเป็นของ Microsoft (ชี้ว่าผู้โจมตีน่าจะเช่าเครื่องบนคลาวด์ ไม่ได้แปลว่า Microsoft เกี่ยวข้อง) และภายในวันที่ 1 พฤศจิกายน VulnCheck เห็นการโจมตีจาก IP เดียวกันเพิ่มอีก 15 ครั้ง ซึ่งส่ง payload หลายแบบรวมถึงเว็บเชลล์ที่คงอยู่ถาวร ชื่อไฟล์ทำให้ VulnCheck เชื่อว่าผู้โจมตีเตรียมบ็อตไว้หลายสถาปัตยกรรมซีพียู

Attackers abusing the Node-RED editor on Siemens SIMATIC IoT2050 devices to deploy Linux bots and webshell flows

ก่อนหน้านี้ Siemens แก้ปัญหาในเวอร์ชัน 4.3.4.1 และแนะนำทางเลือกสำหรับผู้ที่ยังอัปเดตไม่ได้ คือ ถอน Node-RED ออก หรือเสริมความแข็งแรงด้วยการเปิด HTTPS ป้องกันหน้าแก้ไขและ admin API ด้วยการยืนยันตัวตนแบบ credential หรือผ่าน OAuth/OpenID และป้องกัน HTTP Nodes กับ Node-RED Dashboard ด้วย basic authentication ข้อจำกัดของข้อมูล คือ VulnCheck ดึงไฟล์ wget.sh และ .kworker ในระลอกหลังมาวิเคราะห์ไม่ได้ จึงยังไม่รู้หน้าที่ที่แท้จริงของสองไฟล์นี้ และยังไม่มีรายงานจำนวนอุปกรณ์จริงที่ถูกเจาะนอกเหนือจาก honeypot

รายละเอียดช่องโหว่

ต้นเหตุ คือ หน้าแก้ไข flow ไม่มีประตูล็อก — Node-RED มีหน้าแก้ไขและ admin API ให้สร้างหรือแก้ flow ผ่าน HTTP ถ้าไม่ได้ตั้ง adminAuth ใครเข้าถึงพอร์ตนั้นได้ก็สร้าง flow ได้ ปัญหา คือ Node-RED มีโหนดอย่าง exec ที่รันคำสั่งระบบได้โดยตรง และบน IoT2050 Advanced ที่รัน Industrial OS คำสั่งเหล่านั้นทำงานด้วยสิทธิ์สูงสุด ช่องโหว่จึงได้ CVSS 10.0 เพราะไม่ต้องล็อกอินและไม่ต้องให้ผู้ใช้ทำอะไร เวอร์ชันที่แก้ คือ SIMATIC IoT2050 Advanced 4.3.4.1 ขึ้นไป

ระลอกแรก: ดาวน์โหลดบ็อตแล้วรันในหน่วยความจำ — flow อันตรายรันสคริปต์ shell ที่ใช้ wget ดึงบ็อตสำหรับซีพียู AMD64 จาก 85.215.73[.]250 ถ้า wget ใช้ไม่ได้ก็สลับไปใช้ curl แล้วบันทึกไฟล์เป็น /dev/shm/.b ซึ่งอยู่ในหน่วยความจำ ก่อนสั่งรัน คำสั่งไม่ได้ตรวจว่าติดตั้งสำเร็จหรือไม่ แสดงว่าเป็นการยิงแบบกวาดจำนวน

ระลอกถัดมา: แยกเป็นสองขั้นและปลอมชื่อเป็น kernel thread — ผู้โจมตีเปลี่ยนมาดึงสคริปต์ wget.sh จากเซิร์ฟเวอร์เดิมก่อน อีกคำขอหนึ่งดึงไฟล์ .sys_update จาก 45.194.90[.]57:38472 มาบันทึกเป็น /tmp/.kworker เพื่อให้ดูเหมือน kernel worker thread ที่มีอยู่ในระบบ Linux ปกติ

เว็บเชลล์ที่อยู่ใน flow เอง — คำขอบางส่วนไม่ดาวน์โหลดอะไรเลย แต่สร้าง flow ที่เปิด HTTP endpoint ใหม่ เช่น /cmd หรือ path สุ่ม ต่อเข้ากับ function node และ exec node ที่รับคำสั่งจาก query parameter ผู้โจมตีจึงกลับมาสั่งงานเมื่อไรก็ได้ วิธีนี้อันตรายเพราะ flow ถูกบันทึกในค่าตั้งของ Node-RED จึงอยู่รอดหลังรีบูต ต่างจากบ็อตที่อยู่ใน /dev/shm

ร่องรอยที่ตรวจได้ — ไฟล์ /dev/shm/.b และ /tmp/.kworker, การเชื่อมต่อออกไปยัง 85.215.73[.]250 และ 45.194.90[.]57 (defang แล้ว), exec node หรือ HTTP in node ที่ไม่มีใครสร้าง และคำขอ POST ไปยัง admin API ของ Node-RED จาก IP ภายนอก

ผลกระทบ

กลุ่มที่โดนตรง คือ ผู้ใช้ Siemens SIMATIC IoT2050 Advanced ที่ติดตั้ง Node-RED และยังไม่อัปเดต ซึ่งมักเป็นเกตเวย์ที่ดึงข้อมูลจากเครื่องจักรในโรงงานส่งขึ้นระบบ IT หรือคลาวด์ ถ้าถูกยึด เครื่องนี้จะกลายเป็นทั้งบ็อตที่ใช้โจมตีที่อื่น และจุดตั้งหลักในเครือข่าย OT ที่ผู้โจมตีใช้มองเห็นหรือส่งคำสั่งไปยังอุปกรณ์อื่นที่เชื่อมอยู่ได้

กลุ่มที่กว้างกว่า คือ ทุกระบบที่ฝังหรือรัน Node-RED โดยไม่เปิด adminAuth เพราะ VulnCheck ชี้ว่าการสแกนเล็ง Node-RED โดยรวม ไม่ได้เล็งเฉพาะ Siemens ปัญหานี้มาจากค่าตั้งที่ไม่ปลอดภัยเป็นหลัก อุปกรณ์ยี่ห้ออื่นหรือเครื่องที่นักพัฒนาตั้งไว้ทดลองจึงอาจโดนแบบเดียวกันแม้ไม่มี CVE ของตัวเอง ความเร่งด่วนสูงเพราะการโจมตีเกิดขึ้นแล้วและทำได้ด้วยคำขอเดียว

คำแนะนำ

  • ผู้ใช้ IoT2050 — ทำทันที: อัปเดต SIMATIC IoT2050 Advanced เป็นเวอร์ชัน 4.3.4.1 ขึ้นไป หรือถอน Node-RED ออกถ้าไม่ได้ใช้ ตามคำแนะนำของ Siemens
  • ผู้ใช้ Node-RED ทุกที่ — ทำทันที: ตรวจว่าเข้าถึงพอร์ตของ Node-RED จากนอกเครือข่ายได้หรือไม่ ถ้าได้ให้ปิดทันที แล้วเปิด adminAuth ป้องกันหน้าแก้ไขและ admin API ด้วยรหัสผ่านหรือ OAuth/OpenID
  • ตรวจว่าโดนแล้วหรือยัง: เปิดดู flow ที่ติดตั้งทั้งหมด หา exec node หรือ HTTP endpoint ที่ไม่ได้สร้างเอง ตามที่ VulnCheck เตือนว่าผู้โจมตีบางรายทิ้งเว็บเชลล์ไว้แทนบ็อต
  • ตรวจว่าโดนแล้วหรือยัง: ค้นหาไฟล์ /dev/shm/.b, /tmp/.kworker และการเชื่อมต่อไปยัง IP ที่ระบุในหัวข้อช่องโหว่
  • ถ้าโดนแล้ว: ลบ flow แปลกปลอม แยกเครื่องออกจากเครือข่าย OT ระหว่างตรวจสอบ และเปลี่ยน credential ที่เก็บไว้ใน flow หรือบนเครื่อง เช่น รหัส MQTT ฐานข้อมูล หรือ API ของคลาวด์
  • ระยะยาว: เปิด HTTPS และ basic authentication ให้ HTTP Nodes และ Dashboard และวางอุปกรณ์ OT ไว้หลังไฟร์วอลล์หรือ VPN แทนการเปิดตรงสู่อินเทอร์เน็ต

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