Důležitá bezpečnostní aktualizace balíkových modulů + popis detailní popis útoků na PrestaShopy v červenci 2022

7 komentářů

Pokud vlastníte licenci nějakého našeho balíkového modulu (např. „Balíkovna“), proveďte aktualizaci prosím na poslední verzi! (o tomto jsme všechny zákazníky informovali i e-mailem)

Jedná se o důležitou bezpečnostní záplatu.

— — — — — — — — — — — — — — —
Pokud hostujete u nás na webhostingu OPENSERVIS, nemusíte podnikat žádnou akci, patch jsme aplikovali všem našim zákazníkům.
— — — — — — — — — — — — — — —

1) Detailní analýza problému (info pro zkušené, či vývojáře)

Pokud jste bezprostředně ohroženi zneužitím chyby, cíleně jsme kontaktovali postižené osoby e-mailem s postupem odvirování.

Pokud nejste aktuálně napadeni, dostali jste e-mail o nutnosti aktualizovat modul, učiňte tak prosím bezodkladně.

Za případné potíže se omlouváme. Pokud byste měli nějaké dotazy, napište nám, pomůžeme, poradíme, vysvětlíme.

Níže v bodu 3 naleznete informaci, jak případně Váš e-shop jednoduše odvirovat (pokud je napaden) – toto povídání v tomto bodu „1“ můžete přeskočit.

Dne 9. 7. 2022 nás o této skutečnosti informoval pan Roman Kotyra – děkujeme!
Následně 15. 7. 2022 pan Ing. Jan Kopecký, také děkujeme.

Samotný balíkový modul (např. Balíkovna) nemůže způsobit sám o sobě tuto nákazu (konzultováno s OWASP [uznávaní specialisté na bezpečnost webových aplikací]), ale může být potencionálně využit v souvislosti s jinou zranitelností nějakého jiného modulu nebo spíše přímo PrestaShopu jako takového (zatím nemáme žádné bližší info).
Tato nákaza se projevuje ovšem i na webech, který žádný náš modul nemají, takže bezpečnostní riziko musí být ještě někde jinde (zatím neznámo). Vypadá to na nějaký globálnější problém, což ale nic nemění na tom, že je nutné příslušný balíkový modul aktualizovat.
EDIT: 22. 7. 2022:
Podařilo se nám ve spolupráci s PrestaShop developer týmem objevit tu chybu, kterou malware zneužívá, popsáno zde:
https://build.prestashop.com/news/major-security-vulnerability-on-prestashop-websites/
EDIT: 25. 7. 2022:
Také dle našeho podnětu byla chyba opravena v nové verzi PS 1.7.8.7:
https://build.prestashop.com/news/prestashop-1-7-8-7-maintenance-release/
Pokud byste měli zájem Váš e-shop aktualizovat na poslední verzi PrestaShopu, tuto službu poskytujeme.

Útok probíhá aktuálně z těchto IP adres, pokud jste správce serveru, doporučujeme zablokovat:
217.170.207.111
195.123.246.212
45.197.141.250
106.15.179.255
5.34.181.22 (srpen 2022)
185.123.53.44 (srpen 2022)
Pokud jste správce serveru, zdroj útoku je možné zachytit v modsecurity pluginu i při nastavení nastavení SecRuleEngine DetectionOnly

Malware modifikuje/nahrává tyto soubory (dle verze PS apod.):
Nahrává tyto soubory (nejsou součástí PS):
/blm.php/blc.php/abc.php (a jiné tří písmenné ekvivalenty, je zřejmě úplně prvotním zdrojem nákazy)
/js/XXXXX.js (vždy vytvoří pěti znakový název souboru náhodně generovaný [a-zA-Z0-9], který má vždy velikost 33637B. Pozor ať nevyhodnotíte nákazu špatně, např. soubor tools.js je naprosto validní. Tento soubor zajišťuje zobrazení škodlivého kódu na webu)
/img/XXXXX.img (vždy vytvoří pěti znakový název souboru náhodně generovaný [a-zA-Z0-9]. Tento soubor zajišťuje zobrazení škodlivého kódu na webu)
/app/Mage.php (pouze někdy, PS 1.7, tento soubor slouží jako „dropper“ v PS 1.7 -> infikuje všechny ostatní uvedené soubory)
Infikuje tyto soubory (jsou součástí PS):
/controllers/front/IndexController.php (vždy, přidává na poslední řádek souboru škodlivý kód, přijímá příkazy útočníka)
/controllers/admin/AdminLoginController.php (vždy, přidává řádky s textem „base64“, soubor se snaží odchytit hesla do administrace Prestashopu)
/classes/controller/FrontController.php (vždy, přidává řádky s textem „base64“, zajišťuje propsání škodlivého JS souboru do webu, od srpna nová mutace, kdy se do souboru přidává funkce csschecks/jschecks +přidává řádky s textem „prod_hash“, snaží se odesílat útočníkovi data)
/classes/controller/Controller.php (vždy, přidává řádky s textem „base64“, zajišťuje propsání škodlivého JS souboru do webu, od srpna nová mutace, kdy se do souboru přidává funkce csschecks/jschecks)
/classes/db/Db.php (vždy, přidává řádky s textem „info_hash“, snaží se odesílat útočníkovi data)
/classes/Hook.php (vždy, přidává na poslední řádek souboru škodlivý kód, přijímá příkazy útočníka)
/classes/Dispatcher.php (vždy, přidává na poslední řádek souboru škodlivý kód, přijímá příkazy útočníka)
/classes/module/Module.php (pouze někdy, přidává na poslední řádek souboru škodlivý kód, přijímá příkazy útočníka Dále  odstraňuje z kódu znaky ?>)
/tools/smarty/sysplugins/smarty_internal_templatebase.php (PS 1.6, přidává na poslední řádek souboru škodlivý kód. Dále  odstraňuje z kódu znaky ?>, tento soubor slouží jako „dropper“ v PS 1.6 -> infikuje všechny ostatní uvedené soubory)
/config/defines.inc.php (pouze někdy, vkládá „include_once“ – soubor cílové je pokaždé na jiném umístění, tato cesta je vždy zřejmě náhodná)
/config/alias.php (pouze někdy, vkládá base64_decode)
Všechny uvedené soubory umí náš script vyčistit, viz bod 3 níže

Ověřit zavirování Vašeho e-shopu můžete dvěma způsoby.

2) Ověření vzdáleně přes náš „checker“

Chcete si ověřit, jestli je Váš web napaden? Využijte náš webový nástroj a místo „domain.tld“ zadejte název Vaší domény:
https://www.openservis.cz/pedido_checker.php?url=domain.tld
Pokud by Vaše domény byla třeba mojedomena.cz, zadáte:
https://www.openservis.cz/pedido_checker.php?url=mojedomena.cz
Uvedenou URL adresu stačí otevřít v prohlížeči.
(Nemusí to být 100% spolehlivé, je to ale dobré vodítko, doporučujeme použít lokální řešení níže)

3) Ověření a zároveň vyčištění lokálně (doporučujeme):

Další možností je použít náš PHP script, který nejenom, že nákazu odhalí, ale zároveň ji i odstraní.
Script ke stažení zde (zdarma, open source, po stažení přejmenovat koncovku .txt na .php):
https://psmoduly.cz/psql_find_nakaza_SPECIFIC.txt

Stačí nahrát na FTP do kořenové složky s Vaším webem a poté spustit v prohlížeči, pokud by Vaše doména byla například mojedomena.cz, zadáte do prohlížeče:
http://mojedomena.cz/psql_find_nakaza_SPECIFIC.php

Poté uvidíte výstup. Pokud se objeví nějaký čistící text, web byl nakažen a došlo k vyčištění, poté si obratem změňte hesla do PrestaShopu.
Pokud se objeví pouze text „Hotovo“ a žádné další texty, Váš web je čistý.

Poznámka:
Pokud máte poslední verzi příslušného balíkového modulu, není třeba script spouštět, automaticky ho v sobě již obsahuje balíkový modul.

Pokud byste s tím potřebovali pomoci, neváhejte nás kontaktovat a pošlete FTP přístupy, zařídíme.

Důležité je podotknout, že tato nákaza se objevuje i tam, kde naše moduly žádné nejsou, musí se tedy jednat ještě o kombinaci s jinou druhotnou zranitelností!‘

Changelog čistícího scriptu:
1.0.0 (10. 7. 2022) – prvni script
1,0.1 (11. 7. 2022) – pridana oprava registerSession + nova detekce Module.php
1.0.2 (13. 7. 2022) – nakonec je nutno mazat cache i na PS 1.7, a presunuli jsme to uplne na konec, a pak unlink class index.
1.0.3 (14. 7. 2022) – moznost spoustet script primo ze slozky s modulem a dano na autorun po update balikovny!
1.0.4 (15. 7. 2022) – pridano uniqid() k info_hash, aby ten GET parametr nebyl vzdy stejny, kdyby se k nemu nahodou utocnik dostal
1.0.5 (18. 7. 2022) – nekdy se nakaza neukazuje jako info_hash, ale statistics_hash – zohledneno tedy obe varianty
1.0.6 (18. 7. 2022) – novy druh nakazy statistics_hash je v souboru classes/controller/Controller.php, kde predtim nebyl!
1.0.7 (19. 7. 2022) – objeven dropper! v smarty_internal_templatebase.php + potencionální nakaza detekovana i v slozce „tools“
1.0.8 (20. 7. 2022) – objevena druhotna specificka nakaza v defines.inc.php
1.0.9 (3. 8. 2022) – objevena druhotna specificka nakaza v defines.inc.php
1.1.0 (10. 8. 2022) – doplnena detekce zranitelnosti v alias.php
1.1.1 (12. 8. 2022) – Upraveno z >= 500 na >= 300 – utocnik komprimoval vice kod! + upraveno detekovani img souboru, jestli je valid!

Pokračování zde (aktualizace):
EDIT 2022/10:
Již je k dispozici modul:
https://www.openservis.cz/prestashop-blog/bezpecnostni-mysql-cache-fix-cervenec-2022-ps-modul-konecne-k-dispozici/

 

Pokud máte e-shop zavirovaný a chcete ho odborně odvirovat, aby se nákaza nevrátila, můžete využít naši službu „Odvirování PrestaShopu„.

PrestaShop Security Issue flag – stručné vyjádření(vysvětlení) + jak dále postupovat

7 komentářů. Nechte nové

  • Dobrý den díky za script, pustil jsem ho a funguje, akorát žádný modul od psmoduly nemám, ale to se změní ušetřilo nám to strašně práce!
    Tak se to tam ten bordel muselo dostat jinudy…

  • Pána Dominka Shaima vřele doporučuji! Tato „díra v bezpečnosti“ nám způsobila 24 hod. výpadek eshopů , po kontaktování to vše „dezinfikoval“ a jede se dále!
    Moc díky ještě jednou za pomoc! Blog čtu pravidelně a naplánuji s tím přestat 🙂

  • Bezpečnostní chybu jsme si nechali opravit. Vše funguje ok ?

  • Tak to vypadá, že se útočník nezastavil a směle vylepšuje svůj útok…
    Byli jsme infikování 21.12.2022, .js soubor se už nevytváří a celkově je i více infikovaných souborů. Třeba ten img/xxxxx.png soubor je asi dvakrát větší.
    Takže teď stahuju zálohu webu, změním hesla, ten inc.smarty.php soubor a taky prefixy v databázi. Snad to pomůže a už se znovu neobjeví.
    Kdyby se neozvala Heureka, že jim náš web hlásí virus, tak ani nevíme, že máme nějaký problém 😀
    Moc díky za tenhle článek a pomoc PS developerům s řešením.

  • Dominik Shaim
    7. 1. 2023 18:31

    Pokud byste chtěli mít Váš web pod větší kontrolou, zvažte přesun na náš hosting, kde průběžně monitorujeme tyto záležitosti u klientských prezentací 🙂

  • I’ve been attacked from ip 195.123.226.34.
    Filename created was b2b.php which is also the name of the targeted subdomain.
    Thank you for all the info and the module.
    At the time of the attack files var/cache/prod/appParameters.php and cacert.pem have been touched.
    Do you think my secret keys have been altered?

  • It must be investigated. It is only guessing without detail analysis nobody can’t help you.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Prosím, vyplňte toto pole.
Prosím, vyplňte toto pole.
Zadejte prosím platnou e-mailovou adresu.
Chcete-li pokračovat, musíte souhlasit s podmínkami