CVE-2020-3110、CVE-2020-3111、CVE-2020 -3118、CVE-2020-3119、CVE-2020-3120 cdpwn 解析


CVE-2020-3110、CVE-2020-3111、CVE-2020 -3118、CVE-2020-3119、CVE-2020-3120 cdpwn 解析

攻擊條件

在同一廣播域,黑客即可通過cdp協議非法入侵開啟CDP協議的思科設備,或者觸發dos漏洞

影響范圍

Routers:

  • ASR 9000 Series Aggregation Services Routers
  • Carrier Routing System (CRS)
  • Firepower 1000 Series
  • Firepower 2100 Series
  • Firepower 4100 Series
  • Firepower 9300 Security Appliances
  • IOS XRv 9000 Router
  • White box routers running Cisco IOS XR

Switches:

  • Nexus 1000 Virtual Edge
  • Nexus 1000V Switch
  • Nexus 3000 Series Switches
  • Nexus 5500 Series Switches
  • Nexus 5600 Series Switches
  • Nexus 6000 Series Switches
  • Nexus 7000 Series Switches
  • Nexus 9000 Series Fabric Switches
  • MDS 9000 Series Multilayer Switches
  • Network Convergence System (NCS) 1000 Series
  • Network Convergence System (NCS) 5000 Series
  • Network Convergence System (NCS) 540 Routers
  • Network Convergence System (NCS) 5500 Series
  • Network Convergence System (NCS) 560 Routers
  • Network Convergence System (NCS) 6000 Series
  • UCS 6200 Series Fabric Interconnects
  • UCS 6300 Series Fabric Interconnects
  • UCS 6400 Series Fabric Interconnects

IP Phones:

  • IP Conference Phone 7832
  • IP Conference Phone 8832
  • IP Phone 6800 Series
  • IP Phone 7800 Series
  • IP Phone 8800 Series
  • IP Phone 8851 Series
  • Unified IP Conference Phone 8831
  • Wireless IP Phone 8821
  • Wireless IP Phone 8821-EX

IP Cameras:

  • Video Surveillance 8000 Series IP Cameras

臨時修復

  1. 關閉CDP思科發現協議

漏洞解析

cve-2020-3120

漏洞點在cdp 協議報文Address中的Number of address。根據下圖可以看出,通過該值去申請內存空間,並且該值沒有經過任何校驗。

我們可以將Number of address修改為下圖的值去觸發dos漏洞

目前Cisco的修復方式為校驗該值正確性,確保申請的內存不會出發dos。如下

cve-2020-3120

該漏洞與上一個漏洞類似,主要影響的設備為IOS-XR

在該處,雖然對number of address的大小進行驗證,但是可以繞過。我們可以將該值設置為4*maxint/5 觸發漏洞

CVE-2020-3119 NX-OS Stack Overflow in the Power Request TLV

該漏洞出現在cdp協議交換poe幀的時候,沒有對部分值檢查,造成棧溢出,可以直接獲取設備的root權限的shell。如下圖

可以通過發送這種poe的幀去觸發dos漏洞。不過注意,該漏洞是可以造成rce的

可以通過下圖方法繞過aslr

cve-2020-3118 IOS XR Format String vulnerability in multiple TLVs

漏洞出現在下圖

可以看出,該處存在類似與prinntf的格式化字符串漏洞

CVE-2020-3111 IP Phones Stack Overflow in PortID TLV

漏洞出現在下面的地方

cdp協議的portid處。memcpy在復制內存時沒有對該值校驗,導致棧溢出

CVE-2020-3110 IP Cameras Heap Overflow in DeviceID TLV

漏洞出現在下圖

上面的代碼只是為從傳入數據包中解析出的端口ID分配了一個緩沖區,並將其值從傳入TLV復制到分配的緩沖區中。 但是,這里有一個簡單的錯誤,意味着可能發生瑣碎的堆溢出。 分配dst_buf的大小計算為len +1,以允許在端口ID字符串的末尾添加空終止符。 不幸的是,此變量(alloc_len)定義為uint8,而計算為TLV有效載荷長度(value_len)的大小定義為uint16。TLV中的length字段為16位,並且完全由攻擊者控制。 通過發送包含大小大於0xff的PortID TLV(0x01)的CDP數據包,攻擊者可以使堆分配的緩沖區溢出,並帶有攻擊者控制的數據


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM