日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > > 充電吧
[導讀]最近(終于)轉Android了,2011年著名的zergrush是接觸的第一個ROOT漏洞。雖然它已經過氣了,只影響Android 2.2 - 2.3.6,但覺得還是有必要記錄一下分析所得。市面上各種

最近(終于)轉Android了,2011年著名的zergrush是接觸的第一個ROOT漏洞。雖然它已經過氣了,只影響Android 2.2 - 2.3.6,但覺得還是有必要記錄一下分析所得。

市面上各種ROOT工具基本都包含zergrush,大多是開源的zergRush.c直接編譯而來。已有的分析文章:

  tomken_zhang,漏洞 — zergRush,漏洞 — zergRush (補充)

  Claud,?Android提權代碼zergRush分析

分析內容集中在zergRush.c的代碼結構上,對漏洞原理沒有解析,或者錯誤地認為是棧溢出。其實CVE-2011-3874已經描述得很明白,這個漏洞的本質是"use after free"。

1. 棧溢出?No.

漏洞存在于/system/bin/vold這個root身份的系統(tǒng)程序。具體地,vold調用了libsysutils.so,真正有問題的是這個so。再具體地,問題出在/system/core/libsysutils/src/FrameworkListener.cpp的FrameworkListener::dispatchCommand方法。

它在棧上分配了一個固定大小的數組argv,


void?FrameworkListener::dispatchCommand(SocketClient?*cli,?char*data)?{
????FrameworkCommandCollection::iterator?i;
????intargc?=0;
????char*argv[FrameworkListener::CMD_ARGS_MAX];
????chartmp[255];
????char*p?=?data;
????char*q?=?tmp;
????bool?esc?=false;
????bool?quote?=false;
????intk;

?

?FrameworkListener::CMD_ARGS_MAX = 16。但后面填充argv數組時,代碼并沒有檢查是否發(fā)生了越界。


if?(!quote?&&?*q?==?'?')?{
??????*q?='