应用已经加固过,网安检测说应用存在以下风险:
H5文件泄露风险,资源文件泄露风险,Activity组件导出风险,Service组件导出风险,C层代码动态调试风险,动态注入攻击风险。这些问题该如何解决。
2.2 检测项情况汇总
序号 检测项目 风险等级 检测结果
个人隐私信息合规检测(1项)
1 应用行为分析 不合规
源文件安全(2项)
1 Java代码反编译风险检测 高 存在风险
2 资源文件泄露风险检测 中 存在风险
组件风险(1项)
1 Activity组件导出风险检测 中 存在风险
安全防护能力(2项)
1 C层代码动态调试风险检测 高 存在风险
2 动态注入攻击风险检测 高 存在风险
3
检测结果分析
3.1 应用行为分析
本应用在运行过程中,隐私政策授权前行为出现15种行为,前台运行行为出现24种行为,后台运行行为出现5种行为,应用退出行为出现0种行为:
行为描述 行为权限 个人信息相关行为 APP次数 SDK次数
隐私政策授权前行为
动态加载SO文件 否 1 4
正在获取执行SHELL命令 否 未使用 1
尝试写入SDCard卡数据 否 未使用 7
尝试读取SDCard卡数据 否 6 17
尝试写入SDCard卡数据 否 未使用 77
尝试读取SDCard卡数据 否 1 20
打开文件读取流 否 2 20
尝试写入SDCard数据 否 7 439
socket连接请求 INTERNET 否 2 1
http连接请求 INTERNET 否 2 42
启动Activity 否 未使用 1
获取网络状态 ACCESS_NETWORK_STATE 否 未使用 19
读取系统设置 WRITE_SETTINGS 否 4 未使用
获取系统属性 否 4 37
连接境外IP INTERNET 是 未使用 4
前台运行行为
获取SIM卡提供商的国家代码 READ_PHONE_STATE 是 未使用 1
获取移动网络运营商的名字 是 未使用 7
动态加载SO文件 否 1 10
正在获取执行SHELL命令 否 未使用 2
尝试写入SDCard卡数据 否 未使用 15
尝试读取SDCard卡数据 否 16 37
尝试写入SDCard卡数据 否 未使用 98
尝试读取SDCard卡数据 否 8 43
打开文件读取流 否 2 514
尝试写入SDCard数据 否 17 482
socket连接请求 INTERNET 否 2 22
http连接请求 INTERNET 否 2 110
获取了设备传感器信息 是 未使用 5
获取了设备传感器信息 是 未使用 3
启动Activity 否 未使用 1
启动Service 否 未使用 1
获取网络状态 ACCESS_NETWORK_STATE 否 未使用 75
尝试获取BSSID(WIFI的MAC地址) ACCESS_WIFI_STATE 是 未使用 2
读取系统设置 WRITE_SETTINGS 否 6 4
获取Android ID 是 未使用 1
获取应用安装列表 是 未使用 295
获取系统属性 否 4 91
尝试写入SDCard卡数据(公共存储区) WRITE_EXTERNAL_STORAGE 是 未使用 4
连接境外IP INTERNET 是 未使用 3
后台运行行为
获取移动网络运营商的名字 是 未使用 2
socket连接请求 INTERNET 否 未使用 1
http连接请求 INTERNET 否 未使用 3
获取网络状态 ACCESS_NETWORK_STATE 否 未使用 11
获取系统属性 否 未使用 10
3.2 源文件安全
3.2.1 Java代码反编译风险检测
检测目的 检测应用是否存在被反编译后泄露源代码的风险。
风险等级 高
威胁描述 Android应用如果未采用有效的保护措施,可能面临被反编译的风险。反编译是将二进制程序转换成人们易读的一种描述语言的形式,是逆向工程中的常见手段。反编译的结果是易读的应用程序代码,这样就暴露了Android应用客户端的所有逻辑,比如与服务端的通讯方式、加解密算法、密钥、转账业务流程、软键盘技术实现等等。攻击者可以利用这些信息窃取客户端的敏感数据,包括手机号、密码;绕过业务安全认证流程,直接篡改用户账号信息等。
检测结果 存在风险
结果描述 该应用使用了加固保护,但加固强度不够,比较容易被反编译后获取源代码。
出现次数 1次
检测详情
解决方案 建议使用专业应用安全加固方案,对APK包中的classes.dex文件进行保护,防止应用被反编译。
3.2.2 资源文件泄露风险检测
检测目的 检测应用中的资源文件是否存在被查看分析风险。
风险等级 中
威胁描述 APK中包含多种类型的资源文件,例如图片、ICON、H5文件等,直接对APK进行解压缩就可以查看APK中的资源文件,窃取应用图标,篡改H5文件,植入钓鱼页面或者恶意代码,造成用户的敏感信息泄露。
检测结果 存在风险
结果描述 该应用存在资源文件泄露风险。检测文件总数274个,检测出270处风险。
出现次数 270次
检测详情 1.使用静态检测引擎对APK进行解压缩。
2.对解压缩的文件进行扫描,可以提取到资源文件。
第1处:
文件:
assets/data/dcloud_configs.json
第2处:
文件:
assets/data/dcloud_control.xml
第3处:
文件:
assets/data/dcloud_properties.xml
第4处:
文件:
assets/data/dcloud_url.json
第5处:
文件:
assets/apps/UNI/www/androidPrivacy.json
第6处:
文件:
assets/apps/UNI/www/app-config-service.js
第7处:
文件:
assets/apps/UNI_/www/app-config.js
第8处:
文件:
assets/apps/UNI/www/app-renderjs.js
第9处:
文件:
assets/apps/UNI/www/app-service.js
第10处:
文件:
assets/apps/UNI/www/app-wxs.js
第11处:
文件:
assets/apps/_UNI/www/manifest.json
第12处:
文件:
assets/apps/UNI/www/pages/book/book.js
第13处:
文件:
assets/apps/UNI/www/pages/favor/favor.js
解决方案 使用专业的安全加固方案,对资源文件进行加密处理,保证文件在存储过程中为密文。
3.3 组件风险
3.3.1 Activity组件导出风险检测
检测目的 检测应用Activity组件是否存在导出风险。
风险等级 中
威胁描述 Activity的最小化特权是指组件只能自身调用,其他应用无权访问,即组件不导出。Activity组件设置导出权限,则该组件能够被外部的其他组件直接调用,这样就可能导致泄露隐私数据或者应用程序崩溃等风险。Activity被恶意应用调用,可能有以下威胁描述:修改程序的状态或者数据;被调用的Activity可能返回隐私信息给恶意应用,造成数据泄露;可能使应用程序崩溃,造成拒绝服务等漏洞。
检测结果 存在风险
结果描述 该应用存在Activity最小化风险。检测Activity总数27个,检测出5处风险。
出现次数 5次
检测详情 1.使用静态检测引擎对APK进行反编译。
2.抽取AndroidManifest.xml文件,扫描所有的Activity组件。
3.查看组件的EXPORTED属性,发现存在可以导出的组件。
第1处:
文件:
AndroidManifest.xml
代码:
<activity xmlns:android="http://schemas.android.com/apk/res/android" android:theme="@android:01030010" android:label="@7F0C0027" android:name="guoxue.guoxueju.com.wxapi.WXEntryActivity" android:exported="true" android:launchMode="1"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="UNID222D63"/> </intent-filter> </activity>
第2处:
文件:
AndroidManifest.xml
代码:
<activity xmlns:android="http://schemas.android.com/apk/res/android" android:theme="@android:01030010" android:name="guoxue.guoxueju.com.wxapi.WXPayEntryActivity" android:exported="true" android:launchMode="1"/>
第3处:
文件:
AndroidManifest.xml
代码:
<activity xmlns:android="http://schemas.android.com/apk/res/android" android:theme="@android:01030010" android:label="@7F0C0027" android:name="guoxue.guoxueju.com.wxapi.WXEntryActivity" android:exported="true" android:launchMode="1"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="UNI__D222D63"/> </intent-filter> </activity>
第4处:
文件:
AndroidManifest.xml
代码:
<activity xmlns:android="http://schemas.android.com/apk/res/android" android:theme="@android:01030010" android:name="com.alipay.sdk.app.PayResultActivity" android:exported="true" android:launchMode="3" android:configChanges="0x40003df4"/>
第5处:
文件:
AndroidManifest.xml
代码:
<activity xmlns:android="http://schemas.android.com/apk/res/android" android:theme="@android:01030010" android:name="com.alipay.sdk.app.AlipayResultActivity" android:exported="true" android:launchMode="2" android:configChanges="0x40003df4"/>
解决方案 开发者自查,设置AndroidManifest.xml文件中Activity组件EXPORTED属性为false,对于必须导出的组件必须限制于授权用户或者特定应用组件,并且尽量不包含任何的Intent Filter。
3.4 安全防护能力
3.4.1 C层代码动态调试风险检测
检测目的 检测应用是否存在C层代码动态调试风险。
风险等级 高
威胁描述 Android C 层代码动态调试漏洞是指在程序运行过程中,恶意程序或者人工可以通过动态调试技术,对程序进行内存调试跟踪,可以窃取目标进程的数据信息,从而获取用户的隐私数据信息。
检测结果 存在风险
结果描述 该应用无法被自动化工具进行C层动态调试,但强度不够,仍然存在被动态调试的风险。
出现次数 1次
检测详情 N/A
解决方案 建议使用专业安全加固方案的防动态调试功能,防止应用被动态调试。
3.4.2 动态注入攻击风险检测
检测目的 检测应用是否存在动态注入攻击风险。
风险等级 高
威胁描述 Android动态代码注入是不修改源程序只修改目标进程的寄存器、内存值等就能控制程序实现既定目标的一种方法。通过动态注入,攻击者可以劫持目标进程函数、窃取目标进程数据、篡改目标进程数据等,从而监控程序运行、获取敏感信息等。常见的动态注入,可以获取登录账号、密码等。
检测结果 存在风险
结果描述 该应用无法被自动化工具进行动态注入,但强度不够,仍然存在被动态注入的风险。
出现次数 1次
检测详情 N/A
解决方案 建议使用专业安全加固方案的防内存代码注入功能,防止应用被动态注入攻击。
2 个回复
118
如果你用uniapp 这些问题都是无法解决的。你对安全要求很高就不能用uniapp,即使你用原生开发一样被搞,抖音 快手 淘宝这些大厂产品,哪个加密没有被逆向破解过?连IOS都能被越狱....... 用uniapp的基本要求就是能跑起来就行,性能,安全,就不要报期望了。
1***@qq.com
您好!请问解决了吗?同遇到漏洞,要求修复;
Activity组件暴露、Service组件暴露 ——中危
求大佬解答!
3***@qq.com
您好!请问现在解决了吗?也是组件暴露风险,文档说是微信SDK和个推的SDK导致的,但是这两个没办法修改,好像也不能修改。
2023-09-11 14:30
1***@qq.com
回复 3***@qq.com: 没解决!客服让参考这个,没卵用,参考这里:https://uniapp.dcloud.net.cn/tutorial/app-sec-android.html#activity%E3%80%81service%E3%80%81receiver%E7%AD%89%E7%BB%84%E4%BB%B6%E5%AF%BC%E5%87%BA%E9%A3%8E%E9%99%A9
2023-11-07 14:38