Các nhà nghiên cứu bảo mật tại runZero đã công bố bảy lỗ hổng mới ảnh hưởng đến FatFs, trình điều khiển hệ thống tệp FAT/exFAT nhỏ gọn được sử dụng rộng rãi trong các hệ sinh thái nhúng và IoT. Các lỗ hổng này tiềm ẩn mối đe dọa đáng kể cho nhiều thiết bị.
Phân tích các lỗ hổng FatFs mới được phát hiện
Các lỗ hổng được phát hiện có mức độ nghiêm trọng từ Trung bình (Medium) đến Cao (High) theo CVSS, không có phát hiện nào ở mức Độ Cực kỳ (Critical). Tuy nhiên, phạm vi ảnh hưởng của chúng là rất lớn.
FatFs là nền tảng cho nhiều hệ điều hành và framework phát triển, bao gồm:
- Espressif ESP-IDF
- STMicroelectronics STM32Cube
- Zephyr RTOS
- MicroPython
- ArduPilot
- RT-Thread
- Mbed
- Samsung TizenRT
- SWUpdate
Điều này mở rộng ra các thiết bị IoT tiêu dùng, bộ điều khiển công nghiệp, máy bay không người lái và ví tiền điện tử.
Phương pháp nghiên cứu và phát hiện lỗ hổng
Nghiên cứu này xem xét lại một bản kiểm tra thủ công và quá trình fuzzing từ năm 2017, vốn chỉ phát hiện ra các lỗi nhỏ. Vào tháng 3 năm 2026, runZero đã tiếp cận lại cơ sở mã bằng Visual Studio Code và GitHub Copilot ở chế độ tự động, không sử dụng các bộ công cụ tùy chỉnh (custom harnesses) hoặc vòng lặp fuzzing chuyên sâu.
Cách tiếp cận có sự hỗ trợ của AI đã phát hiện ra các lỗi bị bỏ sót trước đó và giúp xác thực khả năng khai thác trong thực tế trên nhiều kịch bản nhúng. Điều này nhấn mạnh vai trò ngày càng tăng của AI trong nghiên cứu các lỗ hổng zero-day chuỗi cung ứng.
Chi tiết các lỗ hổng CVE
CVE-2026-6682
CVSS: 7.6 (High)
Lỗi tràn số nguyên (Integer overflow) trong hàm mount_volume() trong quá trình mount FAT32. Lỗ hổng này tạo ra siêu dữ liệu kích thước tệp do kẻ tấn công kiểm soát, có khả năng dẫn đến tràn bộ nhớ heap hoặc stack và thực thi mã tùy ý.
CVE-2026-6687
CVSS: 7.6 (High)
Trường độ dài nhãn exFAT không giới hạn trong hàm f_getlabel() cho phép ghi dữ liệu vượt quá giới hạn vào các bộ đệm stack do người gọi cung cấp. Điều này tạo ra một phương thức thao túng bộ nhớ sạch, có thể dẫn đến hệ thống bị tấn công.
CVE-2026-6688
CVSS: 7.6 (High)
Khi tên tệp dài (LFN) được bật, các giá trị fno.fname quá khổ sẽ làm tràn các bộ đệm có kích thước cố định trong các trình gọi hạ nguồn (downstream callers) sử dụng hàm strcpy/sprintf. Việc khắc phục hoàn toàn yêu cầu thay đổi ở cấp độ wrapper, mặc dù FatFs có thể cải thiện việc báo hiệu cắt bớt.
CVE-2026-6685
CVSS: 6.1 (Medium)
Hiện tượng tràn số học không dấu (Unsigned-subtraction wraparound) trong quá trình xử lý bộ nhớ đệm bị thay đổi (dirty-cache) trên các ổ đĩa bị phân mảnh. Điều này gây ra hành vi bộ nhớ đệm lỗi thời và các tác động ngoài phạm vi bộ nhớ (out-of-bounds memory effects), có nguy cơ làm hỏng dữ liệu một cách im lặng.
CVE-2026-6683
CVSS: 4.6 (Medium)
Lỗi chia cho 0 (divide-by-zero) trong các đường dẫn đồng bộ hóa/ghi exFAT. Lỗi này có thể được kích hoạt thông qua phương tiện được chế tạo cẩn thận, tạo ra các điều kiện gây sập hệ thống một cách đáng tin cậy, đặc biệt đáng lo ngại đối với các quy trình cập nhật qua mạng (OTA).
CVE-2026-6686
CVSS: 4.6 (Medium)
Hành động tìm kiếm vượt quá cuối tệp (EOF) làm lộ dữ liệu cluster chưa được khởi tạo. Điều này có thể dẫn đến việc rò rỉ nội dung lỗi thời từ các tệp đã bị xóa trước đó trong môi trường đa phương tiện chia sẻ hoặc khởi động nhiều giai đoạn.
CVE-2026-6684
CVSS: 4.6 (Medium)
Các triển khai trước phiên bản R0.16 thiếu xác thực số lượng mục GPT (GPT entry-count validation). Điều này cho phép các vòng lặp quét phân vùng không giới hạn và gây ra tấn công từ chối dịch vụ (DoS) khi mount. Phiên bản R0.16 của upstream đã khắc phục vấn đề này; gánh nặng bây giờ thuộc về việc nâng cấp các bản triển khai hạ nguồn.
Phạm vi ảnh hưởng và phương thức tấn công
Các lỗ hổng này có thể được kích hoạt thông qua các image FAT, exFAT hoặc GPT được chế tạo cẩn thận, thông qua phương tiện di động hoặc các kênh cập nhật tự động gắn kết.
Các thiết bị thiếu ASLR và các cơ chế bảo vệ bộ nhớ, vốn phổ biến trong các hệ thống nhúng, có thể khiến việc truy cập vật lý trực tiếp dẫn đến việc chiếm quyền điều khiển hoàn toàn hệ thống.
Các lớp thiết bị bị ảnh hưởng bao gồm:
- Camera an ninh
- Máy ATM
- Máy bỏ phiếu
- Bất kỳ phần cứng nào có giao diện USB hoặc thẻ SD có thể truy cập công cộng.
Thách thức trong việc vá lỗi và khuyến nghị
runZero đã cố gắng liên hệ với người bảo trì FatFs nhiều lần và đã báo cáo vấn đề cho JPCERT/CC sớm trong quá trình điều tra, nhưng chưa nhận được phản hồi.
Do hầu hết các nhà triển khai đều duy trì các phiên bản FatFs được sửa đổi cục bộ và có nguồn gốc từ các nhà cung cấp khác nhau (vendored), các bản vá upstream yêu cầu xác thực cẩn thận trước khi áp dụng.
Các nhà triển khai hạ nguồn được khuyến khích:
- Kiểm tra mã FatFs đã sử dụng (vendored code).
- Xem xét cách xử lý tên tệp và kích thước tệp trong các wrapper.
- Chuẩn bị sẵn sàng cho việc triển khai các bản vá lỗi.
Việc áp dụng các bản vá bảo mật kịp thời là rất quan trọng để giảm thiểu rủi ro từ các lỗ hổng này. Bạn có thể tìm hiểu thêm chi tiết kỹ thuật và nguồn gốc của các lỗ hổng này tại blog của runZero.










