Pastaba
- Pradinė publikavimo data: 2025 m. gruodžio 9 d.
- KB ID: 5074596
Pastaba
Šiame straipsnyje aprašomas pakeitimas, kuris pirmiausia paveikia įmonės arba IT valdomas aplinkas, kuriose "PowerShell" scenarijai naudojami automatizavimui ir žiniatinklio turiniui gauti. People, naudojantiems įrenginius asmeninėje ar namų aplinkoje, paprastai nereikia imtis jokių veiksmų, nes tokie scenarijai yra neįprasti ne IT valdomoje aplinkoje.
Pakeitimų žurnalas
| Datos keitimas | Keitimų aprašas |
|---|---|
| 2025 m. gruodžio 20 d. |
|
Santrauka
"Windows PowerShell 5.1" dabar rodo saugos patvirtinimo raginimą, kai tinklalapiams be specialių parametrų iškviesti naudojama komanda Invoke-WebRequest.
Pastaba
- Saugos įspėjimas: Scenarijaus vykdymo rizika Invoke-WebRequest analizuoja tinklalapio turinį. Scenarijaus kodas tinklalapyje gali būti vykdomas, kai puslapis analizuojamas.
- REKOMENDUOJAMAS VEIKSMAS: Naudokite jungiklį -UseBasicParsing, kad išvengtumėte scenarijaus kodo vykdymo.
- Ar norite tęsti?
Šis raginimas įspėja, kad scenarijai puslapyje gali būti vykdomi analizės metu, ir pataria naudoti
-UseBasicParsing parametrą , kad būtų išvengta bet kokio scenarijaus vykdymo. Vartotojai turi pasirinkti tęsti arba atšaukti operaciją. Šis pakeitimas padeda apsaugoti nuo kenkėjiško žiniatinklio turinio, nes prieš potencialiai rizikingus veiksmus reikia vartotojo sutikimo.
"PowerShell" komanda Invoke-WebRequest sukuria HTTP arba HTTPS užklausą žiniatinklio serveriui ir pateikia rezultatus. Šiame straipsnyje aprašomas sustiprintas pakeitimas, kai "Windows PowerShell 5.1" specialiai rodo saugos patvirtinimo raginimą, kai tinklalapiams be specialių parametrų iškviesti naudojama komanda Invoke-WebRequest. Tai atliekama po to, kai palaikomi "Windows" klientai ir serveriai įdiegia "Windows" Naujinimai, išleistus 2025 m. gruodžio 9 d. ir vėliau. Norėdami gauti daugiau informacijos, žr. CVE-2025-54100.
Kas pasikeitė?
Ankstesnis veikimas
- Viso dokumento objekto modelio (DOM) analizė naudojant "Internet Explorer" komponentus (HTMLDocument Interface (mshtml)), kurie gali vykdyti scenarijus iš atsisiųsto turinio.
Naujas elgesys
Saugos patvirtinimo raginimas: Įdiegus "Windows" naujinimus, išleistus 2025 m. gruodžio 9 d. arba vėliau, paleidus komandą "Invoke-WebRequest " (taip pat žinomą kaip curl) programoje "PowerShell 5.1" bus suaktyvintas saugos raginimas (kai nenaudojamas joks specialus parametras). "PowerShell" konsolėje rodomas raginimas su įspėjimu apie scenarijaus vykdymo riziką.
Tai reiškia, kad "PowerShell" pristabdo, norėdama įspėti, kad be atsargumo priemonių apdorojamas tinklalapio scenarijaus turinys gali būti vykdomas jūsų sistemoje. Pagal numatytuosius nustatymus, jei paspausite Enter (arba pasirinksite Ne), operacija bus atšaukta saugumo sumetimais. "PowerShell" bus rodomas pranešimas, kad ji atšaukta dėl saugumo problemų, ir siūloma iš naujo paleisti komandą naudojant
-UseBasicParsing parametras saugiam apdorojimui. Jei pasirinksite Taip, "PowerShell" toliau analizuos puslapį naudodama senesnį metodą (visa HTML analizė), o tai reiškia, kad turinys ir visi įdėtieji scenarijai bus įkelti kaip anksčiau. Iš esmės pasirinkimas Taip reiškia, kad prisiimate riziką ir leidžiate komandai veikti taip, kaip buvo anksčiau, o pasirinkus Ne (numatytasis) veiksmas sustabdomas siekiant jus apsaugoti.Interaktyvus ir scenarijaus naudojimas: Šio raginimo pristatymas pirmiausia turi įtakos interaktyviam naudojimui. Interaktyviuose užsiėmimuose matysite įspėjimą ir turėsite atsakyti. Naudojant automatinius scenarijus (neinteraktyvius scenarijus, pvz., suplanuotas užduotis arba CI srautus), dėl šio raginimo scenarijus gali užstrigti laukiant įvesties. Norėdami to išvengti, rekomenduojame atnaujinti tokius scenarijus, kad būtų aiškiai naudojami saugūs parametrai (žr. toliau), užtikrinant, kad jų nereikia patvirtinti rankiniu būdu.
Imkitės veiksmų
Daugelis "PowerShell" scenarijų ir komandų, naudojančių komandą "Invoke-WebRequest ", ir toliau veiks su nedideliais pakeitimais arba be jų veiks. Pvz., scenarijai, kurie atsisiunčia tik turinį arba dirba su atsakymo tekstu kaip tekstas arba duomenys, nėra paveikiami ir jų nereikia keisti.
Jei turite scenarijų, kuriems šis pakeitimas turi įtakos, naudokite vieną iš toliau nurodytų būdų.
1 parinktis: naudokite naują saugią numatytąją
Turiniui gauti nereikia atlikti jokių veiksmų, jei įprastai naudojate komandą Invoke-WebRequest turiniui gauti (pvz., atsisiunčiate failus arba skaitote statinį tekstą) ir nepasikliaujate išplėstine svetainės sąveika ar HTML DOM analize. Naujasis numatytasis veikimo būdas yra saugesnis – į žiniatinklio turinį įdėti scenarijai neveiks be jūsų leidimo – ir tai yra rekomenduojama konfigūracija daugeliui scenarijų.
Interaktyviam naudojimui tiesiog atsakykite Ne į naują saugos raginimą (arba paspauskite Enter , kad priimtumėte numatytąjį) ir iš naujo paleiskite komandą su parametru -UseBasicParsing , kad saugiai nuskaitytumėte turinį. Taip išvengsite gauto puslapio scenarijaus kodo vykdymo. Jei žiniatinklio turinį dažnai gaunate interaktyviai, apsvarstykite galimybę naudoti parametrą -UseBasicParsing pagal numatytuosius parametrus komandose, kad praleistumėte raginimą ir užtikrintumėte maksimalią saugą.
Automatizuotus scenarijus arba suplanuotas užduotis atnaujinkite juos įtraukdami parametrą -UseBasicParsingiškvietimo WebRequest iškvietimuose . Tai iš anksto pasirenka saugų veikimą, kad raginimas nebūtų rodomas ir jūsų scenarijus toliau veiktų be trukdžių. Tai darydami užtikrinate, kad automatizavimas veiks sklandžiai po atnaujinimo ir vis tiek naudositės pagerinta sauga.
- Scenarijams, kurie vykdomi su parinktimi -NoProfile: Jei scenarijus turi daug " Invoke-WebRequest " iškvietimų atvejų, scenarijaus viršuje deklaruokite $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true .
- Kai Invoke-WebRequest naudojamas su parametru -UseBasicParsing , viso dokumento objektų modelio (DOM) analizė naudojant "Internet Explorer" komponentus (HTMLDocument Interface (mshtml)) negalima.
2 parinktis: pertvarkykite scenarijus ilgalaikei saugai
Scenarijus arba automatizavimą, apdorojantį nepatikimą arba viešą žiniatinklio turinį ir reikalaujantį HTML struktūrų ar formų apdorojimo, apsvarstykite galimybę juos pertvarkyti arba atnaujinti siekiant užtikrinti ilgalaikę saugą. Užuot pasitikėję "PowerShell" potencialiai pavojingų tinklalapių scenarijų analize ir vykdymu, galite:
Naudoti alternatyvius analizės metodus arba bibliotekas (pvz., tinklalapio turinį traktuoti kaip paprastąjį tekstą arba XML, naudojant reguliariosios išraiškos arba XML/HTML analizės bibliotekas, kurios nevykdo scenarijų).
Modernizuokite savo požiūrį į interneto sąveikas, galbūt naudodami naujesnę "PowerShell Core" (7.x ar naujesnę versiją), kuri nepriklauso nuo "Internet Explorer" modulio ir išvengia scenarijų vykdymo, arba naudodami specializuotus žiniatinklio scraping įrankius, kurie saugiau apdoroja turinį. Apribokite naudojimąsi "Internet Explorer" specifinėmis funkcijomis, nes "Internet Explorer" yra nebenaudojama. Suplanuokite perrašyti scenarijų dalis, kurios priklauso nuo tų funkcijų, kad jie veiktų aplinkoje, kurioje žiniatinklio turinys tvarkomas saugiai.
- "PowerShell Core" (7.x arba naujesnė versija) "Invoke-WebRequest" nepalaiko DOM analizės naudojant "Internet Explorer" komponentus. Numatytoji jo analizė saugiai nuskaitys turinį be scenarijaus vykdymo.
Pertvarkymo tikslas yra pasiekti reikiamas funkcijas nesukeliant pavojaus saugai, tokiu būdu taikant saugesnius numatytuosius nustatymus, atsiradusius dėl šio pakeitimo.
3 parinktis: Sutikti su pasenusiu veikimu (tik patikimiems scenarijams)
Jei turite konkretų poreikį naudoti visas komandos "Invoke-WebRequest " HTML analizės galimybes (pvz., sąveiką su formos laukais arba struktūrinių duomenų nuskaitymą) ir pasitikite žiniatinklio turinio šaltiniu, vis tiek galite toliau analizuoti senstelėjusį veiksmą kiekvienu atveju atskirai. Interaktyviuose seansuose tai reiškia, kad patvirtinimo raginime pasirenkama Taip , kad būtų leista tęsti operaciją. Kaskart tai darydami gausite priminimą apie saugos pavojų. Tęsti be -UseBasicParsing parametro turėtų būti taikomi tik tais atvejais, kai visiškai pasitikite žiniatinklio turiniu (pvz., vidinėmis žiniatinklio programomis, kurias kontroliuojate, arba žinomomis saugiomis svetainėmis).
Svarbu
Šis metodas nerekomenduojamas scenarijams, vykdomiems nepatikimame arba viešame žiniatinklio turinyje, nes jis vėl sukelia tylaus scenarijaus vykdymo riziką, kurią siekiama sumažinti šiuo naujinimu. Be to, neinteraktyviam automatizavimui nėra įmontuoto mechanizmo, kuris automatiškai sutiktų su raginimu, todėl nepatartina pasikliauti visišku scenarijų analizavimu (be to, kad tai rizikinga). Naudokite šią parinktį saikingai ir tik kaip laikiną priemonę.
Dažnai užduodami klausimai
Ar šis pakeitimas paveiks mano scenarijus?
Daugeliu atvejų scenarijai, kurie atsisiunčia failus arba gauna žiniatinklio turinį kaip tekstą, vis tiek veiks. Norėdami išvengti raginimo, įtraukite parametrą -UseBasicParsing .
Scenarijai, naudojantys išplėstinę HTML analizę (pvz., formos ar DOM), gali pakibti arba išvesti neapdorotus duomenis vietoj struktūrinių objektų; Turėsite perjungti į paprastąją analizę arba modifikuoti scenarijų, kad turinys būtų tvarkomas kitaip.
Kaip išvengti naujo patvirtinimo raginimo scenarijuose?
Kad vykdymas būtų saugus, neinteraktyvus, "PowerShell" scenarijuose visada naudokite parametrą -UseBasicParsing su komanda Invoke-WebRequest .
Ar dėl šio pakeitimo reikia atlikti kokius nors veiksmus senstelėjusiems scenarijams?
Taip. Scenarijai, atsižvelgiant į senstelėjusią analizę, turi būti atnaujinti, kad būtų galima pasirinkti arba pertvarkyti.
Kaip šis pokytis atsispindi naujausių pataisų ir standartiniuose naujinimuose?
"PowerShell" pakeitimas taikomas ir standartiniams, ir naujausių pataisų naujinimams, todėl pasikeičia tas pats veikimas.
Ar šis pakeitimas sutampa su "PowerShell 7"?
Taip. Pagal numatytuosius parametrus "PowerShell 7" jau naudoja saugiąją analizę.
Ką turėčiau daryti su trečiųjų šalių scenarijais ar moduliais?
Dėl palaikymo planų kreipkitės į modulių savininkus. Perkėlimo metu laikinai naudokite patikimo turinio sutikimą.
Kaip patikrinti, ar mano aplinka parengta?
Norint pasiruošti ir patvirtinti šį keitimą, rekomenduojame:
- Identifikuoti scenarijus naudojant DOM funkcijas.
- Testavimo automatizavimas su nauja numatytąja versija.
- Apribokite senstelėjusią galimybę pasirinkti tik patikimuose šaltiniuose.
- Planuokite nepatikimo turinio pertvarkymą.