Изменения
Перейти к навигации
Перейти к поиску
мСтрока 9:
Строка 9:
− +
→Суть дыры
</code>
</code>
При внимательном рассмотрении выяснилось, что код вовсе не проверяет, является ли пользователь всемогущим [[root]]. Если обнаруживается нужное сочетание флагов, то вызвавший его процесс '''получает''' максимальные привилегии и моментально превращает wait4() в «черный ход». Другими словами, человек, знающий нужное сочетание флагов и место, где их следует установить, получает полный контроль над любой [[Linux]]-машиной. И вся эта гигантская разница — между тем, как код выглядит и что он в действительности делает, — заключена всего лишь в одном знаке на языке [[Си]]. Если бы этот нюанс обнаружили при обычных обстоятельствах, то наверняка сочли бы за элементарную ошибку программиста.
При внимательном рассмотрении выяснилось, что код вовсе не проверяет, является ли пользователь всемогущим [[root]]. Если обнаруживается нужное сочетание флагов, то вызвавший его процесс '''получает''' максимальные привилегии и моментально превращает wait4() в «черный ход». Другими словами, человек, знающий нужное сочетание флагов и место, где их следует установить, получает полный контроль над любой [[Linux]]-машиной. И вся эта гигантская разница — между тем, как код выглядит и что он в действительности делает, — заключена всего лишь в одном знаке на языке [[Си]] (двойной знак равенства, как в первом случае, означает ''проверку'' условия; одинарный — ''оператор присваивания''). Если бы этот нюанс обнаружили при обычных обстоятельствах, то наверняка сочли бы за элементарную ошибку программиста.
== История обнаружения ==
== История обнаружения ==