LINUX.ORG.RU

Уязвимость в bash и множественные уязвимости в APT

 , ,


3

9

Опубликованы подробности уязвимости CVE-2014-6271 в bash, которая позволяет злоумышленнику произвести удалённое выполнение кода.

Уязвимость возможна благодаря одной из особенностей bash - использования переменных окружения для экспорта функций (если в переменной содержится "() {", то её содержимое будет интерпретировано как функция). Проблема заключается в том, что обработка продолжается даже после символа «}», поэтому, если добавить любую команду — она будет выполнена. Атаке подвержены sshd, Git и Subversion (при определённых обстоятельствах), Apache с mod_cgi или mod_cgid (если скрипты CGI написаны на bash или вызывают bash-скрипты), клиенты DHCP (если они вызывают скрипты для настройки системы), CUPS и вообще любые приложения, которые запускают bash (или bash-скрипты) и могут устанавливать переменные окружения на основе данных, полученных извне.

Для проверки наличия уязвимости в системе можно выполнить команду

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
Если система уязвима, в консоль будут выведены строки «vulnerable» и «this is a test», а при отсутствии уязвимости, сообщение об ошибке вида
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test

Обновление с исправлением уязвимости уже выпущено для некоторых популярных дистрибутивов.

Кроме того, объявлено об исправлении множественных уязвимостей в пакетном менеджере APT. Уязвимости CVE-2014-0487, CVE-2014-0490, CVE-2014-0488 и CVE-2014-0489 позволяют обойти проверку цифровых подписей пакетов и репозиториев, а уязвимость CVE-2014-6273 - выполнение произвольного кода, отправленного злоумышленником, вмешавшимся в трафик.

anonymous

Проверено: JB ()

даже после символа «}», поэтому, если добавить любую команду — она будет выполнена

само по себе выполнение bash в system() это уже дыра.

emulek
()
Ответ на: комментарий от crypt

Если бы подобное было в sshd, то это было бы минимум 0.85 heartbleed'а.

Хотя, и тут пока ещё не всё ясно. Серваки ладно, обновят/прикроют. А вот всякие роутеры и прочее подобное...

Ну и задам традиционный вопрос. Как долго существовала эта дырень и как давно АНБ о ней знала?

WARNING ★★★★
()
Ответ на: комментарий от WARNING

Как долго существовала эта дырень и как давно АНБ о ней знала?

[zog_mode]Как закоммитили те самые строки - с тех пор и знала ;) [/zog_mode]

I-Love-Microsoft ★★★★★
()
sh-3.2$ env x='() { :;}; echo vulnerable' sh -c "echo this is a test"
vulnerable
this is a test
Logopeft ★★
()
Ответ на: комментарий от backbone

=app-shells/bash-4.2_p48-r1

а на маке с такой же версией есть баг(

upd: ой там 3.2.48 сорь не исправили :)

bookman900 ★★★★★
()
Последнее исправление: bookman900 (всего исправлений: 1)
Ответ на: комментарий от leg0las

Я тоже.

root@data-base-server:/home/administrator# apt-get upgrade
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Пакеты, которые будут обновлены:
  bash
обновлено 1, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 1 498 kБ архивов.
После данной операции, объём занятого дискового пространства уменьшится на 297 kB.
Хотите продолжить [Д/н]? Y
Получено:1 http://security.debian.org/ wheezy/updates/main bash amd64 4.2+dfsg-0.1+deb7u1 [1 498 kB]
Получено 1 498 kБ за 2с (694 kБ/c)
(Чтение базы данных … на данный момент установлено 22425 файлов и каталогов.)
Подготовка к замене пакета bash 4.2+dfsg-0.1 (используется файл …/bash_4.2+dfsg-0.1+deb7u1_amd64.deb) …
Распаковывается замена для пакета bash …
Обрабатываются триггеры для man-db …
Настраивается пакет bash (4.2+dfsg-0.1+deb7u1) …
update-alternatives: используется /usr/share/man/man7/bash-builtins.7.gz для предоставления /usr/share/man/man7/builtins.7.gz (builtins.7.gz) в автоматический режим
rezedent12 ☆☆☆
()

эх, сегодня день обновлений похоже :) опять парк обновлять.

ktk ★★★★
()

Для CGI это самое веселье, учитывая распространенность оного

cvs-255 ★★★★★
()
Ответ на: комментарий от northerner

В бубунте только что обновился - пропал дырко, пишет только this is test.

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)
Ответ на: комментарий от fero

cgi скрипты на самом bash-е я думаю практически никто не пишет, я так понимаю один из векторов атаки это вызов баша cgi-ными скриптами, и тут уже не важен язык этих скриптов.

MrClon ★★★★★
()

Ох ты ж йо. Это сравнимо с 12-летним багом венды в WMF. Красноглазые тогда потешались над ним. :-)

shimon ★★★★★
()
Ответ на: комментарий от unt1tled

Макось тоже уязвима.

Так и не понял, зачем эппл в макось тащит убогий GPL-ный bash, вместо трушного zsh под MIT. С линуксом все ясно - Столлман не завещал, но эпплу то что?

ptarh ★★★★★
()
Последнее исправление: ptarh (всего исправлений: 1)
Ответ на: комментарий от ptarh

Так никогда и не понял, зачем эппл в макось тащит убогий GPL-ный bash, вместо трушного zsh под MIT. С линуксом все ясно - Столлман не завещал, но эпплу то что?

Возможно, по тойже причине, что не используют flac. Из-за лицензий.
На свободном коде патент-троллить легко. А GPL хоть, может, хоть как-то ограничивает.

unt1tled ★★★★
()

В альте не работает ни с 3-им, ни с 4-ым. Какой-то альт неполноценный - у всех работает, я тоже хочу :)

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от Vovka-Korovka

А, блин, просто вчера уже исправили. Ну тогда все нормально.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от unt1tled

Какой там патент-троллинг в консолях то? :) Самое смешное, что версия баша в макоси еще и замшелая - актуальная 3.2 Как я понимаю, из-за ограничений в GPL3.

ptarh ★★★★★
()

Интересно, что после всех «исправлений» переопределить функции по-прежнему можно (и мне кажется, что это нельзя убрать, не поломав множество работающих скриптов). Это позволяет подсунуть свой код вместо любой команды, кроме (1) бинарников, которые запускаются по полному пути, (2) встроенных команд, которые запускаются как

builtin <name>
и (3) управляющих конструкций с «некомандным» синтаксисом:

env exit='() { echo Vulnerable; builtin exit "$@" ;}' fakeroot true
env exit='() { echo Vulnerable; builtin exit "$@" ;}' lzgrep foo /dev/null

Не так уж часто скрипты на bash пишут настолько параноидально, что вместо каждого exit будет builtin exit. Так что ждём ещё новостей на эту тему.

LeninGad
()
Ответ на: комментарий от xtraeft

Шок Сенсация - в os x тоже есть bash!

Шок в том, что они его не перепиливают. А юзают как есть, со всеми дырами.

unt1tled ★★★★
()
Ответ на: комментарий от unt1tled

Ты всерьез хочешь сказать, что MIT эпплу неудобнее GPL? :) Это гипотеза маловероятна. Скорее потому, что с башем большее кол-во пользователей знакомо, но это не повод таскать допотопную версию.

ptarh ★★★★★
()
Ответ на: комментарий от ptarh

Эээ... не понял. Ты же сам написал:

Самое смешное, что версия баша в макоси еще и замшелая - актуальная 3.2 Как я понимаю, из-за ограничений в GPL3.

Так и есть, видимо. Из-за GPL3 баш не обновляют.

Но это не мешает им брать zsh в состав системы. Оно там есть и вполне свежая.

unt1tled ★★★★
()
Последнее исправление: unt1tled (всего исправлений: 1)

А объясните пжалст ынтерпрайзявабыдлокодеру, в чем эпичность этой уюзвимости?

Я как бэ понял что оно выполняет код при установке переменной окружения и это довольно печально, но я не совсем понимаю зачем кому-то вообще может понадобиться недоверенные данные пихать в переменные окружения.

anonymous
()
Ответ на: комментарий от unt1tled

Оно там есть и вполне свежая.

Оно должно быть дефлотом, учитывая лицензионные проблемы с башем. Это сместит на него всех скриптописателей, а в долгосрочной перспективе баш можно будет выбросить - толку то от софта, который не можешь обновить? Кому нужно, сам из homebrew/macports поставит. В общем, непонятна мне их логика.

ptarh ★★★★★
()
Ответ на: комментарий от anonymous

Я вот тоже не понял. Как эту дыру можно заюзать удаленно. Разве что дав удаленному юзеру устанавливать переменные окружения на сервере. А это уже пхпшное ссзб.

unt1tled ★★★★
()
Ответ на: комментарий от unt1tled

Сами догадаются, когда дыры в баше залатывать руками устанут. Я свою давно переставил на zsh и добавил Oh my Zsh для большего угару.

ptarh ★★★★★
()
Ответ на: комментарий от ptarh

Я бы позвонил по приколу, да в родную из-за бугра дорого звонить. Заболел еще. Щас голос как у зомбака.

Смешно бы выглядело: звонит такой undead, голос как из унитаза «почему у вас баш не обновляется? и zsh не по дефолту? а?»

unt1tled ★★★★
()
Ответ на: комментарий от Tactile

Последний ни к чему, нужен патченный.

# aptitude changelog bash
Get: Changelog of bash
bash (4.2+dfsg-0.1+deb7u1) wheezy-security; urgency=high

  * Apply patch from Chet Ramey to fix CVE-2014-6271.

 -- Florian Weimer <fw@deneb.enyo.de>  Tue, 16 Sep 2014 21:28:27 +0200
ritsufag ★★★★★
()
Ответ на: комментарий от nowaysystem

zsh тоже уязвим?

нет, но zsh пользуеш лично ты, а все остальные демоны и сервисы у тебя в системе пользуют sh и bash. так что обновляться нужно..

expelled ★★
()

теперь скрипты секурнее на c++ накатать

anonymous
()
Ответ на: комментарий от Twissel

У меня Дебиан уязвим.

как же так?

anonymous
()
Ответ на: комментарий от unt1tled

Шок в том, что они его не перепиливают. А юзают как есть, со всеми дырами.

Пофиг.

bash --version
GNU bash, version 4.3.25(1)-release (x86_64-apple-darwin13.4.0)

xtraeft ★★☆☆
()
Ответ на: комментарий от anonymous

так в systemd не используются скрипты bash, он неуязвим

anonymous
()
Ответ на: комментарий от Tactile

Качаем

Ман apt-get install package:architecture/release

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