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.
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í.
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é.
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ů.