LINUX.ORG.RU

NFS Server в RH4, RH5


0

0

Обнаружена проблема безопасности в пакете nfs-server дистрибутивов RedHat Linux 4.x и 5.x. Пользователи, обладающие правами на запись могут получить root'а на сервере переполнив буфер длинным именем файла.

>>> Подробности

★★★★★

Проверено:

Is Linux People Stupid?

Господа, кто мне может объяснить почему всему миру известным ломом под названием переполнение буфера так часто ломают но системы, то веб серваки и тд. Неужели так фатально сложно заранее предусмотреть: вот я пишу код, вот я знаю что целые полчища уродов будут стараться переполить буфер и ждать что им после этого обломиться чтонибудь хорошее, неужели сложно ну не допустить получение рута ... Я сам Application Software Engineer, не буду судить как спец по системам, но может ли кто объяснить мне это проклятие переполнения буфера. Толково, без флейма. Thnx in advance

anonymous
()

Простейший пример: задача: сформировать строку для печати некого сообщения, которое будет содержать на пример IP адрес удаленного компьютера. Теперь как это делают обычно: void BuildMessage( char *szBuf, char *szMessage, struct in_addr *ip ) { sprintf( szBuf, "%s Remote IP: %d.%d.%d.%d", szMessage, ip->S_un.S_un_b.s_b1, ip->S_un.S_un_b.s_b2, ip->S_un.S_un_b.s_b3, ip->S_un.S_un_b.s_b4 ); } Отхватить переполнение буфера тут дело одной минуты. Правильно было бы: void BuildMessage( char *szBuf, int nBufLen, char *szMessage, struct in_addr *ip ) { snprintf( szBuf, nBufLen, "%s Remote IP: %d.%d.%d.%d", szMessage, ip->S_un.S_un_b.s_b1, ip->S_un.S_un_b.s_b2, ip->S_un.S_un_b.s_b3, ip->S_un.S_un_b.s_b4 ); } В писать лишний код да еще за бесплатно вряд ли кто хочет.

Ogr
()

Ага, а еще можно спросить, "Ну неужели так трудно писать без багов ?". Если хотя-бы раз писал писал что-нибудь большое, понимаешь, что кодить без багов невозможно.

anonymous
()

Не каждое переполнение буфера приводит к взлому. Для этого надо, что-бы код прошел по избытку информации, которой ты переполнил буфер.

anonymous
()

К сожалению, такова жизнь. Сначала пишешь - на такие вещи и внимания не обращаешь. А многие и не знают даже, что то, что они где-то буфер не проверяют, может привести к серьезным неприятностям. В коммерческих конторах часто нанимают довольно низкоквалифицированных программистов и не проверяют потом код. Так дешевле. И во фревых проектах часто у людей квалификация тоже не ахти какая, особенно поначалу. А проверять все напряжно (и не замечаю я своих ляпов, хоть что делай (и не один я такой)). Хорошо когда много народу в проекте участвует, но не всегда ведь так бывает. Вот специально для решения проблемы и был создал Audit project. HP не помню конечно ;).

Lae
()

Пример конечно хороший. Только не понятно одно - на x86 архитектуре вроде как сегменты кода и сегменты данных разделены? Как же тогда данные попадают на код? Хотя может быть в стеке... Но все равно интересно. Поясните пожалуйста.

mav
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.