按 Enter 到主內容區
:::

TWCERT-電子報

:::

開源軟體資安威脅與防護

發布日期:
字型大小:
  • 發布單位:TWCERT/CC
  • 更新日期:2022-11-11
  • 點閱次數:741
開源軟體資安威脅與防護 TWCERT/CC

1.簡介
2.使用開源軟體的潛在資安風險
3.國內開源軟體資安議題
4.防護與建議措施
5.分析與建議


  • 開源軟體可加速產品開發,其使用狀況可分為應用工具、程式函式、軟體服務等類別。
  • 開源軟體發生過多次影響範圍極大的資安事件,尤其是函式庫類型的開源軟體,因經常被引用且不易盤點使用狀況,當發生資安漏洞時,威脅就相當嚴重,如OpenSSL heartbleed漏洞,而其它常用的基礎架設軟體,亦常造成嚴重資安議題,如Apache。
  • 開源軟體潛在資安風險頗高,此乃由於缺乏源碼檢測與安全性檢視、程式碼開發成熟度的不確定性、相關安全性更新易遭忽視。
  • 我國為產品代工與IoT設備生產大國,大量採用開源軟體,亦發生多次產品因開源軟體漏洞而受到影響的事件,突顯廠商對自身產品採用開源軟體的安全度掌握不足之議題。
  • 在資安防護建議的作法方面,包括:謹慎評估開源軟體、管控開源軟體導入範圍、指派人員參與開源軟體專案、針對函式庫進行檢測、擬定相關緊急應變措施等。

一、簡介

開源軟體(Open Source Software, OSS) 為開放原始碼的軟體,軟體作者透過原始碼的公開及適度的軟體授權條款,允許其他使用者進行檢視、修改、及任何目的發送軟體。大多數願意公開程式碼的開源軟體,起先多是為了讓更多人參與開發,提升專案成熟度,另一方面也可進行推廣,使用者也樂於以無成本使用軟體,甚至可依據自身需求進行修改。

1997年7月,Bruce Perens 與其他Debian Linux 開發者們釋出了Debian自由軟體指導方針(Debian Free Software Guidelines),作為Debian專案用以判斷自由軟體授權條款的方針,不久後開放原始碼促進會(Open Source Initiative, OSI)參照此指導方針,釋出了開放原始碼定義(The Open Source Definition)。

根據Gartner 2021統計數據指出,超過90%的企業組織會採用開源軟體,也包含會應用在關鍵任務的工作(mission-critical workloads)之中。企業組織會採用開源軟體,主要是因為可以低取得成本、可以客製化,有些開源軟體的品質甚至優於商業版同性質的軟體。

企業組織採用開源軟體,大多可分為以下應用:

(1)應用工具類 : 以開源軟體作為企業內部應用程式,如程式碼編輯器Eclipse、NetBeans、Visual Studio Code(VS Code)等,文書處理軟體OpenOffice、LibreOffice等,圖形編輯器Gimp等。
(2)程式函式類 : 採用開源的程式函式(library)或是開源框架,更便捷地開發出產品功能,或者應用於企業內部服務,如Zend framework、Springs、Apache Structs等網站應用框架(Framework),或是像電腦視覺應用的OpenCV、機器學習相關的Tensor-Flow、Torch等。
(3)軟體服務類 : 企業重要服務或軟體服務,如作業系統GNU/Linux、網頁伺服器軟體相關的Apache、Nginx,資料庫相關的MySQL、Elasticsearch等。

TOP

二、使用開源軟體的潛在資安風險

雖然企業使用開源軟體有許多益處,但近年也發生數起與開源軟體相關的重大資安事件,如2014年就出現開源加密函式庫OpenSSL相關的Open心臟流血(Heartbleed, CVE-2014-0160)及Unix作業系統中Bash Shell相關漏洞Shellshock(CVE-2014-6271、CVE-2014-6277、CVE-2014-6278、CVE-2014-7169、CVE-2014-7186、CVE-2014-7187) ,在漏洞公告後,網路上出現大量針對此漏洞的掃瞄攻擊行為,造成全球網站曝露在資訊洩漏與攻擊入侵風險之中,大型入口網站業者雅虎(Yahoo!)也疑似受到此漏洞影響,有多台重要伺服器被入侵。

在2017年9月,美國重要信貸公司艾可飛(Equifax)發現遭受駭客入侵,被竊取了1.47億筆個人隱私資料,資料內容包含用戶的社會安全號碼(Social Security number, SSN)、信用卡號等資訊,最終艾可飛與聯邦貿易委員會(Federal Trade Commission)、消費者金融保護局(Consumer Financial Protection Bureau)、及50個州以總計4.25億美元的天價達成和解,用於處理受影響用戶的後續事宜。依據後續資安事件調查,入侵點為公司網站app上的漏洞,為Apache Struts(CVE-2017-5638)已發布之漏洞,Apache基金會早於3月時已經公告版本更新,然而在更新公告後,全球尚未修補的伺服器便陸續遭受駭客入侵,艾可飛在5月時已被入侵,被駭客持續竊走客戶資訊。

此外,近年利用企業內使用之軟體工具,進行針對性供應鏈攻擊的手法也層出不窮,如2020年5月針對程式開發工具NetBeans進行的滲透攻擊行為,駭客先感染NetBeans整合開發環境之電腦,待開發人員以該電腦提交(Commit)新程式碼至GitHub平台時,惡意程式會一併植入JAR檔案,導致開發者提交至GitHub平台之程式碼帶有惡意後門程式,後續使用者更新新版程式便會遭受感染,或是其他開發人員引入此版本程式碼時,也會讓後續版本一併遭受感染。資安研究人員將此行動命名為Octopus Scanner,在當時研究人員發現此行動已成功感染了26個開源專案。

綜觀數起事件,本研究歸納以下幾點開源軟體存在的潛在風險:

(一)缺乏源碼檢測與安全性檢視

開源軟體的開發目標以功能導向為主,較有規模的社群團隊會將參與者分為貢獻者(Contributer)與核心團隊(Core member),甚至會再細分角色。貢獻者可以依據自主想法或是專案的待完成功能(To Do)提交程式碼,核心團隊負責決定專案方向,以及審核貢獻者們提交的程式碼,通過後貢獻者們的程式碼便會成為開源軟體的一部分。然而在審核程中,大多只會確認程式碼的功能,鮮少會針對安全性進行實際驗測,一切仰賴核心團隊的開發經驗來檢視,因此無法確保軟體每個新版次的軟體安全性。

此外,也因為開源的特性,駭客可直接取得軟體原始碼,透過檢視原始碼(Code Review),可直接挖掘軟體的漏洞,其若有被挖掘到則便成為駭客的攻擊武器之一,利用該漏洞入侵有使用該軟體的企業或組織。

(二)程式碼開發成熟度的不確定性

開源軟體的開發社群是以自由參與為主,軟體更新頻率無法如商用軟體般給予明確的開發時間,小型社群此情況尤甚。若社群中有業界著名開發者參與,或是以公司企業為主的開發者,則開發社群比較容易趨向成熟穩定,專案的開發也比較會持續精進,例如Google、RedHat、Apache基金會、微軟、Mozilla等組織的開源專案,或是如Python、Ruby等有著名開發者主導的程式語言相關專案。

(三)易於忽視相關安全性更新

使用開源軟體可提升自身產品的開發效率,但也容易忽視開源軟體的安全性,在檢測產品安全性時只注重產品本身程式碼,忽略了使用到的相關函式庫,或是採用的應用框架、服務軟體等,例如Apache Structs。

TOP

三、國內開源軟體資安議題

我國產品亦大量採用開源軟體,許多漏洞其根本原因採用開源軟體導致,而IoT設備方面,使用Linux早已行之有年,特別在行動網路時代,android系統不止被使用在行動電話上,較多智慧功能的IoT設備皆以android為基礎開發,這些都是開源軟體專案的產物,即使經過調整、客製後的版本亦不可避免的使用到各種開源涵式庫、開源工具等,我國尤其是各種IoT設備的生產大國,但並未太重視產品中使用的開源軟體安全狀況,導致存在諸多漏洞風險。

2021年1月,DNSmasq遭以色列安全公司JSOF發現存在7個安全性漏洞,DNSmasq為開源專案,其功能有DNS伺服器、DHCP伺服器、以及TFTP伺服器,由於其輕量化及高效能的特性,被許多網路設備產品或相關韌體所採用,用於內網中設備的DNS查詢快取與DNS遞迴查詢。研究人員發現了DNS快取中毒(DNS Cache Poisoning)等漏洞,估計約有40家業者在產品中採用了DNSmasq,包括AT&T、思科、Google、Juniper及紅帽等,國內網通設備廠包含華碩(Asus)、友訊科技、Linksys、群暉科技(Synology)、合勤科技(Zyxel)等。

資訊產品漏洞直接影響到採用該產品的企業組織與消費者,尤以近年興起的供應鏈攻擊,鎖定有漏洞的資訊設備或第三方函式作為入侵破口,潛入後挖掘出企業內部橫向擴散(Lateral Movement)的路徑。資訊產品的使用者可能會對產品本身的公告漏洞有所警覺,但與開源軟體相關的漏洞卻很難察覺,需仰賴產品製造商本身的積極作為,以群暉科技為例,開源加密通訊函式OpenSSL在2021年8月修正了CVE-2021-3711與CVE-2021-3712兩個安全漏洞,該公司掌握相關資訊後,馬上確認線上產品是否採用相關函式,接著即時公告受影響的產品,並著手進行修補作業。

針對軟體安全相關議題,美國政府近年已採取一系列積極措施,2021年5月通過改善國家網路安全與保護聯邦政府網路相關的行政命令,其中關於強化軟體供應鏈安全部分,針對販售給政府部門的軟體,要求開發人員提高軟體透明度,並公開相關安全資訊。此外,美國國家電信暨資訊管理局(National Telecommunications and Information Administration, NTIA)也制定了軟體組成清單(Software Bill of Materials, SBOM)相關資訊及指引,規範軟體組成清單的內容以及相關格式,利於軟體開發團隊分享軟體資訊,提高軟體透明度,讓使用者用得以確認軟體是否有新的漏洞風險。基於美國政府的相關要求,可預期各資訊產品的軟體元件清單與安全風險資訊,將成為產品上市供應商所必須提供的資訊。

目前國內尚無類似規範,僅有衛生福利部食藥署針對醫療器材提出「適用於製造廠之醫療器材網路安全指引」,督促醫療器材製造廠重視產品的網路安全,但此對廠商而言,關於產品資安之基本認知尚仍不足,在評估資安風險之前,首要應是瞭解產品軟體開發組成,掌握自我開發與使用開源軟體的狀況,才能針對性的強化或修補資安的缺漏,如自我開發部份可採源碼掃描找出存在風險的程式,而開源軟體部份,透過軟體組成清單,關注其漏洞狀況,建立更新、維護機制並定期檢討改進。

TOP

四、防護與建議措施

綜上所述,本研究歸納了數項主要潛在風險,茲就每個要項提供可採取對應措施之建議,期能有效將風險減至最低,說明如下:

(一)謹慎評估開源軟體

開源軟體品質不一,也存在維護議題,故除了確認軟體是否滿足功能需求,在評估階段可多比較同性質軟體,評估項目中也需考量專案擁有者及開發社群的活躍程度,確保軟體仍會持續更新。

(二)管控開源軟體導入範圍

確認企業組織內採用的開源軟體清單,以及開源軟體應用的範圍,避免後續進行維護更新時有所疏漏。針對產品部分可參考軟體組成清單的文件,審慎評估其安全性,並適時公開相關資訊,提供給使用者作為參考。

(三)指派人員參與開源軟體專案

指派相關維護人員或主責人員關注開源軟體的專案活動,甚至可以參與該專案的相關討論或提交程式碼,一則強化企業內部對於開源軟體的關注程度,二則可以活絡開發社群,確保軟體的開發成熟度且與時俱進。

(四)針對函式庫進行檢測

將開源軟體程式碼安全視為軟體開發安全的一部分,於程式開發過程中,除作一般安全性檢視外,建議也針對使用的函式庫也進行安全實測,在軟體專案中的測試用例(Test Case)中,再增加安全性相關的測試,挖掘可能潛存之安全漏洞。

(五)擬定相關緊急應變措施

針對開源軟體的應用範圍擬定相關應變措施,以及相關替代方案,落實資訊設備備援機制,以避免服務中斷。針對軟體產品可強化版本控制以及持續整合(Continuous integration, CI),並規劃可能的緩解方案,減低客戶受到資安威脅的負面衝擊。

TOP

五、分析與建議

(一)開源軟體因其開放性,駭客可從原始程式碼尋找其漏洞,因此開源軟體資安威脅主要是漏洞遭利用,關注開源軟體更新狀況是最重要的防護作法。

(二)我國產品大量使用開源軟體,企業組織更需重視開源軟體資安議題,且必須掌握產品使用開源軟體的狀況,及早發現漏洞及根因。

(三)當函式庫發生漏洞,將造成大規模的影響,且廠商難以察覺產品是否遭到影響,建議在軟體專案測試用例(Test Case)中,加入安全性測試。

(四)開源軟體的使用,從評估、使用、追蹤漏洞狀況,是必須持續不斷進行的,並非使用了就可以放任不管,當發現相關開發社群已有停滯跡象,也應評估其它解決方案,避免漏洞出現後無法修補。

(五)使用開源軟體雖會伴隨部分資安隱憂,但若企業組織能進行風險管理,針對風險部分規劃必要措施與管理計畫,開源軟體應用仍能帶給企業組織極大的助益。

TOP

回頁首