Lỗ hổng tập trung vào chức năng reset 2FA. Về lý thuyết, đây là một hành động chỉ được thực hiện một lần (one-time action). Tuy nhiên, kẻ tấn công có thể khai thác một lỗ hổng Race Conditions bằng cách gửi đồng thời hàng loạt yêu cầu reset 2FA. Hệ thống do xử lý các yêu cầu song song không đúng cách đã gửi đi rất nhiều email reset 2FA tới nạn nhân thay vì chỉ một.

Điểm mấu chốt là bẫy giao diện người dùng (UI Trap): Khi nạn nhân đăng nhập, họ thấy một màn hình yêu cầu OTP. Họ lầm tưởng đây là bước đăng nhập bình thường, nhưng thực chất việc nhập OTP này là để xác nhận vô hiệu hóa 2FA.

PoC:

  1. Thực thi: Dùng Burp Suite Intruder để gửi đồng thời ~100 request POST đến endpoint: https://hackerone.com/sessions/two_factor_recovery/new nhằm khiến cho server của HackerOne gửi hàng loạt email reset 2FA đến nạn nhân.
  2. Nạn nhân đăng nhập bằng username và password và hệ thống hiển thị màn hình yêu cầu OTP (như đã mô tả ở trên).
  3. Nạn nhân nhập mã OTP từ ứng dụng của họ và điều này khiến cho 2FA bị vô hiệu hóa.
  4. Kẻ tấn công giờ có thể đăng nhập chỉ với username và password.

Hạn chế:

  • Kẻ tấn công bắt buộc phải có sẵn mật khẩu của nạn nhân.
  • Yêu cầu sự tương tác của nạn nhân (phải tự đăng nhập và nhập mã OTP).

Resources