สรุปสั้น

ผู้โจมตีกำลังใช้ช่องโหว่ร้ายแรงใน Langflow แพลตฟอร์มโอเพนซอร์สสำหรับสร้างแอปพลิเคชัน AI และ agentic workflow ตามการแจ้งเตือนของบริษัท Previdian ช่องโหว่ CVE-2026-105740 คะแนน CVSS 9.9 เป็นการรันโค้ดจากระยะไกลที่ต้องล็อกอินก่อน กระทบเวอร์ชันก่อน 1.9.0 ผู้ใช้ Langflow คนใดก็ได้ที่ล็อกอินแล้ว รวมถึงบัญชีที่ไม่ใช่แอดมิน สามารถเพิ่ม MCP server แบบ stdio ที่ใส่คำสั่งระบบปฏิบัติการอะไรก็ได้ แล้วคำสั่งจะรันทันทีเมื่อมีการดึงรายการ MCP server ด้วยสิทธิ์ของโปรเซส Langflow เนื่องจากคอนฟิกนี้ถูกเก็บไว้และรันซ้ำทุกครั้งที่โหลดรายการ จึงใช้เป็น backdoor ถาวรได้ด้วย

honeypot ของบริษัท Previdian บันทึกความพยายามโจมตี 1,423 ครั้งจาก 27 IP ตั้งแต่วันที่ 19 กันยายน 2569 ก่อนที่ตัวเลขจะเพิ่มเป็น 1,706 ครั้งจาก 28 IP โดยเร่งขึ้นตั้งแต่วันที่ 11 ตุลาคม ผู้โจมตีผ่านการยืนยันตัวตนด้วยการลอง auto-login และเดาชื่อผู้ใช้กับรหัสผ่านที่ใช้กันทั่วไป แล้วพยายามดึงตัวแปรสภาพแวดล้อม รวมถึง LANGFLOW_SECRET_KEY และ LANGFLOW_SUPERUSER_PASSWORD ออกไป IP หลักที่ใช้โจมตียังเคยโจมตีช่องโหว่อื่นของ Langflow และ Flowise ด้วย ซึ่งบ่งชี้ว่ามีผู้ก่อภัยรายหนึ่งไล่เล็งระบบ Langflow ที่เปิดออกอินเทอร์เน็ตอย่างเป็นระบบ แต่ยังไม่ทราบเป้าหมายสุดท้าย

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

เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 15 ตุลาคม 2569 ว่า Langflow เผยแพร่ประกาศความปลอดภัยของช่องโหว่นี้ตั้งแต่เดือนกันยายน Langflow เป็นของบริษัท DataStax ซึ่งถูกบริษัท IBM ซื้อกิจการไปเมื่อกุมภาพันธ์ 2568 ประกาศของ Langflow ระบุว่า “ผู้ใช้ Langflow ที่ยืนยันตัวตนแล้วคนใดก็ได้รันโค้ดจากระยะไกลบนเซิร์ฟเวอร์ได้ ด้วยการเพิ่ม MCP server ที่ใช้ transport แบบ stdio” และเตือนว่า “ต่างจากโค้ดของ custom component ที่มองเห็นได้ใน flow editor คอนฟิก MCP server ถูกเก็บไว้ในการตั้งค่าโปรเจกต์ และมองไม่เห็นระหว่างการตรวจ flow ตามปกติ”

ตามข้อมูลของ Previdian IP ผู้โจมตีอยู่ในหลายประเทศ ได้แก่ เบลเยียม จีน เยอรมนี ฮ่องกง ญี่ปุ่น ไนจีเรีย ฟิลิปปินส์ รัสเซีย เซเชลส์ สิงคโปร์ เกาหลีใต้ ไต้หวัน แทนซาเนีย สหรัฐฯ และเวียดนาม วันที่ 11 ตุลาคมมีการบันทึก 333 ครั้ง และวันที่ 15 ตุลาคมมี 316 ครั้ง นาย Ryan Dewhurst ผู้ก่อตั้งและซีอีโอของ Previdian บอก The Hacker News ว่าทีมตรวจสอบว่าผู้โจมตียืนยันตัวตนได้อย่างไร “ในลำดับเหตุการณ์หนึ่ง ผู้โจมตีตรวจเวอร์ชัน Langflow ลองเรียก /api/v1/auto_login ซึ่งได้ 403 เพราะปิดไว้ใน honeypot ของเรา แล้วล็อกอินสำเร็จด้วยชื่อผู้ใช้และรหัสผ่านที่ใช้กันทั่วไป จากนั้นใช้ bearer token ที่ได้เข้าถึง endpoint คอนฟิก MCP server ที่มีช่องโหว่ทันที”

เมื่อเดือนที่แล้ว Langflow ยังแก้ช่องโหว่ OS command injection ร้ายแรงอีกตัว คือ CVE-2026-105697 คะแนน CVSS 9.9 ซึ่งรันโค้ดได้ผ่านคอนฟิก MCP stdio server เช่นกัน แก้ไขแล้วในเวอร์ชัน 1.10.3

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

ต้นเหตุ — Langflow รับคำสั่งจากผู้ใช้โดยไม่จำกัดให้เป็นโปรแกรมที่อนุญาต ประกาศระบุว่า “ช่อง command ที่ผู้ใช้ป้อนถูกส่งตรงไปยัง bash -c "exec {command}" โดยไม่มีการตรวจสอบ ไม่มี allowlist และไม่มี sandbox คำสั่งรันทันทีเมื่อดึงรายการเซิร์ฟเวอร์” นอกจากนี้ช่อง env ยังเปิดให้ inject ตัวแปรสภาพแวดล้อมใดก็ได้ เช่น LD_PRELOAD หรือการเขียนทับ PATH

ขั้นตอนการโจมตี — ตามสถานการณ์ที่ประกาศอธิบาย

  1. ล็อกอินเป็นผู้ใช้ทั่วไปที่ไม่ใช่แอดมิน
  2. ส่งคำขอ HTTP POST ไปที่ /api/v2/mcp/servers/{server_name} เพื่อเพิ่ม MCP server ที่ช่อง command มี payload เช่น reverse shell
  3. เซิร์ฟเวอร์รับและเก็บคำสั่งนั้นไว้โดยไม่ตรวจสอบ
  4. ดึงรายการ MCP server ด้วย HTTP GET /api/v2/mcp/servers?action_count=true ซึ่งทำให้คำสั่งรัน

payload ที่ honeypot จับได้ — ความพยายามดึงตัวแปรสภาพแวดล้อมและคอนฟิกสำคัญของ Langflow รวมถึง LANGFLOW_SECRET_KEY และ LANGFLOW_SUPERUSER_PASSWORD แล้วส่งไปที่ 146.70.211[.]112:18764 คำสั่ง Docker ที่พยายามเข้าถึง filesystem ของโฮสต์และอ่าน /etc/passwd และคำสั่งทดสอบการรันโค้ด เช่น id และ whoami

ผู้โจมตีรายเดียวไล่หลายช่องโหว่ — กิจกรรมส่วนใหญ่มาจาก IP 192.255.229[.]92 ซึ่งพยายามดึงตัวแปรสภาพแวดล้อม ข้อมูลของบริษัท GreyNoise และ Previdian แสดงว่า IP นี้เคยทำ brute-force ทั่วไป และโจมตีช่องโหว่อื่นใน Flowise (CVE-2026-69255) และ Langflow (CVE-2026-55255, CVE-2026-9198 และ CVE-2026-0768) ด้วย CVE-2026-55255 เป็นช่องทางที่แรนซัมแวร์ ENCFORGE เคยใช้เจาะ Langflow ตามที่รายงานในโพสต์ 2026/07/215

ผลกระทบ

การเจาะสำเร็จหมายถึงการยึดเซิร์ฟเวอร์ได้ทั้งเครื่อง inject ตัวแปรสภาพแวดล้อม ใช้เป็นฐานเคลื่อนย้ายไปยังระบบอื่น และวาง backdoor ถาวร เพราะคอนฟิก MCP server ที่เป็นอันตรายจะรันซ้ำทุกครั้งที่โหลดรายการ เซิร์ฟเวอร์ Langflow มักเก็บ API key ของผู้ให้บริการ AI ข้อมูลรับรองฐานข้อมูล และ secret ที่ใช้เชื่อมต่อระบบภายในไว้ในตัวแปรสภาพแวดล้อม ซึ่งเป็นสิ่งที่ผู้โจมตีพยายามดึงออกไปโดยตรง

แม้ช่องโหว่จะต้องล็อกอินก่อน แต่ข้อมูลจาก honeypot แสดงว่าเงื่อนไขนี้ไม่ใช่อุปสรรคจริงสำหรับระบบที่เปิด auto-login หรือใช้รหัสผ่านที่เดาง่าย และเนื่องจากคอนฟิก MCP ไม่แสดงในการตรวจ flow ตามปกติ ทีมที่ตรวจเพียงหน้า flow editor อาจไม่เห็น backdoor นี้ ข้อจำกัดของข้อมูลคือ ตัวเลขทั้งหมดมาจาก honeypot ของ Previdian ยังไม่มีรายงานเหยื่อจริงที่ยืนยันได้ และยังไม่ทราบตัวตนหรือเป้าหมายสุดท้ายของผู้โจมตี

คำแนะนำ

  • อัปเดต Langflow เป็นเวอร์ชัน 1.9.0 ขึ้นไปทันที และขึ้นเป็น 1.10.3 ขึ้นไปเพื่อปิด CVE-2026-105697 ด้วย
  • ตั้ง LANGFLOW_AUTO_LOGIN=false บังคับรหัสผ่านที่แข็งแรงและไม่ซ้ำ และให้บัญชีเฉพาะผู้ใช้ที่ไว้ใจได้ เพราะผู้ใช้ทั่วไปทุกคนรันคำสั่งบนเซิร์ฟเวอร์ได้หากยังไม่แพตช์
  • อย่าเปิด Langflow สู่อินเทอร์เน็ตหรือเครือข่ายที่ไม่น่าเชื่อถือโดยตรง ให้อยู่หลัง VPN หรือ reverse proxy ที่มีการยืนยันตัวตนเพิ่ม
  • ตรวจล็อกการยืนยันตัวตนและคำขอไปที่ /api/v2/mcp/servers/ หาการเพิ่ม MCP server ที่ผิดปกติ และตรวจคอนฟิก MCP server ในการตั้งค่าทุกโปรเจกต์ เพราะไม่แสดงใน flow editor
  • ถ้าพบร่องรอย ให้ถือว่า secret ทั้งหมดในตัวแปรสภาพแวดล้อมรั่วแล้ว เปลี่ยน LANGFLOW_SECRET_KEY รหัสผ่าน superuser API key ของผู้ให้บริการ AI และข้อมูลรับรองอื่นที่เก็บบนเซิร์ฟเวอร์
  • รัน Langflow ด้วยสิทธิ์ต่ำ ไม่ mount Docker socket หรือ filesystem ของโฮสต์เข้าไปในคอนเทนเนอร์ และบล็อกการเชื่อมต่อขาออกที่ไม่จำเป็น
  • ค้นหา IP ด้านล่างในล็อกของ firewall, reverse proxy และ WAF

Indicators of Compromise (IoCs)

หมายเหตุ: IP ถูก defang แล้ว ([.]) · มาจากข้อมูล honeypot ของ Previdian และ GreyNoise

Indicatorประเภทคำอธิบาย
192.255.229[.]92IPแหล่งกิจกรรมโจมตีหลัก พยายามดึงตัวแปรสภาพแวดล้อม และเคยโจมตีช่องโหว่ Langflow/Flowise อื่น
146.70.211[.]112:18764IP:Portปลายทางรับตัวแปรสภาพแวดล้อมและคอนฟิกที่ขโมยมา
POST /api/v2/mcp/servers/{server_name}URL pathendpoint ที่ใช้เพิ่ม MCP server ที่มี payload
GET /api/v2/mcp/servers?action_count=trueURL pathคำขอที่กระตุ้นให้คำสั่งที่เก็บไว้รัน
/api/v1/auto_loginURL pathผู้โจมตีลองเรียกก่อนเดารหัสผ่าน

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