Hlavní navigace

Více než 8 800 pluginů pro WordPress ze 44 705 je děravých

Petr Krčmář

Společnost RIPS Technologies prověřila bezpečnost pluginů pro známý blogovací systém WordPress. Výsledek není dobrý: každý pátý plugin obsahuje bezpečnostní mezeru.

Bezpečnostní odborníci ze společnosti RIPS Technologies publikovali podrobnou studii, ve které se zabývali bezpečností pluginů pro populární blogovací nástroj WordPress. Stáhli jsme všech 47 959 pluginů a podrobili jsme je analýze našimi nástroji. Překvapivě každý druhý velký plugin obsahuje středně nebezpečnou chybu, píše se v analýze.

Byly testovány jen takové pluginy, které obsahují alespoň jeden soubor s kódem v PHP. Těch je celkem 44 705. Průměrně obsahují rozšíření 8,43 souborů a v každém z nich je průměrně 602 řádek. Většina pluginů je přitom velmi malých, více než 14 000 z nich (32 %) obsahuje jen mezi dvěma a pěti soubory.

Počet souborů a řádků v pluginech

Existuje celkem 10 523 větších pluginů, tedy takových, které mají více než 500 řádek kódu. Z nich má 4 559 (43 %) alespoň jednu středně závažnou bezpečnostní chybu, jako například cross-site scripting. Důležité ale je, jak je závažnost chyb rozprostřena mezi pluginy. Celkem bylo objeveno 8878 děravých rozšíření.

Závažnost bezpečnostních chyb

Celkem bylo objeveno 67 486 problémů bezpečnostního charakteru a z výše uvedeného grafu plyne, že ve většině pluginů nebyl objeven žádný. A obráceně: v poměrně malé skupině pluginů bylo objeveno hodně chyb. Domníváme se, že je to proto, že většina pluginů je velmi malých. Je těžší udělat chybu ve stořádkovém kódu než v 5000 řádcích, říká analýza.

Následující graf ukazuje korelaci mezi velikostí pluginu a počtem chyb. Modré tečky ukazují, že většina pluginů má méně než 1000 řádek a většina z nich neobsahuje žádnou chybu. Jakmile ale začne počet řádků růst, začne chyb výrazně přibývat. To podporuje naši teorii, že většina pluginů neobsahuje chyby, protože jsou příliš malé.

Řádky kódu a chyby

Jaký druh chyb se objevuje nejčastěji? Asi není překvapením, že v 68,4 % jde o cross-site scripting, ke kterému dochází, když stránka ukáže uživatelsky vložený výstup bez ošetření HTML vstupu. Tato chyba se objevuje nejčastěji, protože výstup dat je nejčastější operací v PHP, tudíž je zatížena bezpečnostními problémy častěji než jiné. Tyto chyby jsou navíc velmi závažné, protože umožňují například injektovat PHP kód skrz editor šablon. Naštěstí vyžadují interakci se správcem.

Druhým nejčastějším problémem, který zasahuje 20,7 % děravých pluginů, je SQL injection. Jsou výrazně nebezpečnější než cross-site scripting, protože v nejhorším případě umožňují vyčtení citlivých informací z databáze – například hesel. Velmi často jsou proto zneužívány k automatizovaným útokům.

Název chyby Četnost
Cross-Site Scripting 38778
SQL Injection 11746
Resource Injection 1747
Path Traversal 778
File Upload 590
File Delete 441
Session Fixation 414
File Create 399
Weak Cryptography 348
File Write 300
PHP Object Injection 251
Open Redirect 227
Connection String Injection 177
CVE 109
File Inclusion 108
PHP Object Instantiation 101
Command Execution 78
XML/XXE Injection 65
Code Execution 61
XPath Injection 9
LDAP Injection 6

Zajímavá je také statistika o nejčastěji napadaných pluginech. Analytici kvůli ní provozují honeypot, na kterém sledují, kam míří které útoky. Během letošního roku bylo takto zaznamenáno více než 200 útoků a nejčastějšími cíli jsou následující pluginy:

  • Revolution Slider: 69 útoků
  • Beauty & Clean Theme: 46 útoků
  • MiwoFTP: 41 útoků
  • Simple Backup: 33 útoků
  • Gravity Forms: 11 útoků
  • Wordpress Marketplace: 9 útoků
  • CP Image Store: 8 útoků
  • Wordpress Download Manager: 6 útoků

Všechny útoky byly provedeny pomocí chyb, které jsou známé a zdokumentované. Většinu z nich je velmi snadné zneužít a umožňují spuštění libovolného kódu. To je činí zajímavými pro vytváření PHP botnetů, píše se v analýze.

Ekosystém okolo WordPressu je veliký a komunitou vytvářené pluginy obsahují často chyby. Analýza ukazuje, že většina je jich v poměrně malé skupině pluginů, ovšem s rostoucí velikostí roste taky šance na chybu. Bylo by tedy zajímavé korelovat chybovost a nebezpečnost s popularitou jednotlivých pluginů.

Našli jste v článku chybu?