跳到主要內容

簡易檢索 / 詳目顯示

研究生: 曾韵
Yun Tseng
論文名稱: 緩衝區溢位漏洞偵測自動化工具之研製
On the Development of an Automatic Tool for Detecting Buffer Overflow Vulnerabilities
指導教授: 陳奕明
Yi-Ming Chen
口試委員:
學位類別: 碩士
Master
系所名稱: 管理學院 - 資訊管理學系
Department of Information Management
畢業學年度: 91
語文別: 中文
論文頁數: 68
中文關鍵詞: CPN ToolsColored Petri Nets軟體安全緩衝區溢位
外文關鍵詞: Software Security, Buffer Overflow, CPN Tools, Colored Petri Nets
相關次數: 點閱:12下載:0
分享至:
查詢本校圖書館目錄 查詢臺灣博碩士論文知識加值系統 勘誤回報
  • 隨著軟體的大小以及複雜度日益增加,軟體漏洞被發現的數目愈來愈多,速度愈來愈快,因此軟體安全逐漸受重視。在軟體安全問題中,最嚴重的就是緩衝區溢位問題,因此許多專家學者紛紛投入研究,發展軟體測試的相關技術及工具。其中,孫宇安提出採用Colored Petri Nets偵測程式原始碼緩衝區溢位問題的方法,偵測度高於其他分析原始碼的方法,但是需要耗費大量的人力在繪製Colored Petri Nets圖形上面。本研究的目的在於延伸孫宇安所提出的架構至C語言structure以及函式之間的傳值之處理上來增加偵測之偵測度,並且發展產生Colored Petri Nets圖形之自動化工具,提升偵測之效率,使偵測度在可接受之範圍內並提高偵測緩衝區溢位問題之效率。
    本研究根據孫宇安所提出的原始碼轉換Colored Petri Nets圖形之規則,再增加C語言structure以及函式之間的傳值之轉換規則,最後以數個例子與BOON工具做比較,證實偵測度的確較高。本研究的主要貢獻為(1)提供產生Colored Petri Nets圖形之自動化工具提升偵測效率;(2)延伸孫宇安所提之架構,發展C語言structure以及函式之間的傳值之轉換規則;(3)利用CPN hierarchy功能做為C語言函式之間的傳值之轉換,使此方法可以擴充至較大型軟體的偵測上。


    As the software size is getting bigger and more complex, the number of software vulnerabilities which are discovered is increasing and software security is becoming more important than before. Whereas buffer overflow vulnerability is the most critical issue in the software security domain, many experts join in the related fields for developing software security techniques and tools. Yu-An Sun proposed an approach for detecting buffer overflow vulnerabilities with Colored Petri Nets, and the accuracy of her approach is higher than other detecting techniques. But her approach needs a lot of human efforts toward CPN graphs. The purpose of our research is to extend the framework of her approach to the expressions of structures and functions in C language, and also develop an automatic tool to produce CPN graphics to raise the detection rate.
    Our research based on the sourcecode-to-CPNgraphic transformation which Yu-An Sun proposed and add the rules in structures and functions transformation. We use some program examples to compare with the tool BOON to show that our detection rate is higher than BOON’s. The contributions of this research are (1) providing automatic tools to improve the efficiency, (2) extending Yu-An Sun’s framework to structures and functions transformations, (3) using CPN hierarchy characteristic to functions transformations, and expanding it to large software vulnerabilities detection.

    目錄 IV 圖目錄 VI 圖目錄 VI 表目錄 VIII 第一章 緒論 1 1.1 研究動機與目的 1 1.2 研究方法 3 1.3 研究結果與貢獻 4 1.4 論文架構 4 第二章 相關文獻 6 2.1 緩衝區溢位相關防禦工具探討 6 2.2 防止字串溢出 7 2.2.1 分析原始碼 7 2.2.2 編譯器改寫 12 2.2.3 攔截危險函式呼叫 12 2.2.4 錯誤注入測試 14 2.3 本章小結 15 第三章 採用Colored Petri Nets偵測緩衝區溢位問題 17 3.1 先前之研究 17 3.1.1 Colored Petri Nets簡介 17 3.1.2 使用CPN偵測緩衝區溢位原理 19 3.2 C語言structure之處理轉換 21 3.2.1 一般structure轉換 22 3.2.2 structure之間的型別轉換 26 3.3 C語言函式之間的傳值之轉換 30 3.3.1 CPN Hierarchy功能 30 3.3.2 應用Hierarchy功能至函式之間的傳值之轉換規則 31 第四章 系統設計 34 4.1 開發環境及工具介紹 34 4.1.1 Design/CPN 34 4.1.2 CPN Tools 34 4.1.3 Design/CPN 與 CPN Tools比較 35 4.2 系統運作流程 35 4.3 CPN Tools之DTD說明 36 第五章 實例分析 42 5.1 分析結果 42 5.1.1 程式例一-structure內部溢位問題 43 5.1.2 程式例二-structure整體的assignment 44 5.1.3 程式例三-structure間之casting 46 5.1.4 程式例四-函式之間參數傳值導致溢位問題 47 5.2 與其他工具比較-BOON 50 5.2.1 程式例一-structure內部溢位問題 50 5.2.2 程式例二-structure整體的assignment 52 5.2.3 程式例三-structure間之casting 52 5.2.4 程式例四-函式之間參數傳值導致溢位問題 52 第六章 結論 54 6.1 本文貢獻與特色 54 6.3 研究限制與未來發展方向 56 參考文獻 58 附錄一 CPN圖形轉換規則總表 61

    中文參考文獻
    [1] 孫宇安,採用CPN方法偵測程式原始碼緩衝區溢位問題,中央大學資訊管理學系碩士論文,民國90年6月。
    [2] 陳奕明、曾韵,彩色派翠網路在資訊安全上之應用實例-偵測緩衝區溢位漏洞,2002年網際網路工程研討會論文集,民國91年12月,中央研究院。
    英文參考文獻
    [3] CERT/CC Statistics 1988-2003, http://www.cert.org/stats/#vulnerabilities.
    [4] webDav Buffer Overflow, http://www.net-security.org/advisory.php?id=1727.
    [5] CERT Advisory CA-2003-12 Buffer Overflow in Sendmail, http://www.cert.org/advisories/CA-2003-12.html.
    [6] A Buffer Overflow exists in Samba, http://packetstorm.widexs.nl/0304-advisories/Samba.txt.
    [7] L.M. Bowman, “Companies on the Hook for Security,” http://news.com.com/2100-1023-821266.html, 2002.
    [8] Microsoft Asks Colleges to Teach Hacking, http://www.pcworld.com/news/article/0,aid,109935,00.asp.
    [9] Microsoft to let governments review Windows code , http://www.computerworld.com/securitytopics/security/story/0,10801,77599,00.html.
    [10] Kurt Jensen, “Coloured Petri Nets. Basic Concepts, Analysis Methods and Practical Use. Vol 1:Basic Concepts,” Monographs in Theoretical Computer Science, Spring-Verlag, 1992.
    [11] DesignCPN website, http://www.daimi.au.dk/designCPN/man/.
    [12] CPN Tools web site, http://wiki.daimi.au.dk:8000/cpntools/cpntools.wiki.
    [13] J.Viega, J.T. Blosh, T. Kohno, and G. Mcgraw, ”ITS4:A Static Vulnerability Scanner for C and C++ Code,” In Proceedings of the 16th Annual Computer Security Applications Conference. New Orleans, Louisiana, December 2000.
    [14] David Evans and David Larochelle, “Improving Security Using Extensible Lightweight Static Analysis,” IEEE Software Magazine, 2002.
    [15] D. Larochelle and D. Evans, “Statically Detecting Likely Buffer Overflow Vulnerabilities,” In 2001 USENIX security symposium, Washington, D.C., 2001.
    [16] D.Wagner, J. Foster, E. Brewer, and A. Aiken, “A first step towards automated detection of buffer overrun vulnerabilities,” Network and Distributed System Security Symposium, February 2000.
    [17] Eric Haugh, and Matt Bishop, “Testing C Programs for Buffer Overflow Vulnerabilities,” Network and Distributed System Security Symposium, 2003.
    [18] Nurit Dor, Michael Rodeh, and Mooly Sagiv, “Cleaness Checking of String Manipulations in C Programs via Integer Analysis,” In Proceedings of the Eight International Static Anlalysis Symposium, 2001.
    [19] T. M. Austin, S. E. Breach, and G. S. Sohi, “Efficient Detection of All Pointer and Array Access Errors,” In the Proceedings of the ACM SIGPLAN ’94 Conference on Programming Language Design and Implementation, 1994.
    [20] R. W. M. Jones and P. H. J. Kelly, “Backwards-compatible Bounds Checking for Arrays and Pointers in C programs,” Automated and Algorithmic Debugging, pages 13--26, 1997.
    [21] A. Baraltoo, N. Singh, and T. Tsai, “Transparent Run-time Defense Against Stack Smashing Attacks,” In Proceedings of the USENIX Annual Technical Conference, 2000.
    [22] A. K. Ghosh, T. O’Connor, and G.McGraw, “Analyzing Programs for Vulnerability to Buffer Overrun Attacks,” In Proceedings of the National Information Systems Security Conference, 1998.
    [23] Crispin Cowan, Steve Beattie, Ryan Finnin Day, Calton Pu, Perry Wagle and Erik Walthinsen, “StackGuard: Automatic Adaptive Detection and Prevention of Buffer-Overflow Attacks,” Proceedings in the 7th USENIX Security Symposium, 1998.
    [24] Vendicator, “Stack Shield:A Stack Smashing Technique Protection Tool for Linux,” http://www.angelfire.com/sk/stackshield/ .
    [25] “Solar Designer,” Non-executable User Stack, http://www.openwall.com/linux.
    [26] Rough Auditing Tool for Security (Rats) website, http://www.securesw.com/rats/.
    [27] ITS4 website, http://www.cigital.com/its4/.
    [28] Splint website, http://splint.org/.
    [29] BOON website, http://www.cs.berkeley.edu/~daw/boon/.
    [30] Safe C compiler website, http://www.cs.wisc.edu/~austin/scc.html.
    [31] StackGuard website, http://www.immunix.org/stackguard.html.
    [32] Flowfinder website, http://www.dwheeler.com/flawfinder/.
    [33] Aleph One, “Smashing the Stack for Fun and Profit,” http://www.shmoo.com/phrack/Phrack49/p49-14, 1996.
    [34] John Wilander and Mariam Kamkar, “A Comparison of Publicly Available Tools for Dynamic Buffer Overflow Prevention,” Network and Distributed System Security Symposium, 2003.
    [35] Susan His Yong, Susan Horwitz, and Thomas Reps, “Pointer Analysis for Programs with Structures and Casting,” In Proceeding of the ACM SIGPLAN Conference on Programming Language Design and Implementation, 1999.
    [36] Bjarne Steensgaard, “Points-to Analysis by Type Inference of Programs with Structures and Unions,” In Proceedings of the 1996 International Conference on Compiler Comstruction, 1996.
    [37] Michael Siff, Staish Chandra, Thomas Ball, Krishna Kunchithapadam, and Thomas Reps, “Coping with Type Casts in C,” In Proceedings of ACM SIGSOFT Symposium on the Found of Software Engineering, 1999.
    [38] John Viega and Gary MacGraw, “ Building Secure Software,” Addison Wesley, 2002.
    [39] Nurit Dor, Michael Rodeh, and Mooly Sagiv, “CSSV:Towards a Realistic Tool for Statically Detecting All Buffer Overflows in C,” PLDI , 2003.

    QR CODE
    :::