Тема: SSS exploit
Показать сообщение отдельно

  #85  
Старый 03.01.2007, 15:23
Zadoxlik
Постоянный
Регистрация: 28.02.2005
Сообщений: 853
Провел на форуме:
3369632

Репутация: 749


По умолчанию

Сначала хотел сказать кое-что по поводу баги, найденной Greatом. Бага существует, но сервер из-за нее фактически при любой своей нагруженности упасть никогда не сможет. Т.е. будет проще выбить весь сервер из сети чем свалить SSS через эту багу!
А т.к. на видео мы с вами видели вполне недвусмысленное падение сервера от простого дуновения сплоентом, то тут собака порылась где-то совсем не там. Ктому же, если учитывать что в эксплоите идет коннект на 81ый порт, который на сервере, к которому идет коннект (сервер живого журнала), закрыт, то подпрограмма SocksPipe не будет запущена ни в текущем не в новом потоке!
И так!.... *Играют барабаны!* Сейчас все будут смеяться =)! Ни один античатовец (кроме ZaCo, который не считается) не нашел ответа к такой простой загадке!

Если бы кто-то порешил посмотреть у себя с чем валится бедный SSS, оказалось бы что он вылетает с... broken pipe! =) Дело в том что в Юникс системах есть небольшая подлость при работе с вводом/выводом в т.ч. в сокеты. Если попытаться послать данные TCP сокет, который был закрыт (!!!), приложение получит сигнал SIGPIPE и свалится.

Таким образом вся суть экслоита - послать данные и быстро-быстро разорвать соединение, так чтобы при следущем вызове send оно было уже закрыто, вот и вся история.

Универсальное решение - поставить обработчик сигнала SIGPIPE, для Linux и самых свежих FreeBSD можно просто при вызове send выставить флаг MSG_NOSIGNAL, правда, как уже говорил, SIGPEP может вылететь не только при работе с сокетом, так что лучше все же накумекать обработчик сигнала.

Вот и все! =)))
 
Ответить с цитированием