1. 问题说明
移动客户端 APP 通常使用 PF_UNIX、PF_INET、PF_NETLINK 等不同 domain 的 socket 来进行本地 IPC 或者远程网络通信,这些暴露的 socket 暴露出了潜在的本地或远程攻击面,历史上也出现过不少利用 socket 进行拒绝服务、root 提权或者远程命令执行的案例。特别是 PF_INET 类型的网络 socket,可以通过网络与 Android 应用通信,其原本是用于 Linux 环境下开放网络服务,由于缺乏对网络调用者身份或者本地调用者 id、permission 等细粒度的安全检查机制,如果实现不当,就可以突破 Android 的沙箱限制,使用被攻击应用的权限执行命令,出现比较严重的漏洞。
2. 测试步骤
在 Android 系统中输入以下命令查看本地端口开放情况,是否开启了危险的服务。
busybox netstat -tuanp|grep -Ei 'listen'
3. 修复建议
建议不要在本地监听端口,尽量使用 Android 系统提供的进程间通信方式。