SecLab
Supply Chain & IntegritywalkthroughĐộ khó 3/524 phút

Lockfile, digest, và build tái lập được

Mục tiêu: Sau bài này bạn ghim được cả ba tầng dependency của một build, và biết tầng nào lockfile không phủ.

A08:2025SSDF PS.3SLSA
Bước 1 / 5 · read5 phút

Ba tầng, và lockfile chỉ phủ một

Câu hỏi để kiểm một build có tái lập được hay không rất đơn giản: build lại cùng một commit sáu tháng sau có ra cùng một artifact không? Với gần như mọi dự án, câu trả lời là không — và ba tầng dưới đây là ba lý do.

TầngGhim bằng gìLockfile có phủ?
Package của ngôn ngữpackages.lock.json, package-lock.json
Base imagedigest sha256:..., không phải tagKhông
Công cụ trong CISHA của commit, không phải tagKhông

Hai tầng dưới là hai tầng bị bỏ, và chúng bị bỏ vì cùng một lý do: tag trông như một phiên bản nhưng nó là một con trỏ có thể di chuyển.

FROM node:20 không nói "phiên bản 20" mà nói "bất cứ image nào đang được gắn nhãn 20 lúc này". Nhãn đó được cập nhật mỗi khi có bản patch, nên hai lần build cách nhau một tuần dùng hai image khác nhau. Thường đó là điều tốt (bản vá bảo mật tự về), và đó chính là lý do người ta để nguyên — nhưng nó cũng có nghĩa là bạn không biết mình đang chạy gì, và một image bị chèn code sẽ về theo cùng đường đó.

uses: actions/checkout@v4 còn tệ hơn về mặt tin cậy: v4 là một git tag, và git tag di chuyển được bởi bất kỳ ai có quyền push lên repo của action đó. Một action chạy trong workflow của bạn với token của workflow — tức là quyền đọc/ghi repo và secret.

Đánh đổi phải nói ra: ghim theo digest nghĩa là bản vá bảo mật không tự về. Bạn đổi "cập nhật âm thầm, không kiểm soát" thành "cập nhật có kiểm soát, phải chủ động". Đánh đổi đó chỉ đáng nếu bạn thật sự có cơ chế cập nhật — nên ghim mà không có Dependabot hay Renovate là làm hệ thống tệ hơn, không tốt hơn.

Xem lộ trình

Bình luận

Tham gia thảo luận
Đăng ký để bình luận

Bình luận cần tài khoản đã hoàn thành ít nhất một bài học. Điều kiện đó là thứ giữ cho luồng thảo luận này còn đáng đọc: mỗi ý kiến gắn với một người có thể bị hỏi lại, và reputation tích luỹ theo thời gian.

Đăng kýĐăng nhập

Bạn vẫn đọc được toàn bộ bình luận dưới đây mà không cần tài khoản. Đăng nhập xong bạn sẽ quay lại đúng chỗ này, không phải đầu trang.

Đang tải bình luận…