LoginSignup
5
5

More than 5 years have passed since last update.

ノートンのSONAR(ヒューリスティック検知)の誤検知がヤバい

Posted at

ノートンが会社のPCにしかないので確認が不足しています。
間違いや勘違いがあるかもしれませんが予めご了承ください。

尚、環境はWindows7 + Symantec Endpoint Protection 12(細かいバージョンは忘れた)です。

始まりはこれ

snapshot-15-01-21-202115.png
https://twitter.com/nocd5/status/556052119568924672


会社でノートンの更新(→ Symantec Endpoint Protection 12)を促され更新したのですが、
bbLeanがSONARで引っかかるようになってしまいました。
メニューからVisual StudioやEXCELを起動した時に検知されてしまいます。

bbLeanだけの問題では無かった

しかし、これはbbLeanだけの問題では無かったことがサンプルプログラムを作ってみて分かりました。
外部プログラムを起動すると呼び出し元のプログラムがウィルスと誤検知されることがあるようです。

misdetect.cpp
#include <windows.h>

int main() {
    /////////////////////////////////////////////////////////////////////
    // ShellExecute(
    // NULL,
    // NULL,
    // "C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\IDE\\WDExpress.exe",
    // NULL,
    // NULL,
    // SW_SHOWNORMAL
    // );
    /////////////////////////////////////////////////////////////////////

    /////////////////////////////////////////////////////////////////////
    // SHELLEXECUTEINFO sei;
    // ZeroMemory(&sei, sizeof(sei));
    // sei.cbSize = sizeof(sei);
    // sei.hwnd = NULL;
    // sei.lpVerb = NULL;
    // sei.lpFile = "C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\IDE\\WDExpress.exe";
    // sei.lpParameters = NULL;
    // sei.lpDirectory = NULL;
    // sei.nShow = SW_SHOWNORMAL;
    // sei.fMask = SEE_MASK_DOENVSUBST | SEE_MASK_FLAG_NO_UI;
    // ShellExecuteEx(&sei);
    /////////////////////////////////////////////////////////////////////

    /////////////////////////////////////////////////////////////////////
    // STARTUPINFO si;
    // PROCESS_INFORMATION pi;
    // ZeroMemory(&si, sizeof(si));
    // si.cb=sizeof(si);
    // CreateProcess("C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\IDE\\WDExpress.exe",
    // NULL,
    // NULL,
    // NULL,
    // FALSE,
    // 0,
    // NULL,
    // NULL,
    // &si,
    // &pi);
    /////////////////////////////////////////////////////////////////////

    /////////////////////////////////////////////////////////////////////
    WinExec(
            "C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\IDE\\WDExpress.exe",
            SW_SHOWNORMAL
           );
    /////////////////////////////////////////////////////////////////////

    return 0;
}

上記をVC10でcl.exe misditect.cppでビルドすると
誤検知されるプログラムの出来がありです。
外部プログラムの起動方法は様々ありますが、どの方法でもNGでした。

コンパイラ依存がある?

上記のプログラムをMingw 4.8.1(TDM版)でビルドしたところ検知されませんでした。
(また、MingW 3.4.5でビルドすると検知されるという結果になりました。
しかし、ちょっと間をおいて再度MingW 3.4.5でビルドしたのですが、検知されなくなったので
バージョン依存は要調査)

Go言語でも

misdetect.go
package main

import "os/exec"

func main() {
    cmd := exec.Command("C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\IDE\\WDExpress.exe")
    cmd.Start()
} 

Go言語でもサンプルプログラムを書いてみたところ、こちらも誤検知されるという結果に。

また、(予め断っておきますが、nyagosに問題ありません)nyagosでもVisual Studioを起動してみると、誤検知されました。

管理者権限で実行すれば大丈夫

サンプルプログラムを管理者権限で実行すれば誤検知されませんでした。

まだまだ未確認の部分が多数ありますが、
根本的な原因や、回避方法などが分かったら追記したいと思います。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5