<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    關于漏洞的基礎知識

    一顆小胡椒2022-07-20 09:44:23

    漏洞的定義

    官方定義:

    漏洞是在硬件、軟件、協議的具體實現或系統安全策略上存在的缺陷,從而可以使攻擊者能夠在未授權的下訪問或破壞系統。

    基本理解:

    漏洞是協議在生命周期的各個階段(設計、實現、運維等過程)中產生的某類問題,這些問題會對系統的安全(機密性、完整性、可用性)產生影響。

    BUG與漏洞:

    漏洞與Bug并不等同:大部分的Bug影響功能性,并不涉及安全性,也就不構成漏洞;大部分的漏洞來源于Bug,但并不是全部,它們之間只是有一個很大的交集。

    漏洞產生原因

    漏洞是在硬件、軟件、協議的具體實現或系統安全策略上存在的缺陷,從而可以使攻擊者能夠在未授權的情況下訪問或破壞系統。即某個程序(包括操作系統).在設計時未考慮周全,當程序遇到一個看似合理,但實際無法處理的問題時,引發的不可預見的錯誤

    它不是安裝的時候的結果 也不是永久后的結果而是編程人員的人為因素,在程序編寫過程,為實現不可告人的目的,在程序代碼的隱蔽處保留后門,或受編程人員的能力、經驗和當時安全技術所限,在程序中難免會有不足之處,輕則影響程序效率,重則導致非授權用戶的權限提升。

    出現頻率最高的依次是: 設計錯誤 -> 輸入驗證錯誤-> 意外情況處理錯誤 -> 邊界條件錯誤 -> 環境錯誤 -> 訪問驗證錯誤

    軟件漏洞的產生來源

    1、緩沖區溢出(buffer overflows)

    緩沖區溢出:代碼寫入的數據超過了緩沖區的邊界;是軟件安全漏洞的主要來源;是一種比較常見的編碼錯誤,特別是在字符串處理過程中。

    緩沖區造成的危害

    1)程序直接崩潰,除了用戶體驗也沒什么大損失

    2)錯誤的寫入覆蓋了其他敏感數據,造成數據的丟失

    3)執行惡意代碼,因為數據寫入越界,惡意代碼可以將原先正常的函數修改為自己的代碼,從而獲得整個軟件的執行權。

    緩沖區溢出根據溢出的內存類型分為:

    棧溢出:棧內的數據溢出。

    堆溢出(heap overflow):堆內的數據溢出

    根據溢出的類型可分為overflow及underflow:

    overflow:寫入的數據超過了緩沖的邊界

    underflow:緩沖中有用數據的大小小于緩沖區長度,這有可能造成臟數據的問題

    2、未驗證輸入(Unvalidated Input)

    一款應用往往需要接收各種各樣的輸入,針對一款iOS應用,主要的輸入有讀取文件,讀取用戶輸入,讀取網絡傳輸數據,或通過URL被啟動(URL Schema)。各種類型的輸入都有可能是非法的,甚至是惡意的,所以針對所有類型的輸入,應用都要進行檢驗,確保輸入的數據是符合程序要求的,合理的,合法的數據。

    非法輸入可能造成的危害主要有:

    1)輸入的數據大于接收緩沖,會造成緩沖溢出

    2)格式化字符串注入,對這些字符串進行處理時,如果不小心會造成程序的崩潰,或某些敏感數據被篡改

    3)URLSchema中的命令為惡意命令,執行了惡意的命令

    4)代碼注入,輸入的URL或命令中帶有腳本、代碼等惡意片段

    3、競爭條件(Race Condtions)

    如果一個任務的完成需要幾個特定的子任務以特定的順序完成來完成,那么這個任務就是存在競爭條件這個漏洞的。黑客可以通過修改事件完成的順序來改變應用的行為

    競爭條件類型的漏洞主要有以下兩種:

    1)Time of Check Versus Time of Use (TOCTOU)

    應用運行的過程中,在某個操作之前,比如寫文件,都會檢查一下文件是否存在,在檢查與真正的寫入之間的間隔就是一個可以被利用的Race Condition,惡意軟件可以將用戶檢查的文件替換成自己的文件,這樣數據就泄露了。

    2)Signal Handling

    處理信號的過程中,是隨時可以被另一個信號的處理打斷的,如果在處理一個信號的過程中另一個信號到來,那么這個過程會被馬上中斷,這樣,系統就會處于一種未知的狀態。

    4、進程間通信(Interprocess Communication)

    進程間通信采用的方法很多,共享內存,管道,油槽等,由于通信管道兩端的應用的不同,那么,有可能存在這鐘管道被惡意利用的肯能性,也就是說,進程間通信也是軟件漏洞的一個來源,當與另一個應用通信的時候,要默認此應用是不安全的,要對通信的內容進行安全方面的驗證。

    5、不安全的文件操作(Insecure File Operation)

    應用對文件進行處理時,若果沒有進行進行有效的驗證,那么有可能處理的文件已經是被惡意軟件修改過的,是不安全的。所以,進行有效的驗證是安全處理文件的重要保證。

    不安全文件操作類型有以幾種:

    1)讀取或寫入一個位于其他應用也擁有讀寫權限路徑下的文件。

    2)對文件信息,例如權限等信息沒有進行有效驗證便進行處理。

    3)對文件操作的返回結果沒有進行有效利用

    4)假定一個擁有本地文件名的文件就是真正的本地文件。

    6、權限控制問題(Access Control)

    很多情況下,權限控制是安全機制保證的核心,同時也是漏洞的主要來源。每個應用都有與其匹配的權限,應用申請的權限應該物盡其用,不能申請超過自身需求的權限,而很多的軟件漏洞就是因為應用申請了超過自身需求的權限,比如root權限,然后被惡意軟件利用,也就有了對整個系統執行所有操作的權限。

    很多情況下,對權限的申請進行驗證是明智的選擇,例如輸入用戶名及密碼來提升權限。注意,在采用驗證機制時,最好使用系統內置的權限驗證方法,而不是自己取實現,這里需要額外提一下,權限控制是操作系統級別的,當硬件設備被控制時,各種權限的控制也就顯得無力,這種情況下,數據的加密保護就顯現出了其價值。

    7、社會工程(Social Engineering)

    用戶往往是安全保證機制中那薄弱的一環。即使提供再強大的安全保全機制,如果用戶安全意識薄弱,同樣會出現問題。很簡單的例子,比如用戶將密碼設置的非常復雜,服務器端數據庫的安全保證也很周全,黑客完全無法通過技術手段竊取用戶密碼,可黑客一個偽裝客服的電話就完全有可能將用戶的密碼從用戶的口中騙取到。這就是所謂的”社會工程”. 在界面,使用習慣上教育,引導用戶進行安全的操作,也是軟件設計的重中之重。

    漏洞的基本分類

    按照漏洞的形成原因,漏洞大體上可以分為

    • 程序邏輯結構漏洞
    • 程序設計錯誤漏洞
    • 開放式協議造成的漏洞
    • 人為因素造成的漏洞

    按照漏洞被人掌握的情況

    • 已知漏洞
    • 未知漏洞
    • 0day

    1、程序邏輯結構漏洞

    •  這種類型的漏洞有可能是編程人員在編寫程序時,因為程序的邏輯設計不合理或者錯誤而造成的程序邏輯漏洞。
    • 如:微軟的Windows 2000用戶登錄的中文輸入法漏洞。非授權人員可以通過登錄界面的輸入法的幫助文件繞過Windows的用戶名和密碼驗證而取的計算機的最高權限。
    •  這種類型的漏洞也有可能是合法的程序用途被黑客利用去做不正當的用途。
    • 如:Winrar的自解壓功能,程序設計者的本意是為了方便用戶的使用,使得沒有安裝Winrar的用戶也可以解壓經過這種方式壓縮的文件。但是這種功能被黑客用到了不正當的用途上。
    • 可以通俗的理解為,在方便郵遞員投遞信件的門縫里塞進了縮小的愛麗絲,從而找到了非法進入房子的方法

    2、程序設計錯誤漏洞

    編程人員在編寫程序時由于技術上的疏忽造成的漏洞。這種類型的漏洞最典型的是緩沖區溢出漏洞,它也是被黑客利用得最多的一種類型的漏洞。

    3、開放式協議造成的漏洞

    目前,國際互聯網的通信采用的是具有開放性的TCP/IP協議。因為TCP/IP協議的最初設計者在設計該通信協議時,只考慮到了協議的實用性,而沒有考慮到協議的安全性,所以在TCP/IP協議中存在著很多漏洞。

    如:利用TCP/IP協議的開放和透明性嗅探網絡數據包,竊取數據包里面的用戶口令和密碼信息;TCP協議三次握手的潛在缺陷所導致的拒絕服務攻擊等。

    4、人為因素造成的漏洞

    一個系統如果本身設計得很完善,安全性也很高,但管理人員安全意識淡薄,同樣的會給系統留下漏洞。譬如說,系統本身非常完備安全,但系統登錄所需要的管理 員帳戶或口令,可是因為設置過于得簡單而被黑客猜解出來了,那么其他的環節再安全也沒有絲毫意義;再或者雖然管理員設置了很復雜的密碼,可是他把密碼寫在 一張紙上,并隨手扔到廢紙簍里,那么也同樣有可能造成密碼泄露而導致系統被黑客入侵。

    - 已知漏洞

    已知漏洞是指已經被人們發現,并被人們廣為傳播的公開漏洞。這種類型的特點是漏洞形成的原因和利用方法已經被眾多的安全組織、黑客和黑客組織所掌握。安全 組織或廠商按照公布的漏洞形成原因和利用方法,在他們的安全防護產品中或安全服務項目加入針對相應類型漏洞的防護方法。黑客和黑客組織利用公布的漏洞形成 原因,寫出專門的具有針對性的漏洞利用程序文件,并能繞過安全防護軟件。比如說針對某個IE瀏覽器版本的IE漏洞利用文件,或者他們干脆利用一些漏洞公布站點上提供的漏洞利用程序文件并不加任何修改地去攻擊互聯網上的計算機。

    產生漏洞的軟件的開發商則會針對被公開的漏洞的信息,修補他們開發的程序以供他們的用戶修補已經存在漏洞的軟件。

    • 未知漏洞

    未知的漏洞則是指那些已經存在但還沒有被人發現的漏洞,這種類型漏洞的特征是雖然它們沒有被發現,但它們在客觀上已經存在了,它們帶給計算機網絡安全的是隱蔽的威脅。如果它們哪一天被黑客有意或無意的找出來后就會對計算機網絡安全構成巨大的威脅。

    所以軟件開發商、安全組織、黑客和黑客組織都在努力的發現漏洞,可以說誰先發現了漏洞,誰就可以掌握主動權。如果是軟件開發商和安全組織先發現了漏洞,他們就可以在安全防護上取得主動權;如果是黑客或黑客組織先發現了漏洞,他們就可以在攻擊上取得主動權。

    • 0day漏洞

    所謂0day漏 洞是指已經被發掘出來,但還沒有大范圍傳播開的漏洞,也就是說,這種類型的漏洞有可能掌握在極少數人的手里。黑客有可能在這種類型的漏洞的信息還沒有大范 圍的傳播開的時候,利用這段時間差攻擊他們想要攻擊的目標機器,因為絕大多數用戶還沒有獲取到相關的漏洞信息,也無從防御,黑客要想得手還是很容易的。

    漏洞挖掘分析技術

    由于種種原因,漏洞的存在不可避免,一旦某些較嚴重的漏洞被攻擊者發現,就有可能被其利用,在未授權的情況下訪問或破壞計算機系統。先于攻擊者發現并及時修補漏洞可有效減少來自網絡的威脅。因此主動發掘并分析系統安全漏洞,對網絡攻防戰具有重要的意義。

    漏洞的研究主要分為漏洞挖掘與漏洞分析兩部分。漏洞挖掘技術是指對未知漏洞的探索,綜合應用各種技術和工具,盡可能地找出軟件中的潛在漏洞;漏洞分析技術是指對已發現漏洞的細節進行深入分析,為漏洞利用、補救等處理措施作鋪墊。

    現有漏洞挖掘技術分類

    根據分析對象的不同,漏洞挖掘技術可以分為基于源碼的漏洞挖掘技術和基于目標代碼的漏洞挖掘技術兩大類。

    基于源碼的漏洞挖掘的前提是必須能獲取源代碼,對于一些開源項目,通過分析其公布的源代碼,就可能找到存在的漏洞。

    如:對Linux系統的漏洞挖掘就可采用這種方法。

    大多數的商業軟件其源碼很難獲得,不能從源碼的角度進行漏洞挖掘,只能采用基于目標代碼的漏洞挖掘技術。對目標碼進行分析涉及編譯器、指令系統、可執行文件格式等多方面的知識,難度較大。基于目標代碼的漏洞挖掘首先將要分析的二進制目標代碼反匯編,得到匯編代碼;然后對匯編代碼進行切片,即對某些上下文關聯密切、有意義的代碼進行匯聚,降低其復雜性;最后通過分析功能模塊,來判斷是否存在漏洞。

    漏洞挖掘技術從逆向分析的軟件測試角度,又可分為白箱分析、黑箱分析和灰箱分析三類

    常見的漏洞挖掘分析技術

    漏洞挖掘是一個多種漏洞挖掘分析技術相互結合、共同使用和優勢互補的過程。目前漏洞挖掘分析技術有多種,主要包括手工測試技術(manual testing)、Fuzzing技術、比對和二進制比對技術(Diff and BinDiff)、靜態分析技術(static analysis)、動態分析技術(runtime analysis)等。

    1)人工分析

    2)Fuzzing技術

    Fuzzing技術是一種基于缺陷注入的自動軟件測試技術,它利用黑盒分析技術方法,使用大量半有效的數據作為應用程序的輸入,以程序是否出現異常為標志,來發現應用程序中可能存在的安全漏洞。

    3) 補丁比對技術

    補丁比對技術主要用于黑客或競爭對手找出軟件發布者已修正但未尚公開的漏洞,是黑客利用漏洞前經常使用的技術手段。

    常用的補丁比對工具有Beyond Compare、IDACompare、Binary Diffing Suite(EBDS)、BinDiff、NIPC Binary Differ(NBD)。此外大量的高級文字編輯工具也有相似的功能,如Ultra Edit、HexEdit等。這些補丁比對工具軟件基于字符串比較或二進制比較技術。

    4)靜態分析技術靜態分析技術

    對被分析目標的源程序進行分析檢測,發現程序中存在的安全漏洞或隱患,是一種典型的白盒分析技術。

    5) 動態分析技術

    動態分析技術起源于軟件調試技術,是用調試器作為動態分析工具,但不同于軟件調試技術的是它往往處理的是沒有源代碼的被分析程序,或是被逆向工程過的被分析程序。動態分析需要在調試器中運行目標程序,通過觀察執行過程中程序的運行狀態、內存使用狀況以及寄存器的值等以發現漏洞。

    軟件安全漏洞挖掘
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    尤其是SolarWinds 事件,爆發之迅猛,波及面之大,社會影響之深,潛在威脅之嚴重,令世界為之震驚,堪稱過去近十年來最重大的網絡安全事件。據美國司法部披露,黑客已向其內部郵件系統滲透,受影響人數多達司法部員工郵件賬戶總數的三分之一,其第二階段重大受害機構之一。
    模糊測試探索者之路
    2021-07-03 16:58:01
    模糊測試探索者姜宇:由于分布式系統固有的復雜性,保障分布式系統安全充滿挑戰;模糊測試是具有良好擴展性、適用性以及高準確率的漏洞挖掘技術;模糊測試在分布式系統上的應用還存在局限性;解決高效模糊測試三大關鍵挑戰為國產數據庫軟件安全保駕護航。
    KCon 2021部分PPT發布
    2021-11-09 07:32:15
    今年是 KCon 10周年,疫情環境下線下會議舉步維艱,原本計劃在8月底進行的大會隨后推遲到10月底。考慮到未到場聽眾的急切心情,我們決定提前對外發布 KCon 議題。這次披露的是QEMU中比較罕見的可控長度越界讀寫漏洞,可以穩定利用并進行虛擬機逃逸,本次是首次披露該模塊的漏洞細節。本議題將介紹如何針對 CFI 的固有缺陷來突破其防御。
    今天分享的主題是開源軟件漏洞挖掘實踐,主要講對于企業項目、開源項目審計的認識以及做代碼審計的經驗。
    2022年7月30日,第十屆互聯網安全大會在北京國家會議中心正式開幕。胡偉武則表示,中小微企業重點需要解決的仍然是生存問題,網絡安全對于他們仍顯奢侈。武連峰引用了IDC相關報告指出,我國中小微企業在數字化轉型過程中,70%仍然處于轉型的初、中級階段,在相關的技術選型上,給予網絡安全的地位仍顯不足。
    安全性在軟件開發過程中是一個極其重要和深刻的話題。當安全性受到損害時,會發生非常糟糕的事情。我們在軟件開發生
    為進一步推動產業發展,更好地匯聚產學研用各方力量,聚焦關鍵軟件領域密碼應用核心問題,不斷夯實軟件產業發展基礎,共同推動軟件產業和密碼技術融合發展,12月18日,“2021年商用密碼應用創新高端研討會”在經開區國家信創園成功召開。在會上,中關村網絡安全與信息化產業聯盟EMCG工作組組長王克帶來題為《密碼在軟件供應鏈安全中的應用》的演講。
    由中國信通院指導、懸鏡安全主辦的中國首屆DevSecOps敏捷安全大會(DSO 2021)現場,《軟件供應鏈安全白皮書(2021)》正式發布。
    隨著容器、微服務等新技術日新月異,開源軟件成為業界主流形態,軟件行業快速發展。但同時,軟件供應鏈也越來越趨于復雜化和多樣化,軟件供應鏈安全風險不斷加劇,針對軟件供應鏈薄弱環節的網絡攻擊隨之增加,軟件供應鏈成為影響軟件安全的關鍵因素之一。近年來,全球針對軟件供應鏈的安全事件頻發,影響巨大,軟件供應鏈安全已然成為一個全球性問題。全面、高效地保障軟件供應鏈的安全對于我國軟件行業發展、數字化進程推進具有重
    一顆小胡椒
    暫無描述
      亚洲 欧美 自拍 唯美 另类