Может кто-нибудь объяснить код Shell Shock Bash?

У меня проблемы с пониманием следующего кода, который является "доказательством уязвимости" кода Shell Shock. Может кто-нибудь объяснить это мне? Специально эта часть() { :;};"

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

1 ответ

Решение

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

какие env делает?
Из документов, env запускает программы в измененной среде

env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]

ясно, что x это имя / переменная и () { :;}; echo vulnerable' это значение переменной

что теперь () { :;};?
когда функция экспортируется, bash сохраняет ее определение как значение для переменной среды

$ x() {echo hello world;}
$ export x
$ env | grep x
x=() {echo hello world};

сейчас, когда x='() {:;}' означает похожий на написание

$ x() {:;}
$ export x
$ env | grep x

То есть мы косвенно сделали export x на новую среду, созданную env
Вот : это пустое утверждение в Bash

Надеюсь, поможет

Другие вопросы по тегам