Canonical, công ty đứng sau Ubuntu, vừa tiết lộ 44 lỗ hổng bảo mật (CVE) trong uutils, bản viết lại bằng Rust của bộ công cụ GNU coreutils. Những lỗi này được phát hiện trong một cuộc kiểm toán bên thứ ba trước khi phát hành Ubuntu 26.04 LTS. Điều đáng chú ý là tất cả lỗi đều nằm trong code Rust sản xuất, do những lập trình viên giàu kinh nghiệm viết, nhưng không một lỗi nào bị borrow checker, Clippy, hay cargo audit phát hiện. Đây là bài học lớn cho cộng đồng công nghệ về giới hạn thực sự của Rust.
Lỗi kinh điển: TOCTOU (Time-of-Check Time-of-Use)
Nhóm lỗi lớn nhất liên quan đến việc kiểm tra đường dẫn file qua hai syscall riêng biệt. Kẻ tấn công có quyền ghi vào thư mục cha có thể hoán đổi đường dẫn giữa hai lần gọi, dẫn đến việc ghi đè lên file quan trọng như /etc/shadow. Ví dụ, lỗi CVE-2026-35355 trong lệnh 'install' cho thấy: xóa file đích, rồi tạo file mới, nhưng giữa hai bước, kẻ tấn công có thể cài symlink để chuyển hướng thao tác. Giải pháp là dùng OpenOptions::create_new(true) để đảm bảo không có file hay symlink nào tồn tại trước khi tạo.
Bài học cho cộng đồng lập trình
Bài phân tích khuyến nghị sử dụng file descriptor thay vì đường dẫn để tránh lỗi TOCTOU. Jon Seager, Phó Chủ tịch Kỹ thuật Ubuntu, thừa nhận rằng Rust rất mạnh trong quản lý bộ nhớ, nhưng không phải là 'viên đạn bạc' cho mọi vấn đề bảo mật. Loạt lỗi này nhấn mạnh rằng ngay cả code hiện đại cũng cần kiểm toán thủ công và hiểu sâu về bảo mật hệ thống.





