Skandál ve WP repozitáři: Plugin s více než 200k instalacemi obsahoval zadní vrátka

Pluginy, které si lze stáhnout z WP repozitáře, by měly být v pořádku. Vzhledem k obrovskému množství se však docela logicky čas od času objeví nějaký ten menší problém. V případě pluginu Display Widgets jde ovšem o docela velký problém. Respektive o nic menšího než zadní vrátka (angl. backdoor).

Plugin Display Widgets byl se zadními vrátky v repozitáři poměrně dlouhou dobu – dva a půl měsíce. Kód se objevil mezi verzemi 2.6.1 (vydána 30. června) a 2.6.3 (vydána 2. září). Tým z WordPress.org již plugin z repozitáře odstranil, ovšem do té doby si ho nainstalovalo docela dost uživatelů. Přes 200 tisíc instalací opravdu není málo, nicméně nelze zjistit, kolik bylo aktualizováno na verze s nebezpečným kódem.

Pikantní je, že lidé z WordPress.org tento plugin v minulosti již několikrát odstranili – světe div se – pro podobné problémy. Níže popsané souvislosti pochází z nezávislých vyšetřování Davida Lawa, White Fir Design a Wordfence.

Prodej pluginu novému vývojáři

Původní plugin Display Widgets naprogramovala Stephanie Wells z Strategy11. Díky tomuto pluginu lze nastavit, kde, kdy a jak se na webu objeví jednotlivé widgety. A protože byl navržen dobře, uživatelé o něj jevili zájem.

Stephanie se v květnu tohoto roku rozhodla pro prodej open source verze, protože se zaměřila na placenou verzi pluginu. Jen měsíc po prodeji se dostala na světlo světa první nová verze – 2.6.0.

Pokus o švindl č.1

Verze 2.6.0 byla vydána 21. června a o den později si SEO konzultant David Law (mimochodem autor konkurenčního pluginu Display Widgets SEO Plus) všiml, že plugin porušuje pravidla WordPress.org tím, že stahuje přes 38 MB kódu ze serveru třetí strany. Podle něj mohl autor kódu sbírat nejrůznější data o uživatelích.

Law nebyl jediným uživatelem, který si problémů všiml a z WordPress.org proto plugin zmizel hned následující den.

Pokus o švindl č. 2

O týden později se nový autor pluginu rozhodl pro vydání další verze – 2.6.1. Oproti předchozí verzi byl kód v souboru geolocation.php, čímž se vyhnul porušení pravidel WordPress.org. – již nedocházelo ke stahování ze serverů třetích stran.

Law však plugin bedlivě sledoval a opět se obrátil na WordPress.org s tím, že obsahuje škodlivý backdoor kód – tentokrát umožňující připojení na napojené weby a vytváření nových stránek a příspěvků. Kromě toho i sbírání dat jako v předchozí verzi. Den na to byl plugin opět odstraněn – celkem podruhé během jednoho týdne.

Pokus o švindl č. 3

Nový autor pluginu má hroší kůži, o čemž svědčí další verze 2.6.2. Opět zkusil své štěstí a 6. června ji přidal do repozitáře. A několik dní to vypadalo, že je vše v pořádku – plugin již nevykazoval známky nežádoucího chování. Jenomže to netrvalo dlouho, 23. července uživatel Calvin Ngan zaznamenal problémy s vytvářením nedetekovatelných stránek plných spam linků.

Tak jako to před ním udělal Law, i Ngan vystopoval, že potíže pochází ze souboru geolocation.php přidaného do verze 2.6.1.

Ve zkratce – tato verze vytvářela nové stránky a příspěvky, kam umisťovala odkazy na jiné weby. Ty se však neukazovaly v backendu v administračním panelu mezi ostatními stránkami a příspěvky. Tyto stránky byly navíc skryty před přihlášenými uživateli. Administrátoři si jich mohli všimnout jen v případě, že by web prohlíželi nepřihlášení.

Plugin generoval nové stránky pomocí obsahu z domén hostovaném na serveru 52.173.202.113. Jednalo se o domény stopspam.io, w-p.io, geoip2.io a maxmind.od. Všechny registrované během června tohoto roku.

Den po Nganově reportu byl plugin Display Widgets potřetí odstraněn z repozitáře. Ale tím příběh nekončí.

Pokus o švindl č.4

Když je někdo zlosyn, jen tak se nevzdá. Nový vývojář pluginu si ze třech odstranění nic moc nedělal, protože do repozitáře nahrál i další verzi 2.6.3. Samozřejmě infikovanou škodlivým kódem… 8. září byla z repozitáře odstraněna a vypadá to, že trvale.

Lidé z WordPress.org přebrali nad pluginem kontrolu a vydali verzi 2.7.0, která obsahuje stejný kód jako verze 2.0.5 – poslední bezpečná verze z doby, než byl plugin prodán novému majiteli. Plugin již na WordPress.org není, respektive není dostupná nová instalace. Stávající uživatelé ho však mohou z backendu svých webů aktualizovat.

Plugin koupila pofidérní firma

Tým lidí z Wordfence, v čele s CEO Markem Maunderem, se pustil do stopování pachatele, který je za backdoor útoky zodpovědný. Maunder sledoval stopu nového majitele až ke službě zvané WP Devs. Jak je uvedeno na úvodní straně firemního webu, jedná se o službu specializující se na akvizici pluginů, na které původní vývojáři nemají čas nebo na nich nepracují z jiných důvodů. WP Devs má aktuálně ve správě 34 dalších pluginů.

Maunder zároveň zjistil, že za WP Devs stojí dvě osoby. Jedna z USA a druhá z Ruska.

A nejen to. Jeden z majitelů WP Devs tvrdí, že plugin koupil za 15k USD a později přeprodal za 20k USD kalifornské firmě, která ho donutila podepsat smlouvu o mlčenlivosti. Na kolik se jeho tvrzení zakládá na pravdě, není vůbec jasné. Zřejmě je to lež jako věž.

Podle Maundera je téměř jisté, že ať už za zákeřným kódem stojí kdokoliv, nestalo se tak náhodou. Hypotézu staví na skutečnosti, že verze 2.6.3 (poslední škodlivá verze) obsahovala také bugfix v backdoor kódu. Znamená to, že nový majitel pluginu přesně věděl, co dělá.

Komunita byla vyzvána ke shovívavosti

Maunder zároveň požádal komunitu WordPressu, aby byla vůči pracovníkům zodpovědným za několikanásobné umístění škodlivého pluginu vlídná a pochopila, že většina z nich dělá svou práci dobrovolně. Starají se o ohromné množství pluginů a obecně odvádí vynikající práci.

Jiného názoru jsou David law a White Fir Design. Podle nich by měl tým WordPressu zapracovat na výrazném zjednodušení procesu nahlášení bezpečnostních chyb. Jinak se může stát, že se v budoucnu objeví jiný plugin se zadními vrátky a bude v repozitáři mnohem déle.

Kdo tedy stojí za nebezpečným pluginem?

Díky usilovné práci lidí z Wordfence byl pachatel vystopován. Ve zkratce:

Maunder kontaktoval původní majitelku pluginu Stephanii Wells, která se velmi ochotně rozpovídala o detailech obchodu. Novým majitelem se stal jistý Mason Soiza, který ji přes paypal zaplatil 15k USD. Podle všeho jde o třiadvacetiletého počítačového programátora z Velké Británie.

E-mailová adresa, kterou Soiza použil při transakci, vede na web linkrocket.net. Nyní je na něm pouze logo, nicméně v archivované verzi z roku 2014 také tři e-mailové adresy – včetně té, kterou Moiza opravdu využívá (mason@linkrocket.com).

Maunder použil vyhledávač zvaný Pipl a našel spoustu zajímavých informací. Nechyběla ani LinkedIn fotka, kterou již Moiza odstranil.

Tím však příběh nekončí. Jak pátrání pokračovalo? O tom se dočtete v pokračování článku, které publikujeme po víkendu.

About The Author

Související články

8 Comments

    1. Adam

      Ano, to je ten plugin:-) Verze 2.05 je v pořádku, backdoor se objevil ve verzích 2.6.1 až 2.6.3.

      Odpověď
      1. BENNI

        no jo, ale právě již delší dobu jsem jej neaktualizoval, používám jej na dvou spřízněných webech… takže dokud to bude fungovat, tak aktualizovat nebudu… každopádně může někdo doporučit adekvátní náhradu? určitě jich bude víc, tak nějaký TIP na vyzkoušený plugin ?

        Odpověď
        1. Adam

          Podle všeho je vaše verze poslední správnou verzí. Alternativ je hodně, ale osobně jsem žádné nezkoušel.

          Odpověď
  1. Pingback: Mason Soiza: Muž, který stojí za backdoor kódem pluginu Display Widgets - Musilda.cz

  2. Pingback: Jak elegantně ošéfovat aktualizace pluginů ve WordPressu? - Musilda.cz

  3. Sledge

    Díky za info, tohle jsem úplně minul! A samozřejmě jsem používal 2.6.2, navíc kvůli několika drobným úpravám odříznutý od aktualizací :)

    Kdyby někdo hledal náhradu, tak „Widget Context“ vypadá docela střízlivě a schopně, mimo jiné i díky „Target by URL“.

    Odpověď
  4. Pingback: Captcha plugin s 300 000 instalacemi obsahuje backdoor - Musilda.cz

Přidejte komentář

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