at backyard

Color my life with the chaos of trouble.

GoでクロスコンパイルしたWindowsバイナリを利用したら、Windows Defenderに Trojan Wacatac.H!ml として検知された

GoのWailsで書いているアプリでM1 MacBook AirからWindows向けのバイナリをクロスコンパイルした際の起きたことメモ。

作成したWindowsバイナリを実際にWindowsマシン上で実行しようとしたらMicrosoftWindows Defenderから Trojan Wacatac.H!ml として検知されてしまった。
(ちなみに Trojan Wacatac.H!ml の正式な文字列はメモを取っていなかった...もしかしたら Trojan:Win32/Wacatac.H!ml とかそんな文字列だったかもしれない)

ロスコンパイル時の環境

  • M1 MacBook Air (macOS Monterey 12.6.1)
  • Goのversionは go version go1.19.2 darwin/arm64
  • Wailsのversionは v2.1.0

M1 macから M1以降のmacWindows(amd)向けのバイナリを作成したくて下記のようなコマンドを実行した。
(ちなみに -clean オプションはビルド後のディレクトリをきれいにしてからビルドするオプション)

wails build -clean -platform=darwin/arm64,windows/amd64

このようにして生成したバイナリをWindows側に持っていき実行しようとしたら誤検知されたという形となる。

Windows環境でコンパイルすることでご検知は回避できる

この問題だが、Windows環境でそのまま以下のコマンドを用いてバイナリを作成した場合は誤検知されない。
つまりmacからのクロスコンパイル時にのみ発生するようだ。

wails build -clean

似たような事案

Go言語で作成したプログラムがWindows Defenderに「Wacatac!ml」と誤検知される件と回避方法 という記事を見つけたが、ここで書かれている内容と同じだと考えている。

zenn.dev

こちらの方はソースコードレベルでの回避に成功しているようだが、私の方ではまだここまでの回避には至っていない。