Dynamic data tainting

Một phần của tài liệu Nghiên cứu lỗ hổng bảo mật Cross-Site Scripting và xây dựng chương trình phát hiện sâu mã độc phát tán (Trang 26)

Trong một cuộc tấn công XSS, đoạn mã độc được tiêm vào đầu ra của trang web. Thông thường kẻ tấn công sẽ có toàn quyền kiểm soát nội dung của đoạn mã tiêm

đó. Nếu có hạn chế thì chỉ là chiều dài của đoạn mã nếu nó được nhúng thông qua một URL, vì chiều dài của một url là bị hạn chế.

Mã tiêm được gửi từ ứng dụng web tới trình duyệt web, sau đó sẽ được thực thi trong trình duyệt của người dùng, khi đó nó có thể thu thập thông tin nhạy cảm, xử lý nó (ví dụ nối nó thêm vào một chuỗi) và cuối cùng gửi cho máy chủ web mà được điều khiển bởi kẻ tấn công. Bởi vì đoạn mã được chạy trong bối cảnh của ứng dụng web, nên các hành động của nó không được phân biệt với các hành vi của ứng dụng bình thường. Vì thế injected code có đầy đủ quyền để xử lý thông tin và truyền đi. Ví dụ để lọt qua máy quét an ninh cái mà tìm kiếm các chuỗi kí tự nhất định trong dữ liệu truyền đi bởi trình duyệt web, injected code có thể thực hiện mã hóa thông điệp trước khi nó được gửi đi. Để theo dõi việc xử lý thông tin nhạy cảm, khái niệm “dynamic data tainting” được sử dụng. “Tainting” nghĩa là dữ liệu chứa thông tin nhạy cảm quan trọng được đánh dấu lúc đầu. Đối với mỗi bước thực hiện của chương trình, kết quả của chúng phải được đánh dấu nếu toán hạng được sử dụng là bị đánh dấu và nó có thể truyền thông tin với bước thực hiện này. “dynamic” có nghĩa là luồng thông tin được theo dõi khi chương trình thực thi.

Các phần sau đây sẽ giải thích một cách rõ ràng hơn về các bước thực hiện. Phần 3.1.1 sẽ trình bày tất cả những nguồn có chứa thông tin nhạy cảm. Trong khi ở phần 3.1.2 sẽ cung cấp chi tiết về việc theo dõi dữ liệu bị đánh dấu trong thời gian thực thi chương trình.

Một phần của tài liệu Nghiên cứu lỗ hổng bảo mật Cross-Site Scripting và xây dựng chương trình phát hiện sâu mã độc phát tán (Trang 26)