交換機系統Asterisk配置記憶體不足,肇生存取衝突
- 發布單位:TWCERT/CC
- 更新日期:2019-04-03
- 點閱次數:635
CVE編號
內文
●概述:
以C語言開發的Asterisk,是首個輕量級軟體式交換機(PBX),具備語音信箱、線上會議、互動應答等功能,可運行於Linux、NetBSD、OpenBSD、FreeBSD、Mac OS X、Solaris、Windows等平台,據Jan Hoffmann研究,Asterisk在計算domain name字串所需緩衝區時出錯,僅獲得壓縮資料長度,即經由dns_srv_alloc()、dns_naptr_alloc()兩函數配置記憶體,然實際儲存資料卻是展開後域名字串,若遭遇偽冒response探勘手法,即可能發生越界寫入,引發記憶體區段錯誤(segfault),干擾其他程序運行而中斷服務,Digium已公告改良版本,使用單位請儘速升級。
●編註:
(1)緩衝區配置錯誤
Asterisk程式內專門處理SRV及NAPTR之lookups紀錄的函數中,有dns_srv_alloc()、dns_naptr_alloc(),兩者目的皆是為了lookups紀錄中domain name字串變數配置適當buffer,故呼叫dn_expand()去計算所需byte量,以便將解壓縮的域名字串存入ast_dns_srv_record 或 ast_dns_naptr_record資料結構中,可是dn_expand()實際取得數值卻是domain name壓縮過的資料長度,並非展開後的域名字串長度,假設某網域20字元,壓縮編碼後僅10bytes,當然buffer size不夠,但儲存domain name時缺乏檢查,直接越界覆蓋記憶體,造成Segmentation fault,破壞其他程序運行穩定性。
(2)資料勘誤
Digium, Inc官網資料顯示此漏洞CVE編號,然securitytracker 網站(https://securitytracker.com/id/1042142)卻顯示無編號;另Digium, Inc描述駭客探勘手法為惡意response,securitytracker網站卻記載為request,兩者頗有差距。
影響產品
解決辦法
相關連結
- https://issues.asterisk.org/jira/browse/ASTERISK-28127
- https://www.asterisk.org/downloads/asterisk-news/asterisk-1562-and-1601-now-available-security
- http://downloads.asterisk.org/pub/security/AST-2018-010.html
- http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-19278
- http://www.vuxml.org/freebsd/c6fb2734-e835-11e8-b14b-001999f8d30b.html
- http://www.security-database.com/detail.php?alert=CVE-2018-19278&utm_source=feedburner&utm_medium=fe
- https://zh.wikipedia.org/wiki/Asterisk
- https://www.celya.fr/wp-content/uploads/2016/11/Asterisk_Logo.png