ВС:Бухгалтерия 6.3 Печенье с предсказаниями fortune-cookies ru п... (от Печенье с предсказаниями)
Уязвимость Shellshock – не баг, а фича?
Есть мнение, что уязвимость в Bash с безусловным исполнением кода, который следует за символами “() {”, – это не баг, а фича. По мнению одного эксперта, данный факт совершенно очевиден. Пусть и плохо реализованная и неправильная, но все равно ясно видно, что это намеренно внедренная фича.
Проблема в том, что Bash разработали 25 лет назад. До появления Apache оставалось еще пять лет. Интернет уже существовал, но это был относительно закрытый клуб для представителей академической науки. Им пользовались ученые и исследователи из разных университетов. В то время безопасность не считалась важным приоритетом при разработке новых программ. И уж тем более при разработке командного процессора Bash.
В контексте оболочки Unix дочерние процессы создаются и работают совершенно обычным и естественным образом. При создании нового дочернего процесса можно использовать переменные окружения, чтобы передать какие-то данные от родительского процесса к дочернему. В случае с Bash требовалась такая опция, чтобы какие-то функции, описанные в родительском процессе, передавались в дочерний. Вполне естественно, что для этого использовали переменные окружения.
Реализация слегка вышла за рамки спецификаций в том смысле, что Bash исполняет любую команду после определения функции, переданной в переменной окружения. Обычно там не должно быть никакого кода. Но в контексте программы Bash, если пользователь добавляет команды в эти переменные окружения, это можно считать фичей. В любом случае, дочерний процесс исполняется с правами того, кто установил переменные окружения, так что здесь не предвиделось проблем с безопасностью.
Настоящая проблема заключается в том, что через пять лет после создания Bash появились приложения вроде apache, dhcp и др., которые могут использовать Bash в дочерних процессах и в то же время используют переменные окружения для передачи данных. К сожалению, эти данные могут также поступать не от доверенного пользователя в локальной системе, а от кого угодно через интернет. И вот здесь недокументированная (и забытая) функция Bash превращается в мега-уязвимость, которая сейчас всем известна под названием Shellshock.
Никто не предполагал, что Apache и другие программы будут обрабатывать переменные окружения от дочерних процессов таким образом. Если и считать это багом, то это баг не Bash, а баг Apache и остальных программ, которые разрешают исполнение кода после символов “() {”.
В принципе, считает эксперт, если бы спецификации для Bash составлялись тщательно и подробно, то эта функция вполне могла войти в спецификации.
Мнение эксперта можно прочитать тут – http://paste.lisp.org/display/143864
Оставьте Ваш комментарий или мнение о новости: Уязвимость Shellshock – не баг, а фича? Просим Вас оставлять сообщения по теме и уважать своих собеседников и авторов новостного сообщения.