首页 资讯 安全 查看内容

Android调试器存在漏洞,可获取设备内存数据(2)

2015-6-29 15:20 |来自: freebuf.com 4213 0

摘要: 趋势科技近日发现了Android调试器Debuggerd中的漏洞,该漏洞可以获取设备内存中的数据,影响系统包括Android 4.0 Ice Cream Sandwich(冰淇淋三明治)到Lollipop(棒棒糖)。承接上一篇的内容在Android旧版本中也可 ...
关键词: nbsp symbols symbol table nbs index name syms st size

170     if (sym_idx != -1) {
    171         // …and populate them
    172         for(= 0; i < numsyms; i++) {
    173             if((syms[i].st_shndx != SHN_UNDEF) &&
    174                 (strlen(str+syms[i].st_name)) &&
    175                 (syms[i].st_value != 0) && (syms[i].st_size != 0)) {
    176                 table->symbols[j].name = strdup(str + syms[i].st_name);//st_name没有经过检查就被使用了
    177                 table->symbols[j].addr = syms[i].st_value;
    178                 table->symbols[j].size = syms[i].st_size;
    179                 XLOG2(“name: %s, addr: %x, size: %x\n”,
    180                     table->symbols[j].name, table->symbols[j].addr, table->symbols[j].size);
    181                 j++;
    182             }
    183         }
    184     }

而在Android 4.1-4.4中,漏洞存在于system/core/libcorkscrew/symbol_table.c:

    150     size_t symbol_index = 0;
    151     if (dynsym_idx != -1) {
    152         // …and populate them
    153         for (int i = 0; i < dynnumsyms; i++) {
    154             if (dynsyms[i].st_shndx != SHN_UNDEF) {
    155                 table->symbols[symbol_index].name = strdup(dynstr + dynsyms[i].st_name);//st_name没有经过检查就被使用了
    156                 table->symbols[symbol_index].start = dynsyms[i].st_value;
    157                 table->symbols[symbol_index].end = dynsyms[i].st_value + dynsyms[i].st_size;
    158                 ALOGV(”  [%d] ‘%s 0x%08x-0x%08x (DYNAMIC)”,
    159                         symbol_index, table->symbols[symbol_index].name,
    160                         table->symbols[symbol_index].start, table->symbols[symbol_index].end);
    161                 symbol_index += 1;
    162             }
    163         }
    164     }
    165
    166     if (sym_idx != -1) {
    167         // …and populate them
    168         for (int i = 0; i < numsyms; i++) {
    169             if (syms[i].st_shndx != SHN_UNDEF
    170                     && str[syms[i].st_name]
    171                     && syms[i].st_value
    172                     && syms[i].st_size) {
    173                 table->symbols[symbol_index].name = strdup(str + syms[i].st_name);//st_name is type of uint32_t not be checked
    174                 table->symbols[symbol_index].start = syms[i].st_value;
    175                 table->symbols[symbol_index].end = syms[i].st_value + syms[i].st_size;
    176                 ALOGV(”  [%d] ‘%s 0x%08x-0x%08x”,
    177                         symbol_index, table->symbols[symbol_index].name,
    178                         table->symbols[symbol_index].start, table->symbols[symbol_index].end);
    179                 symbol_index += 1;
    180             }
    181}
    182     }

趋势科技的研究员已经在今年4月27日将漏洞提交给了Google。5月15日Android Open Source Project (AOSP)代码中发布了一个针对这个漏洞的补丁。

*参考来源:趋势科技

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除
1

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部