Tôi cho rằng một kẻ tấn công chuyên dụng và tháo vát có thể thực hiện một cuộc tấn công MITM và chặn tất cả các yêu cầu đối với kho Maven công cộng, cẩn thận tiêm độc hại bytecode vào các tạo phẩm JAR, sau đó tính toán lại và cung cấp các băm SHA1.
Đối với khách hàng, nó sẽ xuất hiện như một tạo phẩm hợp pháp: JAR nhị phân và kết hợp SHA1 và sẽ giống nhau ngay cả khi họ kiểm tra các gương thay thế.
Tôi cho rằng giải pháp thực sự duy nhất là yêu cầu repos trung tâm hỗ trợ HTTPS (và tin tưởng rằng bản thân TLS chưa bị hỏng).
Ngoài ra, cách tiếp cận thực tế có thể là thiết lập proxy Maven (Artifactory hoặc Nexus) được phân phối qua HTTPS cho các khách hàng nội bộ. Điều này làm giảm bề mặt tấn công và có nghĩa là bạn sẽ phải bảo đảm các đường truyền thông từ máy chủ đó đến thế giới bên ngoài. Tôi định kỳ kiểm tra lại xem các JAR và băm trên proxy có khớp với những cái trên gương công cộng sử dụng một mạng lưới hoàn toàn độc lập, đáng tin cậy hay không.
Nếu bạn thực sự, thực sự muốn được đảm bảo bạn sẽ không được tin tưởng nhị phân-thay vào đó, bạn sẽ được tải về tất cả các mã nguồn và xem xét chúng bằng tay trước khi biên dịch chúng mình-nhưng mà giả sử bạn có đủ tài nguyên đủ điều kiện và thời gian để tiến hành đánh giá và tin tưởng toàn bộ chuỗi công cụ xây dựng của bạn để bắt đầu.
Vâng, bảo mật trong các lớp như họ luôn nói.
Nguồn
2011-08-17 14:18:48
Tôi đã viết quy tắc plugin Enforcer mục đích chung để giải quyết vấn đề này: https://github.com/gary-rowe/BitcoinjEnforcerRules –
@GaryRowe Dường như plugin của bạn ngăn các lần tải xuống tiếp theo không khớp với tổng kiểm tra được ghi lại bởi nướng tổng kiểm tra vào bản dựng (làm giảm bề mặt tấn công, điều này tốt), nhưng điều này không xuất hiện để bảo vệ tại thời điểm xây dựng lần đầu tiên được tạo ra và danh sách kiểm tra được viết (hoặc được tạo ra). Về cơ bản bạn ngăn chặn việc xây dựng từ ngộ độc * người khác * phải không? Đó có phải là sự hiểu biết đúng đắn về plugin của bạn không? – Gus