乙個構造精巧的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命令裝入要除錯的...