Ginny Hà
VIP Members
-
04/06/2014
-
88
-
689 bài viết
Kỹ thuật Trojan Source cho phép hacker che giấu lỗ hổng trong source code
Các lỗ hổng mới có thể bị hacker khai thác để chèn mã độc, từ đó thay đổi logic được xác định bởi source code.
Được gọi là "tấn công Trojan Source", kỹ thuật này khai thác sự tinh vi trong các tiêu chuẩn mã hóa văn bản như Unicode để tạo ra source code có token được mã hóa logic theo thứ tự khác với mã mà chúng được hiển thị, dẫn đến không thể nhận diện trực tiếp các lỗ hổng. Đây là nghiên cứu của Nicholas Boucher và Ross Anderson (Đại học Cambridge).
Các lỗ hổng (CVE-2021-42574 và CVE-2021-42694) ảnh hưởng đến trình biên dịch của tất cả các ngôn ngữ lập trình phổ biến như C, C++, C#, JavaScript, Java, Rust, Go và Python.
Trình biên dịch là chương trình dịch mã nguồn cấp cao mà con người có thể đọc được thành các biểu diễn cấp thấp hơn như ngôn ngữ hợp ngữ, mã đối tượng hoặc mã máy mà sau đó hệ điều hành có thể thực thi.
Về cốt lõi, vấn đề liên quan đến thuật toán hai chiều (hoặc Bidi) của Unicode cho phép hỗ trợ cả ngôn ngữ từ trái sang phải (ví dụ: tiếng Anh) và từ phải sang trái (ví dụ: tiếng Ả Rập), đồng thời có tính năng được gọi là ghi đè hai chiều cho phép viết các từ từ trái sang phải bên trong một câu từ phải sang trái hoặc ngược lại.
Đầu ra của trình biên dịch lẽ ra sẽ triển khai chính xác mã nguồn được cung cấp, nhưng sự khác biệt được tạo ra bằng cách chèn các ký tự ghi đè Unicode Bidi vào comment và string có thể tạo ra một kịch bản tạo ra mã nguồn hợp lệ về mặt cú pháp, trong đó thứ tự hiển thị của các ký tự thể hiện logic phân kỳ từ logic thực tế.
Nói cách khác, cuộc tấn công hoạt động bằng cách nhắm mục tiêu mã hóa các tệp mã nguồn để tạo ra các lỗ hổng, thay vì cố tình đưa ra các lỗi logic, để sắp xếp lại một cách trực quan các token trong mã nguồn, trong khi được hiển thị theo cách hoàn toàn có thể chấp nhận được, đánh lừa trình biên dịch xử lý mã theo một cách khác và thay đổi đáng kể luồng chương trình.
Các nhà nghiên cứu phỏng đoán: "Trên thực tế, chúng tôi đảo chương trình A thành chương trình B". "Nếu sự thay đổi trong logic đủ tinh tế để không bị phát hiện, hacker có thể tạo ra các lỗ mà không bị phát hiện".
Các nhà nghiên cứu cảnh báo rằng các mã hóa đối nghịch như vậy có thể có tác động nghiêm trọng đến chuỗi cung ứng, khi các lỗ hổng phần mềm vô hình được đưa vào phần mềm nguồn mở, có khả năng ảnh hưởng đến tất cả người dùng phần mềm. Thậm chí tệ hơn, các cuộc tấn công Trojan Source có thể trở nên nghiêm trọng hơn nếu hacker sử dụng các homoglyphs để xác định lại các chức năng đã có từ trước trong một gói upstream và gọi chúng từ một chương trình nạn nhân.
Các nhà nghiên cứu lưu ý: “Thực tế lỗ hổng Trojan Source có thể ảnh hưởng đến hầu hết các ngôn ngữ máy tính. Các cuộc tấn công mạnh mẽ vào chuỗi cung ứng có thể được thực hiện dễ dàng bằng các kỹ thuật này, do đó các tổ chức tham gia vào chuỗi cung ứng phần mềm cần thực hiện các biện pháp phòng thủ".
Được gọi là "tấn công Trojan Source", kỹ thuật này khai thác sự tinh vi trong các tiêu chuẩn mã hóa văn bản như Unicode để tạo ra source code có token được mã hóa logic theo thứ tự khác với mã mà chúng được hiển thị, dẫn đến không thể nhận diện trực tiếp các lỗ hổng. Đây là nghiên cứu của Nicholas Boucher và Ross Anderson (Đại học Cambridge).
Các lỗ hổng (CVE-2021-42574 và CVE-2021-42694) ảnh hưởng đến trình biên dịch của tất cả các ngôn ngữ lập trình phổ biến như C, C++, C#, JavaScript, Java, Rust, Go và Python.
Trình biên dịch là chương trình dịch mã nguồn cấp cao mà con người có thể đọc được thành các biểu diễn cấp thấp hơn như ngôn ngữ hợp ngữ, mã đối tượng hoặc mã máy mà sau đó hệ điều hành có thể thực thi.
Về cốt lõi, vấn đề liên quan đến thuật toán hai chiều (hoặc Bidi) của Unicode cho phép hỗ trợ cả ngôn ngữ từ trái sang phải (ví dụ: tiếng Anh) và từ phải sang trái (ví dụ: tiếng Ả Rập), đồng thời có tính năng được gọi là ghi đè hai chiều cho phép viết các từ từ trái sang phải bên trong một câu từ phải sang trái hoặc ngược lại.
Đầu ra của trình biên dịch lẽ ra sẽ triển khai chính xác mã nguồn được cung cấp, nhưng sự khác biệt được tạo ra bằng cách chèn các ký tự ghi đè Unicode Bidi vào comment và string có thể tạo ra một kịch bản tạo ra mã nguồn hợp lệ về mặt cú pháp, trong đó thứ tự hiển thị của các ký tự thể hiện logic phân kỳ từ logic thực tế.
Nói cách khác, cuộc tấn công hoạt động bằng cách nhắm mục tiêu mã hóa các tệp mã nguồn để tạo ra các lỗ hổng, thay vì cố tình đưa ra các lỗi logic, để sắp xếp lại một cách trực quan các token trong mã nguồn, trong khi được hiển thị theo cách hoàn toàn có thể chấp nhận được, đánh lừa trình biên dịch xử lý mã theo một cách khác và thay đổi đáng kể luồng chương trình.
Các nhà nghiên cứu phỏng đoán: "Trên thực tế, chúng tôi đảo chương trình A thành chương trình B". "Nếu sự thay đổi trong logic đủ tinh tế để không bị phát hiện, hacker có thể tạo ra các lỗ mà không bị phát hiện".
Các nhà nghiên cứu cảnh báo rằng các mã hóa đối nghịch như vậy có thể có tác động nghiêm trọng đến chuỗi cung ứng, khi các lỗ hổng phần mềm vô hình được đưa vào phần mềm nguồn mở, có khả năng ảnh hưởng đến tất cả người dùng phần mềm. Thậm chí tệ hơn, các cuộc tấn công Trojan Source có thể trở nên nghiêm trọng hơn nếu hacker sử dụng các homoglyphs để xác định lại các chức năng đã có từ trước trong một gói upstream và gọi chúng từ một chương trình nạn nhân.
Các nhà nghiên cứu lưu ý: “Thực tế lỗ hổng Trojan Source có thể ảnh hưởng đến hầu hết các ngôn ngữ máy tính. Các cuộc tấn công mạnh mẽ vào chuỗi cung ứng có thể được thực hiện dễ dàng bằng các kỹ thuật này, do đó các tổ chức tham gia vào chuỗi cung ứng phần mềm cần thực hiện các biện pháp phòng thủ".
Nguồn: The Hacker News