此文档已迁移,Android安全漏洞风险问题请参考uni-app官方文档
<!--
陆续收到开发者同学反馈在腾讯云、百度云、爱加密等平台检测到 uni-app 或 5+ App 的漏洞风险问题。我们也在不断跟进和修复。
目前收集到的相关漏铜风险分为高风险、中风险和低风险三种危险程度。
高风险:可被恶意程序利用 且几乎不需要认证
中风险:可能被中级入侵经验者利用、且不一定需要认证
低风险:仅可能被本地利用且需要认证
风险问题多数为低风险。理论上这些低风险也不会影响应用的安全质量。对于高中漏洞风险的问题我们会优先处理!
收集到漏洞风险问题分为:
- DCloud代码漏洞风险 :我们可以操作修改问题。或提供配置让用户抉择。
- 三方SDK模块漏洞风险问题 :由于没有源码。无法操作修改。用户可以抉择是否使用该模块来规避风险问题
修复方案
目前会根据漏洞风险等级优先处理中高级,但可能每次版本修复的问题与开发者遇到的风险问题不一致。建议开发者同学先使用APK加固
来加强应用的安全性使应用可以安全上架!等待后续版本修复相关问题。
对于三方SDK漏洞问题,需要开发者同学积极反馈敦促相关平台提供修复漏洞风险问题的SDK。我们也会留意平台更新。并及时更新到模块中!
DCloud代码漏洞风险 修复记录
HX3.1.14版本
修复以下漏洞风险问题
修复已知WebView File域同源策略绕过漏洞
问题
修复已知Android平台WebView控件跨域访问高危漏洞
问题
修复已知Webview绕过证书校验漏洞
问题 需配置后生效
修复已知Android主机名\证书弱校验风险
问题 需配置后生效
<a id="web_untrustedca"></a>
Webview绕过证书校验漏洞
与Android主机名\证书弱校验风险
需要配置才能生效。具体如下:
配置 manifest.json 中的untrustedca节点信息,设置"refuse"或者"warning"即可去除漏洞问题。默认值为"accept"
untrustedca值域说明:
配置应用中https请求时,如果服务器返回非受信证书的处理逻辑,字符串类型,可取值:
"accept" - 接受此非受信证书,继续访问;
"refuse" - 拒绝此非 受信证书,停止访问;
"warning" - 弹出警告提示框提醒用户,由用户确定是否继续访问。仅针对webview内部请求
默认值为"accept"。需要注意如果设置refuse、warning后可能现有应用这的网络请求无法正常运行!
配置如下 修复漏洞问题:
"plus": { //uni-app项目对应节点名称为"app-plus"
"ssl": {
"untrustedca": "warning/refuse"
},
// ...
}
怎么区分DCloud代码漏洞还是三方SDK的问题呢?
你通常可以 通过漏洞详情中的漏洞代码
类名进行区分,DCloud代码多数使用io.dcloud开头,其它为三方SDK漏洞。
DCloud代码漏洞风险:
三方SDK漏洞风险:
关于组件导出风险
3.1.14+版本目前DCloud代码并没有组件导出风险的问题。基本上都是三方模块的配置具体可参考:
微信SDK: 分享、支付、登录都会有要求设置WXEntryActivity、WXPayEntryActivity并设置组件导出!
unipush模块:pushSDK内部会涉及到部分组件CustomGTService、PushReceiver、GActivity、NotificationServic等都会涉及到组件导出。
如果您的项目因为组建导出风险而无法上架只能去除以上模块的集成。
关于应用签名未校验风险
app内部记录打包时的签名SHA1。启动时可通过plus.navigator.getSignature()获取android平台的签名SHA1,两者进行比对。如果不一致表示可能被重签名存在风险选择是否退出。实现应用重签名校验逻辑。
APK可被反编译后取得源代码
请对APK进行加固,推荐使用腾讯加固平台。
WebView远程代码执行漏洞
风险描述:Android系统通过WebView.addJavascriptInterface方法注册可供JavaScript调用的Java对象,以用于增强JavaScript的功能。但是系统并没有对注册Java类的方法调用的限制。导致攻击者可以利用反射机制调用未注册的其它任何Java类,最终导致JavaScript能力的无限增强。攻击者利用该漏洞可以根据客户端能力实现远程任意代码执行攻击。 WebView 远程代码执行漏洞触发前提条件: 1)使用addJavascriptInterface方法注册可供JavaScript调用的Java对象; 2)使用WebView加载外部网页或者本地网页; 3)Android系统版本低于4.2。
目前3.1.14+版本的代码配置的minSdkVersion最低是19 也就是4.4系统。也就是说4.4系统并不存在该漏洞问题。如果你的项目minSdkVersion低于19 请修改为19或更高。
密钥硬编码漏洞
请使用3.1.14+版本打包。
-->