Dự án Bun, runtime JavaScript nổi tiếng được viết chủ yếu bằng Zig, vừa phát hiện một lỗi nghiêm trọng liên quan đến undefined behavior (UB) trong phần mã Rust của codebase. Theo báo cáo trên GitHub, lỗi này xảy ra khi một mảng tham chiếu &[u8] bị tạo ra từ con trỏ không hợp lệ: dữ liệu đã bị giải phóng (drop) trước khi slice được sử dụng. Cụ thể, một biến Box chứa chuỗi "Hello World" được truyền cho hàm PathString::init, nhưng sau đó biến này bị drop, khiến slice trở thành dangling reference. Kết quả là chương trình crash với thông báo UB từ công cụ kiểm tra Miri của Rust.
Tác động đến người dùng thông thường
Lỗi này không chỉ là vấn đề kỹ thuật khô khan. Với người dùng cuối, nó có thể dẫn đến treo ứng dụng, rò rỉ dữ liệu hoặc thậm chí lỗ hổng bảo mật nếu hacker khai thác được undefined behavior. Hãy tưởng tượng bạn đang dùng Bun để chạy ứng dụng web, bỗng nhiên ứng dụng crash mà không rõ lý do. Hoặc tệ hơn, một kẻ tấn công có thể lợi dụng lỗi này để đọc bộ nhớ nhạy cảm. Điều này đặc biệt nguy hiểm với các startup đang xây dựng sản phẩm dựa trên Bun mà không có đội ngũ Rust chuyên sâu.
Cộng đồng lập trình viên đã cảnh báo: "Đừng vibe coding Rust bằng AI, vì AI chưa đủ giỏi để viết Rust an toàn". Lời khuyên là hãy thuê một kỹ sư Rust thực thụ. Đây cũng là bài học cho ngành công nghệ khi ngày càng nhiều dự án chuyển từ C/C++ sang Rust để đảm bảo an toàn bộ nhớ, nhưng chính các lỗi UB lại phá vỡ cam kết đó. Hiện tại, đội ngũ Bun đã xác nhận lỗi và đang vá. Sự cố này cho thấy dù Rust có hệ thống kiểu mạnh, việc dùng unsafe vẫn đòi hỏi chuyên môn cao, và AI chưa thể thay thế con người trong những tình huống nhạy cảm.






