Các nhà nghiên cứu an ninh mạng đã tiết lộ chi tiết về một lỗ hổng bảo mật nghiêm trọng khác trong n8n, một nền tảng tự động hóa quy trình làm việc phổ biến, cho phép kẻ tấn công từ xa không cần xác thực kiểm soát hoàn toàn các phiên bản dễ bị ảnh hưởng.
Lỗ hổng, được theo dõi là CVE-2026-21858 (điểm CVSS: 10.0), đã được Cyera Research Labs đặt tên mã là Ni8mare. Nhà nghiên cứu bảo mật Dor Attias được ghi nhận là người đã phát hiện và báo cáo lỗ hổng này vào ngày 9 tháng 11 năm 2025.
"Một lỗ hổng trong n8n cho phép kẻ tấn công truy cập các tệp trên máy chủ cơ bản thông qua việc thực thi một số quy trình làm việc dựa trên biểu mẫu," n8n cho biết trong một cảnh báo được công bố hôm nay. "Một quy trình làm việc dễ bị tấn công có thể cấp quyền truy cập cho kẻ tấn công từ xa không cần xác thực. Điều này có thể dẫn đến việc lộ thông tin nhạy cảm được lưu trữ trên hệ thống và có thể tạo điều kiện cho các cuộc tấn công tiếp theo tùy thuộc vào cấu hình triển khai và cách sử dụng quy trình làm việc."
Với diễn biến mới nhất này, n8n đã tiết lộ bốn lỗ hổng nghiêm trọng trong hai tuần qua:
- CVE-2025-68613 (điểm CVSS: 9.9) - Lỗi kiểm soát không đúng cách tài nguyên mã được quản lý động có thể cho phép kẻ tấn công đã xác thực đạt được khả năng thực thi mã từ xa (RCE) trong một số điều kiện nhất định (Đã khắc phục trong các phiên bản 1.120.4, 1.121.1 và 1.122.0)
- CVE-2025-68668 hoặc N8scape (điểm CVSS: 9.9) - Lỗ hổng bỏ qua sandbox có thể cho phép người dùng đã xác thực với quyền tạo hoặc sửa đổi quy trình làm việc thực thi các lệnh tùy ý trên hệ thống máy chủ đang chạy n8n (Đã khắc phục trong phiên bản 2.0.0)
- CVE-2026-21877 (điểm CVSS: 10.0) - Lỗ hổng tải lên tệp không hạn chế với loại nguy hiểm có thể cho phép kẻ tấn công đã xác thực thực thi mã không đáng tin cậy thông qua dịch vụ n8n, dẫn đến việc thỏa hiệp hoàn toàn phiên bản (Đã khắc phục trong phiên bản 1.121.3)
Tuy nhiên, không giống như các lỗ hổng trên, CVE-2026-21858 không yêu cầu bất kỳ thông tin xác thực nào và tận dụng lỗ hổng nhầm lẫn "Content-Type" để trích xuất các bí mật nhạy cảm, giả mạo quyền truy cập của quản trị viên và thậm chí thực thi các lệnh tùy ý trên máy chủ.
Lỗ hổng này ảnh hưởng đến tất cả các phiên bản n8n trước và bao gồm 1.65.0. Nó đã được khắc phục trong phiên bản 1.121.0, được phát hành vào ngày 18 tháng 11 năm 2025. Điều đáng chú ý là các phiên bản mới nhất của thư viện là 1.123.10, 2.1.5, 2.2.4 và 2.3.0.
Chi tiết kỹ thuật về lỗ hổng Ni8mare
Theo chi tiết kỹ thuật được Cyera chia sẻ với The Hacker News, cốt lõi của vấn đề nằm ở cơ chế xử lý tệp và n8n webhook. Webhooks, rất quan trọng để nhận dữ liệu từ các ứng dụng và dịch vụ khi các sự kiện nhất định xảy ra, được kích hoạt sau khi yêu cầu đến được phân tích cú pháp bằng một hàm có tên "parseRequestBody()".
Cụ thể, hàm này được thiết kế để đọc tiêu đề "Content-Type" trong yêu cầu và gọi một hàm khác để phân tích cú pháp nội dung yêu cầu:
- Sử dụng parseFormData(), còn gọi là "file upload parser", nếu tiêu đề "Content-Type" là "multipart/form-data", biểu thị dữ liệu biểu mẫu.
- Sử dụng parseBody(), còn gọi là "regular body parser", cho tất cả các loại Content-Type khác.
Trình phân tích cú pháp tải lên tệp (file upload parser), đến lượt nó, sử dụng hàm parse() liên quan đến formidable, một mô-đun Node.js để phân tích dữ liệu biểu mẫu, và lưu trữ kết quả đã giải mã vào một biến toàn cục được gọi là "req.body.files". Dữ liệu được điền này được xử lý bởi webhook, chỉ chạy khi tiêu đề "Content-Type" được đặt thành "multipart/form-data."
Ngược lại, trình phân tích cú pháp nội dung thông thường (regular body parser) xử lý nội dung yêu cầu HTTP đến và lưu trữ dữ liệu đã trích xuất vào một biến toàn cục khác được gọi là "req.body."
Lỗ hổng CVE-2026-21858 xảy ra khi một hàm xử lý tệp được chạy mà không kiểm tra trước rằng content-type là "multipart/form-data," có khả năng cho phép kẻ tấn công ghi đè lên req.body.files. Cyera cho biết họ đã tìm thấy một luồng dễ bị tấn công như vậy trong hàm xử lý các lần gửi biểu mẫu ("formWebhook()"), hàm này gọi một hàm xử lý tệp ("copyBinaryFile()") để tác động lên "req.body.files."
"Đây là vấn đề: vì hàm này được gọi mà không xác minh content type là 'multipart/form-data,' chúng tôi kiểm soát toàn bộ đối tượng req.body.files," Attias nói. "Điều đó có nghĩa là chúng tôi kiểm soát tham số filepath -- vì vậy thay vì sao chép một tệp đã tải lên, chúng tôi có thể sao chép bất kỳ tệp cục bộ nào từ hệ thống."
"Kết quả? Bất kỳ node nào sau node Form đều nhận được nội dung của tệp cục bộ thay vì nội dung mà người dùng đã tải lên."
Kịch bản tấn công và hậu quả
Về cách cuộc tấn công có thể diễn ra, hãy xem xét một trang web có giao diện trò chuyện để cung cấp thông tin về các sản phẩm khác nhau dựa trên các tệp đặc tả sản phẩm được tải lên cơ sở kiến thức của tổ chức bằng cách sử dụng quy trình làm việc Form. Với thiết lập này, một kẻ xấu có thể tận dụng lỗ hổng bảo mật để đọc các tệp tùy ý từ phiên bản n8n và leo thang nó thành RCE bằng cách thực hiện các bước sau:
- Sử dụng primitive đọc tùy ý để truy cập cơ sở dữ liệu nằm tại "/home/node/.n8n/database.sqlite" và tải nó vào cơ sở kiến thức.
- Trích xuất ID người dùng, email và mật khẩu được mã hóa của quản trị viên bằng giao diện trò chuyện.
- Sử dụng primitive đọc tùy ý một lần nữa để tải tệp cấu hình nằm tại "/home/node/.n8n/config" và trích xuất khóa bí mật mã hóa.
- Sử dụng thông tin người dùng và khóa đã thu thập được để giả mạo một cookie phiên giả và lấy quyền truy cập quản trị, dẫn đến việc bỏ qua xác thực.
- Đạt được RCE bằng cách tạo một quy trình làm việc mới với node "Execute Command".
"Phạm vi ảnh hưởng của một phiên bản n8n bị xâm nhập là rất lớn," Cyera nói. "Một phiên bản n8n bị xâm nhập không chỉ có nghĩa là mất một hệ thống -- nó có nghĩa là giao chìa khóa cho mọi thứ cho kẻ tấn công. Thông tin xác thực API, OAuth tokens, kết nối cơ sở dữ liệu, lưu trữ đám mây -- tất cả đều tập trung ở một nơi. n8n trở thành một điểm yếu duy nhất và là mỏ vàng cho các tác nhân đe dọa."
Trước mức độ nghiêm trọng của lỗ hổng, người dùng nên nâng cấp lên phiên bản đã vá lỗi hoặc mới hơn càng sớm càng tốt để bảo vệ tối ưu, tránh để n8n tiếp xúc với internet và thực thi xác thực cho tất cả các Form. Là các biện pháp khắc phục tạm thời, nên hạn chế hoặc tắt các endpoint webhook và form có thể truy cập công khai.