Android偵錯程式存在漏洞,可獲取裝置記憶體資料

2021-12-29 22:04:53 字數 1695 閱讀 7247

乙個構造精巧的elf(executable and linkable format)檔案可以導致偵錯程式崩潰,然後通過tombstone檔案和對應的logd日誌檔案暴露記憶體內容。這可以被用於拒絕服務攻擊,可以幫助繞過aslr執行惡意**。僅僅利用這個漏洞是無法進行**執行的。但是通過這個漏洞暴露的資訊可以和其他漏洞結合用於**執行。

這個漏洞可以被惡意應用或者重新打包的應用利用。漏洞影響的系統版本包括android 4.0 (ice cream sandwich)到lollipop(5.x),下一代的android m已經修復了這個漏洞。

漏洞詳情

導致漏洞的原因是在執行字串複製命令時,debuggerd會使用sym->st_name作為offset,而不進行錯誤檢查。這個值可以輕易被惡意的elf檔案控制,它可以將offset值指向不可讀取的記憶體,debuggerd就會崩潰。如果不斷崩潰就會造成拒絕服務攻擊。如果精心構造offset就會使debuggerd暴露相應的記憶體內容,debuggerd會將它們存入dump和log檔案中。對於android 5.0-5.1,漏洞出現在external/libunwind/src/elfxx.c:

126       for (sym = symtab;

127            sym  symtab_end;

128            sym = (elf_w (sym) *) ((char *) sym + syment_size))

129        

151         }

152         }

想重現漏洞,就要用到乙個能夠導致崩潰的elf檔案。我們可以通過修改符號偏移做到。elf被放入apk後,它就會被迴圈執行。之後就會觸發漏洞,見下圖:

在android舊版本中也可以發現類似的問題(特別是4.x版本,如ice cream sandwich, jelly bean和kitkat)。在這些版本中用的不是libunwind第三方庫。在android 4.0中,漏洞存在於system/core/debuggerd/symbol_table.c:

155     int j = 0;

156     if (dynsym_idx != -1)

167         }

168     }

169170     if (sym_idx != -1)

183         }

184     }

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

趨勢科技的研究員已經在今年4月27日將漏洞提交給了google。5月15日android open source project (aosp)**中發布了乙個針對這個漏洞的補丁。

python的偵錯程式 Python 偵錯程式入門

python 生態系統包含豐富的工具和庫,可以讓開發人員更加舒適。例如,我們之前已經介紹了如何使用互動式 shell 增強 python。本文重點介紹另一種可以節省時間並提高 python 技能的工具 python 偵錯程式。python 偵錯程式 python 標準庫提供了乙個名為 pdb 的偵錯...

常見偵錯程式

工欲善其事,必先利其器 在進行軟體除錯或者逆向工程時,我們需要很多輔助工具,其中偵錯程式是最重要的工具之一。根據除錯物件偵錯程式分類為使用者態和核心態。使用者態偵錯程式只能除錯環3 ring3 許可權的應用程式,大多數應用程式均屬於此類程式。核心態偵錯程式能除錯環0 ring0 許可權的應用程式,驅...

GDB偵錯程式

偵錯程式gdb 一 啟動和退出gdb gdb除錯的物件是可執行檔案,而不是程式的源 如果要使乙個可執行檔案可以被gdb除錯,那麼在使用編譯器gcc編譯程式時需要加入 g選項。gdb除錯乙個程式的命令格式是 gdb 程式檔名 也可以在linux提示符下,直接輸入gdb,然後使用file命令裝入要除錯的...