Làm thế nào để giảm thiểu các cuộc tấn công chuỗi cung ứng với Preflight

Tác giả sysadmin, T.Mười 14, 2022, 04:04:30 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Làm thế nào để giảm thiểu các cuộc tấn công chuỗi cung ứng với Preflight


Rủi ro của các cuộc tấn công chuỗi cung ứng gần đây đã trở nên rõ ràng sau sự tấn công của SolarWinds và Codecov. Những kẻ tấn công thỏa hiệp với các nhà cung cấp mã thượng nguồn để lén đưa các nguồn độc hại vào các sản phẩm phần mềm.


Nhiều ứng dụng tải xuống các phụ thuộc bên ngoài trong quá trình xây dựng của chúng. Việc sử dụng những bản tải xuống nguyên bản có thể nguy hiểm. Làm thế nào để bạn biết tệp trên máy chủ không bị thay thế bằng phiên bản độc hại?

Mã nguồn [Chọn]
curl https://example.com/install-script.sh | sh
Lệnh này minh họa cách tấn công chuỗi cung ứng đơn giản nhất. Đưa một tập lệnh cài đặt vào trình bao của bạn rất tiện lợi nhưng rủi ro. Nếu example.comđã bị xâm nhập, bạn vừa cấp cho kẻ tấn công quyền truy cập chưa được kiểm soát vào hệ thống của bạn.

1. Kiểm tra tệp

Bạn có thể giảm thiểu sự nguy hiểm của phương pháp này bằng cách kiểm tra xem tệp đã tải xuống có khớp với tổng kiểm tra đã biết hay không. Nhiều dự án mã nguồn mở có uy tín sẽ xuất bản tổng kiểm tra mà bạn có thể so sánh. Chỉ chạy tệp nếu tổng tổng kiểm tra được tính toán của nó khớp với giá trị đã biết của bạn.

Việc triển khai kiểm tra này vào các tập lệnh xây dựng của bạn có thể nhanh chóng bị lặp lại. Preflight là một công cụ giúp bạn thực hiện so sánh tổng kiểm tra để bạn có thể tránh các cuộc tấn công chuỗi cung ứng phổ biến.

Preflight chấp nhận đường dẫn nhị phân và tổng kiểm tra để so sánh với nó. Nếu tổng kiểm tra của tệp phù hợp, nó sẽ được thực thi như bình thường. Nếu không, lệnh sẽ bị hủy bỏ, bảo vệ tập lệnh xây dựng hoặc đường ống CI của bạn chống lại việc đưa vào mã độc hại ngoài ý muốn.

2. Sử dụng Preflight

Bạn có thể tải xuống Preflight từ trang phát hành GitHub của nó. Công cụ này cũng được phân phối như preflighttrong trình quản lý gói Homebrew.

Đơn giản nhất, Preflight có thể được sử dụng ở bất cứ đâu bạn thường đến | sh. Đưa một lệnh khác vào Preflight, cung cấp tổng kiểm tra để khớp trước khi bất kỳ điều gì được thực thi.

Mã nguồn [Chọn]
curl https://example.com/install-script.sh | preflight run sha256=abc...123
Bây giờ tập lệnh cài đặt sẽ chỉ được thực thi nếu nó khớp với tổng kiểm tra đã biết. Điều này giúp bạn tin tưởng rằng nội dung của tệp không bị giả mạo. Preflight hỗ trợ sha256, sha1và md5các loại băm.


Bạn nên mã hóa các tổng kiểm tra đã biết vào các tập lệnh xây dựng của mình. Không tải xuống tệp tổng kiểm tra được cung cấp bởi cùng một máy chủ với tệp đích. Giả sử kẻ tấn công có khả năng sửa đổi tập lệnh cũng đã tải lên tệp tổng kiểm tra không có thật.

3. Kiểm tra có lập trình

Đôi khi bạn có thể muốn thực hiện một hành động tùy thuộc vào việc một tệp có khớp thành công tổng kiểm tra của nó hay không. Trong trường hợp này, bạn có thể sử dụng preflight checkđể thực hiện so sánh mà không thực sự thực thi tệp.

Mã nguồn [Chọn]
curl https://example.com/install-script.sh | preflight check sha256=abc...123
Lệnh sẽ thoát với mã trạng thái 0nếu tổng kiểm tra của tệp phù hợp. Mã trạng thái của 1sẽ được cấp khi có sự khác biệt. Preflight cũng sẽ phát ra thông báo lỗi cho luồng đầu ra tiêu chuẩn.

4. Tạo mã băm với Preflight

Không phải tất cả các dự án phần mềm đều xuất bản hàm băm cho các bản phát hành của họ. Preflight có hỗ trợ tích hợp để tạo một hàm băm mới nếu bạn cần một hàm băm cho phụ thuộc.

Tải xuống tệp từ trang web của nhà cung cấp. Sau đó, chuyển nó vào preflight createđể lấy hàm băm của nội dung tệp.

Mã nguồn [Chọn]
wget https://example.com/install-script.sh

preflight create install-script.sh


Hàm băm SHA256 được tạo theo mặc định. Bạn có thể chuyển sang SHA1 hoặc MD5 bằng cách thêm --digestcờ vào lệnh.

5. Thêm quét phần mềm độc hại

Ngoài các so sánh tổng kiểm tra cơ bản, Preflight hỗ trợ quét phần mềm độc hại tùy chọn. Tính năng này quét tệp của bạn để chống lại các chữ ký phần mềm độc hại đã biết.

Danh sách phần mềm độc hại được cung cấp bởi các dịch vụ của bên thứ ba. Preflight hoạt động với bất kỳ tệp văn bản nào có chứa danh sách tổng kiểm tra phần mềm độc hại đã biết. Malshare là một trong những nhà cung cấp danh sách này.

Đặt PF_FILE_LOOKUPbiến môi trường trỏ đến vị trí tệp của bạn. Preflight sẽ phát hiện biến này và cho phép tra cứu phần mềm độc hại. Khi bạn chạy preflight checkhoặc preflight run, tổng kiểm tra của tệp đích sẽ được so sánh với các mục trong danh sách phần mềm độc hại. Việc kiểm tra sẽ không thành công nếu có sự trùng khớp.

6. Còn về các loại phụ thuộc khác thì sao?

Preflight tập trung vào việc kiểm tra các tệp tĩnh. Nó phù hợp nhất với các bản tải xuống nhị phân được tạo sẵn mà bạn có được trực tiếp từ nhà cung cấp.

Sẽ ít thực tế hơn khi sử dụng Preflight với các phụ thuộc có được thông qua trình quản lý gói. Các rủi ro phát sinh từ phần mềm được cài đặt qua npm, Composer, NuGet hoặc Maven sẽ cần được xử lý theo một cách khác. Bạn có thể sử dụng các tính năng của trình quản lý gói như xác định phạm vi nhà cung cấp để đảm bảo các phần phụ thuộc được cài đặt từ các kho lưu trữ đáng tin cậy.

Preflight nên là một thành phần trong việc bảo vệ bạn chống lại sự tiêm chích của chuỗi cung ứng. Phân tích các tập lệnh xây dựng của bạn để xác định các vectơ xâm nhập được cung cấp bởi các dạng phần mềm bên thứ ba khác.

7. Bản tóm tắt

Các cuộc tấn công chuỗi cung ứng là một vấn đề ngày càng gia tăng ảnh hưởng đến bảo mật của việc triển khai phần mềm. Nhiều nhà phát triển kết hợp tải phần mềm trực tiếp vào tập lệnh xây dựng của họ. Điều này có thể cung cấp cho những kẻ tấn công một cách để đưa mã vào một dự án mục tiêu, bằng cách thỏa hiệp với một nhà cung cấp thượng nguồn.

Preflight đơn giản hóa việc kiểm tra bảo mật đối với các tập lệnh và mã nhị phân của bên thứ ba. Tuy nhiên, có một điều trớ trêu nhất định: bằng cách sử dụng Preflight, bạn trở nên phụ thuộc vào gói của bên thứ ba mà bạn sẽ cần tải xuống. Bạn có thể giảm thiểu điều này bằng cách tự xây dựng Preflight từ nguồn và lưu trữ tệp nhị phân trên máy chủ nội bộ mà bạn tin tưởng.