Vydanie WordPress 5.2 s podporou kontroly aktualizácií digitálnym podpisom

Predloženej vydanie systému na správu obsahu webu WordPress 5.2. Vydanie je pozoruhodné svojím dokončením šesťročný epos o implementácii príležitosti kontrola aktualizácií a doplnkov pomocou digitálneho podpisu.

Doteraz bola pri inštalácii aktualizácií vo WordPress hlavným bezpečnostným faktorom dôvera v infraštruktúru a servery WordPress (po stiahnutí bol hash kontrolovaný bez overenia zdroja). Ak boli servery projektu ohrozené, útočníci boli schopní sfalšovať aktualizáciu a distribuovať škodlivý kód medzi stránky založené na WordPress, ktoré používajú systém automatickej inštalácie aktualizácií. V súlade s predtým používaným modelom poskytovania dôvery by takáto náhrada zostala na strane používateľov nepovšimnutá.

Berúc do úvahy skutočnosť, že Podľa v projekte w3techs, platforma WordPress sa používa na 33.8 % stránok v sieti, incident by nadobudol rozmery katastrofy. Zároveň nebezpečenstvo ohrozenia infraštruktúry nebolo hypotetické, ale celkom reálne. Napríklad pred niekoľkými rokmi jeden z bezpečnostných výskumníkov preukázané zraniteľnosť, ktorá umožnila útočníkovi spustiť jeho kód na strane servera api.wordpress.org.

V prípade digitálnych podpisov nepovedie získanie kontroly nad distribučným serverom aktualizácií ku kompromitácii používateľských systémov, pretože na vykonanie útoku budete musieť navyše získať samostatne uložený súkromný kľúč, ktorým sa aktualizácie podpisujú.

Implementácii kontroly zdroja aktualizácií pomocou digitálneho podpisu bránila skutočnosť, že podpora potrebných kryptografických algoritmov sa v štandardnom balíku PHP objavila pomerne nedávno. Vďaka integrácii knižnice sa objavili potrebné kryptografické algoritmy Libsodium do hlavného tímu PHP 7.2. Ale ako minimálna podporovaná verzia PHP vo WordPress uviedol vydanie 5.2.4 (z WordPress 5.2 - 5.6.20). Povolenie podpory digitálnych podpisov by viedlo k výraznému zvýšeniu požiadaviek na minimálnu podporovanú verziu PHP alebo pridanie externej závislosti, čo by vývojári nemohli urobiť vzhľadom na rozšírenosť verzií PHP v hostingových systémoch.

Riešením bolo rozvoj a zahrnutie kompaktnej verzie Libsodium do WordPress 5.2 - Sodium Compat, v ktorom je v PHP implementovaná minimálna sada algoritmov na overovanie digitálnych podpisov. Implementácia ponecháva veľa požiadaviek z hľadiska výkonu, ale úplne rieši problém s kompatibilitou a tiež umožňuje vývojárom doplnkov začať implementovať moderné kryptografické algoritmy.

Na generovanie digitálnych podpisov sa používa algoritmus Ed25519, vyvinuté za účasti Daniela J. Bernsteina. Pre hodnotu hash SHA384 vypočítanú z obsahu archívu aktualizácie sa vygeneruje digitálny podpis. Ed25519 má vyššiu úroveň zabezpečenia ako ECDSA a DSA a vykazuje veľmi vysokú rýchlosť overovania a vytvárania podpisov. Odolnosť Ed25519 voči hackingu je približne 2^128 (v priemere bude útok na Ed25519 vyžadovať 2^140 bitové operácie), čo zodpovedá odolnosti algoritmov ako NIST P-256 a RSA s veľkosťou kľúča 3000 bitov. alebo 128-bitová bloková šifra. Ed25519 tiež nie je náchylný na problémy s hašovacími kolíziami a nie je náchylný na útoky s časovaním vyrovnávacej pamäte alebo útoky na bočný kanál.

Vo vydaní WordPress 5.2 overenie digitálneho podpisu v súčasnosti pokrýva iba hlavné aktualizácie platformy a štandardne neblokuje aktualizáciu, ale iba informuje používateľa o probléme. Rozhodlo sa nepovoliť predvolené blokovanie okamžite kvôli potrebe úplnej kontroly a bypassu možné problémy. V budúcnosti sa plánuje pridať aj overenie digitálneho podpisu na overenie zdroja inštalácie tém a pluginov (výrobcovia budú môcť podpísať vydania svojim kľúčom).

Okrem podpory digitálnych podpisov vo WordPress 5.2 je možné zaznamenať nasledujúce zmeny:

  • Do sekcie „Site Health“ boli pridané dve nové stránky na ladenie bežných problémov s konfiguráciou a tiež bol poskytnutý formulár, prostredníctvom ktorého môžu vývojári prenechať informácie o ladení správcom stránok;
  • Pridaná implementácia „bielej obrazovky smrti“, ktorá sa zobrazuje v prípade fatálnych problémov a pomáha správcovi nezávisle opraviť problémy súvisiace s doplnkami alebo témami prepnutím do špeciálneho režimu obnovenia po zlyhaní;
  • Implementovaný je systém kontroly kompatibility s pluginmi, ktorý automaticky kontroluje možnosť použitia pluginu v aktuálnej konfigurácii s prihliadnutím na použitú verziu PHP. Ak plugin vyžaduje na fungovanie novšiu verziu PHP, systém automaticky zablokuje zahrnutie tohto pluginu;
  • Pridaná podpora pre povolenie modulov pomocou kódu JavaScript webpack и Babel;
  • Pridaná nová šablóna privacy-policy.php, ktorá vám umožňuje prispôsobiť obsah stránky zásad ochrany osobných údajov;
  • Pre témy bol pridaný obslužný program háku wp_body_open, ktorý vám umožňuje vložiť kód hneď za značku tela;
  • Požiadavky na minimálnu verziu PHP boli zvýšené na 5.6.20, zásuvné moduly a témy teraz môžu používať menné priestory a anonymné funkcie;
  • Pridaných 13 nových ikon.

Okrem toho môžete spomenúť detekcia kritická zraniteľnosť v doplnku WordPress WP Live Chat (CVE-2019-11185). Zraniteľnosť umožňuje spustenie ľubovoľného kódu PHP na serveri. Plugin sa používa na viac ako 27 2 stránkach na organizovanie interaktívneho chatu s návštevníkom, a to aj na stránkach spoločností ako IKEA, Adobe, Huawei, PayPal, TeleXNUMX a McDonald's (Live Chat sa často používa na implementáciu otravných vyskakovacích okien chaty na firemných stránkach s ponukami chat so zamestnancom).

Problém sa prejavuje v kóde pre nahrávanie súborov na server a umožňuje obísť kontrolu platných typov súborov a nahrať PHP skript na server a následne ho spustiť priamo cez web. Zaujímavé je, že minulý rok už bola podobná zraniteľnosť identifikovaná v Live Chat (CVE-2018-12426), ktorá umožňovala načítať PHP kód pod rúškom obrázka, pričom v poli Content-type bol špecifikovaný iný typ obsahu. V rámci opravy boli pridané ďalšie kontroly pre biele listiny a typ obsahu MIME. Ako sa ukázalo, tieto kontroly sú implementované nesprávne a možno ich ľahko obísť.

Zakázané je najmä priame nahrávanie súborov s príponou „.php“, ale prípona „.phtml“, ktorá je na mnohých serveroch priradená k PHP interpretru, nebola pridaná na čiernu listinu. Biela listina umožňuje iba nahrávanie obrázkov, ale môžete to obísť zadaním dvojitej prípony, napríklad „.gif.phtml“. Aby ste obišli kontrolu typu MIME na začiatku súboru, pred otvorením tagu s PHP kódom stačilo zadať riadok „GIF89a“.

Zdroj: opennet.ru

Pridať komentár