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