注意: 03/11/2020、Avast はこのインタプリタをグローバルに無効にすることを発表しました!
メインのAvastアンチウイルスプロセスは AvastSvc.exe と呼ばれ、SYSTEM として実行されます。

そのサービスは低レベルのアンチウイルスエンジンをロードし、ファイルシステムミニフィルタや傍受されたネットワークトラフィックなどのソースから受信した信頼できないデータを分析します。
高い権限を持ち、設計上信頼できない入力を処理しているにもかかわらず、サンドボックス化されておらず、緩和策のカバレッジも貧弱です。このプロセスの脆弱性はすべて重大であり、リモート攻撃者が容易にアクセスできます。
つまり...カスタムJavaScriptインタプリタが含まれているのはあまり良くないかもしれません....???? 🙃

このリポジトリには、脆弱性調査のためにLinux上でインタプリタをテストできる対話型シェルが含まれています。
試す方法はこちらです。まず依存関係をインストールします。
$ sudo apt install libreadline-dev:i386 libc6-dev-i386 gcc-multilib
$ sudo yum install readline-devel.i686 glibc-devel.i686 libgcc.i686
これでこのリポジトリをクローンできます。
$ git clone https://github.com/taviso/avscript.git
$ cd avscript
$ git submodule update --init --recursive
すべて問題なければ、ビルドすると avscript が準備完了になります。
$ make
パフォーマンス上の理由から、Avast は遭遇したすべてのJavaScriptファイルを解釈するわけではなく、ヒューリスティックを使用して必要性を判断します。このリポジトリに含まれている javascript.txt ファイルを追加すると、常にヒューリスティックがトリガーされることを発見しました。
例えば、脆弱性を発見し、Windows上で再現したい場合は、最初に次のようにします:
$ cat yourtestcase.js javascript.txt > ReproForWindows.js
次に、期待通りに動作するか確認します。例:
$ ./avscript ReproForWindows.js
main(): File ReproForWindows.js` loaded, about to initialize interpreter...
Segmentation fault (core dumped)
そして、クラッシュがWindowsでも再現することを確認します。
Avast サービスは保護プロセスであり、ユーザースペースからデバッグするのは難しいです。kd が構成されている場合は、これを解除することでユーザースペースでのデバッグが正常に機能するようになります。
32ビットで動作する簡単な解決策は次の通りです(PatchGuard はx64ではこれを許可しないため、ブレークポイントコマンド を使用して同様のことを行うことができます)。

また、「トラブルシューティング」の下にある「自己防御を有効にする」という設定を無効にする必要があります。この設定は、SSDT での OpenProcess() のフックを無効にすると考えられます。通常、そこでは自身のプロセスをブラックリストに登録しています。
アタッチ中に、サービスが一時停止している間、ファイルシステム操作がデッドロックしないように、Avast UI の「シールド」を一時的に無効にする必要があるかもしれません。
Avast はエンジンのシンボルを公開していませんが、IDA や gdb でのデバッグは可能です。loadlibrary ドキュメント に、Linux から Windows コードをデバッグするための注意点があります。
IDA を使用したい場合は、gdbserver バックエンドを使用することをお勧めします。
次のように使用します。最初に gdbserver パッケージをインストールする必要があるかもしれません:
$ gdbserver 0.0.0.0:23946 ./avscript
これは驚くほどよく機能し、疑似コードブレークポイントも機能します。

脆弱性を発見した場合、それはおそらく重大でワーム化可能です。
🔥 緊急に報告してください。 🔥