Các nhà nghiên cứu an ninh mạng đã tiết lộ các chi tiết kỹ thuật của một lỗ hổng bảo mật nghiêm trọng vừa được vá trong Citrix NetScaler ADC và Gateway, hiện đang bị khai thác tích cực trong thực tế.
Lỗ hổng này, được theo dõi dưới mã CVE-2026-88772 (điểm CVSS: 9.5), được mô tả là một lỗi tràn bộ nhớ (memory overflow) trong quá trình xử lý giao thức Datagram Transport Layer Security (DTLS), có nguồn gốc từ NetScaler Packet Processing Engine (NSPPE).
"Citrix NetScaler ADC và NetScaler Gateway chứa một lỗ hổng hạn chế không đúng các hoạt động trong phạm vi bộ đệm bộ nhớ, có thể cho phép thực thi mã từ xa (remote code execution) hoặc từ chối dịch vụ (denial-of-service)," Cơ quan An ninh Cơ sở hạ tầng và An ninh mạng Hoa Kỳ (CISA) cho biết.
Theo watchTowr, vấn đề nằm ở chỗ NetScaler tin tưởng một cách tuyệt đối vào kích thước đoạn (fragment size) được khai báo trong trường fragment_length của tiêu đề handshake DTLS (ví dụ: 1 byte), trong khi tiêu đề đồng thời tuyên bố rằng toàn bộ thông báo (được ký hiệu bởi trường length) dài 120 byte.
Sự không nhất quán trong việc phân tích cú pháp này có thể bị kẻ tấn công lợi dụng để tạo ra một bản ghi độc hại khiến bản ghi trông có vẻ nhỏ, trong khi dữ liệu thực tế được sao chép vào bộ đệm lớn hơn nhiều, dẫn đến tình trạng tràn (overflow).
"Ví dụ, một thông báo handshake 120 byte có thể đến dưới dạng 120 phân đoạn. Mỗi phân đoạn có length=120, nhưng mỗi phân đoạn có thể có fragment_length=1," nhà nghiên cứu bảo mật Sina Kheirkhah giải thích. "Offset của chúng sẽ là 0, 1, 2, và cứ tiếp tục như vậy cho đến 119. Khi mọi vị trí đã đến đủ, máy chủ coi thông báo 120 byte là hoàn tất. Việc kết hợp các mảnh đó lại được gọi là reassembly (tái lắp ghép)."
Mỗi gói tin nhận được có kích thước 1.459 byte được lưu trữ trong NetScaler Buffers (NSBs), sau đó được khâu lại thành một bộ đệm tạm thời (scratch buffer) duy nhất chỉ có 35.840 byte. Do phiên bản bị lỗi không kiểm tra liệu gói tin tiếp theo có vừa với bộ đệm tạm thời hay không, dữ liệu sẽ được ghi vượt quá giới hạn của bộ đệm và dẫn đến tràn bộ đệm (buffer overflow).
"Các bản ghi độc hại thông báo cho mã tái lắp ghép rằng mỗi bản ghi chỉ cung cấp một byte của thông báo handshake 120 byte," Kheirkhah nói. "Tuy nhiên, NSPPE giữ gần như toàn bộ bản ghi trong một NSB. Sau 120 bản ghi, thông báo handshake được coi là hoàn tất, nhưng chuỗi NSB của nó chứa khoảng 174 KB dữ liệu."
Phân tích của watchTowr còn phát hiện rằng lỗi tràn này có thể được vũ khí hóa để chuyển hướng luồng điều khiển sang shellcode tùy ý với đặc quyền cấp root bằng cách sử dụng lệnh hệ thống mprotect() để vô hiệu hóa các biện pháp bảo vệ NX (no-execute).
Tiết lộ này được đưa ra một ngày sau khi công ty quản lý phơi nhiễm chủ động công bố mã khai thác thử nghiệm (PoC) cho CVE-2026-88771, lỗ hổng đã bị lạm dụng cùng với CVE-2026-88772 trong các cuộc tấn công thực tế.