
13 Ekim 2026 Windows güvenlik güncellemesinden sonra bazı kullanıcıların kurumsal Wi-Fi, 802.1X kablolu ağ veya VPN bağlantılarında otomatik oturum açması aniden çalışmayı bıraktıysa, sebep büyük ihtimalle BlockNtlmv1SSO. Bu yazıda sorunun ne olduğunu, hangi cihazları etkilediğini ve Microsoft Intune ile nasıl yönetileceğini anlatıyorum. Yazının sonunda Proactive Remediation scriptleri ile hazır .intunewin paketini indirebilirsiniz.
Sorun ne?
Microsoft, NTLMv1 protokolünü Windows 11 24H2 ve Windows Server 2025 ile tamamen kaldırdı. Ancak NTLMv1 şifrelemesinin kalıntıları bazı senaryolarda hâlâ kullanılıyor. En yaygın örnek, domain ortamında MS-CHAPv2 tabanlı kimlik doğrulama yapan bağlantılar:
- PEAP-MSCHAPv2 ile kurumsal Wi-Fi
- EAP-MSCHAPv2 ile 802.1X kablolu ağ
- MS-CHAPv2 kullanan VPN bağlantıları
Bu bağlantılarda Windows, kullanıcının oturumundaki kimlik bilgilerinden NTLMv1 türevli bir kimlik bilgisi üretip sunucuya otomatik gönderiyor (Single Sign-On). Microsoft bu davranışı BlockNtlmv1SSO adlı yeni bir registry değeriyle kontrol ediyor (KB5066470).
Ne değişti?
| Tarih | Değişiklik |
|---|---|
| Ağustos 2025 | BlockNtlmv1SSO değeri ve Audit modu Windows 11 24H2 ve sonrasına geldi. NTLMv1 SSO kullanımı loglanıyor ama izin veriliyor. |
| Kasım 2025 | Aynı değişiklik Windows Server 2025’e yayılmaya başladı. |
| 13 Ekim 2026 | Registry değeri tanımlı değilse Windows artık varsayılan olarak Enforce modunda çalışıyor, yani NTLMv1 türevli SSO engelleniyor. |
Önemli iki ayrıntı:
- Güncelleme registry değerini oluşturmuyor veya değiştirmiyor. Değer yoksa davranış Enforce oluyor.
- Değişiklik sadece Credential Guard kapalı cihazları etkiliyor. Credential Guard açık cihazlarda NTLMv1 SSO zaten engelli olduğu için bu ayarın etkisi yok.
Registry değeri
| Yol | HKLM\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0 |
| Ad | BlockNtlmv1SSO |
| Tür | REG_DWORD |
| 0 – Audit | İstek loglanır ama izin verilir (Event ID 4024, Warning) |
| 1 – Enforce | İstek engellenir (Event ID 4025, Error) |
| Restart | Gerekmez |
Etkilenip etkilenmediğinizi nasıl anlarsınız?
Olaylar Applications and Services Logs > Microsoft > Windows > NTLM > Operational altında tutuluyor. Bir cihazda hızlıca kontrol etmek için:
Get-WinEvent -LogName "Microsoft-Windows-NTLM/Operational" -ErrorAction SilentlyContinue |
Where-Object Id -in 4024, 4025 |
Select-Object TimeCreated, Id, Message -First 20
Mevcut ayarı görmek için:
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0" -Name BlockNtlmv1SSO -ErrorAction SilentlyContinue
4025 eventleri görüyorsanız ve kullanıcılar Wi-Fi/VPN’e otomatik bağlanamıyorsa bu yazı tam olarak sizin durumunuzu anlatıyor. Kullanıcılar şifrelerini elle girdiğinde bağlantının çalıştığını göreceksiniz. Elle girişi bu ayar etkilemiyor.
Bu çözüm güvenliği nasıl etkiler?
Buradaki scriptler değeri 0 (Audit) yapıyor. Yani NTLMv1 türevli SSO’ya tekrar izin veriyorsunuz. Microsoft bunu yalnızca kalıcı çözüme geçene kadar kullanılacak geçici ve kapsamı dar bir güvenlik istisnası olarak tanımlıyor. Kalıcı çözüm:
- Wi-Fi, 802.1X ve VPN kimlik doğrulamasını EAP-TLS (sertifika tabanlı) gibi bir yönteme taşımak
- Gereksinimleri karşılayan cihazlarda Credential Guard‘ı açık tutmak
Etkilenmeyen cihazlara bu ayarı dağıtmayın. Intune’da sadece MS-CHAPv2 kullanan cihazları içeren bir grup hedefleyin.
Yöntem 1: Intune Remediations (Proactive Remediation)
Değeri sürekli kontrol edip biri değiştirirse geri düzelten yöntem budur.
Detection script
$RegistryPath = "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0"
$RegistryName = "BlockNtlmv1SSO"
$DesiredValue = 0
try {
if (-not (Test-Path $RegistryPath)) {
Write-Output "Registry path not found: $RegistryPath"
Exit 1
}
$CurrentValue = Get-ItemProperty `
-Path $RegistryPath `
-Name $RegistryName `
-ErrorAction SilentlyContinue
if ($null -eq $CurrentValue) {
Write-Output "$RegistryName does not exist."
Exit 1
}
$Value = $CurrentValue.$RegistryName
if ($Value -eq $DesiredValue) {
Write-Output "Compliant - $RegistryName = $Value"
Exit 0
}
else {
Write-Output "Non-Compliant - $RegistryName = $Value. Expected: $DesiredValue"
Exit 1
}
}
catch {
Write-Output "Detection Error: $($_.Exception.Message)"
Exit 1
}
Remediation script
$RegistryPath = "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0"
$RegistryName = "BlockNtlmv1SSO"
$DesiredValue = 0
try {
if (-not (Test-Path $RegistryPath)) {
New-Item `
-Path $RegistryPath `
-Force `
-ErrorAction Stop | Out-Null
}
New-ItemProperty `
-Path $RegistryPath `
-Name $RegistryName `
-Value $DesiredValue `
-PropertyType DWord `
-Force `
-ErrorAction Stop | Out-Null
$CurrentValue = (
Get-ItemProperty `
-Path $RegistryPath `
-Name $RegistryName `
-ErrorAction Stop
).$RegistryName
if ($CurrentValue -eq $DesiredValue) {
Write-Output "Remediation Successful - $RegistryName = $CurrentValue"
Exit 0
}
else {
Write-Output "Remediation Failed - Current value: $CurrentValue"
Exit 1
}
}
catch {
Write-Output "Remediation Error: $($_.Exception.Message)"
Exit 1
}
Intune ayarları
Devices > Scripts and remediations > Create yolunu izleyin:
- Run this script using the logged-on credentials: No (System olarak çalışmalı)
- Enforce script signature check: No
- Run script in 64-bit PowerShell: Yes
- Schedule: Günlük yeterli
Yöntem 2: Win32 uygulaması (.intunewin)
Remediations lisansınız yoksa (Windows Enterprise E3/E5 veya eşdeğeri gerekir) ya da ayarı bir kere uygulamak istiyorsanız Win32 uygulaması olarak dağıtabilirsiniz.
Paket içeriği
- Install.ps1: Remediation scriptiyle aynı işi yapar, değeri 0 olarak yazar ve doğrular. Logu
C:\ProgramData\Microsoft\IntuneManagementExtension\Logs\BlockNtlmv1SSO_Install.logdosyasına yazar. - Uninstall.ps1:
BlockNtlmv1SSOdeğerini siler. Ekim 2026 güncellemesi yüklü cihazlarda değerin olmaması Enforce (engelli) demektir. - Detection.ps1: Pakete dahil değildir, Intune’a ayrıca yüklenir.
Paketi kendiniz oluşturmak isterseniz
Microsoft Win32 Content Prep Tool (IntuneWinAppUtil.exe) ile:
$base = "C:\Intunewin\BlockNtlmv1SSO"
New-Item -ItemType Directory -Force "$base\Output" | Out-Null
.\IntuneWinAppUtil.exe -c "$base\Source" -s "Install.ps1" -o "$base\Output" -q
-c kaynak klasör, -s kurulum dosyası, -o çıktı klasörü, -q sessiz mod (varsa üzerine yazar).
Win32 detection script
# Intune Win32 custom detection: detected = exit 0 AND output on STDOUT
$RegistryPath = "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0"
$RegistryName = "BlockNtlmv1SSO"
$DesiredValue = 0
$Value = (Get-ItemProperty -Path $RegistryPath -Name $RegistryName -ErrorAction SilentlyContinue).$RegistryName
if ($null -ne $Value -and $Value -eq $DesiredValue) {
Write-Output "Detected - $RegistryName = $Value"
Exit 0
}
Exit 1
Intune ayarları
Apps > Windows > Add > Windows app (Win32) yolunu izleyin:
| Install command | %SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\Install.ps1 |
| Uninstall command | %SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\Uninstall.ps1 |
| Install behavior | System |
| Device restart behavior | No specific action |
| Detection rules | Use a custom detection script → Detection.ps1 |
| Run script as 32-bit process on 64-bit clients | No |
| Enforce script signature check and run script silently | No (script imzalı değil, Yes seçerseniz çalışmaz ve uygulama sürekli kurulmamış görünür) |
Script yerine registry kuralı tercih ederseniz: Registry → HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0, değer adı BlockNtlmv1SSO, Integer comparison, Equals, 0.
Dosyaları indirin
| Dosya | İçerik |
|---|---|
| BlockNtlmv1SSO-Remediation-Scripts.zip | Intune Remediations için Detect_BlockNtlmv1SSO.ps1 ve Remediate_BlockNtlmv1SSO.ps1 |
| BlockNtlmv1SSO-Win32-Scripts.zip | Win32 paketinin kaynak scriptleri: Install, Uninstall ve Win32 Detection |
| BlockNtlmv1SSO-intunewin.zip | Hazır BlockNtlmv1SSO.intunewin paketi (zip’ten çıkarıp Intune’a yükleyin) |
| BlockNtlmv1SSO-Intune-Paket.zip | Yukarıdaki tüm scriptler ve .intunewin paketi tek dosyada |
Not: WordPress güvenlik gereği .ps1 ve .intunewin dosyalarının doğrudan yüklenmesine izin vermediği için dosyalar zip olarak paylaşılıyor. İndirdiğiniz scriptleri çalıştırmadan önce içeriklerini kontrol edin ve önce bir test grubunda deneyin.



