摘要
國家計算機網絡與信息安全管理中心工業控制系統網絡安全應急技術工業和信息化部重點實驗室(以下簡稱“安全中心工控實驗室”)于2017年11月~2018年3月對某國外工業云平臺的通訊安全性開展針對性研究,通過骨干網流量監測、仿真模擬測試等研究手段,發現xx云平臺在工業互聯網傳輸、工業APP應用、工業數據采集器等方面存在16處疑似安全漏洞;所發現漏洞有可能導致云平臺用戶名/密碼被竊取、非法上傳數據、云端重放攻擊等安全問題;以上為初步研究結果,待與對方確認。
1 概述
本次研究主要面向某國外xx云平臺及APP手機應用,通過骨干網流量監測、仿真環境模擬測試等無害化評估手段,從工業互聯網傳輸安全、工業APP應用安全、工業數據采集組件安全、工業云平臺安全等維度開展研究。發現安全漏洞共16處,其中傳輸安全漏洞5個,工業APP安全漏洞7個,工業數據采集器安全漏洞3個、云服務端安全漏洞1個。
2 數據采集器安全性評估
2.1 XX-BOX數據采集器介紹
XX數據采集器運行嵌入式系統,可以通過WLAN、3G 等網絡實時傳輸從以太網、RS485采集得到的數據傳給遠程云平臺服務器,同時接收指令來控制執行單元。
2.2 研究結果
XX數據采集器開啟有http web服務,經分析存在web 服務配置錯誤等漏洞隱患,有可能導致黑客非法上傳文件(如木馬、后門、病毒程序等),歸納如下:
序號 | 漏洞名稱 | 漏洞描述 | 嚴重級別 | 后果 |
1 | Web服務端443端口/TCP配置錯誤 | 443端口/TCP允許客戶端執行上傳、刪除文件等危險的http操作。 | 高 | 可以通過端口443向XX 數據采集器上傳文件(比如木馬、病毒等惡意程序執行文件),并能夠對上傳文件執行刪除等操作。 |
2 | Web服務端80端口/TCP配置錯誤 | 80端口/TCP允許客戶端執行上傳、刪除文件等危險的http操作。 | 高 | 可以通過端口80向XX 數據采集器上傳文件(比如木馬、病毒等惡意程序執行文件),并能夠對上傳文件執行刪除等操作。 |
3 | TCP時間戳可查詢 | 遠程主機可以查詢XX數據采集器的TCP時間戳,從而獲取系統運行時間。 | 低 | XX 數據采集器已運轉時間被非法獲取。 |
2.3 安全分析
2.3.1 漏洞1:Web服務端443端口/TCP配置錯誤
詳細信息: XX數據采集器443端口/TCP允許客戶端執行上傳、刪除文件等危險的http操作。這樣黑客可以通過端口443向XX 數據采集器上傳木馬、病毒等惡意程序執行文件,并能夠對上傳文件執行刪除操作。
解決方法:修改web服務配置,禁用http方式通過443端口上傳或刪除文件。
漏洞2:Web服務端80端口/TCP配置錯誤
詳細信息: XX-BOX數據采集器80端口/TCP允許客戶端執行上傳、刪除文件等危險的http操作。這樣黑客可以通過端口80向XX 數據采集器上傳木馬、病毒等惡意程序執行文件,并能夠對上傳文件執行刪除操作。
解決方法:修改web服務配置,禁用http方式通過80端口上傳或刪除文件。
漏洞3:TCP時間戳可查詢
詳細信息:遠程主機可以查詢XX 數據采集器的TCP時間戳,從而獲取系統已運轉時間。
解決方法:禁用TCP時間戳。
3 “xx”工業APP安全性評估
3.1 “xx”工業APP介紹
“xx”工業APP是用戶管理、監控工控設備、與工業云平臺交互的手機應用程序,有iOS版和Antroid兩個版本。
3.2 研究結果
“xx”APP采用用戶名/口令登錄方式,缺乏用戶登錄次數限制等防護措施,黑客可實施暴力破解攻擊,獲取系統登錄權限,安全問題嚴重。評估結果歸納如下:
序號 | 漏洞名稱 | 漏洞描述 | 嚴重級別 | 后果 |
4 | 登錄密碼可暴力破解 | APP未對登錄密碼的輸入次數進行限制,也沒有驗證碼等措施,攻擊者可通過暴力破解方式,多次嘗試輸入猜測登錄密碼 | 高 | 暴力破解獲取系統用戶名/密碼,非法登錄系統獲取使用權限。 |
5 | 截屏錄屏風險 | 攻擊者在用戶登錄時獲取屏幕狀態,捕獲用戶名和密碼等 | 中 | 可導致用戶名/密碼等敏感信息泄露 |
6 | 使用弱Hash API | APP在開發過程中使用了iOS 系統的弱hash API | 低 | 使用弱hash函數將導致hash碰撞,造成口令被猜測、撞庫等后果。 |
7 | 使用偽隨機數生成函數 | APP在開發過程中使用了偽隨機數生成函數rand | 低 | 使用偽隨機數發生器將導致敏感文件被暴力破解的風險。 |
8 | 不安全API調用 | APP在開發過程中使用了不安全API | 中 | 使用不安全API有可能導致系統緩存溢出。 |
9 | 缺少反調試機制 | APP缺少反調試機制,則在Root環境下,攻擊者可運行Cycript等調試工具尋找應用漏洞。 | 中 | 可在調試模式下發現系統安全漏洞。 |
10 | 未檢查越獄環境風險 | APP運行時沒有檢查手機操作系統是否是越獄版本 | 中 | 在越獄環境中容易被惡意應用乘虛而入,會對用戶個人信息及財產造成重大損失。 |
3.3 安全分析
3.3.1 漏洞4:登錄密碼可暴力破解漏洞
漏洞說明:應用未對登錄密碼的輸錯次數進行限制,或者客戶端登錄沒有驗證碼等限制,攻擊者可通過暴力破解方式,多次嘗試輸入猜測登錄密碼。
解決方法:應用應對密碼輸錯次數進行限制。
漏洞5:截屏錄屏漏洞
漏洞說明:錄屏、截屏是攻擊者竊取用戶敏感輸入信息的一種手段。攻擊者在用戶登錄時獲取屏幕狀態,獲取用戶名和密碼等,可導致用戶敏感信息泄露。
漏洞截圖
解決方法:在用戶輸入登錄密碼時使密碼不回顯
漏洞6:使用弱Hash API
漏洞說明:使用反匯編工具對該APP的可執行文件進行分析,發現該APP在開發過程中使用了iOS 系統的MD5、SHA 1等弱hash API。
漏洞截圖
解決方法:開發過程中請勿使用SHA 1等Hash API,否則有可能造成被保護數據泄露,建議使用SHA-224、SHA-256、SHA-384,和SHA-512等。
漏洞7:使用偽隨機數生成函數
漏洞說明:使用反匯編工具對該APP的可執行文件進行分析,發現該APP在開發過程中使用了偽隨機數發生器rand,有可能導致敏感信息被暴力破解。
漏洞截圖
解決方法:開發過程中建議使用arc4random等。
漏洞8:使用不安全API函數
漏洞說明:使用反匯編工具對該APP的可執行文件進行分析,發現該APP在開發過程中使用了不安全的API函數imp_stubs_strlen、imp_stubs_strcmp,有可能導致緩存溢出。
漏洞截圖
解決方法:開發過程中避免使用帶有潛在隱患的系統API,如strlcat代替strcat,strlcpy代替strcpy,strlcat代替strncat,strlcpy代替strncpy,snprintf代替sprintf,vsnprintf代替vsprintf,fgets代替gets。
漏洞9:工業APP缺少反調試機制
漏洞說明:APP缺少反調試機制,在Root環境下,攻擊者可使用Cycript等調試工具在APP運行時尋找應用漏洞。
運行Cycript時的漏洞截圖
解決方法:
1、對用戶輸入數據進行處理,避免顯示任何敏感信息。
2、對客戶端源碼進行混淆,盡可能增加調試難度,最大限度隱藏自己的程序邏輯。
3.3.7 漏洞10:未檢查是否為越獄環境
漏洞說明:APP缺少反調試機制,在Root環境下,攻擊者可使用Cycript等調試工具在APP運行時尋找應用漏洞。
漏洞截圖:APP在越獄iOS操作系統中運行截圖
解決方法:APP對運行環境是否為越獄進行檢查。
4 通訊安全性評估
4.1 通信特征
“xx”工業App在與云端服務器端交互時采用不安全的SSL/TLS通信,存在明文傳輸用戶名和密碼等安全漏洞。
4.2 研究結果
序號 | 漏洞名稱 | 漏洞描述 | 嚴重 級別 |
11 | 用戶名/密碼明文傳輸 | 用戶登錄過程中,在與服務器端交互時明文傳輸用戶名和密碼等信息,可導致用戶敏感信息泄露。 | 高 |
12 | 安全通信SSL/TLS中的Cookie 缺少Secure 屬性 | 允許cookie 通過非安全的通道(http)進行傳輸,泄露Cookie信息,使黑客能夠進行會話劫持攻擊 | 中 |
13 | 安全通信SSL/TLS 加密套件(Cipher Suites)漏洞 | 采用該加密套件的加密內容可以被黑客破解,導致信息泄露。 | 中 |
14 | 工業云平臺端遠程通信接受弱加密SSL/TLS 加密套件 | 加密套件采用弱加密算法容易被攻擊者暴力破解,導致傳輸數據被黑客監聽。 | 中 |
15 | 安全通信Diffie-Hellman密鑰交換DH group安全強度不足 | 密鑰交換DH group安全強度不足,可以對加密信息進行暴力破解。 | 中 |
4.3 安全分析
4.3.1 漏洞11:用戶名/密碼明文傳輸
詳細信息: 用戶登錄過程中,在與服務器端交互時明文傳輸用戶名和密碼等,可導致用戶敏感信息泄露。
漏洞截圖:采用Charles等抓包工具捕獲的用戶名/密碼明文信息。
解決方法:敏感信息傳輸采用加密通訊。
漏洞12:安全通信SSL/TLS中的Cookie缺少secure屬性
詳細信息: 由于Cookie 未使用secure屬性,這將允許cookie 通過http等非安全通道進行傳輸,使黑客能夠進行會話劫持攻擊。cookie 的唯一必需屬性是“name”字段,常見的可選屬性如:“comment”、“domain”、“path”等等。必須相應地設置“secure”屬性,才能防止以未加密的方式發送cookie。RFC 2965 指出:“Secure 屬性(不含值)會指導用戶代理程序不管何時返回此cookie,都只用(未指定)安全方法來聯絡原始服務器,以保護cookie 中的信息的機密性和真實性。”。
解決方法:云服務端開啟Https傳輸時,為所有敏感cookie的添加Secure屬性。
漏洞13:安全通信SSL/TLS 加密套件(Cipher Suites)漏洞
詳細信息:安全通信采用低版本SSL/TLS協議,接受存在安全問題的加密套件。由于使用低版本SSL/TLS協議,服務接受如下存在漏洞的加密套件:TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (SWEET32) (漏洞CVE-2016-2183);TLS_RSA_WITH_3DES_EDE_CBC_SHA (SWEET32) (漏洞CVE-2016-6329)。使得采用以上加密套件的加密內容可以被黑客破解,導致信息泄露。
解決方法:使用TLSv1.2以上版本安全通信協議,或者更改遠程服務安全通信配置,使其不再接受存在漏洞的加密套件。
漏洞14:工業云平臺端遠程通信接受弱加密SSL/TLS 加密套件
詳細信息:安全通信采用TLSv1.0協議,支持接受弱加密SSL/TLS加密套件,具體如下:
TLS_RSA_WITH_RC4_128_MD5(漏洞:CVE-2013-2566)
TLS_RSA_WITH_RC4_128_SHA(漏洞:CVE-2015-2808)
弱加密套件采用的加密算法容易被攻擊者暴力破解,導致傳輸數據被黑客監聽。
解決方法:使用TLSv1.2以上版本安全通信協議,或者修改SSL/TLS配置,使其不再接受弱加密套件(Cipher Suites)
漏洞15:安全通信Diffie-Hellman密鑰交換DH group安全強度不足
詳細信息:安全通信SSL/TLS服務使用DH groups密鑰大小為1024位,安全強度不足,有可能被破解。
解決方法:采用橢圓曲線Diffie-Hellman(ECDHE)或者使用2048位的DH groups。
5 “xx”工業云平臺安全性評估
5.1 “xx”工業云平臺介紹
“xx”工業云平臺是面向企業產品的數字化信息追蹤平臺+設計、生產、運行和維護的全方位服務組合,目標是實現覆蓋產品全生命周期的:數據可追溯、預防性維護、商業智能化、服務規模化,結合設備運行參數、能耗數據分析和專家服務能力,可幫助設備使用用戶保證穩定運行、提升生產效率、降低能源成本。也是機器設備廠依據采集的數據實現商業智能,機器優化,業務創新等。
5.2 研究結果
序號 | 漏洞名稱 | 漏洞描述 | 嚴重級別 | 后果 |
16 | 云服務端無法抵御重放攻擊風險 | 把截獲的用戶APP登錄報文、創建工單報文等直接發給云服務器,云服務端并沒有對重放次數進行限制,攻擊者可對服務器端發起dos攻擊。 | 高 | 有可能導致系統服務異常。 |
5.3 安全分析
5.3.1 漏洞16:云服務端無法抵御重放攻擊風險
詳細信息: 把截獲的用戶APP登錄報文、創建工單報文等直接發給云服務器,云服務端并沒有對重放次數進行限制,攻擊者可對服務器端發起dos攻擊。
漏洞截圖:
創建工單時使用POST請求,將日期、內容、用戶id等信息通過POST請求https://mobile.mm.xxxxx.com/api/tickets/create?platform=android&version=1.5.14&username=cncert來創建工單。
報文重放后,返回數據與原請求返回數據一致,由上圖可見,重放的報文在APP中創建了兩個工單,攻擊者可通過偽造報文在云服務端創建多個惡意工單。
來源:工業互聯網安全應急響應中心