Sáu lỗ hổng Proto6 trong protobuf.js đe dọa các ứng dụng Node.js với nguy cơ RCE và DoS

Các nhà nghiên cứu bảo mật đã cảnh báo về nửa tá lỗ hổng trong protobuf.js, một bản thực thi JavaScript và TypeScript của Protocol Buffers (Protobuf). Nếu bị khai thác thành công, các lỗ hổng này có thể dẫn đến tấn công thực thi mã từ xa (RCE) và từ chối dịch vụ (DoS). Trong các môi trường bị ảnh hưởng, một protobuf schema hoặc payload độc hại có thể đủ để kích hoạt sự cố hệ thống hoặc thực thi mã trái phép.
Lỗ hổng bảo mật trong protobuf.js

Các nhà nghiên cứu an ninh mạng đã gắn cờ cảnh báo về nửa tá lỗ hổng bảo mật trong protobuf.js, một bản thực thi JavaScript và TypeScript của Protocol Buffers (Protobuf). Nếu bị khai thác thành công, những lỗ hổng này có thể dẫn đến các cuộc tấn công thực thi mã từ xa (RCE) và từ chối dịch vụ (DoS).

"Trong các môi trường bị ảnh hưởng, chỉ một protobuf schema, descriptor hoặc payload được thiết kế độc hại cũng có thể đủ để gây ra sự cố treo máy, hỏng hóc trong thời gian chạy hoặc thậm chí là thực thi mã," nhà nghiên cứu bảo mật Assaf Morag của Cyera cho biết. Các lỗ hổng này đã được đặt tên mã là Proto6.

Protobuf là một cơ chế mã nguồn mở, độc lập với ngôn ngữ để tuần tự hóa dữ liệu có cấu trúc. Ban đầu nó được phát triển và sử dụng nội bộ bởi Google trước khi được công bố rộng rãi vào năm 2008.

Các lỗ hổng được xác định gây ảnh hưởng đến các ứng dụng Node.js sử dụng protobuf.js, các thư viện máy khách của Google Cloud, các nền tảng nhắn tin như Baileys và các hệ thống CI/CD. Theo Cyera, bất kỳ dịch vụ Node.js nào thực hiện deserialize dữ liệu Protobuf hoặc tạo mã từ các schema bằng protobuf.js đều có khả năng bị ảnh hưởng.

Danh sách các lỗ hổng Proto6

  • CVE-2026-44289 (Điểm CVSS: 7.5): DoS thông qua đệ quy protobuf không giới hạn.
  • CVE-2026-44290 (Điểm CVSS: 7.5): DoS trên toàn bộ tiến trình khi tải các schema với các đường dẫn tùy chọn không an toàn.
  • CVE-2026-44291 (Điểm CVSS: 8.1): Code generation gadget sau khi bị prototype pollution.
  • CVE-2026-44292 (Điểm CVSS: 5.3): Prototype injection trong các message constructors được tạo ra.
  • CVE-2026-44294 (Điểm CVSS: 5.3): DoS từ các tên trường được thiết kế đặc biệt trong mã được tạo ra.
  • CVE-2026-44295 (Điểm CVSS: 8.7): Code injection trong đầu ra tĩnh của pbjs từ các tên schema được thiết kế đặc biệt.

Cyera cho biết tất cả các lỗ hổng đều bắt nguồn từ việc thư viện này xử lý schema và metadata như những dữ liệu tin cậy theo mặc định. Sự thiếu sót trong khâu xác thực này có thể ảnh hưởng đến hành vi của ứng dụng và dẫn đến thực thi mã.

"Mặc dù việc khai thác các lỗ hổng này thường đòi hỏi các điều kiện cụ thể, nhưng những điều kiện đó đang ngày càng trở nên phổ biến trong các hệ sinh thái dữ liệu và AI — nơi thường xuyên trao đổi dữ liệu, schema và các tệp cấu hình giữa các dịch vụ, kho lưu trữ, nền tảng đám mây và tích hợp bên thứ ba," Morag lưu ý.

Trong một kịch bản tấn công tiềm năng, kẻ xấu có thể đưa một protobuf schema độc hại vào để làm hỏng luồng công việc CI/CD, làm rò rỉ các bí mật xây dựng phần mềm trong quá trình này (CVE-2026-44295), hoặc làm sập các dịch vụ Node.js như các bot WhatsApp được xây dựng bằng Baileys (một thư viện TypeScript tự động hóa WhatsApp Web API) thông qua một tin nhắn được thiết kế đặc biệt (CVE-2026-44292).

Lỗ hổng nghiêm trọng nhất: CVE-2026-44291

Nghiêm trọng nhất trong số đó là CVE-2026-44291, dẫn đến thực thi mã khi một ứng dụng Node.js chấp nhận đầu vào do kẻ tấn công kiểm soát.

"Đầu vào đó tiếp cận một prototype pollution gadget," nhà nghiên cứu bảo mật Vladimir Tokarev giải thích. "Sau đó, cùng một tiến trình đó sử dụng protobuf.js để mã hóa hoặc giải mã một tin nhắn. Do protobuf.js phân giải các tên kiểu (type names) thông qua tra cứu thuộc tính thông thường, một Object.prototype bị nhiễm độc có thể khiến một chuỗi do kẻ tấn công kiểm soát trông giống như một protobuf primitive hợp lệ."

"Sau đó, Protobuf.js chèn chuỗi đó vào một hàm encoder hoặc decoder được tạo ra và biên dịch nó bằng Function(). Kẻ tấn công sẽ có được khả năng thực thi JavaScript tùy ý bên trong tiến trình Node.js."

Các phiên bản bị ảnh hưởng và bản vá

Các phiên bản sau đây của công cụ được xác định là có lỗ hổng:

  • protobuf.js: các phiên bản <= 7.5.5 và >= 8.0.0 <= 8.0.1
  • protobufjs-cli: các phiên bản <= 1.2.0 và >= 2.0.0 <= 2.0.1

Các bản vá cho những lỗi này đã có sẵn trong protobufjs phiên bản 7.5.6 và 8.0.2, cùng với protobufjs-cli phiên bản 1.2.1 và 2.0.2. Người dùng được khuyến cáo áp dụng các bản sửa lỗi mới nhất để bảo vệ hệ thống trước các mối đe dọa tiềm tàng.

"Vì protobuf.js được sử dụng rộng rãi bên trong các cơ sở dữ liệu, vector stores, hệ thống suy luận (inference pipelines), hệ thống điều phối (orchestration systems), công cụ CI/CD và các SDK đám mây, việc khai thác thành công có thể tác động đến các khối lượng công việc quan trọng của doanh nghiệp và AI trên quy mô lớn," Cyera cho biết.

"Phần mềm hiện đại ngày càng coi các schema, metadata và tệp cấu hình là các đầu vào tin cậy để thúc đẩy tự động hóa, điều phối và tạo mã. Khi những giả định về sự tin cậy đó bị phá vỡ, dữ liệu có thể trở thành hành vi thực thi. Sự thay đổi này tạo ra các bề mặt tấn công mới mà các đội ngũ bảo mật phải học cách nhận diện và quản lý."