LINUX.ORG.RU

В коде xz версий 5.6.0 и 5.6.1 обнаружен бэкдор

 ,


4

9

Разработчик Debian и исследователь в сфере информационной безопасности Andres Freund сообщает об обнаружении вероятного бэкдора в исходном коде xz версий 5.6.0 и 5.6.1.

Бэкдор представляет собой строчку в одном из m4-скриптов, которая дописывает обфусцированный код в конец скрипта configure. Этот код затем модифицирует один из сгенерированных Makefile проекта, что в конечном итоге приводит к попаданию вредоносной нагрузки (замаскированной под тестовый архив bad-3-corrupt_lzma2.xz) непосредственно в исполняемый файл библиотеки liblzma.

Особенность инцидента состоит в том, что вредоносные скрипты сборки, служащие «триггером» для бэкдора, содержатся только в распространяемых tar-архивах с исходным кодом и не присутствуют в git-репозитории проекта.

Сообщается, что человек, от чьего имени вредоносный код был добавлен в репозиторий проекта, либо непосредственно причастен к произошедшему, либо стал жертвой серьёзной компрометации его личных учётных записей (но исследователь склоняется к первому варианту, т. к. этот человек лично участвовал в нескольких обсуждениях, связанных с вредоносными изменениями).

По ссылке исследователь отмечает, что в конечном итоге целью бэкдора, по-видимому, является инъекция кода в процесс sshd и подмена кода проверки RSA-ключей, и приводит несколько способов косвенно проверить, исполняется ли вредоносный код на вашей системе в данный момент.

Рекомендации по безопасности были выпущены проектами Arch Linux, Debian, Red Hat и openSUSE.

Разработчики Arch Linux отдельно отмечают, что хотя заражённые версии xz и попали в репозитории дистрибутива, дистрибутив остаётся в относительной «безопасности», т. к. sshd в Arch не линкуется с liblzma.


Проект openSUSE отмечает, что ввиду запутанности кода бэкдора и предполагаемого механизма его эксплуатации сложно установить «сработал» ли он хотя бы раз на данной машине, и рекомендует полную переустановку ОС с ротацией всех релевантных ключей на всех машинах, на которых хотя бы раз оказывались заражённые версии xz.

>>> Подробности

★★★★★

Проверено: maxcom ()
Последнее исправление: ilinsky (всего исправлений: 2)

Ответ на: комментарий от cumvillain

Нет. На meson ты можешь писать понятные вещи,

Я тебе о том, что код внедрения зловреда был обфусцирован, а писать обфусцированный код можно на любом ЯП, будь там хоть Питон, хоть C#.

на m4 это невозможно в принципе, там все будет лапша.

Да?

AC_DEFUN([SDE_WITH], [
    AC_ARG_WITH([$1],
        [AS_HELP_STRING(
            [--with-$1],
            [$2]
        )],
        [with_$1=$withval],
        [with_$1=auto]
    )

    AC_MSG_CHECKING([--with-$1])
    AC_MSG_RESULT([$with_$1])

    have_$1=no
    AS_IF([test "x$with_$1" != xno], [
        $3
    ])

    AS_IF([test "x$with_$1" = "xyes" -a "x$have_$1" != "xyes"], [
        AC_MSG_ERROR([$1 requested but not found])
    ])
])

лапша

Так про любой незнакомый ЯП можно сказать «лапша».

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

Ооо, это мое любимое:

    AS_IF([test "x$with_$1" = "xyes" -a "x$have_$1" != "xyes"], [
        AC_MSG_ERROR([$1 requested but not found])
    ])

Ты понимаешь что поставив тут " не в том месте можно получить shell execution, да?

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

Ты понимаешь что поставив тут " не в том месте можно получить shell execution, да?

А поставив звёздочку не в том месте, можно получить Segmentation Fault. Ты меня программными ошибками решил напугать или что?

получить shell execution

Получить shell execution на билд-машине, которая и так исполняет любой код? Охереть страшная у тебя модель угроз.

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

Получить shell execution на билд-машине, которая и так исполняет любой код? Охереть страшная у тебя модель угроз.

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

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

Ну как бы это и произошло.

Нет, произошло не это. Билд-машина запускает произвольный исполняемый файл, который делает произвольные вещи. Вот что произошло.

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

Нет, произошло не это. Билд-машина запускает произвольный исполняемый файл, который делает произвольные вещи. Вот что произошло.

Ну в посте написано даже:

Бэкдор представляет собой строчку в одном из m4-скриптов, которая дописывает обфусцированный код в конец скрипта configure.

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

Ну в посте написано даже:

Да, ровно это и написано.

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

Получить shell execution на билд-машине, которая и так исполняет любой код? Охереть страшная у тебя модель угроз.

Так в сабжевом посте ровно так говнокод в си и присунули :)

Пара кавычек не в том месте, из тестового бинарика выкалупывается ништячок, суётся куда надо и… PROFIT!

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

Пара кавычек не в том месте, из тестового бинарика выкалупывается ништячок,

Еще один дэ…

Какие «пара кавычек», если билд машина и так даёт полный карт-бланш сборочной системе на любую трансформацию входных данных в выходные?

Там не надо ниоткуда «сбегать», чтобы получить возможность исполнения кода. Алё, Алёша.

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

Там не надо ниоткуда «сбегать», чтобы получить возможность исполнения кода

Ты не понимаешь кажется. Этот код читают люди. Если в meson напрограммировано sed "\$ a ${exploit}|" это вызовет много вопросов и подозрений. То же самое в m4 – обычный вторник.

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

Это абсолютно не имеет никакого отношения к shell execution «из-за не той кавычки». Ты зачем-то придумал эту ерунду.

Что касается ЯП сборочной системы, то я выше писал:

Всю эту срань на m4 и cmake давно пора заменить на продуманное API/DSL на основе встраиваемого ЯП общего назначения – JS или Lua. Будет простейший бинарь с минимумом зависимостей сборки, возможностей которого хватит на следующие 30 лет с головой.

И не выписывать() вот() сраные() чудеса() на() cmake.

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

Всю эту срань на m4 и cmake давно пора заменить на продуманное API/DSL на основе встраиваемого ЯП общего назначения – JS или Lua. Будет простейший бинарь с минимумом зависимостей сборки, возможностей которого хватит на следующие 30 лет с головой.

meson

cumvillain
()
Ответ на: комментарий от wandrien

в линупсе же питон неофициальный системный язык

rtxtxtrx
()
Ответ на: комментарий от wandrien

Я тебе о том, что код внедрения зловреда был обфусцирован, а писать обфусцированный код можно на любом ЯП, будь там хоть Питон, хоть C#.

Я утверждаю что в том же meson гораздо сложнее написать генерацию эксплоита из бинарника, потому что у проверяющих будет много вопросов, первый из которых будет «а зачем так сложно»?

P.S. Но вообще это все мертвому припарки, потому что дыра была спрятана в релизном тарболе в который обычно никто не смотрит.

cumvillain
()
Последнее исправление: cumvillain (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.