2011-05-08 31 views
16

Từ hi.baidu.com/monyer/blog/item/d0f5d8b48fc442758bd4b2a4.htmlVSS vector khủng khiếp này vẫn còn là một vấn đề trong Internet Explorer?

Char 192 là <font face="xyz[0xC0]">not </font><font face=" onmouseover=alert(192) s=[0xC0]" >available</font>

0xC0 là một trong những 32 byte đầu tiên của chuỗi 2 byte (0xC0-0xDF) trong UTF-8. Vì vậy, khi IE phân tích cú pháp mã trên, nó sẽ xem xét 0xC0 và trích dẫn sau đây như một chuỗi, và do đó hai cặp phần tử FONT này sẽ trở thành một với giá trị của tham số FACE là "xyz[0xC0]">not </font><font face=". 0xC0 thứ hai sẽ bắt đầu một chuỗi 2 byte khác làm giá trị của tham số NOTEXIST không được trích dẫn. Do ký tự dấu cách sau dấu ngoặc kép, 0xE0-0xEF là byte đầu tiên của chuỗi 3 byte, cùng với dấu ngoặc kép và ký tự khoảng trắng sẽ được coi là giá trị của tham số NOTEXIST.

Về cơ bản, một số byte nhất định cho biết bắt đầu ký tự 3 byte trong chuỗi UTF-8. Nếu những byte đó thực hiện theo cách của họ lên một trang web, IE sẽ ăn hai byte tiếp theo ngay cả khi kết quả ba byte không tạo nên một ký tự UTF-8 hợp lệ. Điều này có thể khiến IE ăn hết các trích dẫn kết thúc trong các thuộc tính HTML, làm hỏng sự tàn phá của XSS.

Bài viết này là về IE6, vì vậy tôi có hai câu hỏi chặt chẽ-coupled:

  1. Đây có phải là vẫn còn một vấn đề trong các phiên bản sau này của IE?
  2. Nếu vậy, có phương pháp hoàn toàn phía máy khách để tránh không? Nói cách khác, giả sử một chuỗi "bị nhiễm độc" được nhận từ máy chủ, có điều gì có thể được thực hiện phía máy khách để ngăn chặn lỗ hổng này không?
+0

@Karl Tôi đánh giá cao việc chỉnh sửa, nhưng tôi đã cố gắng tránh liên kết đến trang web đó, vì nó có vẻ hơi giống một chút. Tôi không chắc chắn về các quy tắc liên quan đến việc liên kết đến các trang web tại đây. Bạn có nghĩ rằng nó nên được liên kết (câu hỏi trung thực)? – ClosureCowboy

+0

Trang thực sự là seedy :) Tôi không biết nếu có bất kỳ quy tắc, do đó, thay vì không liên kết nó. –

+0

Tôi có thể không biết chuyện gì đang diễn ra. Nhưng tôi đã thử điều này trên JSFiddle trong IE9, và không có di chuột qua. – sdleihssirhc

Trả lời

6

Nếu tôi hiểu chính xác lỗ hổng bảo mật, địa chỉ này được giải quyết vào năm 2006 theo số Microsoft Security Bulletin MS06-021.

Lỗ hổng thực thi mã từ xa tồn tại theo cách Internet Explorer giải mã mã HTML UTF-8 được mã hóa đặc biệt. Kẻ tấn công có thể khai thác lỗ hổng này bằng cách xây dựng một trang Web được tạo đặc biệt có khả năng cho phép thực thi mã từ xa nếu người dùng truy cập vào trang web được tạo đặc biệt.

+0

+1 Cảm ơn bạn đã trả lời. Ngày của bản tin bảo mật là 2006/06/13; ngày của bài báo là 2006/08/7. Ngoài ra, các bài đăng trong [this] (http://www.mail-archive.com/[email protected]/msg38279.html) danh sách gửi thư - thảo luận về cùng một lỗ hổng - cũng ** cũng ** từ tháng 8. Ngoài ra, một số cuộc trò chuyện liên quan đến XSS gần đây trên các blog công nghệ đã đề cập đến vấn đề này, tham khảo bài viết được trích dẫn ban đầu. Điều này làm cho tôi tự hỏi liệu vấn đề đã thực sự được giải quyết chưa. Đáng buồn thay, tôi không có một máy Windows để kiểm tra điều này trên (và tôi không chắc chắn làm thế nào tôi muốn chèn những byte không hợp lệ). – ClosureCowboy

+0

Thời gian ám chỉ tôi rằng các bài viết được viết để đáp lại bản tin. –

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