Бага в Blitz или вообще в любых экстеншенах. Возможна дырка с переполнением буфера.

DiMA

php.spb.ru
Команда форума
Бага в Blitz или вообще в любых экстеншенах. Возможна дырка с переполнением буфера.

PHP:
class Test {

  public $str;

  function go() {
     $x="hello";
     $this->str[]=$x;
     return $x;
  }

}
После исполнения return переменная $Test->str[0] будет содержать мусор, а не строку "hello". Либо Блитц, либо сам пхп чистит стек после завершения функции (и это разумеется правильно), но почему-то присваивание $str указывает тоже на стек, подлежащий чистке.

А, самое главное. $Test->go() вызывается коллбеком из Блитца. Сам по себе пример в чистом пхп не глючит.

Интересно, если записать что-то либо в str (которая указывает в стек), можно ли сделать переопределение возврата чужого ретурна, т.е. просто свой асм код? :) Если она указывает в стек выше, то разумеется нельзя, а вот если ниже SP:BP (или не в стек, а еще куда-нибудь)...

-~{}~ 04.08.09 13:41:

php 5.3.0RC3-dev
 

fixxxer

К.О.
Партнер клуба
ну кстати это и я мог накосячить в своих патчах (хотя вроде там и негде). вобщем, считаю это тикетом на меня =)
 

DiMA

php.spb.ru
Команда форума
ага... а остальные молча в тряпочку ушли писать эксплоиты по мотивам =)
 

fisher

накатила суть
ребят у меня щас мало времени давайте если думаете что это блиц - полный тест-кейс, чтоб я прям вот выполнил у себя и убедился и не писал сам ничего ;) на alexey d0t rybak at gmail d0t com

-~{}~ 06.08.09 16:24:

дык и чо?
 

fixxxer

К.О.
Партнер клуба
дык эцсамое, воркэраунд есть, работы дофига, вощем еще на добрался, ну you understand :). на выходных видимо посмотрю
 

fixxxer

К.О.
Партнер клуба
отбой, косяк в моих патчах. теперь осталось понять где =)

-~{}~ 14.08.09 12:36:

Все оказалось намного интереснее.

Я не нашел у себя проблему и забил, а сегодня наткнулся на презентацию Stefan Esser'a:

http://www.suspekt.org/2009/08/12/state-of-the-art-post-exploitation-in-hardened-php-environments/

...I gave a presentation titled “State of the Art Post Exploitation in Hardened PHP Environments” that discusses a certain flaw in the design of the Zend Engine that allows the development of very stable local exploits against PHP. Within the presentation two (no longer) 0 day exploits are discussed and it is demonstrated how they can be used to get arbitrary read and write access to the memory of PHP...
В pdf-ке все расписано детально, надо будет вникнуть. Ну и обновиться, возможно, в последних билдах PHP оно исправлено.
 
Сверху