- vet là một công cụ CLI giúp chuyển việc chạy script cài đặt từ xa theo kiểu
curl | bash sang quy trình an toàn "tải xuống → xem xét → phê duyệt để chạy"
- Cung cấp các lớp phòng vệ theo từng bước như xem lịch sử thay đổi (diff) của script, lint (phân tích tĩnh) dựa trên shellcheck, và phê duyệt thủ công (xác nhận rồi mới chạy)
- Chỉ với một lệnh duy nhất (
vet https://example.com/install.sh), có thể tự động kiểm tra rủi ro tiềm ẩn, giả mạo, lỗi gõ và lỗ hổng trước khi thực thi script từ xa
- Bản thân việc cài đặt cũng hỗ trợ cả cách "tải xuống rồi xem xét" lẫn cách
curl | sh, và mã cài đặt của chính vet cũng có thể được kiểm tra trực tiếp
- Đây là một giải pháp đáng tin cậy giúp đồng thời đảm bảo phòng ngừa rủi ro bảo mật trong môi trường phát triển/vận hành và tính tự động hóa/sự tiện lợi
Vấn đề: thực thi bừa bãi các script cài đặt từ xa
- Nhiều dự án mã nguồn mở và công cụ hướng dẫn cài đặt bằng script từ xa như
curl -sSL https://example.com/install.sh | bash
- Cách này tiềm ẩn rủi ro bảo mật nghiêm trọng như thực thi mã độc, chạy file chưa tải hoàn chỉnh do script bị chỉnh sửa, máy chủ bị xâm nhập hoặc lỗi mạng
Giải pháp của vet: thực thi tương tác an toàn
Cách cài đặt
Cách khuyến nghị an toàn (tải xuống → xem xét → thực thi)
- 1. Tải script cài đặt:
- 2. Tự xem xét mã của script đã tải xuống (kiểm tra bằng less, vim, v.v.):
less install_vet.sh
- 3. Sau khi xem xét, tự thực thi:
sh install_vet.sh
Cài đặt nhanh (one-line dựa trên mức độ tin cậy)
Tính năng và ưu điểm của vet
- Phát hiện thay đổi (diff): có thể kiểm tra phần vừa thay đổi bằng cách so sánh với script đã chạy trước đó
- Lint tự động (tích hợp shellcheck): tự động chẩn đoán lỗ hổng, lỗi gõ và mã đáng ngờ trong shell script
- Phê duyệt thực thi tường minh (Confirm): trực tiếp kiểm soát việc chạy thực tế chỉ bằng một lần nhấp/nhập
- Tự động lưu script và quản lý lịch sử: ngay cả các script cài đặt dùng thường xuyên cũng có thể được theo dõi an toàn
- Đảm bảo cài đặt/cập nhật an toàn ngay ở bên trong
Kết luận
- vet là giải pháp thay thế an toàn cho
curl | bash mà cả lập trình viên lẫn người vận hành đều cần, hiện thực hóa cả tự động hóa cài đặt lẫn bảo mật
- "Đừng chỉ chạy ngay, hãy xác minh bằng vet rồi mới thực thi!"
1 bình luận
Ý kiến trên Hacker News
# shellcheck disable=vào một script độc hại# shellcheck disable=đáng ngại. Bản thân thay đổi đó đã là tín hiệu cảnh báoless, hoặc nếu càibatthì dùng pager có tô sáng đẹp hơn), và không mở bằng editor để tránh sửa nhầm. Nếu ShellCheck phát hiện vấn đề, nó sẽ in màu trực tiếp ra terminal. Sau đó nó sẽ hỏi rõ có tiếp tục review hay không theo dạng [y/N]. Ví dụ: Cảm ơn gợi ý haycurl | bash. Trên Windows có tính năng tự động quét tệp khi người dùng định cài đặtcurl | bashkhông yên tâm, và cảm thấy cần một công cụ có thể hiển thị diff khi script thay đổi, chạy shellcheck và yêu cầu người dùng cho phép rõ ràng. Vì vậy tôi tạo ra vet. Cách cài đặt cũng áp dụng cùng nguyên tắc đó. Tôi khuyến khích bạn nhất định nên đọc script cài đặt. Rất mong nhận được phản hồi. Repo ở https://github.com/vet-run/vetwget -qO- https://getvet.shthì máy chủ đang trả vềtext/html). Thay vào đó, tôi muốn khuyên nên lấy trực tiếp install.sh. Về yêu cầu phản hồi, đây là một mẹo bash theo kiểu “hãy làm thế này”: Cách này sẽ yêu cầu cho phép mỗi khi bash định thực thi điều gì đó. Với script dài thì có thể phiền, nên có thể tùy biến bằng danh sách trắng các lệnh được coi là an toàn hoặc thêm tùy chọn “remember”. Vềsudo, mã độc có thể dùng thủ thuật chạysudotrước trong một lệnh tưởng như vô hại để đưa thông tin xác thực vào cache, rồi sau đó gọi lại lệnhsudomà không có cảnh báo nào. Sẽ an toàn hơn nếu chạysudo -kđể xóa cache phiên trước khi chạy chương trình chưa rõ nguồn gốc