9

Gần đây tôi đã đọc một tiêu đề giấy "All You Ever Wanted to Know about Dynamic Taint Analysis and Forward Symbolic Execution (but Might Have Been Afraid to Ask)" bởi Dr. EJ Schwartz. Trong bài báo, ông chủ yếu nói về các ứng dụng của họ trong bối cảnh an ninh mức nhị phân.Khoảng cách giữa việc thực thi biểu tượng và phân tích taint là gì?

Tôi tò mò về sự khác biệt chính xác giữa phân tích taint độngthực hiện biểu tượng chuyển tiếp.

Từ những gì tôi có thể thấy, phân tích vết nhơ theo dõi các luồng thông tin từ đối tượng x (nguồn) để phản đối y (chìm), bất cứ khi nào thông tin chứa trong biến x được chuyển giao cho đối tượng y. Vì vậy, mối quan tâm chính là đối tượng có thể là bị ảnh hưởng quá mức bởi nguồn. Trong khi thực thi biểu tượng xử lý một số đầu vào làm giá trị tượng trưng và cố gắng để biểu thị các biến khác với các biến tượng trưng; do đó nó trả lời về điều kiện nào đầu vào tượng trưng ảnh hưởng đến các chương trình thành công.

Tôi có thể thấy rằng ở cấp độ nhị phân, phân tích sơ bộ thường được đề cập đến với lỗ hổng do địa chỉ trả lại ghi đè; trong khi thực hiện biểu tượng có thể đối phó với nhiều loại vấn đề dễ bị tổn thương như integer overflow, lỗi runtime khẳng định, nguồn rò rỉ (ví dụ, rò rỉ bộ nhớ, tập tin mở/đóng), tràn bộ đệm. Tuy nhiên có vẻ như phân tích taint hiện đại không chỉ liên quan đến việc phân tích luồng dữ liệu , hầu hết trong số họ sẽ theo dõi các điều kiện điều khiển luồng; và trong một số tình huống phát hiện dễ bị tổn thương, đầu vào bị nhiễm độc cũng được biểu diễn như là giá trị tượng trưng và được nhân giống như cách thực hiện biểu tượng. Ở phía bên kia, các công cụ thực thi biểu tượng không thể sử dụng đầy đủ các giá trị ký hiệu được phân cách bởi các điều kiện đường dẫn khác nhau do các giới hạn của các bộ giải quyết ràng buộc cơ bản và thời gian chạy thực hiện/giải thích ; do đó, họ không thể đạt được chi tiết cao chi nhánh hoặc đường dẫn mức độ phù hợp như mong đợi.

Vì vậy, trong trường hợp tổng quát, chúng ta có thể nói rằng phân tích taint một loại thực hiện biểu tượng thô, hoặc thực hiện mang tính biểu tượng một loại phân tích vết nhơ chính xác?

+0

Có thể có giá trị để đăng câu hỏi này tại StackExchange Computer Science hoặc StackExchange Reverse Engineering. – stackoverflowwww

Trả lời

2

Câu hỏi thú vị! Đây là 2 xu của tôi: thực hiện biểu tượng sử dụng một loại phân tích taint để xây dựng các ràng buộc đường dẫn. Việc thực thi biểu tượng cũng sử dụng một bộ giải đồ SMT/SAT để tạo ra các giá trị cụ thể cho các biến và/hoặc các đầu vào, sao cho một ràng buộc đường dẫn nhất định được thỏa mãn.

Kể từ khi phân tích taint không sử dụng một giải quyết SMT/SAT, tôi sẽ nói nó không phải là một loại thực hiện biểu tượng. Có thể người ta có thể nói phân tích taint là một phần của việc thực hiện biểu tượng.

Đây chỉ là một ý kiến. Xin vui lòng thử thách nó.

0

Tôi đồng ý với @Benny, đây thực sự là một câu hỏi thú vị. Bạn có thể học được rất nhiều bằng cách xây dựng các loại câu hỏi này và thậm chí nhiều hơn khi bạn cố gắng trả lời chúng.

Tôi muốn thêm vào câu trả lời của Benny:

Để thực hiện theo dõi vết nhơ và thực hiện mang tính biểu tượng, người ta phải xác định ngữ nghĩa của ngôn ngữ (ví dụ x86, lắp ráp trong trường hợp mã nhị phân). Ví dụ: người ta phải mô tả những gì

add eax, ebx 

'nghĩa là', tức là trạng thái. Định nghĩa của ngữ nghĩa theo dõi taint có thể được xem như là một loại phụ đề tập hợp con ngữ nghĩa thực thi biểu tượng. Ngữ nghĩa theo dõi mờ nhạt được mã hóa trong ngữ nghĩa thực thi biểu tượng. Phần chung là

  • Nếu ebx bị nhiễm độc, thì eax bị nhiễm độc.
  • Nếu ebx là tượng trưng (IOW chứa một công thức SMT chứa một hoặc mang tính biểu tượng hơn vars) sau đó eax là biểu tượng

Tuy nhiên, ngữ nghĩa để thực hiện biểu tượng phải chứa biết thêm thông tin (ví dụ như các phép toán toán học chính xác): - eax là "bất cứ điều gì là trong eax trước khi" + "bất cứ điều gì là trong ebx trước khi"

Hãy viết ý kiến ​​hoặc chính xác cho tôi!

0

Theo ý kiến ​​của tôi, để trả lời câu hỏi của bạn, chúng tôi phải trả lời câu hỏi sau: i) thực hiện biểu tượng có khả năng tìm tất cả các đường dẫn thực thi phân tích có thể, và hơn thế nữa; ii) phân tích taint có tiềm năng để tìm tất cả các đường dẫn thực hiện mà thực thi biểu tượng có thể, và nhiều hơn nữa; iii) cả hai đều có cùng tiềm năng tìm ra các đường dẫn thực hiện tương tự; iv) có thể cả hai tính toán đường dẫn thực hiện mà người khác không thể.

Theo ý kiến ​​của tôi, iv) là chính xác, có nghĩa là không phải là tập hợp con. Tuy nhiên, tôi đồng ý rằng thực sự có sự chồng chéo lớn.

Chúng tôi có thể loại bỏ các tùy chọn i) và iii) vì việc thực thi biểu tượng chỉ tìm thấy các đường dẫn thực thi khả thi, trong khi phân tích taint có thể tìm thấy các phân tích không khả thi tại nó.

Để loại bỏ tùy chọn ii), tôi nghĩ (sửa lỗi nếu tôi sai) có các đường dẫn thực thi mà việc thực hiện biểu tượng có thể phơi bày và phân tích không thể. Ví dụ:

for(int i=0;i<3;i++) { 
    if(someString.charAt(i)=='4') 
     //do something 
    else 
     //do something else 
} 

Trong trường hợp đó, thực thi biểu tượng cho thấy tất cả tám đường dẫn thực hiện có thể, trong khi phân tích taint (nếu tôi không nhầm) thì không.

+1

nếu chúng ta giới hạn đường dẫn thực hiện cho những người chỉ * khả thi *, các đường dẫn được tìm thấy bởi dấu gạch ngang luôn là tập hợp con của những người được tìm thấy bằng cách thực hiện biểu tượng, phải không? –

+0

Tôi tin như vậy, nhưng chúng tôi cần một người giải quyết smt cho rằng –

0

Tôi nghĩ rằng sự khác biệt quan trọng là liệu việc thực hiện là bê tông hoặc biểu tượng --- cho dù bạn đang quan tâm đến việc tuyên truyền taint (để kiểm tra sự rò rỉ thông tin hoặc kiểm soát dòng chảy hijack) trên một thực hiện bê tông đơn, hoặc nếu bạn muốn khám phá các khả năng khác tuyên truyền như vậy bằng cách khai thác sức mạnh của người giải quyết.Công suất của phân tích taint động nằm trong số chi phí thấp và do đó thích hợp để theo dõi thời gian chạy. Mặt khác, việc thực hiện biểu tượng (thuần/động) có khả năng khám phá các đường dẫn khác với đường dẫn cụ thể và do đó phù hợp cho phân tích ngoại tuyến về các thuộc tính bảo mật mà bạn quan tâm.

Các vấn đề liên quan