Izdaja WordPress 5.2 s podporo za preverjanje posodobitev z digitalnim podpisom

Predložil izdaja sistema za upravljanje spletnih vsebin WordPress 5.2. Izdaja je znana po svoji dokončanosti šestletni ep o izvajanju možnosti preverjanje posodobitev in dopolnitev z digitalnim podpisom.

Do sedaj je bil pri nameščanju posodobitev v WordPress glavni varnostni dejavnik zaupanje v infrastrukturo in strežnike WordPress (po prenosu se je preverjal hash brez preverjanja vira). Če so bili strežniki projekta ogroženi, so lahko napadalci ponaredili posodobitev in zlonamerno kodo razdelili med spletna mesta, ki temeljijo na WordPressu in uporabljajo sistem za samodejno namestitev posodobitev. V skladu s prej uporabljenim modelom zaupanja v dostavo bi bila takšna zamenjava na strani uporabnikov neopažena.

Upoštevajoč dejstvo, da Glede na projekta w3techs se platforma WordPress uporablja na 33.8 % spletnih mest v omrežju, bi incident dobil razsežnost katastrofe. Hkrati pa nevarnost ogrožanja infrastrukture ni bila hipotetična, ampak povsem realna. Na primer, pred nekaj leti eden od varnostnih raziskovalcev dokazano ranljivost, ki je napadalcu omogočila izvajanje kode na strani strežnika api.wordpress.org.

V primeru digitalnih podpisov pridobitev nadzora nad strežnikom za distribucijo posodobitev ne bo privedla do ogrožanja uporabniških sistemov, saj boste za izvedbo napada morali dodatno pridobiti ločeno shranjen zasebni ključ, s katerim so posodobitve podpisane.

Izvajanje preverjanja vira posodobitev z uporabo digitalnega podpisa je oviralo dejstvo, da se je podpora za potrebne kriptografske algoritme pojavila v standardnem paketu PHP relativno nedavno. Potrebni kriptografski algoritmi so se pojavili zahvaljujoč integraciji knjižnice Libsodium v glavno ekipo PHP 7.2. Ampak kot najmanjšo podprto različico PHP v WordPressu navedeno izdaja 5.2.4 (od WordPress 5.2 do 5.6.20). Omogočanje podpore za digitalne podpise bi povzročilo znatno povečanje zahtev za minimalno podprto različico PHP ali dodajanje zunanje odvisnosti, česar razvijalci ne bi mogli storiti glede na razširjenost različic PHP v sistemih gostovanja.

Rešitev je bila razvoj in vključitev kompaktne različice Libsodium v ​​WordPress 5.2 - Sodium Compat, v katerem je minimalni nabor algoritmov za preverjanje digitalnih podpisov implementiran v PHP. Implementacija pušča veliko želenega glede zmogljivosti, vendar popolnoma reši problem združljivosti in prav tako omogoča razvijalcem vtičnikov, da začnejo izvajati sodobne kriptografske algoritme.

Za ustvarjanje digitalnih podpisov se uporablja algoritem Ed25519, razvit s sodelovanjem Daniela J. Bernsteina. Digitalni podpis se ustvari za zgoščeno vrednost SHA384, izračunano iz vsebine arhiva posodobitev. Ed25519 ima višjo stopnjo varnosti kot ECDSA in DSA ter izkazuje zelo visoko hitrost preverjanja in ustvarjanja podpisa. Odpornost proti vdorom za Ed25519 je približno 2^128 (povprečno bo napad na Ed25519 zahteval 2^140 bitnih operacij), kar ustreza odpornosti algoritmov, kot sta NIST P-256 in RSA z velikostjo ključa 3000 bitov ali 128-bitno blokovno šifro. Ed25519 prav tako ni dovzeten za težave s kolizijami zgoščenih vrednosti in ni dovzeten za napade časovnega predpomnilnika ali napade stranskega kanala.

V izdaji WordPress 5.2 preverjanje digitalnega podpisa trenutno pokriva samo večje posodobitve platforme in privzeto ne blokira posodobitve, ampak le obvesti uporabnika o težavi. Odločeno je bilo, da se privzeto blokiranje ne omogoči takoj zaradi potrebe po popolnem preverjanju in obhodu možne težave. V prihodnosti je predvideno tudi preverjanje digitalnega podpisa za preverjanje vira namestitve tem in vtičnikov (proizvajalci bodo lahko podpisovali izdaje s svojim ključem).

Poleg podpore za digitalne podpise v WordPressu 5.2 je mogoče opaziti naslednje spremembe:

  • V razdelek »Site Health« sta bili dodani dve novi strani za odpravljanje pogostih konfiguracijskih težav, na voljo pa je bil tudi obrazec, prek katerega lahko razvijalci prepustijo informacije o odpravljanju napak skrbnikom spletnega mesta;
  • Dodana izvedba »belega zaslona smrti«, ki se prikaže v primeru usodnih težav in pomaga skrbniku, da samostojno odpravi težave, povezane z vtičniki ali temami, tako da preklopi na poseben način obnovitve po sesutju;
  • Implementiran je sistem za preverjanje združljivosti z vtičniki, ki samodejno preveri možnost uporabe vtičnika v trenutni konfiguraciji, pri čemer upošteva uporabljeno različico PHP. Če vtičnik za delovanje zahteva novejšo različico PHP, bo sistem samodejno blokiral vključitev tega vtičnika;
  • Dodana podpora za omogočanje modulov z uporabo kode JavaScript spletni nabor и Babel;
  • Dodana nova predloga privacy-policy.php, ki vam omogoča prilagajanje vsebine strani s pravilnikom o zasebnosti;
  • Za teme je bil dodan upravljalnik kavljev wp_body_open, ki vam omogoča vstavljanje kode takoj za oznako body;
  • Zahteve za najmanjšo različico PHP so bile povišane na 5.6.20; vtičniki in teme imajo zdaj možnost uporabe imenskih prostorov in anonimnih funkcij;
  • Dodanih 13 novih ikon.

Poleg tega lahko omenite odkrivanje kritična ranljivost v vtičniku WordPress WP klepet v živo (CVE-2019-11185). Ranljivost omogoča izvajanje poljubne kode PHP na strežniku. Vtičnik se uporablja na več kot 27 tisoč spletnih mestih za organizacijo interaktivnega klepeta z obiskovalci, vključno s spletnimi mesti podjetij, kot so IKEA, Adobe, Huawei, PayPal, Tele2 in McDonald's (Live Chat se pogosto uporablja za implementacijo motečih pojavnih oken klepet na straneh podjetja s ponudbami klepet z zaposlenim).

Težava se kaže v kodi za nalaganje datotek na strežnik in vam omogoča, da obidete preverjanje veljavnih tipov datotek in naložite PHP skript na strežnik, nato pa ga izvedete neposredno prek spleta. Zanimivo je, da je bila lani že ugotovljena podobna ranljivost v Live Chat (CVE-2018-12426), ki je omogočala nalaganje PHP kode pod krinko slike, pri čemer je v polju Content-type podana drugačna vrsta vsebine. Kot del popravka so bila dodana dodatna preverjanja za bele sezname in vrsto vsebine MIME. Izkazalo se je, da so ti pregledi izvedeni nepravilno in jih je mogoče zlahka zaobiti.

Zlasti je prepovedano neposredno nalaganje datotek s pripono ".php", pripona ".phtml", ki je povezana s tolmačem PHP na številnih strežnikih, pa ni bila dodana na črni seznam. Seznam dovoljenih dovoljuje samo nalaganje slik, vendar ga lahko obidete tako, da navedete dvojno končnico, na primer ».gif.phtml«. Če želite zaobiti preverjanje vrste MIME na začetku datoteke, je bilo pred odpiranjem oznake s kodo PHP dovolj, da določite vrstico "GIF89a".

Vir: opennet.ru

Dodaj komentar