歡迎來到 黑吧安全網 聚焦網絡安全前沿資訊,精華內容,交流技術心得!

CVE-2019-5096:GoAhead遠程代碼執行漏洞分析

來源:本站整理 作者:佚名 時間:2019-12-05 TAG: 我要投稿

GoAhead是一個開源(商業許可)、簡單、輕巧、功能強大、可以在多個平臺運行的嵌入式Web Server,可在github下載源碼,鏈接如下:
https://github.com/embedthis/goahead
GoAhead Web服務器最近被曝光在版本v5.0.1,v.4.1.1和v3.6.5中存在一個可利用的代碼執行漏洞,漏洞存在http請求的multi-part/form-data字段處理中,若是發送畸形的HTTP請求,可導致GoAhead Web服務器在處理此請求期間觸發double-free漏洞。 該畸形請求可以未經身份驗證的GET或POST請求形式發送,并且請求的服務器上不需要存在web頁面。
 
0x01 漏洞分析
漏洞曝光者給出了觸發漏洞的源碼:
/ src/upload.c /
66 static void freeUploadFile(WebsUpload *up)
67 {
68 if (up) {
69 if (up->filename) { // BUG: First UAF here
70 unlink(up->filename); // BUG: UAF/unlink - probably not a good idea
71 wfree(up->filename); // BUG: Double free here
72 }
73
74 wfree(up->clientFilename);
75 wfree(up->contentType);
76 wfree(up);
77 }
78 }
經過筆者的分析發現,freeUploadFile()函數會在/src/upload.c的websFreeUpload()函數中調用,而websFreeUpload()函數會在/src/http.c中調用,/src/http.c中termWebs()函數會調用websFreeUpload()函數,/src/http.c中reuseConn()函數會調用termWebs()函數,從中可以看出漏洞觸發函數freeUploadFile()的調用過程。
在函數freeUploadFile()的調用過程中,查看源碼可發現有兩行如下代碼:
/ src/upload.c /
255 freeUploadFile(wp->currentFile);
256 file = wp->currentFile = walloc(sizeof(WebsUpload));
在此處變量 wp->currentFile會被free一次,但是被free的變量wp->currentFile在代碼:
/ src/upload.c /
371 hashEnter(wp->files, wp->uploadVar, valueSymbol(file), 0);
372 defineUploadVars(wp);
在此處代碼中把變量wp->currentFile加入了一個數組中,該數組中的變量在接下來的代碼中會被free一次,free代碼如下:
/ src/upload.c /
86 for (s = hashFirst(wp->files); s; s = hashNext(wp->files, s)) {
87 up = s->content.value.symbol;
88 freeUploadFile(up);
變量wp->currentFile再次被free之后,導致了double-free漏洞觸發,是fastbin double free,利用方法和思路已經很成熟。
 
0x02 漏洞補丁
查看github源碼可以發現,在v5.10版本中存在一處#287修補,如下圖所示:

從修補的結果來看,源碼維護方在src/upload.c中的373行添加了一句賦0操作,通過將變量 wp->currentFile賦0以后,/src/upload.c第255行不會再對變量進行free操作,因此也不會發生double-free的漏洞了。
 
0x03 修補方案
鑒于GoAhead Web服務器支持的體系結構和操作系統的非常廣泛,使用面非常廣,分布在大量交換機、路由器、智能攝像頭等IOT設備中,下圖是使用鐘馗之眼搜索的分布數量:

由于實際情況中,設備廠商可能會對GoAhead Web服務器進行裁減或者修改,與原來的默認代碼不一致,會致使漏洞可產生的效果或者利用方法不同,但是默認配置的話,漏洞是存在的,建議設備廠商盡快修補。
 

【聲明】:黑吧安全網(http://www.zjtpzs.live)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。
  • 最新更新
    • 相關閱讀
      • 本類熱門
        • 最近下載
        神秘东方电子游艺 经典单机游戏四人麻将 众晟商务股票配资 江西11选五5开奖结果今天 188比分直播吧捷报比分 同城游美女捕鱼游戏 股票股票 3d历史今天开奖号 贵阳按摩好 斗鱼网一尾中特 遇乐棋牌大厅n 未来陕西麻将官方客服电话 10分11选5走势图 皇家炸金花aaa最新版下载 兰州酒店一条龙 湖北快3历史数据 期货配资公司是否正规