PDA

View Full Version : JavaScript hijacking - Lỗ hổng "chết người" của Web 2.0



matrix
16-04-07, 08:04 PM
Các nhà nghiên cứu về bảo mật đă t́m thấy một dạng tấn công mới thông qua Web chỉ nhằm vào các ứng dụng Ajax đang rất được ưa chuộng trong trào lưu Web 2.0.

Foritfy Software, hăng đă t́m ra lỗ hổng mới trên với tên gọi “JavaScript hijacking” cho rằng hầu hết các bộ công cụ (toolkit) Ajax đều có lỗi này.

“JavaScript hijacking cho phép những kẻ tấn công trái phép đọc được dữ liệu nhạy cảm từ các ứng dụng bị lỗi bằng phương pháp tương tự như phương pháp thường được sử dụng để tạo các mashup (một dạng ứng dụng web kết hợp ít nhất hai dịch vụ từ các trang Web khác hẳn nhau)” – Chess viết trong một tài liệu hướng dẫn (whitepaper) đă được công bố.

Mọi người đều cho rằng sự phát triển của mô h́nh lập tŕnh Web Ajax chỉ có thể làm gia tăng các lỗi bảo mật đă có. Rất ít người nghĩ nó có khả năng gây ra một lỗi bảo mật mới, Brian Chess, “kiến trúc sư trưởng” của Fortify nói.

Phương pháp thiết kế ứng dụng web Ajax sử dụng cách thức truyền dữ liệu dưới nền của mỗi trang, không cần thiết phải làm mới (refresh) toàn bộ lại trang mà người dùng đang tương tác. Điều này tạo cho người dùng cảm giác các ứng dụng Web giống như các ứng dụng desktop. Gmail là một trong các ứng dụng Web như thế.

Bằng cách khai thác các lỗ hổng “JavaScript hijacking”, kẻ tấn công có thể lấy được thư từ hộp thư Gmail của nạn nhân hoặc có thể truy cập dữ liệu được truyền qua ứng dụng Ajax.

Mặc dù Ajax là viết tắt của “Asynchronous JavaScript and XML” (JavaScript không đồng bộ và XML) nhưng không nhất thiết phải sử dụng XML để truyền tải. Bạn có thể sử dụng HTML, văn bản không định dạng (plaintext) hoặc JavaScript.

Theo Chess, vấn đề nằm ở chính chỗ này. Khi ứng dụng sử dụng định dạng dữ liệu JavaScript (viết tắt là JSON) thay v́ XML để truyền dữ liệu giữa tŕnh duyệt và máy phục vụ Web, nó sẽ được tŕnh duyệt xử lư theo một cách khác với thông thường.

Các tŕnh duyệt sử dụng các qui tắc để hạn chế nơi dữ liệu HTML được miền gửi tới gọi là “chính sách cùng một nguồn” ("same origin policy"), nhưng qui tắc này bị bỏ qua khi dữ liệu có dạng JavaScript.

Một website hoàn toàn có khả năng chạy các dữ liệu JavaScript đang đặt trên một miền khác. Đây là kĩ thuật được sử dụng trên các ứng dụng Google Adsense hay Google Maps.

Hiện tại Fortify khẳng định rằng kẻ tấn công có thể khai thác lỗ hổng này để đăng nhập vào các ứng dụng Ajax, đóng giả là các nạn nhân và nhận dữ liệu mà ứng dụng này cung cấp b́nh thường dưới dạng JSON.

Ví dụ về một trường hợp tấn công, một nạn nhân khi đă xác thực vào ứng dụng Ajax sẽ có phần cookie đăng nhập trên tŕnh duyệt của ḿnh, sau đó nạn nhân này bị lừa truy cập vào trang web của kẻ tấn công. Trang web này có chứa các đoạn mă JavaScript thực hiện các lời gọi tới ứng dụng Ajax. Dữ liệu nhận được từ ứng dụng sẽ được gửi đến cho kẻ tấn công.

Nếu ứng dụng Ajax là một dịch vụ Webmail, kẻ tấn công có thể lấy được nội dung của hộp thư đến hoặc sổ địa chỉ. Thực vậy, các nghiên cứu này của Fortify đă dựa trên kết quả t́m thấy được trước đó của Jeremiah Grossman về lỗi tương tự trong ứng dụng Gmail vào năm ngoái.

Theo Fortify, có 11 trong số 12 nền tảng (framework) họ đă kiểm tra không có khả năng chống đỡ được những tấn công dạng này. Tuy nhiên công ty này đă không kiểm thử trên các ứng dụng đang hoạt động.

Các nền tảng bị lỗi gồm có: Microsoft ASP.NET AJAX (c̣n gọi là Atlas), XAJAX và Google Web Toolkit, Prototype, Script.aculo.us, Dojo, Moo.fx, jQuery, Yahoo! UI, Rico, và MochiKit.

Theo Chess, những nhà cung cấp này đă được thông báo và họ sẽ sửa lỗi trong những thư viện sắp được tung ra. Các trang whitepaper đang được phát hành để giúp những người lập mă đă từng viết các đối tượng Ajax có thể xây dựng thêm các bộ chống đỡ tương tự.

V́ Ajax đang ở thời ḱ đầu, nên đây chưa hẳn là một vấn đề lớn như hiện tượng tràn bộ đệm khi mới được t́m ra, Chess nói. Không có nhiều ứng dụng Ajax lớn cần phải sửa lỗi. Do đó hiện nay Fortify muốn công khai kết quả t́m kiếm của ḿnh càng rộng răi càng tốt để loại bỏ được vấn đề này ngay từ đầu.
(Sưu tầm - Nguồn : http://www.quantrimang.com/view.asp?Cat_ID=9&Cat_Sub_ID=8&news_id=37052)