Görseldeki hata ile dump dosyasındaki hata aynı değil. Görsel nereden tam olarak?
Rich (BB code):
KERNEL_SECURITY_CHECK_FAILURE (139)
A kernel component has corrupted a critical data structure. The corruption.
could potentially allow a malicious user to gain control of this machine.
Arguments:
Arg1: 0000000000000003, A LIST_ENTRY has been corrupted (i.e. double remove).
Arg2: ffffbd081241eda0, Address of the trap frame for the exception that caused the BugCheck.
Arg3: ffffbd081241ecf8, Address of the exception record for the exception that caused the BugCheck.
Arg4: 0000000000000000, Reserved.
Hatanın işaretlediğim ilk parametresi bir lıst_entry'nin bir şekilde bozulduğunu gösteriyor. Bu bir
bağlı liste veri yapısını ifade ediyor. İşaretlediğim bir diğer parametre, bize hataya sebep olan özel durumun nasıl oluştuğuna dair bazı ayrıntılar sağlayan bir başka kayıt adresini içeriyor.
Rich (BB code):
12: kd> .exr 0xffffbd081241ecf8.
ExceptionAddress: fffff80690e45b97 (nt!CmpReferenceKeyControlBlock+0x0000000000000107)
ExceptionCode: c0000409 (Security check failure or stack buffer overrun)
ExceptionFlags: 00000001.
NumberParameters: 1
Parameter[0]: 0000000000000003.
Subcode: 0x3 FAST_FAIL_CORRUPT_LIST_ENTRY
Dosyadaki mevcut duruma ait hata türünü içeren kod oldukça genel bir hata kodudur. Yani, birbirinden farklı bir sürü durum için geçerli olabilir.
Rich (BB code):
12: kd>!error c0000409
Error code: (NTSTATUS) 0xc0000409 (3221226505) - The system detected an overrun of a stack-based buffer in this application. This overrun could potentially allow a malicious user to gain control of this application.
Bu noktada kayıtta mavi ile işaretlediğim hata kodunun bir alt katmanının daha ilgi çekici olduğunu söylemek gerekiyor. Bu, liste işlemlerini kontrol etmek için kullanılan güvenlik onaylama özelliğini gösteriyor, aslında bir
fastfail hatası o noktada hiçbir kurtarma protokolünün çağrılmayacağını ve sistemin hemen mavi ekrana geçeceğini gösteriyor.
Rich (BB code):
nt!CmpReferenceKeyControlBlock+0x107:
fffff806`90e45b97 cd29 int 29h // Bu dosyadaki FAST_FAIL_CORRUPT_LIST_ENTRY hatasını ifade ediyor
fffff806`90e45b99 ff0dc1966a00 dec dword ptr [nt!CmpDelayedCloseElements (fffff806`914ef260)]
fffff806`90e45b9f 488910 mov qword ptr [rax],rdx
fffff806`90e45ba2 48894208 mov qword ptr [rdx+8],rax
fffff806`90e45ba6 48ff0d8b287900 dec qword ptr [nt!CmPerfCounters+0x8 (fffff806`915d8438)]
fffff806`90e45bad 48894908 mov qword ptr [rcx+8],rcx
fffff806`90e45bb1 488909 mov qword ptr [rcx],rcx
fffff806`90e45bb4 f0830c2400 lock or dword ptr [rsp],0
Dosyandaki stack dökülmüyor. Fark ettiğim şey stack Pointer'ın geçersiz durumda olması, muhtemelen sp bir şekilde geçersiz durumda. Stack'leri elimle düzenleyip paylaşacağım.
Rich (BB code):
STACK_TEXT:
ffffbd08`1241ef30 fffff806`90e44b53 : nt!CmpReferenceKeyControlBlock+0x107 << Çökme noktası.
ffffbd08`1241ef70 fffff806`90e74792 : nt!CmpPerformCompleteKcbCacheLookup+0x373
ffffbd08`1241f040 fffff806`90e5aa09 : nt!CmpDoParseKey+0x332
ffffbd08`1241f2a0 fffff806`90e58a02 : nt!CmpParseKey+0x489
ffffbd08`1241f480 fffff806`90e57101 : nt!ObpLookupObjectName+0x3c2
ffffbd08`1241f640 fffff806`91047cf4 : nt!ObOpenObjectByNameEx+0x201
ffffbd08`1241f790 fffff806`90dc5a3d : nt!CmOpenKey+0x2f4
ffffbd08`1241f8a0 fffff806`9089a4d4 : nt!CmOpenKeyCallout+0x2d
ffffbd08`1241f8e0 fffff806`90aa51f5 : nt!KeExpandKernelStackAndCalloutInternal+0xd4
ffffbd08`1241f950 fffff806`910d6e11 : nt!KeExpandKernelStackAndCallout+0x15 << Stack'leri N bayt genişlet.
ffffbd08`1241f990 fffff806`90cb8655 : nt!NtOpenKeyEx+0xc1
ffffbd08`1241fa20 00007ff8`e98444c4 : nt!KiSystemServiceCopyEnd+0x25
000000e8`0814abb8 00000000`00000000 : 0x00007ff8`e98444c4
Stack'ler bir dizi kayıt defteri anahtarı sürecini gösteriyor. Bu bakımdan ham Stack'ler de ilgili kayıt defterini anahtarını gösteriyor olmalılar.
Rich (BB code):
12: kd> du ffffd50e81a6c9d4.
MACHINE\SYSTEM\ControlSet001\Control\Cryptography\ECCParameters
Hatadan zaten bir sürücünün kayıt defterine kötü sonuçlarla bir güncelleme eklemeye çalıştığı anlaşılıyor. Esasen, çağrı yığınından bir kayıt defteri anahtarının açıldığı ve bir anahtar kontrol bloğunun(_cm_key_control_block) oluşturulacağı, ancak oluşturma sırasında bir hata oluştuğu ve bunun da çökmeye neden olduğu anlaşılabiliyor.
Kayıt defteri ile ilgili her bilgi de minidump dosyalarında tutulmuyor. Aşağıdaki dosya varsa konuya eklemen iyi olabilir. O büyüklükte bir dosyayı da ancak yarın akşam inceleyebileceğimi de belirtmem gerek.
Eğer yoksa tavsiyem
sürücü doğrulayıcı çalıştırıp sürücülerini kontrol etmen olur. Eğer sürücü doğrulayıcı açıldıktan sonra sistem yeniden başlatma esnasında mavi ekran vermezse 24 saat boyunca arka planda açık kalmasını da tavsiye ederim. Hatalı bir sürücü varsa ancak böyle yakalanabilme ihtimali var...