原文:http://www.freebuf.com/articles/neopoints/37918.htmlhtml
在兩年前開始接觸信息安全的時候,從開源的GNU,到各類網上各類開源工具,我一直認爲,開源即至關安全,可安全
是開源是否真的如咱們所願的那麼安全麼?網絡
開源軟件安全現狀 工具
上上月的心臟出血,給了咱們當頭一捧!學習
在目前的我的和商業領域,開源軟件獲得了更爲普遍的應用,隨之其安全問題也獲得了更爲普遍的關注,有關開源與閉源軟件誰更安全的問題也爭論不休。其實安全都是相對的,沒有絕對的安全,閉源如此,開源也如此。測試
從軟件產業的誕生到如今,時間並非很長,與其餘在咱們眼中被視做「傳統行業」的產業比較起來更是顯得年輕,但它卻發展得很是迅速,對咱們的工做和生活的影響也愈來愈大。網站
整體而言,如今的軟件能夠按照源代碼是否公開分爲「開源」(Open Source)和「閉源」(Closed Source)兩大類,而前者對目前整個軟件業的影響正在以「星火燎原」的態式發展。開源軟件正在從咱們計算機愛好者手中的摯愛變成企業應用中不可忽視、舉足輕重的一個考慮對象。spa
有關開源軟件的一些問題也成爲討論話題中的熱點,「開源軟件安全」這個問題的爭論也由來已久,在開源運動比較成熟的國家對其認識的更加深入,你們已經用行動證實其「安全可靠」,而在國內,彷佛咱們的開源運動尚未真正的到來,還須要「討論、討論」。操作系統
在討論「開源軟件安全」這個話題以前,有必要仔細地考慮一下在使用軟件時所關心的一些問題,這些問題是在成本容許的條件下:.net
1、軟件是否可以知足本身的功能須要;
2、軟件的功能特色是否安全;
3、軟件的後期維護和支持是否到位。
雖然上面三點不是所有都應當考慮的問題,可是已經算抽象意義上比較突出的幾個問題。能夠看出,在這三點中,第二點就是安全問題,彷佛不少企業沒有意識到這個問題,或者說對這個問題認識不夠深入。
產生這種現象的緣由不少,一方面是安全意識淡薄,不少公司和企業使用的軟件受權尚未完全解決,並且總以爲夠用就行,忽視了軟件安全方面的問題;另外一方面把安全交給所謂的殺毒軟件和防火牆,這並無從根本上解決安全問題,要知道所謂的病毒和木馬,之因此存在或者說危害着軟件使用者,自己就是所使用的軟件自身存在安全漏洞和Bug。
那麼如何才能最大程度上保證軟件的安全性呢,或者如何才能儘快地發現軟件中的問題,並把問題解決掉呢?在軟件開發中有一些共識:
1、設計要儘量完善;
2、測試要儘可能全面;
3、維護和跟蹤及時持續;
4、問題解決要快速;
5、信息發佈要及時透明。
在這幾個方面,開源軟件作得都很是不錯,下面就分別說一下以上這幾個問題。
開源軟件文檔缺少
不少人詬病開源軟件缺乏文檔,更沒有什麼設計資料,特別是國內的一些人士,由此就以爲開源軟件多麼不可靠。這個問題看上去彷佛成立,但若是咱們深刻的瞭解一下就不會有這種片面的見解,事實上這些問題也許是開源軟件早期存在的一些問題,由於畢竟這時候開源軟件的目的和影響很小,而如今卻在發生着根本的改變。一方面是開源軟件開發模式的日漸成熟,開發人員也愈來愈專業化,另外一方面伴隨着整個軟件業的成熟,開源軟件也在不斷的成熟。
如今成熟的開源軟件基本上都有本身的網站和在線(離線)文檔,也有不斷完善的Wiki系統,方便了你們的學習和反饋,能夠說是一種構建型應用和推廣的典範,固然如今仍是以英文材料爲主。
嚴格意義而言,咱們的政府應當撥款併成立相關部門解決這個問題,國內不一樣於國外,社區的推進模式在國內還存在不少問題,須要尋找不一樣的解決方案。儘管一些大項目的漢化工做有了必定的進展,好比說Linux操做系統的幾個不一樣發行版,還有就是知名開源軟件的漢化,可是咱們會發現作出貢獻的人未必是這個領域的專家,因此從專業性上還未達到專業的要求。
咱們從計算機圖書的出版也能夠看到開源運動的影響和進展,從某種意義上而言,這些書籍成爲開源軟件的設計說明和開發參考手冊,並且開源書籍的出版劃分愈來愈詳細,甚至有的公司專門以開源書籍作爲本身的主要經營業務。固然,國內在這一方面作的還不夠,因此咱們應當學習國外成功的經驗和模式,在開源運動中爭取共贏或多贏。
安全從測試開始
測試做爲軟件發佈前重要的一步工做,肩負着軟件的可用性和安全性等諸多任務,因此也決定着軟件的質量,這是一個很是關鍵的指標。咱們很熟悉閉源軟件的測試過程,正規的軟件都有正式的測試文檔,能夠說對軟件的測試已經很是到位。
測試可分爲白盒測試和黑盒測試,這是一我的們比較熟知的分類方法,在軟件公司內部能夠進行這些測試,另外一個模式就是把測試工做外包給專業的測試公司,可是這些工做仍是沒法保障軟件的安全性。很重要的一點是因爲咱們自身的侷限,咱們很難寫出一個毫無遺漏的完整的測試用例,畢竟咱們每一個人的大腦是有限的,並且有些問題也很難被考慮全面。
從程序自己而言,至今也沒有一套完整的理論和工具證實程序自己的正確性,這是安全性本質上的硬傷,可是若是不考慮這個因素,那麼軟件的安全性就要經過測試保證。因爲閉源軟件存在開發週期、成本和代碼保密等缺點,使得測試的完整性不能獲得很好的保證,也就是說閉源軟件最終獲得的軟件是經過他們本身設計的測試方案的軟件,這樣方案的完備性就存在自身的缺陷和不完備性。
開源軟件對每一個人都開放源代碼,每一個感興趣的用戶,不管是我的仍是企業,均可如下載源代碼,能夠說是徹底完全的白盒,固然進行黑盒測試更不是什麼問題。這樣就保證了測試的最大化,相比閉源軟件,這樣更容易發現程序中存在的問題,更容易進行全面的測試。
還有就是如今的一些組織機構委託大學和一些商業公司作開源軟件的測試,包括安全性測試。美國政府有這樣的專項撥款,澳大利亞政府也有這樣的部門評估,新西蘭政府還安排專人做評估報告。
在南非,開源軟件大踏步的前進,最爲你們熟知的就是Ubuntu的發起人Mark在那裏所作出的貢獻,一句「Linux for Human Being」就是很好的註釋。
在歐洲對開源的關注和評估更是如火如荼,用Google Map搜索一下開源軟件公司就會發如今歐洲這個版圖上有不少的公司,能夠說是密度居世界第一,並且有的公司業務就是作開源軟件安全性評估和測試的,他們提供專業的服務,這點也最大程度地保證了開源軟件的安全性。
軟件升級需主動
在軟件的跟蹤維護方面,閉源軟件都是商業公司的產品,他們有資金和能力成立專門的部門作好這些事情,給客戶很好的保障,而開源軟件卻不能。其實這種觀點是片面的,由於開源軟件與之相比,不管在問題發現和解決速度上都絕不遜色於閉源軟件。
一個成熟的開源軟件有成千上萬的用戶在使用,並且很大一部分就是商業用戶和政府組織,他們發現的問題會及時的發佈出來,並且還會將解決方案和建議一塊兒提交,這對軟件的維護跟蹤、問題解決和信息發佈都是十分有利的。
相對而言,閉源軟件當內部人員發現問題,但尚未解決掉問題之時,通常不會發布公告。當外部用戶發現問題,因爲本身手中沒有源代碼,就算有能力解決,或者計劃想辦法解決都不能夠,只可以等待軟件提供商解決,在補丁發佈以前,除了等待毫無選擇。
軟件的升級通常有兩層意思:一層是功能上的增長和提高;另外一層是對原有軟件的安全性,也就是發現的漏洞和問題的修正。
在這個問題上咱們要探討升級的主動性和被動性,對「生產」閉源軟件的商業軟件提供商而言,對升級的問題不是很主動;而在軟件發佈後的安全問題上,更是以被動爲主,都是根據市場反饋和用戶投訴解決問題,不可以從公司內部積極的查找問題,修正錯誤。
一個例外就是軟件因爲發佈時間期限的壓力,一些內部知道的安全問題自己就隨着軟件一塊兒發佈,可是暫時鮮爲人知,商業公司會繼續投入人員進行解決,而後以「升級」的名義對其進行修正。
而開源軟件倒是另一種狀況,從開發團隊核心到外圍的普通用戶,你們都努力將軟件打造的儘量安全,這種對軟件中問題的一致情緒源於你們的責任心和對開源軟件精神的認同,固然也有少數的我的英雄主義人士的存在,可是這一切都是主動的,而不是被動的,這種主動性讓開源軟件的安全性有了能夠站立的基石,使得開源軟件愈發安全。
開源軟件存在安全問題
在2006年的LinuxWorld大會上,Linux內核維護人考克斯強調,有至關數量的資金被用來攻擊開放源代碼系統。他警告說,許多開放源代碼項目遠談不上安全,許多資金都被用來破壞開放源代碼系統的安全。媒體上常常有這樣的字眼:開放源代碼軟件更安全、更可靠,缺陷也更少。這是一種危險的觀點。
考克斯表示,許多分析都只關注知名度很高的項目。對SourceForge上150個項目的分析顯示,它們在安全方面的表現不如Linux,只有部分項目的「高質量」是名符其實的。
開源安全工具
Nmap是一款開源的網絡探測和安全掃描程序,系統管理者和我的可使用這個軟件掃描大型的網絡,獲取那臺主機正在運行以及提供什麼服務等信息。Nmap支持不少掃描技術,例如:UDP、TCP connect()、TCP SYN(半開掃描)、ftp代理(bounce攻擊)、反向標誌、ICMP、FIN、ACK掃描、聖誕樹(Xmas Tree)、SYN掃描和null掃描等。
在將來也許須要那麼一個專門部門來作代碼審計,也許開源才能作到真正的相對開源!而這個部門也許就靠市場來推進了。