越來越多的員工家里裝了各種各樣的IoT設備,員工在家接入公司網絡辦公的現象也越來越普遍。巨大的威脅陰影開始籠罩在公司網絡上空。
1. 設計糟糕的網頁用戶界面( Web UI )
每個人都喜歡看設計好看的網頁界面。對IoT應用來說,Web UI 能讓用戶更快更方便地控制各種功能、配置設備和將設備集成到系統中。問題是,罪犯也能使用 Web UI 提供這些便利。
IoT網頁界面的問題,很大程度上也是企業網頁應用面臨的問題。雖然IoT應用不太可能遭遇SQL注入問題,但指令注入、跨站腳本和跨站請求偽造,卻全都是可令罪犯染指設備和整個系統以控制、監視和操縱現實世界運營的編程漏洞。
幸運的是,大多數 Web UI 安全問題的解決方案,也正是多年來Web開發者被耳提面命的那些正確操作:驗證輸入,要求強口令(且不允許在初始設置之后還繼續使用默認口令),別暴露憑證,限制口令嘗試次數,確保口令和用戶名恢復流程是健壯的。做好基礎安全防護操作最重要。
2. 身份驗證缺失
驗證IoT應用用戶身份是個不錯的操作。當應用能控制大樓門禁和環境溫度濕度,或者能訪問可監視住戶的音視頻設備,身份驗證似乎是個“必須”項,但大多數情況卻是連最基本的身份驗證都欠奉。
有兩種身份驗證對IoT應用而言非常重要。第一種是用戶身份驗證。鑒于很多IoT環境的復雜性,該問題歸結為是不是每個設備都要求單獨的用戶身份驗證,或者一個系統驗證就足以訪問網絡上所有IoT設備。出于易用性考慮,大多數系統設計者都選擇了后一個選項,令中心節點或控制界面的強身份驗證變得尤其關鍵。
系統單點登錄還讓另一種驗證形式——設備身份驗證,變得更為重要。因為用戶不在每個設備界面進行驗證,IoT網絡中的設備就應要求相互驗證,以便攻擊者無法使用系統驗證中暗含的信任登堂入室。
與Web界面安全類似,關閉身份驗證安全漏洞的基礎,在于將IoT當成“真實”的應用網絡來對待。因為很多設備都沒有原生用戶界面——依賴瀏覽器UI或人機交互App,怎么驗證就成了問題,但設備身份驗證的缺乏,會令IoT邊界安全變得更加關鍵。
3. 鎖定默認設置
你知道IoT設備預設了默認用戶名和口令嗎?谷歌或者百度一下就能查到。所以,不讓修改默認設置的設備和系統就真成問題了。
默認用戶憑證(真正重要的是“admin”)就是IoT安全設置中最大最閃亮的警告標志,但并非唯一重要的設置項。網絡參數也是應能按個人部署需求修改的安全設置,包括所用端口、管理員權限設置、日志啟用(或禁用)、事件通知(或不通知)等等。
除了可令IoT設備的安全設置與部署環境中現有的安全基礎設施結合更加緊密,還可以對默認設置進行修改,讓入侵者更難以登錄IoT攻擊界面。但與本文中其他IoT問題類似,這并不是用戶可以輕易左右得了的事。不可修改的默認設置確確實實需要覆蓋在IoT部署之上的安全基礎設施進行額外的審查。
4. 固件問題
固件也在發展。開發人員指出錯誤和漏洞易發地,提出改進的辦法,然后發布新的固件來做出改善。但很多IoT設備并沒有預留固件更新的途徑。于是,固件成了IoT設備的一大漏洞。
經常更新的固件可以帶來的好處之一,是可以讓系統變成移動靶而不是固定靶。如果設備上的固件保持不變且不可更換,攻擊者就可以慢慢研究,開發出漏洞利用程序,充滿自信地對用了該固件的所有設備發起攻擊。5月的VPNFilter攻擊,就是一大類設備無法更新會招致何種惡果的樣例。即便設備可以更新,只要用戶不愿或不能應用可用更新,結果也是一樣的。
很明顯,如果設備可以更新,那么最佳安全實踐就是保持更新。如果設備無法更新,那就需要緊跟已知漏洞,確保部署環境中其他安全措施能夠防住這些漏洞。
5. 有縫隙的云接口
幾乎沒有哪個商業自動化系統功能是不依賴云承擔部分處理能力和命令知識庫存儲的,尤其是使用了語音處理或指令翻譯功能的時候。于是,與云的連接就可能成為巨大的漏洞。
想想那些可以在IoT實例及其宿主云之間游走的消息。顯然有簡單的控制數據包流,但也可能錄制了音頻和視頻、任務列表、日程事件,以及發往DevOps框架及工具的指令。這些敏感數據流真的是通過加密隧道傳輸的?你確定?
IoT安全有很多方面,真正的問題在于:大多數時候,用戶對界面到云端的安全防護情況是沒有發言權的。而且大部分用戶壓根兒不知道云基礎設施在哪個地方,很可能已經陷入安全及合規噩夢而不自知。所以,有必要了解IoT設備的功能、設備數據的發送目的地,以及自己可以利用封包類、防火墻、入侵預防系統(IPS)和其他安全工具為堵住云接口漏洞做哪些工作。
6. 脆弱的網絡安全
編寫糟糕的IoT設備應用程序可以從內部給你的防火墻開幾個洞,讓攻擊者經由這些通洞爬進你的系統,對IoT設備和通用計算機發起攻擊。誘使天真的用戶在自家網絡安裝IoT設備卻不配置防火墻規則,也可以創建供攻擊者用來繞過精密防護的連接。
很多情況下,防火墻是面向外部的:關注試圖從外部進入網絡的流量。IoT設備可以從網絡內部發起對其控制服務器的連接請求,然后以常規心跳傳輸維持該連接。依靠該連接,攻擊者可利用缺乏身份驗證還不加密的流量中的漏洞,將惡意流量發回到內部網絡中。
有人可能會說,那得攻擊者事先知道此類設備和連接的存在才可以利用漏洞呀。沒錯,確實如此,但他們可能沒聽說過聯網設備搜索引擎Shodan。一條簡單的Shodan搜索命令,就可以找出各種各樣的設備、通信和開放端口,快速便捷省時省力。而一旦找到目標,編寫簡單的腳本就可以自動化漏洞利用過程。于是,利用脆弱的網絡安全狀況,不過是收集有漏洞的IoT系統,而不是費盡心力地去狩獵它們。
7. MQTT問題
最后,如果系統設計者或開發人員徹底忘了安全,出問題是一定的。就拿工業控制領域的消息隊列遙測傳輸(MQTT)協議來說,已經部署的成千上萬套系統甚至連最基本的安全都沒有。
多年來,工業控制安全模型都非常簡單,有兩個隱含的定勢思維在里面:首先,這些系統基本不接入任何更大型的網絡。其次,誰會想要攻擊工業控制系統呢?根本沒價值嘛!
但如今,多少系統都要依賴互聯網,而各種各樣的攻擊者都想藉由對IoT設備的訪問或控制,獲得它們產生的數據或發起對其他系統的攻擊。需要指出的是,MQTT和其他協議的漏洞未必存在于協議本身,而是存在于協議的具體實現方法。
守衛IoT部署安全的關鍵在于知識:有關IoT網絡中到底部署了哪些設備的知識,這些設備在網絡中到底在做些什么的知識,以及本地設備及其賴以進行數據分析與控制的云系統之間傳輸的數據流的知識。