Không
Cuộc tấn công, như mô tả ban đầu, không bao giờ là một mối đe dọa. Mặc dù về mặt lý thuyết, một trình biên dịch có thể làm điều này, nhưng thực sự việc thực hiện cuộc tấn công sẽ yêu cầu lập trình trình biên dịch để
- Nhận biết khi mã nguồn đang được biên dịch là của trình biên dịch và
- Chỉ ra cách sửa đổi mã nguồn tùy ý để chèn hack vào nó.
Điều này đòi hỏi phải tìm ra cách trình biên dịch làm việc từ mã nguồn của nó, để nó có thể sửa đổi nó mà không bị hỏng.
Ví dụ, hãy tưởng tượng rằng định dạng liên kết lưu trữ độ dài dữ liệu hoặc phần bù của mã máy đã biên dịch ở đâu đó trong tệp thực thi. Trình biên dịch sẽ phải tự tìm ra cái nào trong số này cần được cập nhật, và ở đâu, khi chèn tải trọng khai thác. Các phiên bản tiếp theo của trình biên dịch (phiên bản vô hại) có thể tùy ý thay đổi định dạng này, vì vậy mã khai thác sẽ thực sự cần phải hiểu các khái niệm này.
Đây là chương trình tự định hướng cấp cao, một vấn đề AI khó khăn (tôi đã kiểm tra lần cuối, trạng thái của nghệ thuật đã tạo ra mã được xác định thực tế bởi các loại của nó). Hãy nhìn xem: rất ít người thậm chí có thể làm điều này; bạn sẽ phải học ngôn ngữ lập trình và hiểu cơ sở mã trước tiên.
Ngay cả khi vấn đề AI được giải quyết, mọi người sẽ chú ý nếu biên dịch trình biên dịch nhỏ của họ dẫn đến một hệ nhị phân với một thư viện AI khổng lồ được liên kết với nó.
Tấn công tương tự: tin tưởng bootstrapping
Tuy nhiên, một khái quát của cuộc tấn công là có liên quan. Vấn đề cơ bản là chuỗi tin cậy của bạn phải bắt đầu từ đâu đó và trong nhiều lĩnh vực, nguồn gốc của nó có thể lật đổ toàn bộ chuỗi theo cách khó phát hiện.
Một ví dụ có thể dễ dàng rút ra trong cuộc sống thực
Hệ điều hành của bạn, như Ubuntu Linux, đảm bảo tính bảo mật (tính toàn vẹn) của các bản cập nhật bằng cách kiểm tra các gói cập nhật được tải xuống so với khóa ký của kho lưu trữ (sử dụng mã hóa khóa công khai). Nhưng điều này chỉ đảm bảo tính xác thực của các bản cập nhật nếu bạn có thể chứng minh rằng khóa ký được sở hữu bởi một nguồn hợp pháp.
Bạn lấy chìa khóa ký ở đâu? Khi bạn lần đầu tiên tải xuống bản phân phối hệ điều hành.
Bạn phải tin tưởng rằng nguồn gốc của chuỗi tin cậy của bạn, khóa ký này, không phải là xấu.
Bất cứ ai có thể MITM kết nối Internet giữa bạn và máy chủ tải xuống Ubuntu, đây có thể là ISP của bạn, một chính phủ kiểm soát truy cập Internet (ví dụ: Trung Quốc) hoặc nhà cung cấp dịch vụ lưu trữ của Ubuntu, có thể đã chiếm quyền điều khiển quá trình này:
- Phát hiện bạn đang tải xuống hình ảnh đĩa CD Ubuntu. Điều này rất đơn giản: thấy rằng yêu cầu sẽ đến bất kỳ máy nhân bản nào (được liệt kê công khai) và yêu cầu tên tệp của hình ảnh ISO.
- Phục vụ yêu cầu từ máy chủ của họ, cung cấp cho bạn hình ảnh CD chứa khóa công khai và vị trí kho lưu trữ của kẻ tấn công thay vì Ubuntu.
Từ đó, bạn sẽ nhận được các bản cập nhật của mình một cách an toàn từ máy chủ của kẻ tấn công. Cập nhật chạy dưới quyền root, vì vậy kẻ tấn công có toàn quyền kiểm soát.
Bạn có thể ngăn chặn cuộc tấn công bằng cách đảm bảo bản gốc là xác thực. Nhưng điều này đòi hỏi bạn phải xác thực hình ảnh CD đã tải xuống bằng cách sử dụng hàm băm ( ít người thực sự làm điều này ) và bản thân hàm băm phải được tải xuống một cách an toàn, ví dụ như qua HTTPS. Và nếu kẻ tấn công của bạn có thể thêm chứng chỉ trên máy tính của bạn (phổ biến trong môi trường công ty) hoặc kiểm soát cơ quan chứng nhận (ví dụ: Trung Quốc), ngay cả HTTPS cũng không bảo vệ.