สรุปสั้น

แพลตฟอร์มออโตเมชันยอดนิยม n8n ได้ออกแพตช์แก้ช่องโหว่หลบหนีแซนด์บ็อกซ์ของนิพจน์ (expression-sandbox escape) ระดับความรุนแรงสูง ที่เปิดทางให้ผู้ใช้ซึ่งล็อกอินแล้วและมีสิทธิ์แก้ไขเวิร์กโฟลว์ สามารถรันคำสั่งระบบปฏิบัติการบนเซิร์ฟเวอร์ที่รัน n8n ได้ ช่องโหว่นี้ถูกค้นพบโดยบริษัท Security Joes ระหว่างที่กำลังตรวจสอบแพตช์เดิมของ CVE-2026-27577 ที่ n8n ออกเมื่อเดือนกุมภาพันธ์ เพื่อหาช่องทางหลบเลี่ยงเพิ่มเติม โดยช่องโหว่ใหม่ถูกติดตามในรหัส GHSA-gv7g-jm28-cr3m จัดระดับความรุนแรงสูง (High) ด้วยคะแนน CVSS 4.0 เท่ากับ 8.7 และ ณ วันที่ 27 กรกฎาคม 2569 ยังไม่มีการกำหนดหมายเลข CVE ให้

เวอร์ชันที่ได้รับผลกระทบคือเวอร์ชันก่อน 2.31.5 และช่วง 2.32.0 ถึงก่อน 2.32.1 โดย n8n แก้ไขในเวอร์ชัน 2.31.5 และ 2.32.1 การโจมตีต้องอาศัยบัญชีที่ใช้งานได้จริงและมีสิทธิ์สร้างหรือแก้ไขเวิร์กโฟลว์ แต่ไม่ต้องอาศัยการกระทำจากผู้ใช้คนอื่น เมื่อเจาะสำเร็จ ผู้โจมตีจะรันคำสั่งด้วยสิทธิ์ของโปรเซส n8n ได้ทันที และตามรายงานของ Security Joes การเข้าถึงระดับนี้อาจเปิดเผยค่ากุญแจเข้ารหัส N8N_ENCRYPTION_KEY ซึ่งนำไปถอดรหัสข้อมูลรับรอง (credentials) ที่เก็บไว้ในระบบ ตลอดจนเปิดเส้นทางไปยังฐานข้อมูล บริการภายใน และปลายทางบนคลาวด์ที่เชื่อมต่ออยู่ได้ ทั้งนี้ยังไม่พบการโจมตีจริงในวงกว้าง ณ ช่วงที่จัดทำรายงาน

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

เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 27 กรกฎาคม พ.ศ. 2569 ว่า บริษัท Security Joes ได้เปิดเผยรายงานการวิเคราะห์ช่องโหว่ผ่านสื่อ โดยระบุว่าช่องโหว่นี้เป็นผลต่อเนื่องจากชุดช่องโหว่หลบหนีแซนด์บ็อกซ์ของนิพจน์ที่ n8n ต้องแพตช์มาเรื่อย ๆ ตั้งแต่ปี 2025 และตามมาหลังจาก CVE-2026-27577 ซึ่งเป็นช่องโหว่ระดับ 9.4 ที่ถูกแก้ไปเมื่อเดือนกุมภาพันธ์ หลังนักวิจัยพบว่าอ็อบเจกต์ process หลุดรอดผ่านชั้นเขียนตัวระบุ (identifier-rewriting) ไปได้โดยไม่ถูกแปลง

นักวิจัยระบุว่าตัวสร้างเวิร์กโฟลว์ของ n8n ใช้นิพจน์รูปแบบ ={{ $json.email }} โดยมีตัวเขียนโครงสร้างไวยากรณ์แบบต้นไม้ (abstract syntax tree rewriter) คอยเปลี่ยนเส้นทางตัวระบุ JavaScript อิสระในนิพจน์เหล่านั้นให้ไปยังบริบทข้อมูลที่ n8n ควบคุม แทนที่จะเป็นรันไทม์ของ Node.js แต่ในเวอร์ชัน 2.31.4 ไฟล์ VariablePolyfill.ts กลับวาง ArrowFunctionExpression ไว้ในกิ่งที่ไม่ทำอะไรเลย (no-op) ทำให้นิพจน์ลูกศรแบบสั้นอย่าง () => process สามารถแปลงค่า process กลับไปเป็นตัวแปรโกลบอลจริงของ Node.js ได้ แทนที่จะเป็นค่าที่ถูกจำกัดในแซนด์บ็อกซ์

n8n sandbox escape lets workflow editors run OS commands as the n8n process

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

จุดบอดจุดที่สองตามที่ Security Joes อธิบายอยู่ที่การตรวจสอบพร็อพเพอร์ตีของ n8n ซึ่งจะตรวจเฉพาะชื่อพร็อพเพอร์ตีแบบคงที่ (static) ในนิพจน์สมาชิก (member expression) แต่ฟังก์ชัน Reflect.get() รับชื่อพร็อพเพอร์ตีที่ต้องการมาในรูปอาร์กิวเมนต์ของฟังก์ชัน นักวิจัยจึงใช้ความต่างนี้เรียกคืน process.getBuiltinModule เพื่อโหลดโมดูล child_process และรันคำสั่งบนเครื่องโฮสต์ได้ในที่สุด โดยเงื่อนไขทั้งสองต้องเกิดร่วมกัน — ทีมวิจัยระบุว่า “ลำพังอย่างใดอย่างหนึ่งไม่เพียงพอ และไม่มีอย่างใดถูกครอบคลุมด้วยการทดสอบ (test)” ทั้งนี้ Security Joes เคยประเมินไว้ตอนแรกว่าช่องโหว่น่าจะได้คะแนนใกล้ระดับ 9.4 เท่ากับ CVE-2026-27577 แต่คะแนนที่ผู้พัฒนาเผยแพร่จริงคือ 8.7

ทีมงานได้ทดสอบโค้ดพิสูจน์แนวคิด (proof-of-concept) กับ n8n เวอร์ชัน 2.30.4 ทั้งผ่านแพ็กเกจเวิร์กโฟลว์ที่เผยแพร่และอินสแตนซ์ที่ติดตั้งในเครื่อง แพตช์ที่แก้ไขได้เพิ่มตัวจัดการ ArrowFunctionExpression โดยเฉพาะ เพื่อบังคับให้ตัวระบุเปล่า ๆ ในตัวลูกศรแบบสั้นถูกส่งผ่านบริบทข้อมูลที่ควบคุมไว้ ทั้งนี้ไทม์ไลน์ของการค้นพบคือ นักวิจัยพบช่องโหว่ที่หลงเหลือเมื่อวันที่ 14 กรกฎาคม รายงานผ่านโครงการเปิดเผยช่องโหว่ของ n8n ในวันที่ 15 กรกฎาคม และ n8n เผยแพร่เวอร์ชันที่แก้ไขในวันที่ 22 กรกฎาคม

ผลกระทบต่อไทย

n8n เป็นแพลตฟอร์มออโตเมชันและการเชื่อมต่อระบบ (workflow automation) แบบโอเพนซอร์สที่ได้รับความนิยมสูงในหมู่นักพัฒนาและทีมไอทีทั่วโลก รวมถึงในไทย มักถูกนำมาใช้ต่อประสาน API ระบบภายใน ฐานข้อมูล และบริการคลาวด์เข้าด้วยกัน ทำให้ตัวมันมักถือครองข้อมูลรับรองที่มีสิทธิ์สูงจำนวนมาก หากองค์กรใดรันอินสแตนซ์ n8n ที่ยังไม่ได้อัปเดต และมีผู้ใช้ภายในหรือบัญชีที่ถูกเจาะซึ่งมีสิทธิ์แก้ไขเวิร์กโฟลว์ ผู้โจมตีก็สามารถใช้ช่องโหว่นี้รันคำสั่งในระดับโปรเซส n8n แล้วต่อยอดไปยังฐานข้อมูลและบริการภายในที่เครื่องโฮสต์เข้าถึงได้ ความเสี่ยงจึงไม่ได้จำกัดแค่ตัว n8n แต่ลามไปถึงระบบหลังบ้านที่เชื่อมต่ออยู่ทั้งหมด องค์กรที่เปิดหน้าจอ n8n ให้ผู้ใช้จำนวนมากเข้าถึงยิ่งต้องระวังเป็นพิเศษ

คำแนะนำ

ผู้ดูแลระบบควรอัปเดต n8n เป็นเวอร์ชัน 2.31.5 หรือ 2.32.1 โดยเร็ว แทนที่จะพึ่งพาเพียงคำแนะนำชั่วคราวของ n8n ที่ให้จำกัดการเข้าถึงอินสแตนซ์และการแก้ไขเวิร์กโฟลว์ไว้เฉพาะผู้ใช้ที่ไว้วางใจเต็มที่ เพราะคำแนะนำนั้นถูกอธิบายว่าเป็นเพียงมาตรการบรรเทาระยะสั้นที่ยังไม่สมบูรณ์ นอกจากนี้ควรตรวจสอบเวิร์กโฟลว์ที่เพิ่งถูกสร้างหรือแก้ไขล่าสุด เพื่อหาฟังก์ชันลูกศร (arrow function) ที่ผิดปกติหรือโค้ด JavaScript ที่ถูกทำให้อ่านยาก ควรไล่ล่าหาการเรียกใช้ shell, PowerShell, curl หรือ wget ที่ถูกสร้างเป็นโปรเซสลูกของโปรเซส n8n หรือ Node.js และหากพบการรันเวิร์กโฟลว์หรือกิจกรรมการรันคำสั่งบนโฮสต์ที่น่าสงสัย ควรรีเซ็ตหรือหมุนเวียนข้อมูลรับรองที่เกี่ยวข้องทันที

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