Po dlouhé době se objevila ve WordPress opravdu plnohodnotná kritická chyba. Tedy taková, která umožní útočníkovi měnit obsah, aniž by potřeboval pomoc od někoho kdo má administrátorské oprávnění (běžné XSS).
Bezpečnostní expert Marc-Alexandre Montpas objevil 20. ledna 2017 opravdu drsnou bezpečnostní díru v REST API, které přišlo s WordPress 4.7.0. Tato chyba nebyla opravena ani ve verzi 4.7.1. Bezpečná je tedy až aktualizace 4.7.2.
O co v krátkosti jde. Marc-Alexandre Montpas přišel na to, že když zavoláte pomocí metody update_item určitý post specifickým řetězcem, tak obejdete omezení k jeho editaci, které vyžaduje administrátorské oprávnění.
Každý příspěvek (včetně revizí) má své ID. To můžete zavolat a dostanete se na určitou stránku. Zkusit si to můžete pomocí parametru ?p=id u libovolného WordPress. Pokud vám WordPress vrátí na číslo příspěvek tak jej máte oprávnění prohlédnout si.
Marc ale přišel na to, že toto omezení se dá obejít pokud za číslo dáte jakýkoliv textový řetězec. Třeba ?p=3neco. Překvapivě vám WordPress nevypíše chybu, že daný příspěvek neexistuje. Právě naopak. Zobrazí se ten pod id 3. Slouží k tomu totiž PHP funkce int().
Jenomže ve starší verzi WordPress došlo k tomu, že řetězec byl nejdříve otestován na oprávnění. Když skript zjistil že id 3neco neexistuje, tak jej pustil dál. Následně byl řetězec ošetřen na a přetvořen na číslo 3. Takže metoda update_item měla jak číslo tak i oprávnění k provedení změny. Skript tak provedl úpravu obsahu!
Závěr
Jedná se zatím o jednu z největších objevených bezpečnostních chyb, protože umožňovala útočníkovi dle libosti měnit obsah v příspěvcích aniž by k tomu měl oprávnění. Navíc zneužití této chyby v podstatě nic nevyžadovalo.
- https://nakedsecurity.sophos.com/2017/02/03/critical-wordpress-update-fixes-zero-day-flaw-unnoticed/
Tento článek byl byl přečten 2863 krát