首页
社区
课程
招聘
[原创]Bluebox Security最新提报Android漏洞的初步探讨(已确认不是同一个问题,详见正文后的补充说明)
2013-7-6 17:04 22414

[原创]Bluebox Security最新提报Android漏洞的初步探讨(已确认不是同一个问题,详见正文后的补充说明)

2013-7-6 17:04
22414
收藏
免费 5
打赏
分享
最新回复 (35)
雪    币: 488
活跃值: (185)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
ZhWeir 6 2013-7-8 23:31
26
0
我也是这样想的,而且也这样做了:



但是安装失败。。。好像还差点什么。。。
雪    币: 28
活跃值: (51)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
tewilove 2013-7-8 23:42
27
0
[QUOTE=ZhWeir;1196789]我也是这样想的,而且也这样做了:



但是安装失败。。。好像还差点什么。。。[/QUOTE]

先签名,后加修改后的dex,看到你签名部分多出一个。
雪    币: 488
活跃值: (185)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
ZhWeir 6 2013-7-8 23:46
28
0
oh,犯低级错误了。。。
雪    币: 488
活跃值: (185)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
ZhWeir 6 2013-7-8 23:57
29
0


还是不行。。。
雪    币: 53
活跃值: (265)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
netsniffer 2013-7-9 09:29
30
0
凌晨还在研究,佩服
作者还是考虑到这一点了

    void initEntries(Map<String, Attributes> entries,
            Map<String, Manifest.Chunk> chunks) throws IOException {

        int mark = pos;
        while (readHeader()) {
            if (!Attributes.Name.NAME.equals(name)) {
                throw new IOException("Entry is not named");
            }
            String entryNameValue = value;

            Attributes entry = entries.get(entryNameValue);
            if (entry == null) {
                entry = new Attributes(12);
            }

            while (readHeader()) {
                entry.put(name, value);
            }

            if (chunks != null) {
                if (chunks.get(entryNameValue) != null) {
                    // TODO A bug: there might be several verification chunks for
                    // the same name. I believe they should be used to update
                    // signature in order of appearance; there are two ways to fix
                    // this: either use a list of chunks, or decide on used
                    // signature algorithm in advance and reread the chunks while
                    // updating the signature; for now a defensive error is thrown
                    throw new IOException("A jar verifier does not support more than one entry with the same name");
                }

                chunks.put(entryNameValue, new Manifest.Chunk(mark, pos));
                mark = pos;
            }

            entries.put(entryNameValue, entry);
        }
    }
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
冷雨一刀 2013-7-9 11:38
31
0
该漏洞已经被确认,属于ZipFile function漏洞
CyanogenMod 开发者已经修补该漏洞
原代码:
for (int i = 0; i < numEntries; ++i) {
    ZipEntry newEntry = new ZipEntry(hdrBuf, bin);
    mEntries.put(newEntry.getName(), newEntry);
}

修补后:
for (int i = 0; i < numEntries; ++i) {
    ZipEntry newEntry = new ZipEntry(hdrBuf, bin);
    String entryName = newEntry.getName();
    if (mEntries.put(entryName, newEntry) != null) {
        throw new ZipException("Duplicate entry name: " + entryName);
    }
}

具体漏洞如何复现就不写了呵呵
雪    币: 33
活跃值: (145)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
wdynasty 1 2013-7-9 11:50
32
0
Great!现在就坐等poc了
雪    币: 1413
活跃值: (401)
能力值: (RANK:270 )
在线值:
发帖
回帖
粉丝
Claud 6 2013-7-9 12:00
33
0
https://gist.github.com/poliva/36b0795ab79ad6f14fd8
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
冷雨一刀 2013-7-9 12:29
34
0
不知道这个是不是就是bluebox发现的漏洞,看来只能等blackhat上bluebox公布了
雪    币: 74
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
windflyer 2013-7-9 13:46
35
0
Claud发的PoC链接是的
雪    币: 488
活跃值: (185)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
ZhWeir 6 2013-7-9 22:13
36
0
网上这个PoC有问题,对于复杂应用不能成功。我直接拿网易新闻试验,结果大家都说可以,我却不行。事实上只需要两个classes.dex,其他不需要两份。

一会儿我再发个贴吧。如果来得及的话。
游客
登录 | 注册 方可回帖
返回