Uygulandığı Öğe
Win 10 Ent LTSB 2016 Win 10 Ent LTSC 2019 Windows 10 IoT Enterprise LTSC 2021 Windows 10, version 22H2, all editions Windows 11 Home and Pro, version 22H2 Windows 11 Enterprise Multi-Session, version 22H2 Windows 11 Enterprise and Education, version 22H2 Windows 11 IoT Enterprise, version 22H2 Windows 11 SE, version 23H2 Windows 11 Home and Pro, version 23H2 Windows 11 Enterprise and Education, version 23H2 Windows 11 Enterprise Multi-Session, version 23H2 Windows 11 version 24H2, all editions Windows 11 version 25H2, all editions Windows Server 2008 Premium Assurance Windows Server 2008 R2 Premium Assurance Windows Server 2012 ESU Windows Server 2012 R2 ESU Windows Server 2016 Windows Server 2019 Windows Server 2022 Windows Server 2025

Özgün yayımlama tarihi: 9 Aralık 2025, Cumartesi

KB Kimliği: 5074596

Bu makalede, 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. Kişisel veya ev ayarlarında cihazları kullanmak Kişiler genellikle herhangi bir işlem yapması gerekmez, bu senaryolar BT tarafından yönetilen ortamların dışında nadirdir.

Tarihi değiştir

Açıklamayı değiştir

20 Aralık 2025, Cumartesi

  • "Özet" bölümüne "Güvenlik Uyarısı" eklendi.

  • Netlik için "Özet" bölümüne aşağıdaki paragraf eklendi: PowerShell'in Invoke-WebRequest komutu bir web sunucusuna HTTP veya HTTPS isteği gönderir ve sonuçları döndürür. Bu makalede, web sayfalarını özel parametreler olmadan getirmek için Invoke-WebRequest komutu kullanılırken Windows PowerShell 5.1'in kasıtlı olarak bir güvenlik onay istemi görüntülediği sağlamlaştırma değişikliği belgelemektedir. Bu davranış, desteklenen Windows istemcileri ve sunucuları yüklendikten sonra 9 Aralık 2025 tarihinde ve sonrasında yayımlanan Windows Güncelleştirmeler yüklendikten sonra oluşur. Daha fazla bilgi için bkz. CVE-2025-54100.

  • "Eyleme geç" bölümünün 1. Seçeneğinde "Otomatik betikler veya zamanlanmış görevler için" öğesine aşağıdaki madde işareti eklendi.

    • Profilsiz seçeneğiyle çalışan betikler için: Betikte Invoke-WebRequest çağrılarının birçok örneği varsa, betiğin en üstünde $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true bildirin.

    • Invoke-WebRequest -UseBasicParsing parametresiyle kullanıldığında, Internet Explorer bileşenleri (HTMLDocument Arabirimi (mshtml)) kullanılarak Tam Belge Nesne Modeli (DOM) ayrıştırması mümkün değildir.

  • "Eylem gerçekleştir" bölümündeki Seçenek 2'nin "Web etkileşimlerine yaklaşımınızı modernleştirin" madde işaretine aşağıdaki madde işareti eklendi.

    • PowerShell Core'da Invoke-Webrequest (sürüm 7.x veya üzeri), Internet Explorer bileşenlerini kullanarak DOM ayrıştırma işlemini desteklemez. Varsayılan ayrıştırma, betik yürütme olmadan içeriği güvenli bir şekilde alır.

Özet

Windows 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üler.

Güvenlik Uyarısı: Betik Yürütme Riski Invoke-WebRequest web sayfasının içeriğini ayrıştırıyor. 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 betiklerin ayrıştırma sırasında çalışabileceği konusunda uyarır ve betik yürütmesini önlemek için -UseBasicParsing parametresini kullanmanızı önerir. 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ı gerektirerek kötü amaçlı web içeriğine karşı korunmaya yardımcı olur.

PowerShell'in Invoke-WebRequest komutu bir web sunucusuna HTTP veya HTTPS isteği gönderir ve sonuçları döndürür. Bu makalede, web sayfalarını özel parametreler olmadan getirmek için Invoke-WebRequest komutu kullanılırken Windows PowerShell 5.1'in kasıtlı olarak bir güvenlik onay istemi görüntülediği sağlamlaştırma değişikliği belgelemektedir. Bu davranış, desteklenen Windows istemcileri ve sunucuları 9 Aralık 2025 tarihinde ve sonrasında yayımlanan Windows Güncelleştirmeler yükledikten sonra oluşur. Daha fazla bilgi için bkz. CVE-2025-54100.

Ne Değişti?

  • Önceki davranış

    • İndirilen içerikten betikler yürütebilen Internet Explorer bileşenlerini (HTMLDocument Arabirimi (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 komutunun (curl olarak da bilinir) çalıştırılması bir güvenlik istemi tetikler (özel parametre kullanılmadığında). Komut istemi PowerShell konsolunda Betik Yürütme Riski hakkında bir uyarıyla birlikte görüntülenir. Bu, PowerShell'in önlem alınmadan web sayfası betik 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), güvenlik için işlem iptal edilir. PowerShell, güvenlik endişeleri nedeniyle iptal edildiğine ilişkin bir ileti gösterir ve güvenli işleme için -UseBasicParsing parametresini kullanarak komutun yeniden çalıştırılmasını önerir. Evet'i seçerseniz PowerShell, eski yöntemi (tam HTML ayrıştırma) kullanarak sayfayı ayrıştırmaya devam eder; başka bir deyişle, içeriği ve ekli betikleri eskiden olduğu gibi yükler. Temelde Evet'i seçmek riski kabul ettiğiniz ve komutun daha önce olduğu gibi çalışmasına izin verirken Hayır (varsayılan) seçeneğini belirlediğinizde sizi korumak için eylem durdurulur.

    • Etkileşimli ve Betikli Kullanım: Bu istemin kullanıma sunulması öncelikli olarak etkileşimli kullanımı etkiler. Etkileşimli oturumlarda uyarıyı görürsünüz ve yanıt vermek zorunda kalırsınız. Otomatik betikler için (zamanlanmış görevler veya CI işlem hatları gibi etkileşimli olmayan senaryolar), bu istem betiğin giriş beklerken kilitlenmesine neden olabilir. Bunu önlemek için, bu tür betiklerin güvenli parametreleri açıkça kullanacak şekilde güncelleştirilmesini öneririz (aşağıya bakın), el ile onay gerektirmediklerinden emin olun.

Eyleme geçme

Invoke-WebRequest komutunu kullanan çoğu PowerShell betikleri ve komutları çok az değişiklikle veya hiç değişiklik yapmadan çalışmaya devam eder. Örneğin, yalnızca içerik indiren veya yanıt gövdesiyle metin veya veri olarak çalışan betikler etkilenmez ve değişiklik gerektirmez. 

Bu değişiklikten etkilenen betikleriniz varsa aşağıdaki yaklaşımlardan birini kullanın.

İçeriği getirmek için , Invoke-WebRequest komutunun tipik kullanımınız içeriği getirmek (dosyaları indirme veya statik metin okuma gibi) ise ve gelişmiş site etkileşimi veya HTML DOM ayrıştırma özelliğini kullanmıyorsanız hiçbir eylem gerekmez. Yeni varsayılan davranış daha güvenlidir; web içeriğine eklenmiş betikler izniniz olmadan çalışmaz 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ı verin (veya varsayılanı kabul etmek için Enter tuşuna basın) ve içeriği güvenli bir şekilde almak için -UseBasicParsing parametresiyle komutunu yeniden çalıştırın. Bu, getirilen sayfada herhangi bir betik kodunun yürütülmesini önler. Web içeriğini etkileşimli olarak sık sık getiriyorsanız komutlarınızda varsayılan olarak -UseBasicParsing parametresini kullanarak istemi tamamen atlayabilir ve maksimum güvenlik sağlayın. 

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 çalışmaya devam etmesi için güvenli davranışı önceden seçecektir. Bunu yaparak, güncelleştirmeden sonra otomasyonunuzun sorunsuz bir şekilde çalıştığından ve geliştirilmiş güvenlikten yararlanmaya devam ettiğinizden emin olursunuz.

  • -NoProfile seçeneğiyle çalışan betikler için: Betikte Invoke-WebRequest çağrılarının birçok örneği varsa, betiğin en üstünde $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true bildirin.

  • Invoke-WebRequest -UseBasicParsing parametresiyle kullanıldığında, Internet Explorer bileşenleri (HTMLDocument Arabirimi (mshtml)) kullanılarak Tam Belge Nesne Modeli (DOM) ayrıştırması mümkün değildir.

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, bunları uzun süreli güvenlik için yeniden düzenlemeyi veya güncelleştirmeyi göz önünde bulundurun. 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, betik yürütmeyen regex 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 altyapısına bağlı olmayan ve betikleri çalıştırmaktan kaçınan daha yeni PowerShell Core (sürüm 7.x veya üzeri) kullanarak veya içeriği daha güvenli bir şekilde işleyen özelleştirilmiş web kazıma araçlarını kullanarak web etkileşimlerine yaklaşımınızı modernleştirin. Internet Explorer kullanım dışı bırakı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ı olan bölümlerini yeniden yazmayı planlayın.

    • PowerShell Core'da Invoke-WebRequest (sürüm 7.x veya üzeri), Internet Explorer bileşenlerini kullanarak DOM ayrıştırma işlemini desteklemez. Varsayılan ayrıştırma, betik yürütme olmadan içeriği güvenli bir şekilde alır.

  • Yeniden düzenlemenin amacı, kendinizi güvenlik risklerine maruz bırakmadan gerekli işlevleri elde etmek ve böylece bu değişiklikle ortaya konan daha güvenli varsayılanları benimsemektir.

Invoke-WebRequest komutunun tam HTML ayrıştırma özelliklerini (form alanlarıyla etkileşim kurma veya yapılandırılmış verileri kazıma gibi) kullanmanız gerekiyorsa ve web içeriğinin kaynağına güveniyorsanız, büyük/küçük harf temelinde eski ayrıştırma davranışına devam edebilirsiniz. Etkileşimli oturumlarda bu, işlemin devam etmesi için onay isteminde Evet'i seçmek anlamına gelir. Her seferinde güvenlik riskiyle ilgili bir anımsatıcı alırsınız. -UseBasicParsing parametresi olmadan devam etmek, web içeriğine tam olarak güvendiğiniz senaryolarla sınırlı olmalıdır (örneğin, denetiminizdeki iç web uygulamaları veya bilinen güvenli web siteleri). 

Önemli: Bu yaklaşım, güvenilmeyen veya genel web içeriğine karşı çalışan betikler için önerilmez, çünkü bu güncelleştirmenin azaltmaya yönelik sessiz betik yürütme riskini yeniden kullanıma sunar. Ayrıca, etkileşimli olmayan otomasyon için, istemi otomatik olarak onaylayan yerleşik bir mekanizma yoktur, bu nedenle betiklerde tam ayrıştırmaya güvenmek önerilmez (riskli olmasının yanı sıra). Bu seçeneği tedbirli ve yalnızca geçici bir ölçü olarak kullanın.

Sık sorulan sorular​​​​​​​

Çoğu durumda, dosyaları indiren veya web içeriğini metin olarak getiren betikler çalışmaya devam eder. İstemi önlemek için -UseBasicParsing parametresini ekleyin.

 Gelişmiş HTML ayrıştırma (formlar veya DOM gibi) kullanan betikler yapılandırılmış nesneler yerine ham verileri kilitleyebilir veya çıkışını alabilir; içeriği farklı şekilde işlemek için temel ayrıştırmaya geçmeniz veya betiğinizi değiştirmeniz gerekir. 

Güvenli ve etkileşimli olmayan yürütmeyi sağlamak için her zaman PowerShell betiklerinde Invoke-WebRequest komutuyla -UseBasicParsing parametresini kullanın.  

Evet. Eski ayrıştırmaya bağlı betikler, kabul etmek veya yeniden düzenlemek için güncelleştirilmelidir.

PowerShell'deki değişiklik hem standart güncelleştirmeler hem de sık erişimli güncelleştirmeler için geçerlidir ve bu da aynı davranış değişikliğine neden olabilir.

Evet. PowerShell 7 zaten varsayılan olarak güvenli ayrıştırma kullanır.

Destek planları için modül sahiplerine başvurun. Geçiş sırasında güvenilir içerik için geçici olarak kabul etme özelliğini kullanın.

Bu değişikliğe hazırlanmak ve bu değişikliği doğrulamak için şunları kullanmanızı öneririz: 

  • DOM özelliklerini kullanarak betikleri tanımlama.

  • Otomasyonu yeni varsayılan değerle test edin.

  • Eski kabul etme seçeneğini güvenilen kaynaklarla sınırlayın.

  • Güvenilmeyen içerik için yeniden düzenlemeyi planlayın.

Daha fazla yardıma mı ihtiyacınız var?

Daha fazla seçenek mi istiyorsunuz?

Abonelik avantajlarını keşfedin, eğitim kurslarına göz atın, cihazınızın güvenliğini nasıl sağlayacağınızı öğrenin ve daha fazlasını yapın.