軟件漏洞印象
軟件安全性檢測
- 軟件安全靜態分析:學術界一度十分熱衷的偏理論性方法
- 軟件漏洞動態挖掘,工程界普遍采用動態漏洞挖掘方式,即Fuzz技術,也稱為模糊測試
漏洞利用 vs. 漏洞修復
對于已發現的軟件漏洞 黑客會基于MetaSploit等工具,開發漏洞利用腳本,達到網絡攻擊、信息竊取等目的
軟件廠商會對軟件以打補丁的方式進行安全性升級,達 到修復漏洞的目的
棧溢出漏洞:
在各類軟件安全漏洞中,棧溢出漏洞是最常見、危害最大的漏洞之一
利用棧溢出漏洞進行網絡攻擊的病毒最早可以追溯到 1988年的“Morris蠕蟲病毒”
關鍵函數strcpy(buffer,password)將變量 password的值復制到變量buffer的地址上
- 如果變量password的長度小于等于buffer的存儲空間, 則strcpy函數能夠正常工作
- 如果變量password的長度大于buffer的存儲空間,則在 拷貝的過程中,拷貝的內容會超出buffer的范圍,發生程序異常
- 如果拷貝的過程發生在棧空間,則會觸發棧溢出漏洞
通過溢出漏洞,修改authenticated的值為0, 可以通過verify_password函數對輸入的驗證,輸入8個任意字符,隱藏的第9個截斷字符NULL,在內存中能夠將authenticated中低字節1覆蓋成0
如果將返回地址的值修改為主函數中else分支, 則可直接跳過子函數verify_password測試
其他軟件漏洞簡介
整數溢出漏洞
格式化字符串漏洞
雙重釋放漏洞 釋放重引用漏洞