Android App隱私合規檢測輔助工具(Camille)

Zhengjim發表於2021-11-04

Camille

Android App隱私合規檢測輔助工具,專案倉庫:https://github.com/zhengjim/camille

簡介

現如今APP隱私合規十分重要,各監管部門不斷開展APP專項治理工作及核查通報,不合規的APP通知整改或直接下架。camille可以hook住Android敏感介面。根據隱私合規的場景,輔助檢查是否符合隱私合規標準。

安裝

環境:

python3、frida 、一臺已root手機(我測試機為Redmi 3s,刷機成魔趣Android 8.1,感覺問題挺多的),並在手機上執行frida-server

下載:

git clone https://github.com/zhengjim/camille.git
cd camille
pip install -r requirements.txt
python camille.py -h

用法

簡單使用:

python camille.py com.zhengjim.myapplication

com.zhengjim.myapplication為測試app的包名,會顯示時間、行為和呼叫堆疊。可以根據場景來判斷是否合規,如:獲取敏感資訊是否是在同意隱私政策之前等。

python camille.py com.zhengjim.myapplication -ns -f demo01.xls
  • -ns:不顯示日誌。預設顯示
  • -f: 儲存app行為軌跡到到execl裡。預設不儲存。

python camille.py com.zhengjim.myapplication -t 3
  • -t: hook應用自己的函式或含殼時,建議使用setTimeout並給出適當的延時(1-5s,需要根據不同app進行調整)。以免hook失敗。預設不延遲。

如下圖:不加延遲hook失敗。

加了延遲hook成功。

後記

本來想使用uiautomator2或appium來模擬點選制定場景,但後續調研發現純自動化的檢測是不全的,最多也就檢測20-30%,還是得結合人工來檢測。索性就刪除了模擬點選這塊。(其實就是懶,不定期更新)

場景

參考百度史賓格的檢測場景,根據工信部信管函〔2020〕164號文(共37項),需要人工自查的有15項

網站:https://console.bce.baidu.com/springer (現在1.4元/次,挺划算的,嫌麻煩的直接用就行)

1 APP、SDK違規處理使用者個人資訊方面

1.1 違規收集個人資訊。重點整治APP、SDK未告知使用者收集個人資訊的目的、方式、範圍且未經使用者同意,私自收集使用者個人資訊的行為。

  • 場景1:APP未見向使用者明示個人資訊收集使用的目的、方式和範圍,未經使用者同意,存在收集IMEI、裝置MAC地址和軟體安裝列表、通訊錄和簡訊等資訊的行為。
  • 場景2:APP以隱私政策彈窗的形式向使用者明示收集使用規則,未經使用者同意,存在收集裝置MAC地址、IMEI等資訊的行為。
  • 場景3:APP以隱私政策彈窗的形式向使用者明示收集使用規則,但未見清晰明示APP收集軟體列表、裝置MAC地址等的目的方式範圍,使用者同意隱私政策後,存在收集軟體列表、裝置MAC地址的行為。
  • 場景4(人工自查):APP未見向使用者明示SDK收集使用個人資訊的目的、方式和範圍,未經使用者同意,SDK存在收集IMEI、裝置MAC地址和軟體安裝列表、通訊錄和簡訊等資訊的行為。
  • 場景5(人工自查):APP向使用者明示SDK的收集使用規則,未經使用者同意,SDK存在收集IMEI、裝置MAC地址和軟體安裝列表、通訊錄和簡訊等資訊的行為。
  • 場景6(人工自查):APP向使用者明示SDK的收集使用規則,但未見清晰明示SDK收集裝置MAC地址、軟體安裝列表等的目的方式範圍,使用者同意隱私政策後, SDK存在收集裝置MAC地址、軟體安裝列表的行為。
  • 場景7:APP在徵求使用者同意環節,未提供明確的同意或拒絕按鈕,或者使用“好的”“我知道了”等詞語。
  • 場景8:APP在徵求使用者同意環節,設定為預設勾選。

1.2 超範圍收集個人資訊。重點整治APP、SDK非服務所必需或無合理應用場景,特別是在靜默狀態下或在後臺執行時,超範圍收集個人資訊的行為。

  • 場景1(人工自查):APP存在收集IMEI、IMSI、裝置MAC地址、軟體安裝列表、位置、聯絡人、通話記錄、日曆、簡訊、本機電話號碼、圖片、音視訊等個人資訊的行為,非服務所必需且無合理應用場景。
  • 場景2:APP在執行時,未見向使用者告知且未經使用者同意,存在以特定頻率(如每30s)讀取收集IMEI、IMSI、裝置MAC地址、軟體安裝列表、位置、聯絡人、通話記錄、日曆、簡訊、本機電話號碼、圖片、音視訊等個人資訊,非服務所必需且無合理應用場景,超出實現產品或服務的業務功能所必需的最低頻率。
  • 場景3(人工自查):APP未見向使用者明示SDK的收集使用規則,未經使用者同意,SDK存在收集IMEI、IMSI、裝置MAC地址、軟體安裝列表、位置、聯絡人、通話記錄、日曆、簡訊、本機電話號碼、圖片、音視訊等資訊的行為,非服務所必需且無合理應用場景,超出與收集個人資訊時所聲稱的目的具有直接或合理關聯的範圍。
  • 場景4:APP在執行時,未見向使用者告知且未經使用者同意,存在每2秒讀取一次IMEI、位置資訊等,非服務所必需且無合理應用場景,超出實現產品或服務的業務功能所必需的最低頻率。
  • 場景5:APP未見向使用者告知且未經使用者同意,在後臺行為時,存在收集 IMSI、裝置序列號等資訊的行為,非服務所必需且無合理應用場景,超出與收集個人資訊時所聲稱的目的具有直接或合理關聯的範圍。
  • 場景6:APP未見向使用者告知且未經使用者同意,在靜默狀態下或在後臺執行時,存在按照一定頻次收集位置資訊、IMEI、通訊錄、簡訊、圖片等資訊的行為,非服務所必需且無合理應用場景,超出與收集個人資訊時所聲稱的目的具有直接或合理關聯的範圍。
  • 場景7:APP未向使用者明示SDK的收集使用規則,未經使用者同意,SDK在靜默狀態下或在後臺執行時,存在收集通訊錄、簡訊、通話記錄、相機等資訊的行為,非服務所必需且無合理應用場景,超出與收集個人資訊時所聲稱的目的具有直接或合理關聯的範圍。
  • 場景8:APP未向使用者明示SDK的收集使用規則,未經使用者同意,SDK在靜默狀態下或在後臺執行時,存在按照一定頻次收集位置資訊、IMEI、通訊錄、簡訊、圖片等資訊的行為,非服務所必需且無合理應用場景,超出與收集個人資訊時所聲稱的目的具有直接或合理關聯的範圍。

1.3 違規使用個人資訊。重點整治APP、SDK未向使用者告知且未經使用者同意,私自使用個人資訊,將使用者個人資訊用於其提供服務之外的目的,特別是私自向其他應用或伺服器傳送、共享使用者個人資訊的行為。

  • 場景1:APP未向使用者明示個人資訊處理的目的、方式和範圍,將IMEI、IMSI、裝置MAC地址、軟體安裝列表、位置、聯絡人、通話記錄、日曆、簡訊、本機電話號碼、圖片、音視訊等個人資訊傳送給第三方SDK等產品或服務。
  • 場景2:APP未見向使用者明示分享的第三方名稱、目的及個人資訊型別,使用者同意隱私政策後,存在將IMEI/裝置MAC地址/軟體安裝列表等個人資訊傳送給第三方SDK。
  • 場景3(人工自查):APP未向使用者告知且未經使用者同意,將裝置識別資訊、商品瀏覽記錄、搜尋使用習慣、軟體安裝列表等個人資訊傳輸至APP伺服器後,向第三方產品或服務提供其收集的個人資訊。

1.4 強制使用者使用定向推送功能。重點整治APP、SDK未以顯著方式標示且未經使用者同意,將收集到的使用者搜尋、瀏覽記錄、使用習慣等個人資訊,用於定向推送或廣告精準營銷,且未提供關閉該功能選項的行為。

  • 場景1(人工自查):APP的頁面或功能存在定向推送功能,但隱私政策未見向使用者告知,將收集的使用者個人資訊用於定向推送、精準營銷。
  • 場景2(人工自查):若APP定向推送功能使用了第三方的個人資訊來源,但隱私政策未見向使用者告知。
  • 場景3(人工自查):APP隱私政策存在“根據您的偏好進行個性化推薦”等內容,明示存在定向推送功能,但頁面中未見顯著區分個性化推送服務,如標明“個性化展示”或“定推”等字樣。
  • 場景4(人工自查):APP以隱私政策彈窗等形式明示存在定向推送功能,未提供退出或關閉個性化展示模式的選項,如拒絕接受定向推送資訊,或停止、退出、關閉相應功能的機制。

2 設定障礙、頻繁騷擾使用者方面

2.1 APP強制、頻繁、過度索取許可權。重點整治APP安裝、執行和使用相關功能時,非服務所必需或無合理應用場景下,使用者拒絕相關授權申請後,應用自動退出或關閉的行為。重點整治短時長、高頻次,在使用者明確拒絕許可權申請後,頻繁彈窗、反覆申請與當前服務場景無關許可權的行為。重點整治未及時明確告知使用者索取許可權的目的和用途,提前申請超出其業務功能等許可權的行為。

  • 場景1:APP首次啟動時,向使用者索取電話、通訊錄、定位、簡訊、錄音、相機、儲存、日曆等許可權,使用者拒絕授權後,應用退出或關閉(應用陷入彈窗迴圈,無法正常使用)。
  • 場景2(人工自查):APP執行時,未向使用者告知申請許可權的目的,向使用者索取當前服務場景未使用到的通訊錄、定位、簡訊、錄音、相機、日曆等許可權,且使用者拒絕授權後,應用退出或關閉相關功能,無法正常使用。
  • 場景3(人工自查):使用者註冊登入時,APP向使用者索取電話、通訊錄、定位、簡訊、錄音、相機、儲存、日曆等許可權,使用者拒絕授權後,APP無法正常註冊或登入。
  • 場景4(人工自查):APP執行時,向使用者索取當前服務場景未使用到的電話、通訊錄、定位、簡訊、錄音、相機、儲存、日曆等許可權,且使用者拒絕授權後,應用退出或關閉(應用陷入彈窗迴圈,無法正常使用)。
  • 場景5:APP執行時,在使用者明確拒絕通訊錄、定位、簡訊、錄音、相機、日曆等許可權申請後,仍向使用者頻繁彈窗申請與當前服務場景無關的許可權,影響使用者正常使用。
  • 場景6: APP在使用者明確拒絕通訊錄、定位、簡訊、錄音、相機等許可權申請後,重新執行時,仍向使用者彈窗申請開啟與當前服務場景無關的許可權,影響使用者正常使用。
  • 場景7:APP首次開啟或執行中,未見使用許可權對應的相關功能或服務時,不應提前向使用者彈窗申請開啟通訊錄、定位、簡訊、錄音、相機、日曆等許可權。
  • 場景8(人工自查):APP未見提供相關業務功能或服務,不應申請通訊錄、定位、簡訊、錄音、相機、日曆等許可權。

2.2 APP頻繁自啟動和關聯啟動。重點整治APP未向使用者告知且未經使用者同意,或無合理的使用場景,頻繁自啟動或關聯啟動第三方APP的行為。

  • 場景1:APP未向使用者明示未經使用者同意,且無合理的使用場景,存在頻繁自啟動或關聯啟動的行為。
  • 場景2:APP雖然有向使用者明示並經使用者同意環節,但頻繁自啟動或關聯啟動發生在使用者同意前。
  • 場景3:APP非服務所必需或無合理應用場景,超範圍頻繁自啟動或關聯啟動第三方APP。

3 欺騙誤導使用者方面

3.1 欺騙誤導使用者下載APP。通過“偷樑換柱”“移花接木”等方式欺騙誤導使用者下載APP,特別是具有分發功能的移動應用程式欺騙誤導使用者下載非使用者所自願下載APP的行為

  • 場景1:APP 廣告頁面、開屏廣告、主屏等功能頁面,無顯著APP下載提示,點選即自動下載非使用者所自願下載APP。
  • 場景2:APP 廣告頁面、開屏廣告、主屏等功能頁面,以“是否立即開始遊戲”方式欺騙誤導使用者自動下載非使用者所自願下載APP。
  • 場景3:APP 廣告頁面、開屏廣告、主屏等功能頁面,以“領取紅包”方式欺騙誤導使用者自動下載非使用者所自願下載APP。
  • 場景4:APP 廣告頁面、開屏廣告、主屏等功能頁面,點選“下載按鈕“以外區域,自動下載非使用者所自願下載APP。
  • 場景5(人工自查):暫停下載非使用者所自願下載APP,關閉並重新執行本APP後,自動恢復下載被暫停的非使用者所自願下載的APP。
  • 場景6(人工自查):APP 廣告頁面、開屏廣告、主屏等功能頁面,通過設定關閉障礙等方式欺騙誤導強迫下載非使用者所自願下載APP。
  • 場景7(人工自查):APP 廣告頁面、開屏廣告、主屏等功能頁面,下載的APP與向使用者所作的宣傳或者承諾不符。

3.2 欺騙誤導使用者提供個人資訊。

  • 行為表現:非服務所必需或無合理場景,通過積分、獎勵、優惠等方式欺騙誤導使用者提供身份證號碼以及個人生物特徵資訊的行為。

參考連結

相關文章