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 trì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
trình duyệt và máy phục vụ Web, nó sẽ được trình duyệt xử lý theo một
cách khác với thông thường.
Các trì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 trình duyệt của mì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 kì đầ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 mình càng rộng rãi càng tốt
để loại bỏ được vấn đề này ngay từ đầu.