TikTok漏洞引發數據和隱私泄露
Check Point研究人員在TikTok中發現了一個安全漏洞,攻擊者利用該漏洞可以竊取用戶個人簡介和綁定的手機號,用于下一步的攻擊活動。
1月26日,Check Point研究人員發布文章稱發現了TikTok移動客戶端friend finder特征中的一個安全漏洞。攻擊者利用該漏洞可以將個人簡介信息與手機號就行關聯,攻擊者成功利用該漏洞可以建立一個用戶與相關手機號的數據庫。漏洞影響綁定了手機號或以手機號登陸的用戶。
Syncing Contacts聯系人同步特征
TikTok移動客戶端允許進行聯系人同步,也就是說用戶可以同步聯系人到更容易發現注冊了TikTok的朋友。同步過程有2個請求組成:
- 上傳聯系人;
- 同步聯系人。


對用戶通訊錄中的每個聯系人,TikTok都會構建一個包含以下3個屬性的JSON:
- Invited – “False”.
- Name – 使用SHA 256算法哈希的值;
- Phone number – 使用SHA 256算法哈希的值。

將JSON加入列表中,繼續上傳通訊錄:

TikTok使用到https://api16-normal-c-alisg.tiktokv.com/aweme/v1/upload/hashcontacts 的HTTP請求來上傳聯系人。聯系人會以contact 參數中的JSON 列表發送。
比如,單個聯系人如下:
- Name: Testing Tester
- Phone number: +972555555555
TikTok會發送以下JSON 列表作為contact參數的值:

上傳聯系人到TikTok服務器的完整HTTP 請求如下所示:

同步聯系人
上傳聯系人請求完成后,TikTok移動客戶端就會發送一個sync 同步請求來提取所有與發送的手機號關聯的個人簡介。
發送到 https://api16-normal-c-alisg.tiktokv.com/aweme/v1/social/friend 的HTTP請求如下所示:

應用服務器響應含有個人簡介列表、哈希的手機號、個人名字、唯一id、個人簡介照片、個人簡介特征等。


限制
上傳和同步聯系人請求每天、每用戶、每個設備限制在500個以內。
研究問題
單個用戶查詢TikTok數據庫是否會引發隱私問題?
(1) Step 1 – 創建設備列表(注冊物理設備)
每次啟動后,TikTok移動客戶端都會執行設備注冊過程來確保用戶沒有在設備之間進行切換。設備注冊的過程是用到https://log-va.tiktokv.com/service/2/device_register 的請求來完成的:

根據HTTP請求中發送的數據,應用服務器會生成一個唯一的device_id token。該token是強制的,并且會應用生成的每個API請求一起發送給應用服務器。

(2) Step 2 – 創建不過期的session token列表
通過SMS登陸只能通過物理設備來進行,是通過發送給https://api16-normal-c-alisg.tiktokv.com/passport/mobile/sms_login_only 的HTTP 請求來實現的。請求的body部分包含有手機號和一次性驗證碼編碼的參數。

服務器會驗證數據,并生成唯一的X-Tt-Token token。此外,服務器還會設置會話的cookie。
研究人員分析發現會話cookie和X-Tt-Token 值的過期時間都是60天,也就是說8周內使用的cookie都是相同的。

TikTok HTTP消息簽名
研究人員抓取了TikTok的HTTP 請求發現,TikTok移動客戶端使用了消息簽名機制來語法攻擊者修改消息和請求的body部分。
消息簽名機制要求服務器驗證的X-Gorgon 和X-Khronos header,否則數據不能被請求。

(3) Step 3 – 繞過TikTok HTTP 消息簽名
在擁有了device_id和X-Tt-Token token,以及2個月都不會過期的cookie后,就可以使用虛擬設備來替代真實的物理設備了。
研究人員在測試張使用了運行安卓6.0.1的Genymotion 模擬器,并安裝了TikTok移動客戶端。
研究人員進行動態分析發現TikTok移動客戶端在后臺會執行一個消息簽名的服務。簽名服務是com.bytedance.frameworks.baselib.network.http 包的一部分。

簽名過程首先是一個一個方法開始:

攻擊者可以使用Frida這樣的動態分析框架來hook函數,修改函數的參數數據,然后對請求進行重新簽名。因此,攻擊者可以使用該服務來對修改后的請求進行簽名,創建更新的X-Gorgon和 X-Khronos header值,并發送修改后的請求到TikTok應用服務器。
PoC
有了以上能力,就可以修改HTTP請求和對請求重新進行簽名。研究人員寫了一個Frida腳本來自動進行消息重新簽名的過程,具體如下:
啟動HTTP 服務器,監聽4000 端口:

分析HTTP POST請求,并提取出請求簽名的數據:

使用前述方法對修改后的請求重新簽名:

返回更新的X-Gorgon 和 X- Khronos簽名:

攻擊的最終結果可以獲取含有賬號和手機號的數據庫,引發數據和隱私泄露。
本文翻譯自:
https://research.checkpoint.com/2021/tiktok-fixes-privacy-issue-discovered-by-check-point-research/
【責任編輯:趙寧寧 TEL:(010)68476606】




























