# Mobile Verification Toolkit (MVT) # Copyright (c) 2021-2023 The MVT Authors. # Use of this software is governed by the MVT License 1.1 that can be found at # https://license.mvt.re/1.1/ from .artifact import AndroidArtifact ANDROID_DANGEROUS_SETTINGS = [ { "description": "disabled Google Play Services apps verification", "key": "verifier_verify_adb_installs", "safe_value": "1", }, { "description": "disabled Google Play Protect", "key": "package_verifier_enable", "safe_value": "1", }, { "description": "disabled Google Play Protect", "key": "package_verifier_user_consent", "safe_value": "1", }, { "description": "disabled Google Play Protect", "key": "upload_apk_enable", "safe_value": "1", }, { "description": "disabled confirmation of adb apps installation", "key": "adb_install_need_confirm", "safe_value": "1", }, { "description": "disabled sharing of security reports", "key": "send_security_reports", "safe_value": "1", }, { "description": "disabled sharing of crash logs with manufacturer", "key": "samsung_errorlog_agree", "safe_value": "1", }, { "description": "disabled applications errors reports", "key": "send_action_app_error", "safe_value": "1", }, { "description": "enabled installation of non Google Play apps", "key": "install_non_market_apps", "safe_value": "0", }, { "description": "enabled accessibility services", "key": "accessibility_enabled", "safe_value": "0", }, ] class Settings(AndroidArtifact): def check_indicators(self) -> None: for namespace, settings in self.results.items(): for key, value in settings.items(): for danger in ANDROID_DANGEROUS_SETTINGS: # Check if one of the dangerous settings is using an unsafe # value (different than the one specified). if danger["key"] == key and danger["safe_value"] != value: self.log.warning( 'Found suspicious "%s" setting "%s = %s" (%s)', namespace, key, value, danger["description"], ) break