Not
- Orijinal yayınlama tarihi: 9 Aralık 2025
- KB Kimliği: 5074596
Not
Bu makalede, öncelikli olarak PowerShell betiklerinin otomasyon ve web içeriği alımı için kullanıldığı kurumsal veya BT tarafından yönetilen ortamları etkileyen bir değişiklik açıklanmaktadır. BT tarafından yönetilen ortamlar dışında bu senaryolar nadir görüldüğünden, cihazları kişisel veya ev ortamlarında kullanmak People genellikle herhangi bir işlem yapmanız gerekmez.
Değişiklik günlüğü
| Tarihi değiştir | Açıklamayı değiştir |
|---|---|
| 20 Aralık 2025 |
|
Özet
Windows PowerShellWindows PowerShell 5.1 artık özel parametreler olmadan web sayfalarını getirmek için Invoke-WebRequest komutunu kullanırken bir güvenlik onay istemi görüntülüyor.
Not
- Güvenlik Uyarısı: Komut Dosyası Yürütme Riski Invoke-WebRequest web sayfasının içeriğini ayrıştırır. Web sayfasındaki betik kodu, sayfa ayrıştırıldığında çalıştırılabilir.
- ÖNERİLEN EYLEM: Betik kodunun yürütülmesini önlemek için -UseBasicParsing anahtarını kullanın.
- Devam etmek istiyor musunuz?
Bu istem, sayfadaki komut dosyalarının ayrıştırma sırasında çalışabileceği konusunda uyarır ve
-UseBasicParsing parametresi herhangi bir komut dosyası yürütmeyi önlemek için. Kullanıcıların işleme devam etmeyi veya işlemi iptal etmeyi seçmesi gerekir. Bu değişiklik, riskli olabilecek eylemlerden önce kullanıcı onayı gerektirdiğinden, kötü amaçlı web içeriğine karşı korunmaya yardımcı olur.
PowerShell'in Invoke-WebRequest komutu, web sunucusuna HTTP veya HTTPS isteğinde bulunur ve sonuçları döndürür. Bu makalede, Windows PowerShell 5.1'in özel parametreler olmadan web sayfalarını getirmek için Invoke-WebRequest komutunu kullanırken kasıtlı olarak bir güvenlik onayı istemi görüntülediği sağlamlaştırma değişikliği belgelenmektedir. Bu davranış, desteklenen Windows istemcileri ve sunucuları yüklendikten sonra oluşur Windows GüncelleştirmelerGüncelleştirmeler 9 Aralık 2025 tarihinde ve sonrasında yayımlanır. Daha fazla bilgi için CVE-2025-54100 başlıklı makaleye bakın.
Ne değişti?
Önceki davranış
- İndirilen içerikten komut dosyaları yürütebilen Internet Explorer bileşenlerini (HTMLDocument Interface (mshtml)) kullanarak Tam Belge Nesne Modeli (DOM) ayrıştırma.
Yeni davranış
Güvenlik Onayı İstemi: 9 Aralık 2025 veya sonrasında yayımlanan Windows güncelleştirmelerini yükledikten sonra, PowerShell 5.1'de Invoke-WebRequest komutunu (curl olarak da bilinir) çalıştırmak bir güvenlik istemini tetikler (özel parametre kullanılmadığında). İstem, PowerShell konsolunda Betik Yürütme Riski hakkında bir uyarıyla birlikte görünür.
Bu, PowerShell'in, önlemler alınmazsa web sayfası komut dosyası içeriğinin işlendiğinde sisteminizde yürütülebileceği konusunda sizi uyarmak için duraklattığı anlamına gelir. Varsayılan olarak, Enter tuşuna basarsanız (veya Hayır'ı seçerseniz), işlem güvenlik nedeniyle iptal edilir. PowerShell, güvenlik endişeleri nedeniyle iptal edildiğini belirten bir ileti gösterir ve komutun yeniden çalıştırılmasını önerir.
-Güvenli işleme için UseBasicAyrıştırma parametresi. Evet'i seçerseniz PowerShell, sayfayı eski yöntemi (tam HTML ayrıştırma) kullanarak ayrıştırmaya devam eder, yani içeriği ve ekli betikleri eskiden olduğu gibi yükler. Esasen, Evet'i seçmek, riski kabul ettiğiniz ve komutun daha önce olduğu gibi çalışmasına izin verdiğiniz anlamına gelirken, Hayır'ı seçmek (varsayılan) sizi korumak için eylemi durdurur.Etkileşimli ve Komut Dosyalı Kullanım: Bu istemin kullanılmaya başlanması öncelikle etkileşimli kullanımı etkiler. Etkileşimli oturumlarda, uyarıyı göreceksiniz ve yanıt vermeniz gerekecek. Otomatik betikler (zamanlanmış görevler veya CI işlem hatları gibi etkileşimli olmayan senaryolar) için bu istem, giriş beklerken betiğin askıda kalmasına neden olabilir. Bunu önlemek için, manuel onay gerektirmediklerinden emin olarak bu tür komut dosyalarını açıkça güvenli parametreler kullanacak şekilde güncellemenizi öneririz (aşağıya bakın).
Harekete geçin
Invoke-WebRequest komutunu kullanan çoğu PowerShell betiği ve komutu, çok az değişiklikle veya hiç değişiklik yapmadan çalışmaya devam edecektir. Örneğin, yalnızca içerik indiren veya metin ya da veri olarak yanıt gövdesiyle çalışan betikler etkilenmez ve değişiklik gerektirmez.
Bu değişiklikten etkilenen betikleriniz varsa, aşağıdaki yaklaşımlardan birini kullanın.
1. Seçenek: Yeni güvenli varsayılanı kullanma
Invoke-WebRequest komutunun tipik kullanımınız içerik getirmekse (dosyaları indirmek veya statik metni okumak gibi) ve gelişmiş site etkileşimine veya HTML DOM ayrıştırmasına güvenmiyorsanız, içerik getirmek için eylem yapmanız gerekmez. Yeni varsayılan davranış daha güvenlidir; web içeriğine katıştırılmış betikler izniniz olmadan çalıştırılmayacaktır ve çoğu senaryo için önerilen yapılandırma budur.
Etkileşimli kullanım için, yeni güvenlik istemine Hayır yanıtını vermeniz (veya varsayılanı kabul etmek için Enter tuşuna basmanız) ve içeriği güvenli bir şekilde almak için komutunuzu -UseBasicParsing parametresiyle yeniden çalıştırmanız yeterlidir. Bu, getirilen sayfada herhangi bir betik kodunun yürütülmesini önleyecektir. Web içeriğini sık sık etkileşimli olarak getiriyorsanız, istemi tamamen atlamak ve en yüksek güvenliği sağlamak için komutlarınızda varsayılan olarak -UseBasicParsing parametresini kullanmayı göz önünde bulundurun.
Otomatik betikler veya zamanlanmış görevler için, bunları Invoke-WebRequest çağrılarına -UseBasicParsing parametresini içerecek şekilde güncelleştirin. Bu, istemin görünmemesi ve betiğinizin kesintisiz olarak çalışmaya devam etmesi için güvenli davranışı önceden seçer. Bunu yaparak, gelişmiş güvenlikten yararlanmaya devam ederken güncellemeden sonra otomasyonunuzun sorunsuz bir şekilde çalışmasını sağlarsınız.
- -NoProfile seçeneğiyle çalışan betikler için: Betikte birçok Invoke-WebRequest çağrısı varsa, betiğin üst kısmında $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true bildirin.
- Invoke-WebRequest-UseBasicParsing parametresiyle kullanıldığında, Internet Explorer bileşenleri (HTMLDocument Interface (mshtml)) kullanılarak Tam Belge Nesne Modeli (DOM) ayrıştırması mümkün değildir.
2. Seçenek: Uzun vadeli güvenlik için betikleri yeniden düzenleme
Güvenilmeyen veya genel web içeriğiyle ilgilenen ve HTML yapılarının veya formlarının işlenmesini gerektiren betikler veya otomasyon için, uzun vadeli güvenlik için bunları yeniden düzenlemeyi veya güncelleştirmeyi düşünün. Tehlikeli olabilecek web sayfası betiklerini ayrıştırmak ve çalıştırmak için PowerShell'e güvenmek yerine şunları yapabilirsiniz:
Alternatif ayrıştırma yöntemlerini veya kitaplıklarını kullanın (örneğin, komut dosyalarını çalıştırmayan normal ifade veya XML/HTML ayrıştırma kitaplıklarını kullanarak web sayfası içeriğini düz metin veya XML olarak değerlendirin).
Internet Explorer'ın motoruna bağlı olmayan ve çalışan betiklerden kaçınan daha yeni PowerShell Core (sürüm 7.x veya üstü) kullanarak veya içeriği daha güvenli bir şekilde işleyen özel web kazıma araçları kullanarak web etkileşimlerine yaklaşımınızı modernleştirin. Internet Explorer kullanımdan kaldırıldığından, Internet Explorer'a özgü özelliklere olan güveni sınırlayın. Web içeriğinin güvenli bir şekilde işlendiği bir ortamda çalışabilmeleri için, betiklerinizin bu özelliklere bağlı kısımlarını yeniden yazmayı planlayın.
- PowerShell Core'da (sürüm 7.x veya üzeri) Invoke-WebRequest, Internet Explorer bileşenleri kullanılarak DOM ayrıştırmayı desteklemez. Varsayılan ayrıştırması, betik yürütmeden içeriği güvenli bir şekilde alacaktır.
Yeniden düzenlemenin amacı, kendinizi güvenlik risklerine maruz bırakmadan gerekli işlevselliği elde etmek ve böylece bu değişikliğin getirdiği daha güvenli varsayılanları benimsemektir.
3. Seçenek: Eski davranışı kabul etme (yalnızca güvenilir senaryolar)
Invoke-WebRequest komutunun tam HTML ayrıştırma yeteneklerini (form alanlarıyla etkileşim kurma veya yapılandırılmış verileri kazıma gibi) kullanmak için özel bir ihtiyacınız varsa ve web içeriğinin kaynağına güveniyorsanız, duruma göre eski ayrıştırma davranışına devam edebilirsiniz. Etkileşimli oturumlarda bu, işlemin devam etmesine izin vermek için onay isteminde Evet'i seçmek anlamına gelir. Bunu her yaptığınızda güvenlik riskiyle ilgili bir anımsatıcı alırsınız. -UseBasicParsing parametresi olmadan devam etmek, web içeriğine tamamen güvendiğiniz senaryolarla sınırlı olmalıdır (örneğin, denetiminiz altındaki iç web uygulamaları veya bilinen güvenli web siteleri).
Önemli
Bu yaklaşım, güvenilmeyen veya genel web içeriğinde çalışan betikler için önerilmez, çünkü bu güncelleştirmenin azaltmayı amaçladığı sessiz betik yürütme riskini yeniden ortaya çıkarır. Ayrıca, etkileşimli olmayan otomasyon için, isteme otomatik olarak izin verecek yerleşik bir mekanizma yoktur, bu nedenle komut dosyalarında tam ayrıştırmaya güvenmek tavsiye edilmez (riskli olmanın yanı sıra). Bu seçeneği dikkatli kullanın ve yalnızca geçici bir önlem olarak kullanın.
Sık sorulan sorular
Bu değişiklik betiklerimi etkiler mi?
Çoğu durumda, dosyaları indiren veya web içeriğini metin olarak getiren betikler çalışmaya devam eder. Sorulmasından kaçınmak için -UseBasicParsing parametresini ekleyin.
Gelişmiş HTML ayrıştırması (formlar veya DOM gibi) kullanan komut dosyaları, yapılandırılmış nesneler yerine ham verileri askıda bırakabilir veya çıkarabilir; İçeriği farklı şekilde işlemek için temel ayrıştırmaya geçmeniz veya betiğinizi değiştirmeniz gerekecektir.
Betiklerimde yeni onay isteminden nasıl kaçınabilirim?
Güvenli, etkileşimli olmayan yürütme sağlamak için her zaman PowerShell betiklerinde Invoke-WebRequest komutuyla -UseBasicParsing parametresini kullanın.
Bu değişiklik, eski betikler için herhangi bir eylem gerektiriyor mu?
Evet. Eski ayrıştırmaya bağlı olarak betikler, kabul etmek veya yeniden düzenlemek için güncelleştirilmelidir.
Bu değişiklik çalışırken uygulanabilen düzeltme eki ve standart güncelleştirmelere nasıl yansır?
PowerShell'deki değişiklik hem standart güncelleştirmeler hem de çalışırken uygulanabilen düzeltme eki güncelleştirmeleri için geçerlidir ve sonuçta aynı davranış değişikliğine neden olur.
Bu değişiklik PowerShell 7 ile uyumlu mu?
Evet. PowerShell 7 zaten varsayılan olarak güvenli ayrıştırma kullanır.
Üçüncü taraf komut dosyaları veya modülleri hakkında ne yapmalıyım?
Destek planları için modül sahipleriyle iletişime geçin. Geçiş sırasında güvenilir içerik için geçici olarak kabul etmeyi kullanın.
Nasıl yaparım? ortamımın hazır olduğunu nasıl doğrularım?
Bu değişikliğe hazırlanmak ve bu değişikliği doğrulamak için şunları yapmanızı öneririz:
- DOM özelliklerini kullanarak komut dosyalarını tanımlayın.
- Yeni varsayılan ile test otomasyonu.
- Eski katılımı güvenilir kaynaklarla sınırlayın.
- Güvenilmeyen içerik için yeniden düzenlemeyi planlayın.