Bun Lockfiles và Bảo mật Chuỗi cung ứng của Bạn
Lockfile dạng nhị phân là một loại "thuế bảo mật"—bạn sẽ phải trả sau, và kèm theo cả lãi suất.
Bun từng lưu trữ các phụ thuộc (dependencies) trong một tệp nhị phân có tên là bun.lockb. Nó nhanh và nhỏ gọn, nhưng bạn không thể đọc được nó. Bạn không thể so sánh sự khác biệt (diff) trong một pull request, và cũng không thể thấy được những gì đã thay đổi.
Khi bạn không thể kiểm tra sự thay đổi của một dependency, bạn không hề có chính sách nào cả—chỉ là cảm tính mà thôi.
Bun v1.2 đã chuyển đổi mặc định sang định dạng văn bản bun.lock. Chỉ riêng điều này thôi đã là một thắng lợi lớn về bảo mật.
Tại sao lockfile dạng văn bản lại quan trọng
- Diff có ý nghĩa – người kiểm duyệt (reviewer) có thể thấy chính xác gói (package) nào đã di chuyển hoặc thay đổi.
- Kiểm tra chính sách dễ dàng – CI có thể quét các mẫu (pattern) bị cấm hoặc các registry không đáng tin cậy.
- Điều tra nhanh hơn –
git loghiển thị chính xác commit đã đưa một gói độc hại vào hệ thống.
Một lockfile đảm bảo tính toàn vẹn và khả năng tái lập (reproducibility), nhưng nó không phải là giải pháp vạn năng. Nó sẽ không ngăn chặn được một phiên bản độc hại được xuất bản một cách hợp lệ, hay một người duy trì (maintainer) bị xâm nhập.
Điều mà lockfile dạng văn bản mang lại chính là khả năng hiển thị (visibility). Khả năng hiển thị chính là tuyến phòng thủ đầu tiên của bạn.
Cách bảo mật quy trình làm việc với Bun của bạn
- Chạy
bun install --frozen-lockfiletrong CI. Quá trình build sẽ thất bại nếu lockfile cần được cập nhật. - Chạy
bun install --lockfile-onlytrong CI. Bạn có thể xác thực việc phân giải (resolution) mà không cần thực thi các script cài đặt nặng nề. - Chuyển đổi ngay lập tức bất kỳ tệp bun.lockb nào sang bun.lock.
- Yêu cầu con người kiểm duyệt các thay đổi trong lockfile. Thêm các chủ sở hữu (owners) phù hợp vào
CODEOWNERSđể những người có chuyên môn có thể thấy mọi cập nhật dependency.
Đừng tin tưởng công cụ một cách mù quáng. Thay vào đó, hãy xác minh từng thay đổi.
