Một đặc vụ an ninh tự hành đã phát hiện 21 lỗ hổng zero-day trong FFmpeg, thư viện xử lý đa phương tiện được triển khai rộng rãi nhất thế giới. Đáng chú ý, trong số này có một lỗ hổng RCE (Remote Code Execution) nghiêm trọng thuộc loại heap buffer overflow, có thể bị khai thác chỉ với một gói tin mạng duy nhất dài 183 byte.
FFmpeg đóng vai trò nền tảng cho việc xử lý đa phương tiện trên trình duyệt, nền tảng streaming, hệ thống giám sát và cơ sở hạ tầng đám mây, biến nó thành một trong những thư viện mã nguồn mở quan trọng nhất về mặt bảo mật. Thư viện này bao gồm khoảng 1,5 triệu dòng mã C được tối ưu hóa cao, có khả năng phân tích cú pháp hàng trăm định dạng đa phương tiện phức tạp, kết quả từ hơn hai thập kỷ fuzzing và kiểm tra thủ công.
Lịch sử phát hiện và vai trò của các đặc vụ an ninh
Trước đó, Google Big Sleep team đã công bố 13 lỗ hổng trong FFmpeg. Gần đây hơn, mô hình Mythos của Anthropic đã xác định thêm các vấn đề bảo mật khác. Dựa trên những thành tựu này, công ty bảo mật Depthfirst đã triển khai một đặc vụ an ninh tự hành chuyên biệt để quét FFmpeg.
Đặc vụ này đã tìm thấy 21 lỗ hổng zero-day chưa từng được biết đến với chi phí ước tính khoảng 1.000 USD, chỉ bằng khoảng 10% so với chi phí mà Anthropic đã bỏ ra khi sử dụng Mythos. Khác với các đặc vụ lập trình đa mục đích, đặc vụ an ninh của Depthfirst thực hiện phân tích mô hình đe dọa nghiêm ngặt trên các cơ sở mã lớn.
Cách thức hoạt động của đặc vụ an ninh tự hành
- Đặc vụ xác định các điểm đầu vào dữ liệu do kẻ tấn công kiểm soát.
- Theo dõi luồng dữ liệu qua các thành phần liên quan.
- Xác thực xem một đường dẫn có lỗ hổng có thực sự có thể truy cập được hay không.
Đặc vụ này tạo ra các đầu vào PoC (Proof of Concept) có thể tái lập để xác nhận lỗ hổng và loại bỏ các kết quả dương tính giả. Mã PoC đã được đăng tải lên GitHub bởi Zhenpeng (Leo) Lin của Depthfirst.
Danh sách các lỗ hổng được phát hiện
Đặc vụ đã phát hiện các lỗ hổng trải dài trên các thành phần như TS demuxer, VP9 decoder, RTP depacketizers, RTSP server, RTMP client, và nhiều hơn nữa. Tám trong số các lỗ hổng này đã được gán mã CVE:
- CVE-2026-39210 – Heap Buffer Overflow trong TS demuxer (xuất hiện từ năm 2010).
- CVE-2026-39211 – Integer Overflow trong swscale (xuất hiện từ năm 2010).
- CVE-2026-39212 – Stack Overflow trong ffmpeg_opt.c (hồi quy từ tháng 7 năm 2025).
- CVE-2026-39213 – Heap Buffer Overflow trong yuv4mpegenc (xuất hiện từ năm 2023).
- CVE-2026-39214 – Stack Buffer Overflow trong triển khai SDT (xuất hiện từ năm 2003, tồn tại trong 23 năm).
- CVE-2026-39215 – Heap Buffer Overflow trong update_mb_info() (xuất hiện từ năm 2012).
- CVE-2026-39216 – Heap Buffer Overflow trong img2enc.c (xuất hiện từ năm 2012).
- CVE-2026-39217 – Heap Buffer Overflow trong VP9 decoder (hồi quy từ tháng 3 năm 2025).
- CVE-2026-39218 – Heap Buffer Overflow trong DASH demuxer (xuất hiện từ năm 2017).
Các phát hiện bổ sung chưa được gán mã bao gồm các lỗi trong RTP AV1 depacketizer (DFVULN-127), AVI demuxer, CAF demuxer, RTSP SDP parser, RTMP client và AVIF overlay path. Các lỗi này đã tồn tại hơn 15 năm mà không bị phát hiện.
Chi tiết lỗ hổng nghiêm trọng nhất
Phát hiện nghiêm trọng nhất là một lỗ hổng heap buffer overflow trong AV1 RTP depacketizer của FFmpeg (libavformat/rtpdec_av1.c), được theo dõi với mã DFVULN-127. Lỗi này phát sinh từ cách depacketizer xử lý các External Unit (OBU) Temporal Delimiter (TD) dùng để phân tách các khung hình video.
Khi gặp một TD, mã nguồn sẽ tăng con trỏ ghi (pktpos) theo kích thước obu_size do kẻ tấn công cung cấp mà không phân bổ bộ nhớ tương ứng hoặc tăng con trỏ đầu vào (buf_ptr). Điều này dẫn đến hai vấn đề:
- Con trỏ ghi bị lỗi.
- Lần lặp tiếp theo sẽ phân tích lại chính các byte của TD như một OBU mới với nội dung do kẻ tấn công kiểm soát.
Sự hỏng dữ liệu này ảnh hưởng trực tiếp đến một cấu trúc AVBuffer được cấp phát ngay sau bộ đệm dữ liệu bởi trình cấp phát bộ nhớ dựa trên posix_memalign của FFmpeg. Tại độ lệch +24 bên trong cấu trúc đó là một con trỏ hàm free, mục tiêu chính của vụ tràn bộ đệm.
Khi gói tin sau đó được cấp phát lại, FFmpeg sẽ giảm số lượng tham chiếu của bộ đệm về 0 và gọi con trỏ hàm free đã bị hỏng, trao cho kẻ tấn công toàn quyền kiểm soát con trỏ lệnh.
Khai thác và ảnh hưởng hệ thống
Một PoC hoạt động đã xác nhận rằng chỉ cần một gói tin RTP dài 183 byte được gửi qua RTSP là đủ để chuyển hướng thực thi. Việc khai thác này không yêu cầu xác thực, không cần tương tác người dùng và không cần các cờ đặc biệt.
Bất kỳ hệ thống nào chạy lệnh ffmpeg -i rtsp://attacker/stream đều có nguy cơ bị ảnh hưởng. Điều này bao gồm các đường ống xử lý đa phương tiện, hệ thống CCTV và giám sát, cũng như các dịch vụ transcoding trên đám mây xử lý các nguồn AV1 qua RTP từ xa.
Các quản trị viên đang sử dụng FFmpeg trong các triển khai mạng cần nhanh chóng áp dụng các bản vá và kiểm tra kỹ lưỡng bất kỳ đường ống nào xử lý các luồng RTSP hoặc RTP không đáng tin cậy. Để cập nhật các bản vá bảo mật mới nhất và thông tin về các mối đe dọa mạng, bạn có thể tham khảo các nguồn uy tín như NVD tại NVD.
Việc phát hiện liên tục các lỗ hổng CVE trong các thư viện mã nguồn mở phổ biến như FFmpeg nhấn mạnh tầm quan trọng của việc áp dụng các biện pháp bảo mật chủ động và sử dụng các công cụ phân tích mã tiên tiến để xác định và khắc phục các rủi ro bảo mật trước khi chúng bị khai thác.










