WordPress 5.2 väljalase, mis toetab värskenduste kontrollimist digitaalallkirja abil

Tutvustatakse veebi sisuhaldussüsteemi väljalase WordPress 5.2. Väljaanne on tähelepanuväärne selle valmimise poolest kuueaastane eepos rakendamise kohta võimalusi uuenduste ja täienduste kontrollimine digitaalallkirja abil.

Seni oli WordPressi uuenduste installimisel peamiseks turvateguriks usaldus WordPressi infrastruktuuri ja serverite vastu (peale allalaadimist kontrolliti räsi ilma allikat kontrollimata). Kui projekti serverid sattusid ohtu, suutsid ründajad võltsida värskendust ja levitada pahatahtlikku koodi WordPressi-põhiste saitide vahel, mis kasutavad automaatset värskenduste installisüsteemi. Vastavalt varem kasutatud usalduse edastamise mudelile oleks selline asendus jäänud kasutajate poolel märkamatuks.

Võttes arvesse asjaolu, Vastavalt w3techsi projektist kasutatakse WordPressi platvormi 33.8% võrgusaitidest, oleks juhtum võtnud katastroofi ulatuse. Samas ei olnud taristu kompromissi oht hüpoteetiline, vaid üsna reaalne. Näiteks mitu aastat tagasi üks turvauurijatest demonstreeris haavatavus, mis võimaldas ründajal api.wordpress.org serveri poolel oma koodi käivitada.

Digiallkirjade puhul ei too uuenduste jaotusserveri üle kontrolli saamine kaasa kasutajasüsteemide kompromiteerimist, kuna ründe läbiviimiseks tuleb lisaks hankida eraldi salvestatud privaatvõti, millega uuendused allkirjastatakse.

Värskenduste allika digitaalallkirja abil kontrollimise juurutamist takistas asjaolu, et vajalike krüptoalgoritmide tugi ilmus PHP standardpaketti suhteliselt hiljuti. Vajalikud krüptoalgoritmid ilmusid tänu raamatukogu integreerimisele Libsoodium põhimeeskonda PHP 7.2. Kuid WordPressis minimaalselt toetatud PHP versioonina märgitud väljalase 5.2.4 (WordPressi versioonist 5.2 – 5.6.20). Digitaalallkirjade toe lubamine tooks kaasa PHP minimaalse toetatud versiooni nõuete olulise suurenemise või välise sõltuvuse lisamise, mida arendajad ei saaks teha, arvestades PHP versioonide levimust hostimissüsteemides.

Lahendus oli arengut ja Libsodiumi kompaktse versiooni lisamine WordPressi 5.2-sse - Sodium Compat, milles PHP-s on rakendatud minimaalne algoritmide komplekt digitaalallkirjade kontrollimiseks. Rakendamine jätab jõudluse osas soovida, kuid lahendab täielikult ühilduvusprobleemi ja võimaldab ka pistikprogrammide arendajatel hakata rakendama kaasaegseid krüptoalgoritme.

Digitaalallkirjade genereerimiseks kasutatakse algoritmi Ed25519, mis töötati välja Daniel J. Bernsteini osalusel. Värskendusarhiivi sisust arvutatud SHA384 räsiväärtuse jaoks luuakse digitaalallkiri. Ed25519 turvalisuse tase on kõrgem kui ECDSA ja DSA ning see näitab väga suurt kontrolli ja allkirja loomise kiirust. Ed25519 vastupidavus häkkimisele on umbes 2^128 (keskmiselt nõuab rünnak Ed25519 vastu 2^140 bitiseid toiminguid), mis vastab selliste algoritmide nagu NIST P-256 ja RSA vastupidavusele võtme suurusega 3000 bitti või 128-bitine plokkšifr. Ed25519 ei ole vastuvõtlik ka räsipõrgetega seotud probleemidele ega vastuvõtlik vahemälu ajastuse rünnakutele ega külgkanalite rünnakutele.

WordPress 5.2 versioonis hõlmab digitaalallkirja kontrollimine hetkel ainult suuremaid platvormi uuendusi ega blokeeri vaikimisi uuendust, vaid teavitab kasutajat probleemist. Vaikimisi blokeerimist otsustati kohe mitte lubada, kuna on vaja täielikku kontrolli ja möödasõitu võimalikud probleemid. Tulevikus on kavas lisada ka digiallkirja kontrollimine, et kontrollida teemade ja pistikprogrammide installimise allikat (tootjad saavad väljalaskeid allkirjastada oma võtmega).

Lisaks digiallkirjade toele WordPress 5.2-s võib märgata järgmisi muudatusi:

  • Jaotisesse „Saidi tervis“ on lisatud kaks uut lehte levinud konfiguratsiooniprobleemide silumiseks, samuti on antud vorm, mille kaudu saavad arendajad jätta silumisinfo saidi administraatoritele;
  • Lisatud on "surma valge ekraan", mis kuvatakse saatuslike probleemide korral ja aitab administraatoril iseseisvalt lahendada pistikprogrammide või teemadega seotud probleeme, lülitudes spetsiaalsele krahhi taastamise režiimile;
  • Rakendatud on pluginatega ühilduvuse kontrollimise süsteem, mis kontrollib automaatselt plugina kasutamise võimalust praeguses konfiguratsioonis, võttes arvesse kasutatava PHP versiooni. Kui plugin vajab töötamiseks PHP uuemat versiooni, blokeerib süsteem automaatselt selle plugina kaasamise;
  • Lisatud tugi JavaScripti koodiga moodulite lubamiseks veebipakk и Babel;
  • Lisatud uus privacy-policy.php mall, mis võimaldab kohandada privaatsuspoliitika lehe sisu;
  • Teemade jaoks on lisatud käsitseja wp_body_open hook, mis võimaldab sisestada koodi kohe kehasildi järele;
  • PHP miinimumversiooni nõuded on tõstetud versioonile 5.6.20, pluginatel ja teemadel on nüüd võimalus kasutada nimeruume ja anonüümseid funktsioone;
  • Lisatud 13 uut ikooni.

Lisaks võite mainida märkamine kriitiline haavatavus WordPressi pistikprogrammis WP otsevestlus (CVE-2019-11185). See haavatavus võimaldab serveris käivitada suvalise PHP-koodi. Pistikprogrammi kasutatakse külastajaga interaktiivse vestluse korraldamiseks enam kui 27 tuhandel saidil, sealhulgas selliste ettevõtete saitidel nagu IKEA, Adobe, Huawei, PayPal, Tele2 ja McDonalds (Tüütu hüpikakende rakendamiseks kasutatakse sageli otsevestlust. vestlused ettevõtte saitidel koos pakkumistega vestelda töötajaga).

Probleem avaldub failide serverisse üleslaadimise koodis ja võimaldab mööda minna kehtivate failitüüpide kontrollist ja laadida serverisse PHP skript ning seejärel seda otse veebi kaudu käivitada. Huvitaval kombel tuvastati eelmisel aastal sarnane haavatavus juba Live Chatis (CVE-2018-12426), mis võimaldas pildi varjus laadida PHP-koodi, määrates väljale Content-type erineva sisutüübi. Paranduse osana on lisatud valgete nimekirjade ja MIME-sisutüübi täiendavad kontrollid. Nagu selgub, on need kontrollid valesti rakendatud ja neist saab hõlpsasti mööda minna.

Eelkõige on keelatud “.php” laiendiga failide otsene üleslaadimine, kuid laiendit “.phtml”, mis on paljudes serverites PHP tõlgiga seotud, musta nimekirja ei lisatud. Lubatud loend võimaldab ainult piltide üleslaadimist, kuid saate sellest mööda minna, määrates topeltlaiendi, näiteks ".gif.phtml". Faili alguses olevast MIME tüübi kontrollist mööda hiilimiseks piisas enne PHP koodiga sildi avamist rea “GIF89a” määramisest.

Allikas: opennet.ru

Lisa kommentaar