軟體為什麼存在漏洞
① 軟體有漏洞,手機有漏洞,那麼究竟什麼是漏洞,為什麼會有漏洞,難道就有 沒有漏洞的嗎
所謂漏洞就是程序編制的不完善。
比如一個密碼門要求輸入4位正確密碼才能開門,結果程序員沒把情況考慮全面,用戶輸入8位密碼,門不知道該怎麼辦,然後就開門了。這就是漏洞的一種。
電腦、手機系統都是有許可權的,什麼樣級別的用戶可以做什麼樣的時,如果別人利用漏洞獲取了高許可權,就可以遠程操作你的電腦、手機,查看你的各種隱私信息。
越復雜的軟體就越有可能有漏洞,這個幾乎無法避免。
就好像再健全的制度也總有人會去鑽空子一樣。
② 為什麼會有漏洞
因為你的還處於老的程序需要更新的軟體所以存在漏洞更新之後就行了
③ 為什麼網站和軟體這樣多的漏洞
其實所有的軟體和程序,都肯定會有漏洞,不可能存在100%安全無漏洞的軟體程序。
同時,windows系統漏洞多這個說法可以說並不正確。而是說,使用和針對windows的人太多,所以被發現的漏洞就很多。
打個比方吧,用500個人的團隊來做一個軟體,這500個人假如都是一樣的理論水平和知識儲備,然後做好後發布,分為兩個不同的版本為A版和B版,但實際事實上A版和B版是完全一樣的,沒有任何差別。A軟體發布給1000萬用戶來研究,B軟體只發布給100萬用戶來研究,這1100萬用戶並不重復。那麼A軟體肯定會被找出更多的漏洞和問題,但這並不能說明什麼,因為都是完全一樣的軟體,只不過一個人多一個人少罷了。
為什麼仍然有很多網站漏洞?據了解,大多數企業網站的漏洞包含OpenSSL、PHP和WordPress中的漏洞,這些漏洞主要是由於這些開源軟體中存在著大量自定義組合以及缺乏測試和漏洞修復。
本文中讓我們看看如何從一開始以及整個開發生命周期中修復這些漏洞。
很多網站的安全漏洞
「很多網站(和Web應用程序)漏洞的主要原因是這些技術完全定製化開發的性質,」美國國家安全局前情報收集人員、現Masergy Communications公司主管David J. Venable表示,這樣的結果會產生在很大程度上未經測試的網站和應用程序,它們沒有像大多數商業軟體(例如操作系統和伺服器軟體包)經過嚴格的徹底的測試。
事實上,網站和網路應用程序中的漏洞要比企業其他地方的漏洞更多。這些安全漏洞包括PHP站點、第三方和自產軟體中的漏洞,WordPress代碼和安裝以及OpenSSL、Single Sign-On及SQL和LDAP部署及技術中的漏洞。
使用第三方軟體的PHP網站存在固有的漏洞,因為第三方應用程序開發不受企業的掌控。Berkeley研究公司主管Joe Sremack表示:「你可以設計你的網站,以確保所有自製代碼是完全安全的,但如果你需要使用第三方軟體,那麼你就可能引入漏洞。」
WordPress是一個日益嚴重的問題,它有著無數的插件,需要不斷的更新,這給中小型企業帶來日益嚴重的威脅。Sremack表示:「企業想要WordPress的功能,但不幸的是,它也帶來風險。」
OpenSSL也面臨相同的問題。隨著人們不斷創新該技術,這些創新帶來新的漏洞,可讓攻擊者發現和利用。每年攻擊者都會不斷利用OpenSSL漏洞來作為大規模數據泄露的一部分,很多看似新的漏洞實際上是還未被發現的舊漏洞。
即使編程者開發出安全的網站,他們的開發主要是基於他們已知的漏洞,而不是尚未確認的漏洞,而總是會出現新的漏洞。
注入漏洞仍然很常見,攻擊者已經調整了他們的攻擊方法,以利用日益普及的單點登錄。Sremack解釋說:「單點登錄在酒店裡很常見,人們會使用單點登錄來檢查他們的賬戶和積分。新的LDAP注入技術會攻擊漏洞,並傳遞參數到代碼來控制其網路會話。」
另一個攻擊向量是本地和遠程文件。Sremack稱:「網站的代碼可以調用本地伺服器或遠程公共伺服器上的文件。通過使用注入技術,攻擊者可以讓網站顯示信息,包括密碼文件或者Web伺服器中的用戶名列表,並可以執行他們想要運行的代碼。」
修復網站安全漏洞
Venable稱:「企業必須從開發過程的最開始就堅持安全最佳做法,例如開放Web應用安全項目(OWASP)的最佳做法。」企業需要在生產前、代碼變更後進行所有測試,包括應用程序評估、滲透測試以及靜態分析,至少一年一次。為了實時發現和緩解攻擊,企業需要對網站和網路應用程序部署WAF和IDS,並部署全天候監控小組。
Sremack稱:「在開發過程中,與安全團隊合作來對受影響的代碼和功能執行定期測試。」如果企業在更新當前的網站,應該讓安全團隊測試和確保新增的功能不會帶來漏洞。開發團隊還應該進行掃描和測試來隔離漏洞和修復漏洞。
Sremack說道:「企業應該使用攻擊者用來入侵網路的相同工具,例如Grabber、W3AF和Zed Attack Proxy。」雖然說,任何有著安全知識或安全工具的人都可以利用這些應用程序,基於測試的結果來發現網站漏洞,但企業需要安排專門的工作人員來做這個工作。
「開發人員應該具體看看他們如何創建和維護網路會話,專門檢查會話通過網站傳輸的輸入,無論是通過網站還是輸入欄位,」Sremack稱,「然後監測任何第三方代碼中的漏洞,並查看來自供應商的漏洞利用聲明。」
總結
網站越大,其功能和可視性越大,它也會使用更多第三方軟體,同時,減少該網站中固有漏洞的過程也更加昂貴。
企業必須在一天內多次監控和更新網站,以更好地抵禦網路攻擊者。這個過程應該包括變更管理、測試和正確的部署,以及新的專門的安全團隊和指定的測試站點。
網站的功能越豐富,企業越應該確保網站的安全性。現在也有很多開源免費軟體工具可以幫助開發人員來了解新的漏洞和威脅。
建議安裝安全防護軟體,如安全狗等,防護網站安全。
④ 為什麼軟體里總會有那麼多Bug
1. 人的天性
大多數——當然不是全部——軟體 bug 源於我們自己犯的錯誤。雖然有些是因為軟體編碼工具和編譯器發生了意外,但是大部分的錯誤得歸咎於我們自己。
無論我們受到的 SDL 培訓和安全工具有多麼強大,只要我們還是人,我們就會犯錯。如果你想問為什麼電腦軟體會有這么多的漏洞,歸根到底是因為,人的天性就是容易犯錯。
也就是說,我們在減少人為錯誤方面做得還不夠。有很多程序員因為沒有受到足夠的 SDL 培訓(有的甚至乾脆就沒有培訓),所以根本就沒有安全編程的理念。有時候我特別奇怪:有那麼多的程序員以寫安全軟體為生,卻居然不懂如何安全地編程。別不信,我敢打賭,你正在運行的銀行安全軟體中的 bug 不會比它能提供的保護措施少,搞不好甚至更多。
但是即使是那些經過嚴格訓練的程序員還是不可避免出現 bug。舉個例子,前不久有個自鳴得意的傢伙發明的使用 HTML 標記欄位確定顏色的緩沖區在瀏覽器中溢出了。不像以前還要輸入 FFFFFh 之類的東西,黑客甚至可以直接執行顏色域的代碼,從而導致瀏覽器過度消耗資源、緩沖區溢出。看到沒有,這就是漏洞!而且很少會有人能預料到這種情況。
2. 不斷增加的軟體復雜性
就其本質而言,軟體越復雜,就意味著代碼行數越多。只要你在編程,那麼即使你有多擅長寫代碼,也一定會有錯誤和 bug 出現。有人曾說,如果你能做到每 50 行代碼中只出現一個錯誤,那你就已經做得相當好了。大多數程序員差不多每隔 5 至 15 行就會犯錯。想像一下,這么說吧,一般性的 Linux 內核擁有超過 1500 萬行的代碼,有多少 bug 你自己算吧!
即使沒有編碼錯誤,互聯網時代應用程序的整體互動性也是漏洞被攻擊的途徑。大多數程序員不得不和其他 API 協作,保存和檢索文件,在多種設備上正常工作。所有這些過程都會增加被成功擊破的概率。
而要防守的話,則需要寫更多的代碼,因為得抵禦各種不同的攻擊渠道。這么說吧,如果有一個只有 30 條匯編語言指令的惡意程序,那麼針對相應的防守,你可能至少得寫 50000 條匯編語言指令!
3. Fuzzers 也是人寫出來的
新近冒出來的 Fuzzers 軟體主要用於掃描軟體漏洞。Fuzzers——以及其他用於尋找編碼錯誤和漏洞的任何程序——都是人寫出來的,還是這句話,是人就會犯錯誤。例如 Fuzzers 是不會發現顏色屬性的緩沖區溢出這種情況的,這是因為我們在寫 Fuzzers 的時候沒有考慮這一方面。不過當我們意識到這一點並對 Fuzzers 進行更新之後,就能做到去查找各種類似的緩沖區溢出條件的欄位。簡而言之,我們要 Fuzzers 做什麼,它才會去做什麼。
4. 缺乏對供應商的問責
許多安全專家抱怨,只要我們不能找到證據起訴供應商的軟體缺陷,我們就永遠不會變得更安全。我贊同這一點,增加對供應商的問責有助於降低安全風險,但是同時卻有可能會減緩進度。不過如果軟體公司比現在更能擔當起責任來,那麼我想我們能在手機上、電腦上能自由自在沖浪的感覺會更爽。
但是成功源於功能和速度,而非安全。社會現狀決定了我們必須犧牲一部分安全和保障去換取新鮮感。這不一定是壞事——因為能讓我們成功得更快。但是這樣一來我們就不得不承擔這樣做的後果。不過到目前為止,我們還是心甘情願為了添加更酷的新鮮玩意兒而面對更多的風險。
5. 缺乏對黑客的問責
現實是上面沒有一條能很快解決。但是軟體出現漏洞就其本身而言,真不是什麼大問題。說它脆弱是因為這些軟體在面對惡意攻擊的時候毫無抵擋之力。除非我們能制止黑客的猖獗行徑,否則惡意軟體將會一直困擾著我們。
⑤ 用戶操作不當跟軟體自身缺陷,那個是漏洞產生的主要原因
導致安全問題的軟體缺陷主要有兩種:部署中的漏洞和設計中的缺陷,現在軟體安全市場中的大部分重點都放在了發現和修復漏洞上,這主要是因為自動代碼審查工具讓這個過程變得很簡單,但其實軟體設計和架構中的缺陷問題也占據很大比率,它占所有安全問題的50%,更重要的是架構風險分析(ARA)程序經證明,該程序能夠很好地發現和修復漏洞,漏洞 存在於軟體代碼(源代碼或二進制)中,一個最經典的漏洞是緩沖區溢出漏洞,這個漏洞根本上涉及濫用C中某些字元串處理函數功能。
⑥ 軟體供應鏈漏洞來源
主要有以下幾種:
一:緩沖區溢出(buffer overflows)
緩沖區溢出是軟體安全漏洞的主要來源。所謂緩沖區溢出,指的就是代碼寫入的數據超過了緩沖區的邊界,比如向大小10KB的緩沖區寫如12KB的數據,那麼這個緩沖就溢出了。當然,前向溢出也算溢出,也就是寫入的數據寫入到了緩沖區的起始邊界之前。
緩沖區溢出是一種比較常見的編碼錯誤,特別是在字元串處理過程中。緩沖區造成的危害也是比較多樣的。比較輕微的就是程序直接崩潰,除了用戶體驗也沒什麼大損失;比較嚴重的就是錯誤的寫入覆蓋了其他敏感數據,造成數據的丟失;最嚴重的莫過於執行惡意代碼,因為數據寫入越界,惡意代碼可以將原先正常的函數返回地址修改為自己的代碼,從而獲得整個軟體的執行權。
緩沖區溢出根據溢出的內存類型分為:
棧溢出(stackoverflow)
堆溢出(heap overflow)
overflow,寫入的數據超過了緩沖的邊界
underflow, 緩沖中有用數據的大小小於緩沖區長度,這有可能造成臟數據的問題
棧內的數據溢出。
堆內的數據溢出,
根據溢出的類型可分為overflow及underflow
二:未驗證輸入(Unvalidated Input)
輸入的數據大於接收緩沖,會造成緩沖溢出
格式化字元串注入,對這些字元串進行處理時,如果不小心會造成程序的崩潰,或某些敏感數據被篡改
URLSchema中的命令為惡意命令,執行了惡意的命令
代碼注入,輸入的URL或命令中帶有腳本、代碼等惡意片段
一款應用往往需要接收各種各樣的輸入,針對一款iOS應用,主要的輸入有讀取文件,讀取用戶輸入,讀取網路傳輸數據,或通過URL被啟動(URL
Schema)。各種類型的輸入都有可能是非法的,甚至是惡意的,所以針對所有類型的輸入,應用都要進行檢驗,確保輸入的數據是符合程序要求的,合理的,合法的數據。
非法輸入可能造成的危害主要有:
三:競爭條件(Race Condtions)
Time of Check Versus Time of Use (TOCTOU)
Signal Handling
讀取或寫入一個位於其他應用也擁有讀寫許可權路徑下的文件。
對文件信息,例如許可權等信息沒有進行有效驗證便進行處理。
對文件操作的返回結果沒有進行有效利用
假定一個擁有本地文件名的文件就是真正的本地文件。
- 用戶往往是安全保證機制中那薄弱的一環。即使提供再強大的安全保全機制,如果用戶安全意識薄弱,同樣會出現問題。很簡單的例子,比如用戶將密碼設置的非常復雜,伺服器端資料庫的安全保證也很周全,黑客完全無法通過技術手段竊取用戶密碼,可黑客一個偽裝客服的電話就完全有可能將用戶的密碼從用戶的口中騙取到。
如果一個任務的完成需要幾個特定的子任務以特定的順序完成來完成,那麼這個任務就是存在競爭條件這個漏洞的。黑客可以通過修改事件完成的順序來改變應用的行為。
競爭條件類型的漏洞主要有以下兩種:
應用運行的過程中,在某個操作之前,比如寫文件,都會檢查一下文件是否存在,在檢查與真正的寫入之間的間隔就是一個可以被利用的Race Condition,惡意軟體可以將用戶檢查的文件替換成自己的文件,這樣數據就泄露了。
處理信號的過程中,是隨時可以被另一個信號的處理打斷的,如果在處理一個信號的過程中另一個信號到來,那麼這個過程會被馬上中斷,這樣,系統就會處於一種未知的狀態。
四:進程間通信(Interprocess Communication)
進程間通信採用的方法很多,共享內存,管道,油槽等,由於通信管道兩端的應用的不同,那麼,有可能存在這鍾管道被惡意利用的肯能性,也就是說,進程間通信也是軟體漏洞的一個來源,當與另一個應用通信的時候,要默認此應用是不安全的,要對通信的內容進行安全方面的驗證。
五:不安全的文件操作(Insecure File Operation)
應用對文件進行處理時,若果沒有進行進行有效的驗證,那麼有可能處理的文件已經是被惡意軟體修改過的,是不安全的。所以,進行有效的驗證是安全處理文件的重要保證。不安全文件操作類型有以幾種:
六:許可權控制問題(Access Control)
很多情況下,許可權控制是安全機制保證的核心,同時也是漏洞的主要來源。每個應用都有與其匹配的許可權,應用申請的許可權應該物盡其用,不能申請超過自身需求的許可權,而很多的軟體漏洞就是因為應用申請了超過自身需求的許可權,比如root許可權,然後被惡意軟體利用,也就有了對整個系統執行所有操作的許可權。
很多情況下,對許可權的申請進行驗證是明智的選擇,例如輸入用戶名及密碼來提升許可權。注意,在採用驗證機制時,最好使用系統內置的許可權驗證方法,而不是自己取實現,這里需要額外提一下,許可權控制是操作系統級別的,當硬體設備被控制時,各種許可權的控制也就顯得無力,這種情況下,數據的加密保護就顯現出了其價值。
七:文件的安全存儲與加密(Secure Storage and Encryption)
iOS系統提供了多種機制保證用戶的數據安全,具體細節在我的另一篇譯文:iOS安全機制概覽中有較詳細的描述,這里不在重復,不過有一點需要額外說明,安全機制方面盡量使用系統自帶的機制,在安全性與可靠性上,系統提供機制往往比自身實現的加密保護機制要可靠的多。
八:社會工程(Social Engineering)
⑦ 有漏洞的主要原因是什麼
所謂系統漏洞,就是微軟Windows操作系統中存在的一些不安全組件或應用程序。黑客們通常會利用這些系統漏洞,繞過防火牆、殺毒軟體等安全保護軟體,對安裝Windows系統的伺服器或者計算機進行攻擊,從而控制被攻擊計算機的目的。一些病毒或流氓軟體也會利用這些系統漏洞,對用戶的計算機進行感染,以達到廣泛傳播的目的。這些被控制的計算機,輕則導致系統運行非常緩慢,無法正常使用計算機;重則導致計算機上的用戶關鍵信息被盜竊。
修補漏洞通常被稱為打補丁。由微軟官方發布並提供補丁下載安裝源文件,下載後安裝到系統中即可。由於Windows系統漏洞問題是與時間緊密相關的。一個Windows系統從發布的那一天起,隨著用戶的深入使用,系統中存在的漏洞會被不斷暴露出來,這些早先被發現的漏洞也會不斷被系統供應商:微軟公司發布的補丁軟體修補,或在以後發布的新版系統中得以糾正。而在新版系統糾正了舊版本中具有漏洞的同時,也會引入一些新的漏洞和錯誤。因而隨著時間的推移,舊的系統漏洞會不斷消失,新的系統漏洞會不斷出現。系統漏洞問題也會長期存在。所以修復系統漏洞是非常必要。
建議你使用騰訊電腦管家修復漏洞:
希望能幫助你,更多問題可以向電腦管家企業平台提問哦~
⑧ 什麼是系統漏洞,請簡述產生系統漏洞原因
系統漏洞是指應用軟體或操作系統軟體在邏輯設計上的缺陷或錯誤,被不法者利用,通過網路植入木馬、病毒等方式來攻擊或控制整個電腦,竊取電腦中的重要資料和信息,甚至破壞系統。
導致系統漏洞的原因包括程序邏輯結構設計不合理,不嚴謹、編程人員程序設計錯誤以及目前為止硬體無法解決特定的問題:
1、編程人員在設計程序時,對程序邏輯結構設計不合理,不嚴謹,因此產生一處或者多處漏洞,正是由於這些漏洞,給病毒入侵用戶電腦提供了入口。
2、編程人員的程序設計錯誤也是計算機系統漏洞產生的原因之一,受編程人員的能力、經驗和當時安全技術所限,在程序中難免會有不足之處,輕則影響程序效率,重則導致非授權用戶的許可權提升,這種類型的漏洞最典型的是緩沖區溢出漏洞,它也是被黑客利用得最多的一種類型的漏洞。
3、由於目前硬體無法解決特定的問題,使編程人員只得通過軟體設計來表現出硬體功能而產生的漏洞,也會讓黑客長驅直入,攻擊用戶的電腦。
(8)軟體為什麼存在漏洞擴展閱讀:
漏洞會影響到的范圍很大,包括系統本身及其支撐軟體,網路客戶和伺服器軟體,網路路由器和安全防火牆等。
在不同種類的軟、硬體設備,同種設備的不同版本之間,由不同設備構成的不同系統之間,以及同種系統在不同的設置條件下,都會存在各自不同的安全漏洞問題。因而隨著時間的推移,舊的系統漏洞會不斷消失,新的系統漏洞會不斷出現。系統漏洞問題也會長期存在。
⑨ 電腦中為什麼經常會有高危漏洞
這是正常現象,每台電腦都會出現高危漏洞的提示。當出現高位漏洞時,電腦防衛系統會進行提示,進行修復即可。
電腦漏洞的出現實際上就是網路病毒發現了電腦系統的弱點,然後乘虛而入。原理就像人因為勞累或者淋雨等種種原因導致身體虛弱,此時病毒、細菌就會侵入人體。而且電腦的漏洞如同人類的病毒一樣都會進行變異。但是不用擔心,相應的公司會及時發現這些漏洞,並更新電腦的補丁,幫助消滅這些高危漏洞。