在物聯(lián)網(wǎng)的應(yīng)用初期,物聯(lián)網(wǎng)應(yīng)用程序開(kāi)發(fā)人員可以不必考慮安全性,因?yàn)樗麄儤?gòu)建了原型和最小可行的產(chǎn)品,旨在展示物聯(lián)網(wǎng)可用于改變?nèi)藗児ぷ鳌蕵?lè)和生活方式的不同方式。
但物聯(lián)網(wǎng)發(fā)展到今天已經(jīng)日前成熟,2017年有84億臺(tái)物聯(lián)網(wǎng)設(shè)備,Gartner公司預(yù)計(jì)到2020年將部署204億臺(tái)物聯(lián)網(wǎng)設(shè)備。隨著這一增長(zhǎng),物聯(lián)網(wǎng)安全攻擊的數(shù)量和復(fù)雜性大幅增加,開(kāi)發(fā)人員不僅需要將安全作為優(yōu)先事項(xiàng),而且還需要將其作為首要事項(xiàng)。
正如Trendnet公司的SecurView攝像頭、St.Jude公司的心臟監(jiān)測(cè)設(shè)備和Jeep Cherokee物聯(lián)網(wǎng)遭遇黑客攻擊證明的那樣,當(dāng)安全性不是首要任務(wù)時(shí),企業(yè)遭遇的物聯(lián)網(wǎng)攻擊可能會(huì)導(dǎo)致財(cái)務(wù)和聲譽(yù)的重大損失。
雖然不可能使物聯(lián)網(wǎng)應(yīng)用程序(或任何類(lèi)型的軟件)100%安全,但物聯(lián)網(wǎng)應(yīng)用程序開(kāi)發(fā)人員可以采用幾種最佳實(shí)踐來(lái)加強(qiáng)其物聯(lián)網(wǎng)應(yīng)用程序的安全性。這些最佳實(shí)踐包括:
(1)在構(gòu)建應(yīng)用程序時(shí)遵循一組經(jīng)過(guò)批準(zhǔn)的加密標(biāo)準(zhǔn)。
(2)使用靜態(tài)代碼分析程序分析應(yīng)用程序代碼,以識(shí)別可能導(dǎo)致安全漏洞的常見(jiàn)編碼錯(cuò)誤。
(3)制定漏洞管理戰(zhàn)略,在計(jì)劃的、持續(xù)的基礎(chǔ)上識(shí)別和修復(fù)物聯(lián)網(wǎng)應(yīng)用程序中的已知漏洞。
這三個(gè)最佳實(shí)踐并不能使物聯(lián)網(wǎng)應(yīng)用程序完全免受惡意參與者的攻擊。但是,它們可以顯著減少物聯(lián)網(wǎng)應(yīng)用程序的漏洞和攻擊面,從而降低開(kāi)發(fā)人員應(yīng)用程序被破壞的可能性,減少客戶(hù)投訴和負(fù)面新聞。
遵循已批準(zhǔn)的加密標(biāo)準(zhǔn)
大多數(shù)開(kāi)發(fā)人員都明白,如果他們希望保持物聯(lián)網(wǎng)數(shù)據(jù)的安全,他們應(yīng)該對(duì)這些數(shù)據(jù)進(jìn)行加密,特別是在數(shù)據(jù)從設(shè)備傳輸?shù)皆破脚_(tái)時(shí),反之亦然。然而,面對(duì)嚴(yán)格的開(kāi)發(fā)期限,以及需要充分利用其物聯(lián)網(wǎng)設(shè)備的有限帶寬和處理能力,一些開(kāi)發(fā)人員選擇不加密他們的數(shù)據(jù)或使用弱加密算法,這些加密算法承諾比他們更快或更輕,但沒(méi)有提供適當(dāng)?shù)陌踩?jí)別。
經(jīng)驗(yàn)表明,采用加密快捷方式可能導(dǎo)致客戶(hù)數(shù)據(jù)被盜、應(yīng)用程序被禁用或出現(xiàn)其他問(wèn)題。出于這個(gè)原因,開(kāi)發(fā)人員需要與他們的安全團(tuán)隊(duì)密切合作,按照國(guó)際認(rèn)可的專(zhuān)家(如美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(NIST))批準(zhǔn)的標(biāo)準(zhǔn)和指南,適當(dāng)?shù)丶用芪锫?lián)網(wǎng)應(yīng)用數(shù)據(jù)。
選擇使用此類(lèi)經(jīng)批準(zhǔn)的標(biāo)準(zhǔn)不會(huì)對(duì)物聯(lián)網(wǎng)應(yīng)用程序開(kāi)發(fā)時(shí)間、性能或功能產(chǎn)生重大影響。美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)為開(kāi)發(fā)人員提供了如何簡(jiǎn)化加密標(biāo)準(zhǔn)與應(yīng)用程序集成的指導(dǎo)方針。它們還提供了許多不同的標(biāo)準(zhǔn)供選擇,因此開(kāi)發(fā)人員可以找到一種可以為應(yīng)用程序提供適當(dāng)級(jí)別的安全性,而不會(huì)犧牲太多的性能或功能。這確實(shí)需要一些額外的工作和努力,但是如果物聯(lián)網(wǎng)開(kāi)發(fā)商想把安全作為首要任務(wù),他們需要確保遵循批準(zhǔn)的加密標(biāo)準(zhǔn)。
使用靜態(tài)代碼分析程序
許多開(kāi)發(fā)人員熟悉靜態(tài)代碼分析程序及其發(fā)現(xiàn)常見(jiàn)編碼錯(cuò)誤的能力,這些錯(cuò)誤可能導(dǎo)致影響軟件質(zhì)量的錯(cuò)誤。但是,這些程序還可以識(shí)別不安全的編碼實(shí)踐,例如使用不正確終止的字符串,釋放內(nèi)存的指針和允許超出緩沖區(qū)末尾的緩沖區(qū)索引。這些常見(jiàn)的編碼錯(cuò)誤會(huì)造成安全漏洞,惡意參與者可以在其他功能應(yīng)用程序中利用這些漏洞。
有多種靜態(tài)代碼分析工具可供使用,其中包括專(zhuān)有的和開(kāi)放源碼的工具,開(kāi)發(fā)人員可以使用這些工具來(lái)提醒他們可能會(huì)造成安全漏洞的編碼錯(cuò)誤。開(kāi)發(fā)人員應(yīng)該研究哪些程序更好地支持他們的安全性和其他代碼分析需求,然后確保在整個(gè)應(yīng)用程序開(kāi)發(fā)過(guò)程中,特別是在部署應(yīng)用程序之前,他們使用這些靜態(tài)代碼分析程序來(lái)發(fā)現(xiàn)代碼錯(cuò)誤,這些錯(cuò)誤將會(huì)導(dǎo)致出現(xiàn)安全漏洞。
同樣,許多開(kāi)發(fā)人員可能會(huì)嘗試跳過(guò)這一步驟,因?yàn)槌绦蛩沂镜膯?wèn)題可能會(huì)阻止他們盡可能快地部署和商業(yè)化其他功能性應(yīng)用程序。但是,正如上面提到的黑客采用物聯(lián)網(wǎng)應(yīng)用程序的例子所證明的那樣,安全性的偷工減料通常會(huì)導(dǎo)致嚴(yán)重的問(wèn)題。如果開(kāi)發(fā)人員致力于向客戶(hù)交付具有強(qiáng)大安全性的物聯(lián)網(wǎng)應(yīng)用程序,他們需要承諾使用靜態(tài)代碼分析程序來(lái)修復(fù)可能使其應(yīng)用程序易受網(wǎng)絡(luò)攻擊的編碼錯(cuò)誤。
監(jiān)視和修復(fù)已知的漏洞
例如媒體非常關(guān)注的所謂的“零日”漏洞,而這些漏洞是軟件供應(yīng)商事先不知道的。然而,對(duì)于大多數(shù)攻擊者來(lái)說(shuō),其結(jié)果是,在物聯(lián)網(wǎng)應(yīng)用程序中使用的數(shù)百萬(wàn)個(gè)軟件組件中存在的已知漏洞數(shù)量不斷增加,這些軟件組件未被修復(fù),這可能是因?yàn)榻M件的用戶(hù)不知道該漏洞,也可能是因?yàn)樗麄儧](méi)有采取措施更新其應(yīng)用程序以修復(fù)漏洞。
所有物聯(lián)網(wǎng)應(yīng)用程序開(kāi)發(fā)人員都應(yīng)了解其應(yīng)用程序可能因?qū)⒌谌杰浖M件納入到其應(yīng)用程序中而導(dǎo)致的已知漏洞,無(wú)論是開(kāi)源組件(如Linux操作系統(tǒng)和相關(guān)軟件)還是專(zhuān)有組件。但是,了解物聯(lián)網(wǎng)應(yīng)用程序的設(shè)備固件、操作系統(tǒng)和其他第三方軟件組件中的所有已知漏洞的最新信息并非易事。構(gòu)建這些軟件組件的企業(yè)、政府機(jī)構(gòu)和其他監(jiān)管機(jī)構(gòu)通常每月在這些類(lèi)型的軟件組件中識(shí)別出多達(dá)1,000個(gè)不同的漏洞。
幸運(yùn)的是,有些資源可以幫助開(kāi)發(fā)人員及時(shí)了解新的漏洞。例如,美國(guó)國(guó)家漏洞數(shù)據(jù)庫(kù)(NVD)是由美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)運(yùn)營(yíng)的公共資源,它對(duì)所有類(lèi)型的軟件組件(包括專(zhuān)有軟件和開(kāi)源軟件)中的已知漏洞進(jìn)行分類(lèi)。為了確保他們的物聯(lián)網(wǎng)應(yīng)用程序清除或沒(méi)有任何已知的漏洞,物聯(lián)網(wǎng)開(kāi)發(fā)人員可以為其物聯(lián)網(wǎng)應(yīng)用程序編制一份安全物料清單(BOM),列出應(yīng)用程序中使用的所有軟件組件和版本,然后監(jiān)視新的美國(guó)國(guó)家漏洞數(shù)據(jù)庫(kù)(NVD)這些組件的已知漏洞。或者,有許多專(zhuān)有和開(kāi)源工具利用免費(fèi)API查詢(xún)美國(guó)國(guó)家漏洞數(shù)據(jù)庫(kù)(NVD),然后評(píng)估其組件的代碼庫(kù)或識(shí)別暴露服務(wù)的版本(如DNS,HTTP/S,網(wǎng)絡(luò)接口上的NTP、SSH)。
但是,僅僅了解已知漏洞并不能解決這些漏洞。這就是開(kāi)發(fā)人員不僅要持續(xù)檢查新的已知漏洞的原因,還要制定計(jì)劃,通過(guò)安全更新的補(bǔ)丁定期修復(fù)新的已知漏洞。在理想情況下,這樣的計(jì)劃應(yīng)允許遠(yuǎn)程(無(wú)線(xiàn)通信)和自動(dòng)執(zhí)行這些更新。如今,許多消費(fèi)者物聯(lián)網(wǎng)應(yīng)用程序已經(jīng)包含一個(gè)啟用遠(yuǎn)程自動(dòng)更新的選項(xiàng)。許多開(kāi)發(fā)人員構(gòu)建的商業(yè)物聯(lián)網(wǎng)應(yīng)用程序有時(shí)需要更多的協(xié)調(diào)來(lái)實(shí)現(xiàn)這種遠(yuǎn)程的自動(dòng)更新,但這應(yīng)該只是目標(biāo)。在任何情況下,即使無(wú)法遠(yuǎn)程或自動(dòng)進(jìn)行更新,物聯(lián)網(wǎng)開(kāi)發(fā)商也必須制定某種計(jì)劃,及時(shí)部署針對(duì)其應(yīng)用程序中已知漏洞的安全更新。
強(qiáng)大的安全性將使物聯(lián)網(wǎng)的未來(lái)增長(zhǎng)成為可能
物聯(lián)網(wǎng)正處于一個(gè)重要的轉(zhuǎn)折點(diǎn)。市場(chǎng)繼續(xù)快速擴(kuò)張,每天都在推出激動(dòng)人心的農(nóng)業(yè)、供應(yīng)鏈、工業(yè)、公共安全、消費(fèi)者和其他物聯(lián)網(wǎng)應(yīng)用。然而,其他引人注目的物聯(lián)網(wǎng)應(yīng)用程序漏洞可能會(huì)威脅到企業(yè)和消費(fèi)者在物聯(lián)網(wǎng)中的信任度,尤其是當(dāng)它越來(lái)越多地用于收集敏感數(shù)據(jù)或完成關(guān)鍵任務(wù)時(shí)。
為了加強(qiáng)對(duì)物聯(lián)網(wǎng)的信任,開(kāi)發(fā)人員需要致力于將物聯(lián)網(wǎng)安全作為首要任務(wù)。開(kāi)發(fā)人員需要實(shí)施物聯(lián)網(wǎng)安全最佳實(shí)踐,其中包括采用經(jīng)過(guò)批準(zhǔn)的加密標(biāo)準(zhǔn),使用靜態(tài)代碼分析程序發(fā)現(xiàn)可能產(chǎn)生安全漏洞的編碼錯(cuò)誤,以及定期識(shí)別和修復(fù)其應(yīng)用程序中已知漏洞的策略。如果物聯(lián)網(wǎng)開(kāi)發(fā)人員通過(guò)實(shí)施這些物聯(lián)網(wǎng)安全最佳實(shí)踐,將安全性作為真正的首要任務(wù),那么企業(yè)對(duì)物聯(lián)網(wǎng)的信任將會(huì)提高,他們的業(yè)務(wù)也會(huì)隨之增長(zhǎng)。