日前由安華金和攻防實(shí)驗(yàn)室發(fā)現(xiàn)并提交的國(guó)產(chǎn)數(shù)據(jù)庫(kù)漏洞,獲國(guó)家信息安全漏洞平臺(tái)CNVD確認(rèn),編號(hào)CNVD-2017-17486。
CNVD-2017-17486
漏洞類型:緩沖區(qū)溢出漏洞
威脅程度:中危
漏洞描述:允許攻擊者利用漏洞,通過(guò)程序創(chuàng)建表空間文件時(shí),指定路徑名過(guò)長(zhǎng)導(dǎo)致數(shù)據(jù)庫(kù)崩潰。
漏洞危害:一旦被利用,將可能導(dǎo)致數(shù)據(jù)庫(kù)宕機(jī),或被攻擊者取得數(shù)據(jù)庫(kù)操作系統(tǒng)的用戶權(quán)限,從而對(duì)系統(tǒng)所在的網(wǎng)絡(luò)發(fā)起攻擊。
CNVD-2017-17486是一個(gè)標(biāo)準(zhǔn)的堆棧溢出漏洞,屬于緩沖區(qū)溢出漏洞的重要分支,此類漏洞比較常見,影響范圍和危害也會(huì)比較廣泛,如果出現(xiàn)在數(shù)據(jù)庫(kù)等基礎(chǔ)應(yīng)用中,導(dǎo)致數(shù)據(jù)庫(kù)服務(wù)中斷,將引發(fā)整個(gè)業(yè)務(wù)的癱瘓。
由于此類漏洞的出現(xiàn)范圍較廣,我們除了及時(shí)發(fā)現(xiàn)漏洞,更應(yīng)該通過(guò)分析漏洞形成原理、作用機(jī)制及可能引發(fā)的風(fēng)險(xiǎn),找到可行的防范手段。
緩沖區(qū)溢出有多大危害
緩沖區(qū)溢出漏洞是一種古老、危害范圍大、常見于c代碼中的軟件漏洞,在各種操作系統(tǒng)、應(yīng)用軟件中廣泛存在,數(shù)據(jù)庫(kù)系統(tǒng)中同樣常見。利用緩沖區(qū)溢出攻擊,可以導(dǎo)致程序運(yùn)行失敗、系統(tǒng)宕機(jī)、重新啟動(dòng)等后果。更為嚴(yán)重的是,攻擊者可以利用它執(zhí)行非授權(quán)指令,甚至取得系統(tǒng)特權(quán),進(jìn)而實(shí)行攻擊行為。
緩沖區(qū)溢出漏洞最早在20世紀(jì)80年代初被發(fā)現(xiàn),第一次重大事件是1988年爆發(fā)的Morris蠕蟲。該蠕蟲病毒利用fingerd的緩沖區(qū)溢出漏洞進(jìn)行攻擊,最終導(dǎo)致6000多臺(tái)機(jī)器被感染,造成直接經(jīng)濟(jì)損失100萬(wàn)美金。隨后,衍生而出的Ramen 蠕蟲、sircam蠕蟲、sql slammer蠕蟲等品種逐漸出現(xiàn),每一類蠕蟲都對(duì)整個(gè)互聯(lián)網(wǎng)造成了嚴(yán)重的安全影響,造成高額的經(jīng)濟(jì)損失。
堆棧溢出是如何形成的?
簡(jiǎn)單來(lái)說(shuō),堆棧溢出就是把大緩沖區(qū)中的數(shù)據(jù)向小緩沖區(qū)中復(fù)制,由于沒(méi)有關(guān)注小緩沖區(qū)的邊界,“撐爆”了較小的緩沖區(qū),從而沖掉了小緩沖區(qū)和鄰內(nèi)區(qū)域的其他數(shù)據(jù)而引起的內(nèi)存問(wèn)題。在具體描述堆棧溢出之前我們先來(lái)了解一下Linux程序在內(nèi)存中的結(jié)構(gòu):
其中共享區(qū)也稱為data區(qū),用來(lái)存儲(chǔ)可執(zhí)行代碼;.text和.bss均用來(lái)存儲(chǔ)程序的全局變量和初始化變量;堆則不隨函數(shù)消亡而消亡,而是直到程序消亡或手動(dòng)釋放才會(huì)消亡;堆棧是隨著函數(shù)分配并消亡的,堆棧溢出就是出現(xiàn)在堆棧區(qū)中的緩沖區(qū)安全問(wèn)題。
堆棧是一個(gè)后進(jìn)先出(LIFO)數(shù)據(jù)結(jié)構(gòu),往低地址增長(zhǎng),它保存本地變量、函數(shù)調(diào)用等信息。隨著函數(shù)調(diào)用層數(shù)的增加,棧幀會(huì)向低地址方向延伸;隨著進(jìn)程中函數(shù)調(diào)用層數(shù)的減少,即各函數(shù)的返回,棧幀會(huì)一塊一塊地被遺棄而向內(nèi)存的高地址方向回縮。各函數(shù)的棧幀大小隨著函數(shù)的性質(zhì)不同而不等。
堆棧這種數(shù)據(jù)結(jié)構(gòu),常見操作有壓棧(PUSH)、彈棧(POP);用于標(biāo)識(shí)棧的屬性有:棧頂(TOP)、棧底(BASE)。其中:
PUSH:為棧增加一個(gè)元素的操作叫做PUSH,相當(dāng)于插入一塊;
POP:從棧中取出一個(gè)元素的操作叫做POP;
TOP:TOP標(biāo)識(shí)棧頂?shù)奈恢?,且是?dòng)態(tài)變化的,每做一次PUSH操作,它會(huì)自+1;每做一次POP操作,它會(huì)自-1;
BASE:BASE標(biāo)識(shí)棧底位置,用于防止??蘸罄^續(xù)彈棧,一般來(lái)說(shuō)BASE位置不發(fā)生改變。
下面以mian函數(shù)疊加A和B函數(shù)為例說(shuō)明整個(gè)壓棧和彈棧過(guò)程:
Main函數(shù)調(diào)用A函數(shù),把A函數(shù)中的變量添加到堆棧區(qū)內(nèi),開辟大小和變量指定大小相關(guān)。同樣B函數(shù)在被調(diào)用后也會(huì)把變量添加到堆棧區(qū)內(nèi),開辟指定大小空間給B區(qū)域變量使用。
l 如果其中任意一個(gè)變量存入的值超過(guò)設(shè)計(jì)的界定,就會(huì)導(dǎo)致值覆蓋其他變量的區(qū)域最終污染到函數(shù)返回地址區(qū)域。一旦函數(shù)的返回地址被污染,在進(jìn)行彈棧的過(guò)程中會(huì)最終把跳轉(zhuǎn)的地址指向黑客所指定的區(qū)域,或根本不存在的區(qū)域。
l 如果覆蓋函數(shù)返回地址的是一組隨機(jī)值,則程序會(huì)跳轉(zhuǎn)到未知位置,這種情況往往最終會(huì)導(dǎo)致整個(gè)程序崩潰。
l 如果黑客構(gòu)造足夠精細(xì)的shellcode,把跳轉(zhuǎn)地址指向黑客自己注入的代碼,則很可能會(huì)利用該漏洞獲得當(dāng)前用戶的控制權(quán)限。
幾個(gè)可行的防護(hù)建議
堆棧溢出漏洞是c 代碼的一種常見安全漏洞。防護(hù)的方法可以從多個(gè)角度來(lái)加強(qiáng)。
1) 使用自動(dòng)化工具進(jìn)行掃描檢測(cè),排查是否存在緩沖區(qū)溢出漏洞;但需要注意的是需要使用面向不同系統(tǒng)的掃描工具,沒(méi)有一個(gè)檢查工具可以支持所有基礎(chǔ)應(yīng)用的掃描。
2) 加強(qiáng)相關(guān)程序員的代碼能力,做好相應(yīng)的長(zhǎng)度限制工作,從代碼級(jí)別進(jìn)行防范。
3)避免使用原C庫(kù)中那些可能存在緩沖區(qū)溢出隱患的函數(shù),使用增強(qiáng)后的函數(shù),這樣此漏洞出現(xiàn)的幾率會(huì)相對(duì)低一些。
- 世間將再無(wú)松下電視:松下官宣解散家電子公司并徹底放棄電視機(jī)業(yè)務(wù)
- 雅迪集團(tuán)與南都電源簽署協(xié)議:攜手共繪固態(tài)電池未來(lái)藍(lán)圖
- 美媒聚焦比亞迪“副業(yè)”:電子代工助力蘋果,下個(gè)大計(jì)劃瞄準(zhǔn)AI機(jī)器人
- 微信零錢通新政策:銀行卡轉(zhuǎn)入資金提現(xiàn)免手續(xù)費(fèi)引熱議
- 消息稱塔塔集團(tuán)將收購(gòu)和碩印度iPhone代工廠60%股份 并接管日常運(yùn)營(yíng)
- 蘋果揭秘自研芯片成功之道:領(lǐng)先技術(shù)與深度整合是關(guān)鍵
- 英偉達(dá)新一代Blackwell GPU面臨過(guò)熱挑戰(zhàn),交付延期引發(fā)市場(chǎng)關(guān)注
- 馬斯克能否成為 AI 部部長(zhǎng)?硅谷與白宮的聯(lián)系日益緊密
- 余承東:Mate70將在26號(hào)發(fā)布,意外泄露引發(fā)關(guān)注
- 無(wú)人機(jī)“黑科技”亮相航展:全球首臺(tái)低空重力測(cè)量系統(tǒng)引關(guān)注
免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。