设为主页 | 加入收藏 | 繁體中文

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

 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)代码中发布了一个针对这个漏洞的补丁。


    文章作者: 福州军威计算机技术有限公司
    军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。

TAG:
评论加载中...
内容:
评论者: 验证码: