Thứ 4 tuần vừa qua, trong lúc sử dụng trang thương mại điện tử Tiki.vn để mua hàng, tôi tình cờ phát hiện lỗ hổng Cross Domain Resource Sharing (gọi tắt là CORS – lỗ hổng tồn tại trong quá trình chia sẻ tài nguyên thông qua nhiều site khác nhau) đang tồn tại trong các API của Tiki.
Thông tin lỗ hổng bảo mật
Nguy cơ
Lỗ hổng này dẫn tới nguy cơ thông tin người dùng của Tiki có thể bị các trang khác lấy được trong quá trình người dùng lướt web. Những thông tin lấy được bao gồm tất cả thông tin mua hàng của người dùng trong đó bao gồm:
Tên người dùng
Số điện thoại: Có thể bị thu thập để tạo cơ sở dữ liệu tin rác.
Địa chỉ nhà: Các địa chỉ giao hàng của người dùng
Danh sách các món hàng đã mua: Bạn nào mua Durex chắc cũng không muốn người khác biết cho lắm 🙂
Access Token và Cookie: Có thể chiếm toàn bộ tài khoản Tiki.vn của bạn đang sử dụng. (phần account takeover này mình sẽ trình bày trong phần sau, sau khi tiki thực hiện fix lỗi)
… Và có những thông tin mình không biết Tiki thu thập để làm gì.
Tất cả những thông tin mà Tiki cho phép người dùng truy cập đều có thể bị một trang web khác thu thập được trong quá trình khai thác CORS.
Kịch bản khai thác
Thông tin người dùng có thể bị khai thác khi sử dụng các dịch vụ khác, ví dụ người dùng đã mua hàng, đăng kí, đăng nhập tài khoản ở Tiki.vn nhưng không đăng xuất tài khoản, khi sử dụng một trang web xem phim, mua hàng khác, v.v. trang web đó sử dụng một popup, hoặc lưu thẳng script trong trang để có thể thu thập thông tin người dùng thông qua quá trình thực hiện JavaScript.
Ví dụ: Một trang web có thể lấy được thông tin người dùng từ tiki.vn (đây là trang PoC của mình, mình sẽ public khi Tiki đã vá lỗ hổng thành công):