Praegune olukord: PHP2Shell. Kaks kriitilist PHP turvaauku (CVSS 9,2) lubavad kahjulikku koodi ilma sisselogimata. Paigad alates 21.10.2026.Mida nüüd teha →

Sõltuvuste ajakohasena hoidmine: Composer, npm ja pistikprogrammid

Projekt koosneb kolmest paketimaailmast: Composer, npm ja CMS-i pistikprogrammid. Kuidas hoiate kõiki kolme ajakohasena kindla rütmi, selge vastutuse ja testidega.

Seis Lugemisaeg 4 minTurvaline arendus

Lühidalt: Kes tahab sõltuvusi uuendada, vajab protsessi kolme paketimaailma jaoks: Composeri paketid PHP koodis, npm-moodulid esiosa buildis ning pistikprogrammid või teemad CMS-is. Siia kuuluvad kindel rütm, vastutav isik, testid enne väljaveeretamist ja plaan pakettide jaoks, millele uuendust ei ole. PHP2Shelli vastu see ei aita, sest see auk asub PHP-s endas, küll aga paljude võõras koodis olevate aukude vastu.

Kolm paketimaailma, üks pimeala

Nädalal pärast 21. oktoobrit 2026 keerles kõik PHP interpretaatori ümber. Paljud meeskonnad märkasid seejuures, et nad ei tea oma enda ehituskivide versioone täpselt. Veebisait töötab, agentuur hoolitseb, pistikprogramm annab ise märku, kui on midagi uut: nii või sarnaselt kõlavad oletused, kuni keegi järele vaatab.

Tüüpiline PHP-projekt koosneb täna oluliselt rohkem võõrast kui oma koodist. OWASP Top 10 toob haavatavad ja vananenud komponendid välja eraldi riskikategooriana. Probleem on harva tööriista puudumine, vaid rutiini puudumine: uuendused toimuvad siis, kui kellelgi on aega, ja turvateated satuvad postkasti, mida keegi ei loe.

Milliseid sõltuvusi uuendate kus?

Igal paketimaailmal on omad tööriistad ja omad lõksud. Järgmine ülevaade aitab midagi mitte märkamata jätta.

Paketimaailm Seisu kuvamine Aukude kontroll Tüüpiline lõks
Composer (PHP teegid) composer show composer audit kaudsed paketid, mida keegi ei tunne
npm (esiosa build) npm ls npm audit uuendus ilma uuesti ehitamiseta ei jõua kunagi serverisse
CMS-i pistikprogrammid ja teemad admin-liides või CLI tootja märkused, turbeteenused hüljatud pistikprogrammid, ostetud pistikprogrammid ilma uuenduskanalita
PHP ja laiendused paketihaldus distributsiooni Security-Tracker kuvatav versioon ütleb backportide kohta vähe

Viimane rida ei kuulu rangelt võttes rakenduse sõltuvuste hulka, kuid unustatakse sageli samas hingetõmbes. Sama kehtib skriptide kohta, mis kaasatakse otse võõrastelt serveritelt, näiteks teegid CDN-ist, vestlusvidinad või jälgimiskood. Need ei ilmu üheski lukufailis, kuid töötavad teie külastajate brauseris. Võtke need nimekirja kaasa ja kontrollige, kas kaasatud on kindlad versioonid, mitte „alati uusim“. Üksikasjad composer audit, lukufaili ja buildi lõimimise kohta on juhendis Composeri sõltuvuste kontroll aukude suhtes. Kuidas Composer põhimõtteliselt töötab, selgitab Composer: PHP paketihaldur.

Hoolduse tsükkel kuues sammus

Töökindel protsess ei pea olema keeruline. See järjekord on end tõestanud:

  1. Fikseerige seis: Iga projekti kohta otseste sõltuvuste nimekiri koos versiooni, päritolu ja otstarbega. Lukufailid (composer.lock, package-lock.json) kuuluvad repositooriumi.
  2. Koguge teated: Kontrolltööriistad töötavad igal buildil ja lisaks regulaarselt edastatud seisul, ka ilma koodimuudatuseta.
  3. Hinnake: Kas mõjutatud paketti kasutatakse tootmises, kas mõjutatud funktsioon on kättesaadav, kas on parandatud versioon?
  4. Uuendage stagingus ja testige: Esmalt turvauuendused samas põhiversioonis, hüpped uutele põhiversioonidele planeerige eraldi ettevõtmisena.
  5. Veeretage välja tagasiteega: Eelmine seis jääb paketina või release'ina kättesaadavaks, andmebaasi varukoopia enne uuendust.
  6. Dokumenteerige: Mida uuendati millal, mida teadlikult mitte ja miks.

Pöörake seejuures tähelepanu versioonimääratlustele failides composer.json ja package.json. Liiga kitsad nõuded takistavad, et turvaparandusi üldse paigaldada saab. Liiga laiad toovad aga kontrollimata uusi põhiversioone projekti. End on tõestanud lubada uuendusi põhiversiooni piires ja planeerida hüpe järgmisele teadlikult.

CMS-i pistikprogrammide puhul saab saadaolevaid uuendusi sageli kuvada ka käsurealt, WordPressis näiteks WP-CLI-ga:

# Kuva saadaolevad uuendused, midagi muutmata
wp plugin list --update=available
wp theme list --update=available
# Esiosa paketid: vananenud versioonid ja teadaolevad augud
npm outdated
npm audit --omit=dev
Oluline

Automaatsed pistikprogrammide uuendused otse tootmissüsteemis on mugavad, kuid riskantsed, kui keegi pärast ei kontrolli. Lülitage need sisse ainult siis, kui varukoopia enne iga käitamist ja kontroll pärast on tagatud.

Kui uuendust ei ole

Mitte iga teadet ei saa ühe klõpsuga lahendada. OWASP Cheat Sheet haavatavate sõltuvuste käsitlemise kohta eristab mitut juhtu, mida saab igapäevatööle hästi üle kanda:

  • Paik on saadaval: paigaldage stagingus, testige, veeretage välja. Kui miski läheb katki, kohandage oma koodi, selle asemel et uuendus seisma jätta.
  • Paik on välja kuulutatud, kuid veel mitte olemas: rakendage tootja lahendus, lülitage mõjutatud funktsioon võimaluse korral välja või varjake, fikseerige otsus.
  • Paika ei oodata: otsige asenduspaketti või portige parandus ise tagasi, testiga, mis eristab auku enne ja pärast paika.

CMS-i pistikprogrammide puhul esineb sageli neljas juhtum: pistikprogramm on hüljatud. Siis aitab ainult asendamine või eemaldamine. Sama kehtib ebaselge päritoluga pistikprogrammide kohta, näiteks „tasuta“ koopiad ostetud pistikprogrammidest. Need ei saa uuendusi ametliku kanali kaudu ja sisaldavad üsna sageli ise pahakoodi. Vihjed WordPressi haldajatele koondab WordPress ja PHP2Shell.

Selgitage vastutus enne järgmist teadet

Aegunud pakettide sagedaseim põhjus ei ole tehniline takistus, vaid lahtine küsimus: kes seda teeb? Projektide puhul, mille on ehitanud agentuur ja mida käitatakse sisemiselt, ei tunne end sageli keegi vastutavana. Määrake iga projekti jaoks, kes teated saab, kes hindab ja kes annab loa, ning kirjutage see üles.

Planeerige lisaks aega. Kindel hoolduskuupäev kuus, mil sõltuvusi kontrollitakse ja uuendatakse, takistab uuenduste kuhjumist aastateks. Mida kauem projekti pole uuendatud, seda suuremaks ja riskantsemaks muutub järgmine hüpe. Kuidas PHP ja pakettide uuendused sobituvad üldisesse protsessi, kirjeldab Paikamishaldus protsessina, mitte tulekustutusena.

Kuidas PHP SOS konkreetselt aitab?

  • Me kaardistame teie projektide kõik sõltuvused Composerist, npm-ist ja CMS-ist ning märgime vananenud, haavatavad ja hüljatud paketid.
  • Me seadistame automaatsed kontrollid ja määrame, kes millist teadet hindab.
  • Me uuendame stagingus, testime tähtsamaid protsesse ja veeretame välja tagasiteega.
  • Turvahoolduslepingu raames võtame igakuise tsükli püsivalt enda peale, PHP uuendused kaasa arvatud.

Kokkuvõte: Ajakohased sõltuvused ei ole projekt, vaid rutiin. Kes seisu, rütmi ja vastutuse korra korralikult paika paneb, peab järgmise suure teate puhul ainult kontrollima, mitte kõigepealt otsima.

Korduma kippuvad küsimused

Kui sageli peaks sõltuvusi uuendama?

Turvauuendused nii pea kui võimalik pärast hindamist, rutiinsed uuendused kindla rütmiga, näiteks igakuiselt. Täpsest sagedusest olulisem on, et tähtaeg on kindel ja keegi vastutab selle eest.

Kas ajakohane pistikprogramm kaitseb PHP2Shelli eest?

Ei. PHP2Shell asub PHP interpretaatoris endas. Selle vastu aitab ainult PHP uuendus koos kõigi PHP protsesside taaskäivitamisega. Ajakohased pistikprogrammid ja paketid on siiski olulised, sest need sulgevad omi auke.

Mida teha pistikprogrammiga, mida enam ei hooldata?

Asendada või eemaldada. Hüljatud pistikprogramm ei saa enam parandusi, isegi kui see täna veel töötab. Kuni asenduseni peaksite kontrollima, kas funktsiooni tõesti vajatakse, ja otsuse dokumenteerima.

Kas esiosa npm tuleb uuendada ka serveris?

Sageli asuvad npm-paketid ainult buildis ja jõuavad serverisse valmisfailidena. Paketi auk võib sellest hoolimata peituda edastatavas JavaScriptis. Pärast uuendust tuleb seetõttu uuesti ehitada ja uuesti edastada.

Allikad

Kohene kontakt

Iga tund loeb. Kirjutage meile kohe.

Kirjeldage lühidalt süsteemi, PHP versiooni ja tähelepanekut. Võtame teiega ühendust, selgitame olukorra välja ja töötame kaugtööna, kuni intsident on lõpetatud ja dokumenteeritud.

Kohene abi