Izdanje WordPressa 5.2 s podrškom za provjeru ažuriranja digitalnim potpisom

Predstavljeno izdanje sustava za upravljanje web sadržajem WordPress 5.2. Izdanje je značajno po svojoj dovršenosti šestogodišnji ep o provedbi prilike provjera ažuriranja i dopuna pomoću digitalnog potpisa.

Do sada je prilikom instaliranja ažuriranja u WordPressu glavni sigurnosni faktor bilo povjerenje u WordPress infrastrukturu i poslužitelje (nakon preuzimanja hash se provjeravao bez provjere izvora). Ako su poslužitelji projekta bili ugroženi, napadači su bili u mogućnosti lažirati ažuriranje i distribuirati zlonamjerni kod među stranicama temeljenim na WordPressu koje koriste sustav za automatsku instalaciju ažuriranja. U skladu s prethodno korištenim modelom isporuke povjerenja, takva bi zamjena prošla nezapaženo na strani korisnika.

Uzimajući u obzir činjenicu da podaci projekta w3techs, platforma WordPress koristi se na 33.8% stranica na mreži, incident bi poprimio razmjere katastrofe. Pritom opasnost od ugrožavanja infrastrukture nije bila hipotetska, već sasvim stvarna. Na primjer, prije nekoliko godina jedan od istraživača sigurnosti demonstrirao ranjivost koja je omogućila napadaču da izvrši svoj kod na strani poslužitelja api.wordpress.org.

U slučaju digitalnih potpisa, stjecanje kontrole nad serverom za distribuciju ažuriranja neće dovesti do kompromitacije korisničkih sustava, budući da je za izvođenje napada dodatno potrebno nabaviti zasebno pohranjen privatni ključ, kojim se ažuriranja potpisuju.

Implementacija provjere izvora ažuriranja pomoću digitalnog potpisa bila je otežana činjenicom da se podrška za potrebne kriptografske algoritme pojavila u standardnom PHP paketu relativno nedavno. Potrebni kriptografski algoritmi pojavili su se zahvaljujući integraciji knjižnice Libsodium glavnom timu PHP 7.2. Ali kao minimalno podržana verzija PHP-a u WordPressu navedeno izdanje 5.2.4 (od WordPress 5.2 - 5.6.20). Omogućavanje podrške za digitalne potpise dovelo bi do značajnog povećanja zahtjeva za minimalno podržanu verziju PHP-a ili dodavanje vanjske ovisnosti, što programeri nisu mogli učiniti s obzirom na prevalenciju PHP verzija u hosting sustavima.

Rješenje je bilo razvoj i uključivanje kompaktne verzije Libsodiuma u WordPress 5.2 - Sodium Compat, u kojem je minimalni skup algoritama za provjeru digitalnih potpisa implementiran u PHP-u. Implementacija ostavlja mnogo za željeti u pogledu performansi, ali u potpunosti rješava problem kompatibilnosti, a također omogućuje programerima dodataka da počnu implementirati moderne kriptografske algoritme.

Za generiranje digitalnih potpisa koristi se algoritam Ed25519, razvijen uz sudjelovanje Daniela J. Bernsteina. Generira se digitalni potpis za SHA384 hash vrijednost izračunatu iz sadržaja arhive ažuriranja. Ed25519 ima višu razinu sigurnosti od ECDSA i DSA, te pokazuje vrlo veliku brzinu verifikacije i kreiranja potpisa. Otpornost na hakiranje za Ed25519 je oko 2^128 (u prosjeku će napad na Ed25519 zahtijevati 2^140 bitne operacije), što odgovara otpornosti algoritama kao što su NIST P-256 i RSA s veličinom ključa od 3000 bita ili 128-bitna blok šifra. Ed25519 također nije osjetljiv na probleme s hash kolizijama i nije osjetljiv na napade cache-timinga ili napade s bočnog kanala.

U izdanju WordPressa 5.2 provjera digitalnog potpisa trenutno pokriva samo glavna ažuriranja platforme i ne blokira ažuriranje prema zadanim postavkama, već samo obavještava korisnika o problemu. Odlučeno je da se zadano blokiranje ne omogući odmah zbog potrebe za potpunom provjerom i zaobilaženjem mogući problemi. U budućnosti se također planira dodati provjeru digitalnog potpisa kako bi se provjerio izvor instalacije tema i dodataka (proizvođači će moći potpisivati ​​izdanja svojim ključem).

Uz podršku za digitalne potpise u WordPressu 5.2, mogu se primijetiti sljedeće promjene:

  • Dvije nove stranice dodane su u odjeljak "Zdravlje web-mjesta" za otklanjanje pogrešaka uobičajenih konfiguracijskih problema, a dostavljen je i obrazac putem kojeg programeri mogu ostaviti informacije o otklanjanju pogrešaka administratorima web-mjesta;
  • Dodana implementacija "bijelog ekrana smrti", koji se prikazuje u slučaju fatalnih problema i pomaže administratoru da samostalno riješi probleme povezane s dodacima ili temama prelaskom na poseban način rada za oporavak od pada;
  • Implementiran je sustav za provjeru kompatibilnosti s dodacima, koji automatski provjerava mogućnost korištenja dodatka u trenutnoj konfiguraciji, uzimajući u obzir verziju PHP-a koja se koristi. Ako dodatak zahtijeva noviju verziju PHP-a za rad, sustav će automatski blokirati uključivanje ovog dodatka;
  • Dodana podrška za omogućavanje modula s korištenjem JavaScript koda webpack и Babel;
  • Dodan novi predložak privacy-policy.php koji vam omogućuje prilagodbu sadržaja stranice s pravilima o privatnosti;
  • Za teme je dodan rukovatelj zakačivom wp_body_open, koji vam omogućuje umetanje koda odmah nakon oznake tijela;
  • Zahtjevi za minimalnu verziju PHP-a podignuti su na 5.6.20; dodaci i teme sada imaju mogućnost korištenja prostora imena i anonimnih funkcija;
  • Dodano 13 novih ikona.

Osim toga, možete spomenuti otkrivanje kritična ranjivost u dodatku za WordPress WP razgovor uživo (CVE-2019-11185). Ranjivost dopušta izvršavanje proizvoljnog PHP koda na poslužitelju. Dodatak se koristi na više od 27 tisuća stranica za organiziranje interaktivnog razgovora s posjetiteljem, uključujući stranice tvrtki kao što su IKEA, Adobe, Huawei, PayPal, Tele2 i McDonald's (Live Chat se često koristi za implementaciju dosadnih skočnih prozora razgovori na stranicama poduzeća s ponudama razgovor sa zaposlenikom).

Problem se očituje u kodu za učitavanje datoteka na poslužitelj i omogućuje vam da zaobiđete provjeru valjanih vrsta datoteka i postavite PHP skriptu na poslužitelj, a zatim je izvršite izravno putem weba. Zanimljivo je da je prošle godine slična ranjivost već identificirana u Live Chatu (CVE-2018-12426), koja je omogućila učitavanje PHP koda pod krinkom slike, navodeći drugu vrstu sadržaja u polju Content-type. Kao dio popravka, dodane su dodatne provjere za popise dopuštenih i vrstu MIME sadržaja. Ispostavilo se da se te provjere neispravno provode i lako se mogu zaobići.

Konkretno, zabranjeno je izravno učitavanje datoteka s ekstenzijom ".php", ali ekstenzija ".phtml", koja je povezana s PHP tumačem na mnogim poslužiteljima, nije dodana na crnu listu. Popis dopuštenih dopušta samo učitavanje slika, ali možete ga zaobići navođenjem dvostrukog proširenja, na primjer, “.gif.phtml”. Da biste zaobišli provjeru tipa MIME na početku datoteke, prije otvaranja oznake s PHP kodom, bilo je dovoljno navesti redak "GIF89a".

Izvor: opennet.ru

Dodajte komentar