Nguồn Trojan, cuộc tấn công cho phép thêm các thay đổi mã ẩn đối với nhà phát triển

Vài ngày trước Các nhà nghiên cứu của Đại học Cambridge đã phát hành sự xuất bản của một kỹ thuật để thay thế các mã một cách tinh vi độc hại trong mã nguồn ứng dụng.

Phương thức tấn công đã chuẩn bị cho điều đó Nó đã được liệt kê theo CVE-2021-42574 Nó có tên Trojan Source và dựa trên sự hình thành văn bản trông khác với trình biên dịch / thông dịch và người xem mã.

Về nguồn Trojan

Phương pháp dựa vào việc áp dụng các ký tự Unicode đặc biệt trong các chú thích mã, thay đổi thứ tự hiển thị của văn bản hai chiều. Với sự trợ giúp của các ký tự điều khiển này, một số phần của văn bản có thể được hiển thị từ trái sang phải, trong khi những phần khác từ phải sang trái.

Trong thực tế hàng ngày, các ký tự điều khiển này có thể được sử dụng, ví dụ, để chèn các chuỗi tiếng Do Thái hoặc tiếng Ả Rập vào tệp mã. Tuy nhiên, nếu bạn sử dụng các ký tự này để kết hợp các dòng có hướng văn bản khác nhau trên cùng một dòng, các đoạn văn bản được hiển thị từ phải sang trái có thể chồng lên văn bản bình thường hiện có được hiển thị từ trái sang phải.

Với phương pháp này, một cấu trúc độc hại có thể được thêm vào mã, nhưng sau đó làm cho văn bản có cấu trúc này ẩn khi xem mã, thêm các ký tự được hiển thị từ phải sang trái trong nhận xét tiếp theo hoặc bên trong ký tự, điều này sẽ dẫn đến kết quả là các ký tự hoàn toàn khác nhau được xếp chồng lên phần chèn độc hại. Mã như vậy sẽ vẫn đúng về mặt ngữ nghĩa, nhưng nó sẽ được diễn giải và hiển thị theo cách khác.

Chúng tôi đã khám phá ra các cách để thao tác mã hóa các tệp mã nguồn để người xem và trình biên dịch của con người thấy các logic khác nhau. Một phương pháp đặc biệt nguy hiểm sử dụng các ký tự ghi đè định hướng Unicode để hiển thị mã dưới dạng đảo chữ của logic thực sự của nó. Chúng tôi đã xác minh rằng cuộc tấn công này hoạt động chống lại C, C ++, C #, JavaScript, Java, Rust, Go và Python và chúng tôi nghi ngờ rằng nó sẽ hoạt động chống lại hầu hết các ngôn ngữ hiện đại khác.

Trong khi xem lại mã, nhà phát triển sẽ phải đối mặt với thứ tự hình ảnh của các nhân vật và sẽ thấy một nhận xét đáng ngờ trong trình chỉnh sửa văn bản, giao diện web hoặc IDE, nhưng trình biên dịch và trình thông dịch sẽ sử dụng thứ tự logic của các ký tự và xử lý mã độc hại như vậy, bất kể văn bản hai chiều trong nhận xét. Một số trình chỉnh sửa mã phổ biến (VS Code, Emacs, Atom), cũng như các giao diện để xem mã trong kho (GitHub, Gitlab, BitBucket và tất cả các sản phẩm của Atlassian) đều bị ảnh hưởng.

Có một số cách để sử dụng phương pháp này để thực hiện các hành động độc hại: thêm một biểu thức ẩn "return", dẫn đến việc kết thúc sớm quá trình thực thi chức năng; kết luận trong nhận xét của các biểu thức thường được coi là cấu trúc hợp lệ (ví dụ, để vô hiệu hóa các kiểm tra quan trọng); Gán các giá trị chuỗi khác dẫn đến lỗi xác thực chuỗi.

Bên cạnh đó, một phương án tấn công khác đã được đề xuất (CVE-2021-42694), liên quan đến việc sử dụng các chữ đồng dạng, các ký hiệu có bề ngoài giống nhau, nhưng khác về ý nghĩa và có các mã Unicode khác nhau. Các ký tự này có thể được sử dụng trong một số ngôn ngữ trong hàm và tên biến để đánh lừa các nhà phát triển. Ví dụ: bạn có thể xác định hai hàm có tên không thể phân biệt được thực hiện các hành động khác nhau. Nếu không có phân tích chi tiết, bạn không thể hiểu ngay lập tức hàm nào trong số hai hàm này được gọi ở một nơi cụ thể.

Như một biện pháp bảo vệ, nên triển khai trong trình biên dịch, trình thông dịch và công cụ lắp ráp hỗ trợ các ký tự Unicode, hiển thị lỗi hoặc cảnh báo liệu có các ký tự điều khiển chưa được ghép nối trong nhận xét, ký tự chuỗi hoặc số nhận dạng thay đổi hướng đầu ra hay không. Các ký tự này cũng phải bị cấm một cách rõ ràng trong các đặc tả của ngôn ngữ lập trình và phải được tính đến trong các trình soạn thảo mã và giao diện để làm việc với các kho lưu trữ.

bên cạnh đó các lỗ hổng bảo mật đã bắt đầu được sửa chuẩn bị cho GCC, LLVM / Clang, Rust, Go, Python và binutils. GitHub, Bitbucket và Jira cũng đã chuẩn bị một giải pháp cùng với GitLab.

Cuối cùng Nếu bạn muốn biết thêm về nó, bạn có thể tham khảo các chi tiết trong liên kết sau đây.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: AB Internet Networks 2008 SL
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.