Rate this post

Cuộc tấn công này nhằm mục đích thao túng các biến công khai không phải là final được sử dụng trong mã di động, bằng cách đưa các giá trị độc hại vào đó, chủ yếu là trong các ứng dụng Java và C ++.

Các bài viết liên quan:

Khi một biến hoặc lớp thành viên công khai được sử dụng trong mã di động không được khai báo là cuối cùng, các giá trị của nó có thể bị thao túng một cách ác ý bởi bất kỳ hàm nào có quyền truy cập vào đó để mở rộng mã ứng dụng hoặc thu thập thông tin quan trọng về ứng dụng.

Các ví dụ

Một ứng dụng Java từ một ứng dụng nhất định bị kẻ tấn công mua lại và lật đổ. Sau đó, chúng khiến nạn nhân chấp nhận và chạy một Trojan hoặc mã độc hại đã được chuẩn bị để thao túng trạng thái và hành vi của đối tượng không phải cuối cùng. Mã này được khởi tạo và thực thi liên tục bằng JVM mặc định trên máy của nạn nhân. Khi nạn nhân gọi ra applet Java từ ứng dụng gốc bằng cách sử dụng cùng một JVM, quá trình độc hại có thể được trộn với applet gốc, do đó nó sửa đổi các giá trị của các đối tượng không phải final  và thực thi dưới thông tin xác thực của nạn nhân.

Trong ví dụ sau, lớp “any_class” được khai báo là final và biến “server_addr” không phải là:

public final class any_class extends class_Applet { public URL server_addr; … }

Trong trường hợp này, giá trị của biến “server_addr” có thể được đặt bởi bất kỳ hàm nào khác có quyền truy cập vào nó, do đó sẽ thay đổi hành vi của ứng dụng. Một cách thích hợp để khai báo biến này là:

public class any_class extends class_Applet { public final URL server_addr; … }

Khi một biến được khai báo là final, giá trị của nó không thể được sửa đổi.

Leave a Reply

Call now
%d bloggers like this: