Phát hiện kỹ thuật “Trojan Source” mới cho phép tin tặc “giấu” lỗ hổng trong mã nguồn


Một loại lỗ hổng mới xuất hiện có thể bị tin tặc khai thác để lây nhiễm phần mềm độc hại bằng cách thay đổi logic được định nghĩa bởi mã nguồn (source code) của ứng dụng. Điều này vô tinh gia tăng rủi ro cho các bên cung cấp phần mềm và chuỗi cung ứng sản phẩm.



Trong một bài báo mới được xuất bản, 2 nhà nghiên cứu của Đại học Cambridge, Nicholas Boucher và Ross Anderson cho biết, một kỹ thuật với tên gọi “ Trojan Source attacks ” 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 mã nguồn với các token được mã hóa logic theo thứ tự khác với mã hiển thị của chúng, từ đó dẫn đến việc code reviewer không thể nhận diện trực tiếp các lỗ hổng.



Với định danh là CVE-2021-42574 và CVE-2021-42694, các lỗ hổng ả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 ngôn ngữ nguồn cấp cao mà con người có thể đọc được thành các ngôn ngữ cấp thấp hơn như hợp ngữ, mã đối tượng hoặc ngôn ngữ máy mà 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 (hay còn gọi là 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à phải sang trái (tiếng Ả Rập, tiếng Do Thái). Ngoài ra, còn có tính năng ghi đè hai chiều cho phép viết các từ theo thứ tự từ trái sang phải vào bên trong một câu từ phải sang trái hoặc ngược lại. Với tính năng này, các văn bản có hướng đọc khác có thể được nhúng vào bên trong các khối văn bản lớn.



Mặc dù đầu ra của trình biên dịch lẽ ra sẽ thực hiện chính xác mã nguồn đã được cung cấp, nhưng sự khác biệt xuất hiện do chèn các ký tự ghi đè Unicode Bidi vào các comment và string có thể tạo ra một mã nguồn hợp lệ về mặt cú pháp nhưng thứ tự hiển thị của các ký tự theo trình tự logic khác với logic thực tế.



Nói cách khác,  thay vì cố tình tạo ra các lỗi logic, mục tiêu của cuộc tấn công là mã hóa các tệp mã nguồn nhằm tạo ra các lỗ hổng để sắp xếp lại thứ tự hiển thị của các token trong mã nguồn. Mặc dù mã nguồn này sẽ hiển thị trong trạng thái chuẩn nhưng có thể đánh lừa trình biên dịch xử lý mã theo cách khác và thay đổi hoàn toàn luồng chương trình.- ví dụ: tạo ra một comment hiển thị giống như code.



Các nhà nghiên cứu cho biết: “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 logic đủ tinh tế để không bị phát hiện trong các thử nghiệm tiếp theo, kẻ tấn công có thể tạo ra các lỗ hổng mà không bị bại lộ.”



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 xâm nhập vào phần mềm mã nguồn mở, có khả năng ảnh hưởng đến tất cả người dùng. Không chỉ vậy, các cuộc tấn công Trojan Source có thể trở nên nghiêm trọng hơn nếu kẻ tấn công sử dụng các hàm đồng nhất ( homoglyphs ) để xác định lại các chức năng có sẵn trong gói upstream và gọi chúng là một chương trình nạn nhân.



Bằng cách thay thế các chữ cái Latinh bằng các ký tự tương tự từ các bộ mã Unicode khác (ví dụ: thay đổi “H” thành Cyrillic “Н”), tác nhân nguy hại có thể tạo ra một hàm đồng nhất có vẻ giống với hàm gốc nhưng thực ra có chứa mã độc hại. Sau đó, mã độc này có thể xâm nhập vào một dự án nguồn mở mà không bị kiểm soát. Một bài báo cho biết cuộc tấn công kiểu này có thể nguy hại khi áp dụng với một hàm phổ biến có sẵn thông qua một thư viện hoặc một dependency được nhập vào.



Các nhà nghiên cứu cảnh báo: “Trên thực tế, lỗ hổng Trojan Source ảnh hưởng đến hầu hết các ngôn ngữ máy tính. Điều đó khiến lỗ hổng này trở thành một cơ hội hiếm hoi để đối chiếu các phản hồi giữa đa nền tảng và nhà cung cấp chéo hợp lệ về mặt sinh thái trên toàn hệ thống. 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ách sử dụ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 phải triển khai các biện pháp phòng thủ.”



Theo The Hacker News
The post Phát hiện kỹ thuật “Trojan Source” mới cho phép tin tặc “giấu” lỗ hổng trong mã nguồn appeared first on SecurityDaily .

Top News