Я нашел, что команда просмотрела время установки жесткого диска:
ls -l /dev/hdisk
Чтобы успокоить несколько, я не нашел ошибку, наблюдая за эксплуатациями, у меня есть
Нет причин полагать, что это было эксплуатировано перед раскрытием
(Хотя конечно, я не могу его исключить). Я не нашел это
Глядя на Bash
код либо.
Я не могу сказать, что в то время я помню, как именно мой поезд мыслей в то время.
Это более или менее пришло из некоторого отражения на некоторых поведении Некоторые программное обеспечение я нахожу опасно (поведение, а не програмное обеспечение). Такое поведение, которое заставляет вас думать: не звучит как хорошая идея .
В этом случае я отражал общую конфигурацию
SSH, что позволяет пропускать переменные среды нецизированы из
Клиент предоставил свое имя начинается с LC_
. Идея такая
что люди могут продолжать использовать свой собственный язык, когда SSH
в
другие машины. Хорошая идея, пока вы не начнете рассмотреть
Насколько сложна обработка локализации, особенно когда UTF-8
принес в уравнение (и видеть, насколько плохо это обрабатывается
много приложений).
Вернувшись в июле 2014 года, я уже сообщил о уязвимости в
Обработка локализации Glibc, которая в сочетании с этим SSHD
config, а Два других Опасное поведение Bash
Shell
Допускается (аутентифицированные) злоумышленники, чтобы взломать серверы Git
при условии, что они смогли загружать файлы там и Bash
Используется в качестве входа в систему Shell из пользователя GIT Unix (CVE-2014-0475).
Я думал, что это, вероятно, была плохой идеей использовать Bash
как вход в систему
Shell из пользователей, предлагающих услуги по SSH, учитывая, что это довольно
Комплексная оболочка (когда все, что вам нужно, просто разбирается очень простая командная строка) и унаследовала большинство ошибок KSH.
Поскольку я уже определил несколько проблем с Bash
используется в этом контексте (интерпретировать SSH Forcecommand
, я был
Удивительно, если бы там было потенциально больше.
ACCECTENV LC _ *
позволяет любую переменную, имя которой начинается
С LC_
и у меня была расплывная воспоминания, которую экспортировал Bash
Функции (A опасно , хотя и на момент полезной функции) были
используя переменные среды, имя которого было что-то вроде
Myфункция ()
и было интересно, если бы не было чего-то
Интересно смотреть там.
Я собирался отклонить его на том основании, что худшее
Может ли сделать было бы переопределить команду под названием lc_something
что не может быть проблемой, так как они не существуют
Команды, но тогда я начал удивляться, как Bash
импортировал те переменные среды.
Что если переменные были вызваны LC_FOO; Echo Test; f ()
Например? Поэтому я решил посмотреть.
A:
$ env -i bash -c 'zzz() { :;}; export -f zzz; env'
[...]
zzz=() { :
}
показал, что моя воспоминания ошибалась в том, что переменные
не были названы Myфункция ()
, но MSFunction
(и это
значение , которое начинается с ()
).
и быстрый тест:
$ env 'true;echo test; f=() { :;}' bash -c :
test
bash: error importing function definition for `true;echo test; f'
подтвердил мое подозрение, что имена переменной не было дезинфицировано, И код был оценен при запуске .
Хуже, намного хуже, значение также не было дезинфицировано:
$ env 'foo=() { :;}; echo test' bash -c :
test
, что означало, что любой переменной среды может быть вектором.
Это когда я понял, что степень проблемы, подтвердила, что это было
Эксплуатация также по адресу http ( http_xxx
/ QueryString
... Env vars), другие, такие как услуги по обработке почты, позже DHCP (и, вероятно, длинный список) и
сообщил об этом (тщательно).