讓我幫你開門:HID門禁控制器出現遠端管理漏洞

如果你去過機場、校園、醫院及政府等出入複雜的地方或辦公大樓,你可能看過HID這牌子的讀卡機出現在門禁區前。HID是世界上最大的門禁控制系統製造商之一,成為許多大型企業實體安全的一部分。這些讀卡機會連結背後的門禁控制器,這設備可以控制門禁相關功能,包括上鎖和開鎖、排程和發出警報等。

近年來,這些門禁控制器也會提供網路遠端管理。可以更加方便地更新門禁卡資料庫和進行排程工作,但就跟其他連網事物一樣,也會面臨遠端漏洞攻擊的風險。而對實體安全來說,這風險比其他都更加真實。

HID的兩大門禁控制器產品線是VertXEdge平台。為了讓這些控制器可以更加容易整合到現行的存取控制建置,它們提供一個discoveryd服務來回應特定UDP封包。遠端管理系統可以對端口4070進行廣播,網路上所有的門禁控制器都會加以回應,並提供MAC地址、設備類型、韌體版本、甚至包括名稱(如「外北門」)等資訊。這是該服務的用途。但這並非該服務的唯一功能。出於某種原因,discoveryd還可以變更控制器上LED燈的閃爍模式。這是透過發送「command_blink_on」封包給discoveryd服務並加上LED燈的閃爍次數。Discoveryd服務會接著建立/mnt/apps/bin/blink,並呼叫system()以上述數字做為參數來執行閃爍程式。

你可能已經猜到接下來會發生什麼事。

此功能存在一個指令注入漏洞,因為缺少對使用者所提供輸入給system()的檢查過濾。如果我們並非發送LED閃爍次數,而是用反引號包住的Linux指令,如`id`,它就會被設備上的Linux shell所執行。更糟的是,discoveryd服務是以root身份執行,所以我們所送出的任何指令也都將以root執行,讓我們能夠有效地完全控制該設備。因為這裡所討論的是門禁控制器,完全控制也包括所有的警報和上鎖功能。這代表只要一些簡單的UDP封包而無須任何身份驗證,就可以永久解鎖連到控制器上的每一扇門。而且也可以想辦法讓遠端管理系統再也無法重新上鎖。最重要的是,由於discoveryd服務會回應廣播的UDP封包,你可以在同一時間對網路上的每一道門這樣做!

 

不用說,這是個具有潛在摧毀性後果的錯誤。零時差計畫(ZDI)團隊與HID合作來進行修復,現在據報在HID的合作夥伴網站已經可以取得修補程式,但我尚未能親自驗證此修復程式。而且也必須觀察修補程式需要花多久時間佈署到客戶環境。在修補程式提供前,TippingPoint客戶自2015年9月22日開始就可以透過數位疫苗編號20820來取得保護。

 

@原文出處:Let Me Get That Door for You: Remote Root Vulnerability in HID Door Controllers作者:Rick Lawshae