黑科技:看我如何利用多個漏洞黑掉一臺機器人系統(tǒng)
在我們看來傳統(tǒng)的工業(yè)機器人是很無趣的。通常情況下,它們獨自或者在人類的指導下在制造和生產(chǎn)環(huán)境中執(zhí)行重復性的,程序化的任務。它們經(jīng)常被用來執(zhí)行危險或不適合人類去干的任務,因此,它們的工作環(huán)境往往與人類或者其他有價值的機器隔離開來。
但是最新一代的協(xié)同機器人(cobots)并非如此。在符合安全標準的同時,他們與人類或者其他機器在共同的環(huán)境中工作。這一代機器人與人類攜手并進,協(xié)助人類完成工作,而不僅僅是執(zhí)行自動化的,危險性的操作。Cobots可以學習移動,通過高清攝像機看,或通過麥克風聽到來完成工作。
因此,Cobots比傳統(tǒng)的工業(yè)機器人呈現(xiàn)出了更為有趣的攻擊研究。但是,Cobots只限于工業(yè)應用?不,他們也可以被集成到其他裝置中!
去年二月,CesarCerrudo和我發(fā)表了一篇非技術論文HackingRobotsBeforeSkynet,在這篇論文中我們對來自多家知名廠商的幾款家用,商用以及工業(yè)機器人進行了研究,在這些機器人中我們發(fā)現(xiàn)了近50個關鍵的安全漏洞。在Cobots這部分機器人部分,我們對包括來自RethinkRobotics的Baxter/Sawyer和Universal的UR機器人進行了研究,這些都是工業(yè)機器人行業(yè)的領導者。
Baxter/Sawyer:針對這款機器人,我們發(fā)現(xiàn)其存在身份驗證漏洞,庫卡機器人何服電機維修,采用不安全的協(xié)議傳輸和默認的部署配置,易受到物理攻擊以及使用了一個存在多個安全漏洞的框架-ROS,該公司已經(jīng)在2017年2月修復了我們報告的主要問題。
UR:我們在許多控制協(xié)議中發(fā)現(xiàn)了身份驗證問題、易受到物理攻擊、內(nèi)存破壞漏洞以及不安全的通信傳輸?shù)劝踩┒础K羞@些問題在最新版本(3.4.2.65,2017年5月)的系統(tǒng)中中仍未修補。
根據(jù)IOActive網(wǎng)絡安全公司漏洞披露的政策,我們已經(jīng)在去年1月份與供應商取得了聯(lián)系,所以他們有足夠的時間來修復這些漏洞并通知客戶。我們的目標是使cobots機器人更安全,防止攻擊者利用漏洞對企業(yè),員工和周圍環(huán)境造成嚴重傷害。我真的希望這篇文章可以推動cobots機器人的安全性能夠向前發(fā)展,使得我們可以安全地使用現(xiàn)在的這些機器人以及后續(xù)更多代的機器人。
在這篇文章中,我將討論攻擊者如何通過cobot(例如UR3,UR5,UR10-UniversalRobots)機器人的多個漏洞來遠程修改安全設置,違反適用的安全準則,通過移動機器人對其周圍的工作人員造成身體上的傷害。通過這個例子我們可以看到如果這些系統(tǒng)被黑客攻擊或者控制可能會給人類造成多么嚴重的后果,操縱安全限制和禁用緊急按鈕可能直接威脅到人的生命。在這個例子中,我們利用了cobot機器人的六個漏洞來改變其安全限制,并通過遠程網(wǎng)絡禁用安全面板和緊急按鈕/傳感器,演示視頻可以在下面這個url中看到:
問:這些機器人真的可以傷害一個人嗎?
答:是的,加拿大蒙特利爾(ETS)技術研究所的控制和機器人實驗室的一項研究清楚地表明,即使是較小的UR5模型,其強大到足以嚴重傷害一個人。即使是在慢速移動中,他們的力量也足以造成顱骨骨折
問:等等,他們有沒有安全功能,防止他們傷害附近的人類?
A:是的,但是黑客可以遠程入侵,我將在下一個技術部分告訴你黑客是如何入侵機器人系統(tǒng)的。
問:這些機器人部署在哪里?
A:世界各地,每天在多個生產(chǎn)環(huán)境中都有機器人在工作。
集成商定義所有安全裝置
UniversalRobots公司是UR機器人的制造商,但是在特定應用中安裝UR機器人的公司是集成商,一個機器人只有集成和安裝之后才被認為是一個完整的機器。UR機器人的集成商負責確保消除整個機器人系統(tǒng)的任何重大危險,這包括但不限于:
1.對整個系統(tǒng)進行風險評估,在許多國家,這是法律規(guī)定的的必要流程。
2.如果風險評估認為安全,則連接其他機器和其他安全裝置
3.在Polyscope軟件(控制面板)中設置相應的安全設置,確保用戶不會使用安全密碼來修改任何安全措施。
4.驗證整個系統(tǒng)的設計和安裝是否正確
UniversalRobots公司已經(jīng)意識到集成商必須考慮機器人存在的潛在的重大危害例如:
1.機器人工具或者工具連接器上的鋒利的刀邊或者刀尖有可能刺傷皮膚;
2.機器人軌道附近的障礙物上的鋒利刀邊或者刀尖有可能刺傷皮膚;
3.由機器人的碰撞引起的瘀傷;
4.由機器人沉重的機器零件或者材料表面之間的碰撞而產(chǎn)生的扭傷或骨折;
5.由于未經(jīng)授權更改安全配置參數(shù)而導致的錯誤
一些安全相關功能是專為cobot應用而設計的,這些功能包括:
1.力和功率限制:用于在機器人和操作員之間碰撞的情況下,減少機器人在運動方向上施加的夾緊力和壓力;
2.動量限制:通過降低機器人的速度,用于在機器人和操作者之間碰撞的情況下減少高瞬態(tài)能量和沖擊力;
3.刀具定向限制:避免鋒利的刀邊指向操作者;
4.速度限制:用于確保機器人手臂低速運行;
5.安全邊界:用于限制機器人的工作空間,強制其停留在定義的虛擬平面的正確一側,而不能通過它們。
6.安全I/O:當觸發(fā)此輸入安全功能(通過緊急按鈕,傳感器等)時,向輸入端發(fā)送低信號,并使安全系統(tǒng)轉換到減小模式。
安全設置可以有效防止許多潛在危險事件。但是,如果惡意攻擊者繞過這些安全措施,操縱機器人來威脅人類生命,那可能會發(fā)生些什么呢?
UR用戶指南的聲明
遠程更改安全配置
安全配置只能根據(jù)集成商進行的風險評估進行更改。如果改變了安全參數(shù),機器人的整個系統(tǒng)應當被認為是新的,機器人維修,這意味著包括風險評估在內(nèi)的整個安全審批流程應該相應的更新。
遠程更改安全配置的過程如下所示:
步驟1.通過在URDashboardServer上利用身份驗證漏洞來確認遠程機器人系統(tǒng)的版本信息;
步驟2.通過在URModbusTCP服務中利用基于堆棧的緩沖區(qū)溢出漏洞獲得對系統(tǒng)的控制權限,并以root身份執(zhí)行命令;
步驟3.修改security.conf文件,該文件將覆蓋所有的通用安全限制,接頭限制,邊界和安全I/O值限制;
步驟4.強制繞過計算校驗和值,并上傳新文件。我們需要偽造這個校驗和值,因為通常集成商很可能在硬件上寫入當前的校驗和值;
步驟5.重新啟動機器人,以便更新安全配置;
步驟6.通過利用UR控制服務上的認證問題,以任意危險的方式操作機器人。
通過逆向分析ursys-CB3.1-3.3.4-310.img這個系統(tǒng)鏡像,我知道了機器人的入口點以及允許網(wǎng)絡上的其他機器與操作系統(tǒng)進行交互的服務程序。對于此演示,我使用供應商提供的URSim模擬器,該模擬器包含了機器人鏡像中大部分核心的二進制文件。盡管這個示例使用模擬器可以更為清楚展示攻擊效果,但我還是修改了這個二進制文件,修改后的文件部分代碼可以在Linux機器上正常運行。URControl這個二進制文件中導出了很多不同的網(wǎng)絡服務,這些網(wǎng)絡服務的私有協(xié)議在實現(xiàn)上都沒有使用強大的認證機制。例如,網(wǎng)絡上的任何用戶都可以向其中一個服務發(fā)出命令,并獲取正在運行的進程的遠程操作系統(tǒng)的版本(步驟1):