シマンテックのwpsdrvnt で BSoD になったので原因を晒してみる

仕事で使ってるXPがBSoDで死んでたのですが、その原因が Symantecだったので、デバッグして、原因を晒してみるよ・ω・

A problem has been detected and Windows has been shut down to prevent damage
to your computer.

The problem seems to be caused by the following file: wpsdrvnt.sys

DRIVER_IRQL_NOT_LESS_OR_EQUAL

If this is the first time you've seen this stop error screen,
restart your computer. If this screen appears again, follow
these steps:

Check to make sure any new hardware or software is properly installed.
If this is a new installation, ask your hardware or software manufacturer
for any Windows updates you might need.

If problems continue, disable or remove any newly installed hardware
or software. Disable BIOS memory options such as caching or shadowing.
If you need to use safe mode to remove or disable components, restart
your computer, press F8 to select Advanced Startup Options, and then
select Safe Mode.

Technical Information:

*** STOP: 0x100000d1 (0x00000000, 0x00000002, 0x00000008, 0x00000000)

*** wpsdrvnt.sys - Address 0xb99bbc9b base at 0xb99b8000 DateStamp 0x4f73cbd4


やり方については、以前の記事

BSoDを解析してみたよ

が参考になると思います。

3: kd> !analyze -v

DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1)

READ_ADDRESS:  00000000

CURRENT_IRQL:  2

FAULTING_IP:
+fc
00000000 ??              ???

PROCESS_NAME:  svchost.exe

CUSTOMER_CRASH_COUNT:  1

DEFAULT_BUCKET_ID:  DRIVER_FAULT

BUGCHECK_STR:  0xD1

LAST_CONTROL_TRANSFER:  from b99bbc9b to 00000000

FAILED_INSTRUCTION_ADDRESS:
+fc
00000000 ??              ???

STACK_TEXT:  
WARNING: Frame IP not in any known module. Following frames may be wrong.
a1150210 b99bbc9b 00000000 00000016 a11502d0 0x0
a1150250 a182e86c 00000002 00000016 a11502d0 wpsdrvnt+0x3c9b
a11502ec a182e6b0 8837d480 01cea8c0 00008a00 tcpip!UDPDeliver+0x1be
a1150344 a182e47a 8837d480 ffcea8c0 01cea8c0 tcpip!UDPRcv+0x240

見てみると、 wpsdrvnt が NullPointer をコールして死んでるように見える。

WPSDRVNT が何なのか確認してみると

WPSDRVnt.sys
内部名: wpsdrv.sys
Version: 11.0.7200.157
Symantec CMC Firewall WPS
Copyright c 2012 Symantec Corporation.
All rights reserved. Use of this product is subject to license terms.

Symantecのファイアーウォールドライバですね。

 L10003C36:
          push    ebx
          mov    ecx,L1000B258
          call    [HAL.dll!KfAcquireSpinLock]
          imul    edi,00000298h
          mov    ecx,[L1000B2F0]
          add    ecx,edi
          mov    [L1000B25C],al
          mov    edi,[ecx+0000025Ch]
          mov    ebx,[ecx+00000260h]
          mov    dl,al
          mov    ecx,L1000B258
          call    [HAL.dll!KfReleaseSpinLock]
          mov    edx,[esp+3Ch]
          mov    eax,[esp+38h]
          mov    ecx,[esp+34h]
          push    edx
          mov    edx,[esp+34h]
          push    eax
          mov    eax,[esp+30h]
          push    ecx
          mov    ecx,[esp+30h]
          push    edx
          mov    edx,[esp+30h]
          push    ebp
          push    eax
          mov    eax,[esp+30h]
          push    ecx
          push    edx
          push    esi
          push    eax
          push    ebx
          call    edi         <- EDI = 0
          mov    ebx,eax
          cmp    ebx,C0000016h
          jnz    L10003CF7

コールアドレスが 0になっていますね

 CASE_10004638_PROC0004:
          mov    eax,[esi+18h]
          push    eax
          call    SUB_L100068F0
          mov    edi,eax
          cmp    edi,FFFFFFFFh
          jz     CASE_1000460C_PROC0003
          cmp    dword ptr [esi+08h],00000000h
          jz     CASE_1000460C_PROC0003

          mov    ecx,L1000B258
          call    [HAL.dll!KfAcquireSpinLock]
          mov    edx,[L1000B2F0]
          mov    [L1000B25C],al
          mov    ecx,[esi+0Ch]
          mov    eax,edi
          imul    eax,00000298h
          mov    [eax+edx+00000260h],ecx
          mov    ecx,[esi+08h]
          mov    edx,[L1000B2F0]
          mov    [eax+edx+0000025Ch],ecx
          mov    dl,[L1000B25C]
          mov    ecx,L1000B258
          call    [HAL.dll!KfReleaseSpinLock]
          mov    dword ptr [esi+08h],L10003C00
          jmp    L100045FB

少し前の割り込みでコールアドレス代入する箇所があるんですが、その値が 0になってるみたい(赤字)ですね。
でも、さらに少し前のところで、 0になってるかどうかのチェックが行われています。

なので、本来は起こりえない処理なのですが、この間に [esi+8]の値が0に書き換わってしまったか、どこかの処理で、メモリ上書きしてしまった、としか考えられませんね ・ω・ どちらにしてもSEPのドライバのメモリ上の話なので、 Symantecのバグという事は確実でしょう。

システム障害:STOP エラー 0x000000d1 (0x00000000, 0xd0000002, 0x00000008, 0x00000000)発生原因について
ThinkPad X60 待機状態からの復帰でBSOD STOPコード0x
000000D1発生

おそらく、この人も同じ障害

うちはいつ障害が発生したかというと、スクリーンセーバーが解除された瞬間。とリモートログインした瞬間でこの人と同じなので、多分WTS の状態変化が引き金になってると思われます

以前、Symantec にはレポート送ったんだけど 受付が中国の人っぽくて頼りないなかったっす ・ω・



おすすめ

4件のフィードバック

  1. 名無し より:

    セキュリティソフトって、厨國製ばかりなんですかね?
    考えたくは無いのですが、変なバックドア仕込まれていそうで、ちょっと怖いんですが・・・

  2. 名無し より:

    セキュリティソフトって、厨國製ばかりなんですかね?
    考えたくは無いのですが、変なバックドア仕込まれていそうで、ちょっと怖いんですが・・・

  3. 黒翼猫 より:

    中国関わってるのは多いですね。
    シマンテックは、日本向けサポートにコストの安い中国エンジニアたくさん使ってるので、
    サポート品質については酷いです・ω・

  4. 黒翼猫 より:

    中国関わってるのは多いですね。
    シマンテックは、日本向けサポートにコストの安い中国エンジニアたくさん使ってるので、
    サポート品質については酷いです・ω・

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です