IntuneMicrosoft

KB5127648 Sonrası Wi-Fi Bağlantı Sorunu: BlockNtlmv1SSO ve Intune ile Çözümü

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.log dosyasına yazar.
  • Uninstall.ps1: BlockNtlmv1SSO değ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.

Kaynak

Mert Ozsoy

Bilgi teknolojileri alanında çalışıyor, Microsoft ekosistemi ve özellikle Intune üzerine yoğunlaşıyorum. Cihaz yönetimi, güvenlik ve kullanıcı deneyimi tarafında aktif olarak çözüm üretiyorum.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu