智慧城市即將到來:如何減少智慧城市中的軟件漏洞?
Synopsys 軟件完整性小組高級安全策略師 Jonathan Knudsen 分享了如何減少智慧城市中的軟件漏洞……
如今,我們生活在激動人心快速發展的時代。設備、網絡和軟件方面的技術進步使幾年前還無法想象的應用和服務成為了可能。 5G網絡的出現提高了網絡的容量和速度,這將迎來一個充滿可能性的新時代。
智慧城市就是其中一種可能性。
智慧城市只是意味著使用傳感器收集信息和軟件來解釋信息并對其采取行動的城市空間。以下是我們在智慧城市中可能會發現的一些功能:
- 如果城市的停車位有傳感器可以知道它們何時被使用,司機就可以使用應用程序找到可用的停車位并支付費用。
- 通過交通燈上的傳感器和攝像頭來監控交通,智慧城市可以根據實時條件優化交通流量。
- 支持網絡的垃圾箱可以在需要清理時通知智慧城市管理部門,從而優化資源。
- 夜晚,當附近沒有車輛或行人時,智慧城市可以通過調暗路燈來節省能源。
毫無疑問,網絡、物聯網 (IoT) 設備和軟件的持續擴散將使我們無法想象的應用成為可能。同時,爆炸性的技術增長將使犯罪的規模和影響達到我們也無法想象的程度。
該怎么辦?
我們如何確保未來的智慧城市不會受到損害?不幸的是,沒有什么是絕對安全的。壞事總會發生;你能做的最好的事情就是降低壞事發生的可能性。例如,如果你去騎自行車,你就有跌倒和頭部嚴重受傷的風險。如果你在騎行期間佩戴頭盔,則嚴重頭部受傷的風險會降低。
智慧城市也不例外。其目的不是防止事故的,壞事肯定會發生——至少是系統故障或惡意攻擊。但這并不意味著我們不能以最小化這種風險的方式設計和建設智慧城市。
智慧城市帶來的大部分風險將來自軟件。軟件運行在作為智慧城市的眼睛和耳朵的物聯網設備上;軟件在聚合和協調這些設備的系統上運行;軟件將根據數據和用戶行為做出決策并采取行動;軟件將處理金融交易和記錄保存;軟件將用于未來智慧城市的每一個角落。事實上,軟件已經無處不在,但它只會在未來變得更加普遍。
此外,幾乎所有的軟件都是建立在其他軟件之上的。開源軟件組件被用作構建新軟件的構建塊。應用程序和系統最終是一個復雜的軟件組件堆疊,一個令人眼花繚亂的復雜結構。
從近期的新聞報道可以看出軟件的風險有多大。勒索軟件攻擊、系統故障、妥協和數據泄露已經司空見慣。
值得慶幸的是,創建更好、更安全的軟件的過程已經眾所周知:它是一個安全開發生命周期(SDLC 或 SDLC),其中安全性是開發的每個階段的一部分。威脅建模等設計時分析有助于將安全性融入系統本身的結構中,而貫穿實施和測試階段的各種類型的安全測試有助于識別可以在軟件發布之前修復的弱點。對軟件供應鏈的持續監控有助于確保在出現新的供應鏈漏洞時能夠迅速發布應用程序更新。
同樣重要的是要注意,應用程序團隊通常更關注功能而不是安全性。在各種緊急項目的趕工中,他們可能會忽略或推遲安全問題。許多軟件供應商通常對于系統故障問題非常不負責任,下游消費者錯誤地認為他們的供應商已經承擔了安全責任。
而且,非常不幸的是,軟件安全性難以量化。理想情況下,我們希望軟件具有安全評分或等級。例如,在智慧城市的情況下,我們會要求所有軟件都具有特定的最低安全系數。因此,我們需要對智能道路或緊急服務等關鍵系統更高的要求。
雖然相應的評分系統仍然是一個難以實現的夢想,但我們可以觀察到的是軟件是如何構建的。供應商是否使用了 SDLC?他們是否進行必要的安全流程操作,例如威脅模型和安全測試結果?
最近 NCSC 關于“互聯場所”(例如智慧城市)的指南是朝著正確方向邁出的一步。認識到安全性必須成為任何軟件系統的一部分很重要,但對其進行量化將很困難。政府可以推薦指導方針;如何執行?同樣,應用程序和設備的購買者如何知道他們希望使用的產品的風險降低了多少?
提高構建者和購買者的軟件安全意識是構建更安全、更具彈性的軟件基礎設施的第一個重要步驟。構建者需要在應用程序開發的每個階段都包含安全性,從設計到實施、測試和維護。靜態代碼分析、軟件組合分析和模糊測試等自動化工具可以幫助在開發周期中清除更多漏洞,從而產生更具彈性、更安全的產品。
買家需要意識到他們購買的產品的安全性至關重要。他們需要了解軟件是如何創建的,并根據他們如何構建產品以及他們如何處理安全和風險來評估供應商和產品。
構建未來基礎設施(例如智慧城市)的最佳方式是睜大眼睛并充分了解如何將風險降至最低。