在我們看來傳統(tǒng)的工業(yè)機械人是很無趣的。平日情形下,它們單獨或許在人類的指點下在制作和臨盆情況中履行反復(fù)性的,法式化的義務(wù)。它們常常被用來履行風險或不合適人類去干的義務(wù),是以,它們的任務(wù)情況常常與人類或許其他有價值的機械隔分開來。
然則最新一代的協(xié)同機械人(“cobots”)并不是如斯。在相符平安尺度的同時,他們與人類或許其他機械在配合的情況中任務(wù)。這一代機械人與人類聯(lián)袂并進,協(xié)助人類完成任務(wù),而不只僅是履行主動化的,風險性的操作。 Cobots可以進修挪動,經(jīng)由過程高清攝像機“看”,或經(jīng)由過程麥克風“聽到”來完成任務(wù)。
是以,Cobots比傳統(tǒng)的工業(yè)機械人出現(xiàn)出了更加風趣的進擊研討。然則,Cobots只限于工業(yè)運用?不,他們也能夠被集成到其他裝配中!
客歲二月,Cesar Cerrudo和我揭橥了一篇非技巧論文“Hacking Robots Before Skynet”,在這篇論文中我們對來自多家著名廠商的幾款家用,商用和工業(yè)機械人停止了研討,在這些機械人中我們發(fā)明了近50個癥結(jié)的平安破綻。在Cobots這部門機械人部門,我們對包含來自Rethink Robotics的Baxter / Sawyer和Universal的UR機械人停止了研討,這些都是工業(yè)機械人行業(yè)的引導(dǎo)者。
Baxter / Sawyer:針對這款機械人,我們發(fā)明其存在身份驗證破綻,采取不平安的協(xié)定傳輸和默許的安排設(shè)置裝備擺設(shè),易遭到物理進擊和應(yīng)用了一個存在多個平安破綻的框架-ROS,該公司曾經(jīng)在2017年2月修復(fù)了我們申報的重要成績。
UR:我們在很多掌握協(xié)定中發(fā)明了身份驗證成績、易遭到物理進擊、內(nèi)存損壞破綻和不平安的通訊傳輸?shù)绕桨财凭`。一切這些成績在最新版本(3.4.2.65,2017年5月)的體系中中仍未修補。
依據(jù)IOActive收集平安公司破綻表露的政策,我們曾經(jīng)在客歲1月份與供給商獲得了接洽,所以他們有足夠的時光來修復(fù)這些破綻并告訴客戶。我們的目的是使cobots機械人更平安,避免進擊者應(yīng)用破綻對企業(yè),員工和四周情況形成嚴輕傷害。我真的愿望這篇文章可以推進cobots機械人的平安機能夠向前成長,使得我們可以平安地應(yīng)用如今的這些機械人和后續(xù)更多代的機械人。
在這篇文章中,我將評論辯論進擊者若何經(jīng)由過程cobot(例如UR3,UR5,UR10 - Universal Robots)機械人的多個破綻來長途修正平安設(shè)置,違背實用的平安原則,經(jīng)由過程挪動機械人對其四周的任務(wù)人員形成身材上的損害。經(jīng)由過程這個例子我們可以看到假如這些體系被黑客進擊或許掌握能夠會給人類形成何等嚴重的效果,把持平安限制和禁用緊迫按鈕能夠直接威逼到人的性命。在這個例子中,我們應(yīng)用了cobot機械人的六個破綻來轉(zhuǎn)變其平安限制,并經(jīng)由過程長途收集禁用平安面板和緊迫按鈕/傳感器,演示視頻可以鄙人面這個url中看到:
問:這些機械人真的可以損害一小我嗎?
答:是的,加拿年夜蒙特利爾(ETS)技巧研討所的掌握和機械人試驗室的一項研討清晰地注解,即便是較小的UR5模子,其壯大到足以嚴輕傷害一小我。即便是在慢速挪動中,他們的力氣也足以形成顱骨骨折
問:等等,他們有無平安功效,避免他們損害鄰近的人類?
A:是的,然則黑客可以長途入侵,我將鄙人一個技巧部門告知你黑客是若何入侵機械人體系的。
問:這些機械人安排在哪里?
A:世界各地,天天在多個臨盆情況中都無機器人在任務(wù)。
集成約定義一切平安裝配
Universal Robots公司是UR機械人的制作商,然則在特定運用中裝置UR機械人的公司是集成商,一個機械人只要集成和裝置以后才被以為是一個完全的機械。 UR機械人的集成商擔任確保清除全部機械人體系的任何嚴重風險,這包含但不限于:
1. 對全部體系停止風險評價,在很多國度,這是司法劃定的的需要流程。
2. 假如風險評價以為平安,則銜接其他機械和其他平安裝配
3. 在Polyscope軟件(掌握面板)中設(shè)置響應(yīng)的平安設(shè)置,確保用戶不會應(yīng)用“平安暗碼”來修正任何平安辦法。
4. 驗證全部體系的設(shè)計和裝置能否準確
Universal Robots公司曾經(jīng)認識到集成商必需斟酌機械人存在的潛伏的嚴重傷害例如:
1. 機械人對象或許對象銜接器上的銳利的刀邊或許刀尖有能夠刺傷皮膚;
2. 機械人軌道鄰近的妨礙物上的銳利刀邊或許刀尖有能夠刺傷皮膚;
3. 由機械人的碰撞惹起的瘀傷;
4. 由機械人繁重的機械零件或許資料外面之間的碰撞而發(fā)生的扭傷或骨折;
5. 因為未經(jīng)受權(quán)更改平安設(shè)置裝備擺設(shè)參數(shù)而招致的毛病
一些平安相干功效是專為cobot運用而設(shè)計的,這些功效包含:
1. 力和功率限制:用于在機械人和操作員之間碰撞的情形下,削減機械人在活動偏向上施加的夾緊力和壓力;
2. 動量限制:經(jīng)由過程下降機械人的速度,用于在機械人和操作者之間碰撞的情形下削減高瞬態(tài)能量和沖擊力;
3. 刀具定向限制:防止銳利的刀邊指向操作者;
4. 速度限制:用于確保機械人手臂低速運轉(zhuǎn);
5. 平安界限:用于限制機械人的任務(wù)空間,強迫其逗留在界說的虛擬立體的準確一側(cè),而不克不及經(jīng)由過程它們。
6. 平安I/O:當觸發(fā)此輸出平安功效(經(jīng)由過程緊迫按鈕,傳感器等)時,向輸出端發(fā)送低旌旗燈號,并使平安體系轉(zhuǎn)換到“減小”形式。
平安設(shè)置可以有用避免很多潛伏風險事宜。然則,假如歹意進擊者繞過這些平安辦法,把持機械人來威逼人類性命,那能夠會產(chǎn)生些甚么呢?
UR用戶指南的聲明
長途更改平安設(shè)置裝備擺設(shè)
“平安設(shè)置裝備擺設(shè)只能依據(jù)集成商停止的風險評價停止更改。假如轉(zhuǎn)變了平安參數(shù),機械人的全部體系應(yīng)該被以為是新的,這意味著包含風險評價在內(nèi)的全部平安審批流程應(yīng)當響應(yīng)的更新“。
長途更改平安設(shè)置裝備擺設(shè)的進程以下所示:
步調(diào)1.經(jīng)由過程在UR Dashboard Server上應(yīng)用身份驗證破綻來確認長途機械人體系的版本信息;
步調(diào)2.經(jīng)由過程在UR Modbus TCP辦事中應(yīng)用基于客棧的緩沖區(qū)溢露馬腳取得對體系的掌握權(quán)限,并以root身份履行敕令;
步調(diào)3.修正security.conf文件,該文件將籠罩一切的通用平安限制,接頭限制,界限和平安I/O值限制;
步調(diào)4.強迫繞過盤算校驗和值,并上傳新文件。我們須要捏造這個校驗和值,由于平日集成商極可能在硬件上寫入以后的校驗和值;
步調(diào)5.從新啟念頭器人,以便更新平安設(shè)置裝備擺設(shè);
步調(diào)6.經(jīng)由過程應(yīng)用UR掌握辦事上的認證成績,以隨意率性風險的方法操作機械人。
經(jīng)由過程逆向剖析ursys-CB3.1-3.3.4-310.img這個體系鏡像,我曉得了機械人的進口點和許可收集上的其他機械與操作體系停止交互的辦事法式。關(guān)于此演示,我應(yīng)用供給商供給的URSim模仿器,該模仿器包括了機械人鏡像中年夜部門焦點的二進制文件。雖然這個示例應(yīng)用模仿器可以更加清晰展現(xiàn)進擊后果,但我照樣修正了這個二進制文件,修正后的文件部門代碼可以在Linux機械上正常運轉(zhuǎn)。URControl這個二進制文件中導(dǎo)出了許多分歧的收集辦事,這些收集辦事的公有協(xié)定在完成上都沒有應(yīng)用壯大的認證機制。例如,收集上的任何用戶都可以向個中一個辦事收回敕令,并獲得正在運轉(zhuǎn)的過程的長途操作體系的版本(步調(diào)1):
如今我曾經(jīng)驗證了長途目的運轉(zhuǎn)著一個易受進擊的體系ursys-CB3.1-3.3.4-310(UR3,UR5或UR10),下一步我預(yù)備應(yīng)用收集辦事破綻來損壞這個機械人體系(步調(diào)2)。因為UR Modbus TCP辦事(端口502)不支撐對敕令源的認證機制,是以,收集進擊者能夠會在掌握的進程中損壞機械人體系。與機械人IP銜接的進擊者可以收回Modbus讀/寫要求,并部門更改機械人的狀況或向操作人員發(fā)送要求,以更改掌握鏈接的狀況。發(fā)送Modbus寫要求其實不能轉(zhuǎn)變機械人的任何平安設(shè)置,但是,我們在在UR Modbus TCP吸收器(URControl內(nèi)核的一個二進制文件)中發(fā)明了一個基于客棧的緩沖區(qū)溢出。
UR Modbus TCP辦事法式的recv函數(shù)存在客棧緩沖區(qū)溢露馬腳,進擊者經(jīng)由過程該函數(shù)可以向法式的緩沖區(qū)寫入超越其長度的內(nèi)容,形成緩沖區(qū)的溢出,從而損壞法式的客棧,使法式轉(zhuǎn)而履行其他的指令,以到達進擊的目標,這是一個很罕見的客棧緩沖區(qū)破綻。
在停止破綻應(yīng)用之前,我們先來看一下破綻應(yīng)用的將要面對的障礙。機械人的Linux內(nèi)核被設(shè)置為客棧隨機化(randomize_va_space = 1 => ASLR),VDSO(virtual dynamic shared object page)和內(nèi)存區(qū)域同享。另外,因為內(nèi)核中的"No eXecute" (NX) 被置位,是以該內(nèi)核文件是弗成寫和弗成履行的。
當對目的緩沖區(qū)停止溢出操作時,我們也須要要對指向函數(shù)參數(shù)的指針履行溢出操作。在函數(shù)前往之前,這些參數(shù)在其他函數(shù)挪用中被應(yīng)用,所以我們必需要為這些函數(shù)挪用供給有用的實參。不然,我們永久不克不及找到函數(shù)的前往點和掌握函數(shù)的履行流程。
