2***@qq.com
2***@qq.com
  • 发布:2024-09-27 17:52
  • 更新:2024-09-28 04:40
  • 阅读:28

请问:ZipperDown漏洞,动态注册Receiver风险,有何处理方法

分类:HBuilderX

3.2.5 动态注册Receiver风险
检测目的 检测应用是否存在动态注册Receiver风险。
风险等级 高
威胁描述 BroadcastReceiver组件可动态注册,即在代码中使用registerReceiver()方法注册BroadcastReceiver,只有当registerReceiver()的代码执行到了才进行注册,取消时则调用unregisterReceiver()方法。但registerReceiver()方法注册的BroadcastReceiver是全局的并且默认可导出的,如果没有限制访问权限,可以被任意外部APP访问,向其传递Intent来执行特定的功能。因此,动态注册的BroadcastReceive可能导致拒绝服务攻击、APP数据泄漏或是越权调用等风险。
检测结果 存在风险
结果描述 该应用存在动态注册Receiver,检测文件总数6482个,检测出2处风险。
出现次数 2次
检测详情 总共检测文件 6482 个,存在风险点 2 个。
1.使用静态检测引擎对APK进行反编译。
2.扫描反编译后的代码文件,发现存在动态注册BroadcastReceiver风险。
第1处:
文件:
io.dcloud.c.java

代码:
.method public registerReceiver(Lio/dcloud/feature/internal/reflect/BroadcastReceiver;Landroid/content/IntentFilter;)V invoke-virtual {p0, v0, p2}, Landroidx/fragment/app/FragmentActivity;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
第2处:
文件:
com.taobao.weex.WXSDKInstance.java
代码:
.method public onActivityCreate()V invoke-virtual {v0, v1, v3}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
解决方案 1.在 AndroidManifest.xml 文件中静态注册 BroadcastReceiver,同时设置 exported="false"。
2.必须动态注册 BroadcastReceiver时,使用registerReceiver(BroadcastReceiver, IntentFilter, broadcastPermission,android.os.Handle)函数注册。

3.2.6 ZipperDown漏洞
检测目的 检测应用中是否存在ZipperDown漏洞。
风险等级 高
威胁描述 当前大量应用均会读取zip压缩包进行相关业务,最常见的场景就是从服务器下载压缩包,进行资源、代码热更新。在解压zip包时,如果对文件名没有进行限制,通过在文件名加上“../../”前缀的方式,可以将文件解压到任意路径。如果攻击者用远程劫持或者本地替换等方式将APP将要加载的正常zip包替换为带有路径前缀的恶意zip包,而APP又未对解压文件的文件名称进行处理,则攻击者可以对应用资源、代码进行任意篡改、替换,从而实现远程代码劫持等。
检测结果 存在风险
结果描述 该应用存在ZipperDown漏洞。检测总文件数6482个,检测出1处风险。
出现次数 1次
检测详情 总共检测文件 6482 个,存在风险点 1 个。
1.使用静态检测引擎对APK进行反编译。
2.扫描反编译后的代码文件,提取zip解压缩相关代码。
3.对提取的代码进行检测,发现没有过滤“../”路径。
第1处:
文件:
io.dcloud.common.util.ZipUtils.java

代码:
.method public static upZipFile(Ljava/io/File;Ljava/lang/String;)V invoke-virtual {v2}, Ljava/util/zip/ZipEntry;->getName()Ljava/lang/String;
解决方案 1. 对zip包进行解压操作时,在获取文件名后,添加过滤代码对文件名中可能包含的”../”进行过滤判断。
2. 使用通信协议加密技术,对通信过程中的数据进行加密保护,保证数据不被篡改。
3. 建议客户端与服务端使用加密通道进行数据交互,并对传输数据进行完整性校验,防止zip包被拦截替换。

2024-09-27 17:52 负责人:无 分享
已邀请:
2***@qq.com

2***@qq.com (作者)

io.dcloud.c.java
io.dcloud.common.util.ZipUtils.java

DCloud_heavensoft

DCloud_heavensoft

不知道你用的什么安全检测,是不是为了过等保。

三方评测机构,不懂DCloud产品,经常乱搞。
DCloud有解压api,plus.zip,你要解压什么、解到哪里,我们是不能限制的,我们是透传os的能力出来。
我们限制了”../”,那你真的需要解压”../”的文件怎么办?

所以核心是你的调用plus.zip的js代码是否安全,是否过滤了不安全的目录。但三方评测机构,扫描的都是原生代码,肯定不知道js代码是否安全。

DCloud这边有等保服务,可以保过。详见
建议退单,改用DCloud的等保评测。

另外你也可以使用uni加固
加固的好处是java代码加密了,那些扫描java代码检测的工具无法识别代码,就无法报风险了。但这个不算正道,治本还是得用靠谱的评测机构。

要回复问题请先登录注册