GitHubの偽セキュリティツール、2,000台超に侵入
出典: docs.github.com

GitHub上のセキュリティツールや解析用リポジトリを装ったプロジェクトに、バックドアや情報窃取マルウェアが仕込まれていました。Doctor Webの調査時点で感染端末は2,000台を超え、攻撃対象は暗号資産利用者から情報セキュリティ分野の開発者にも広がっています。

偽リポジトリの対象がセキュリティ開発者に拡大

この攻撃は約2年前に始まり、当初はブロックチェーンゲームやゲーム用ボット、チートツールなどを装って暗号資産ウォレットの利用者を狙っていました。最近はスキャンの自動化、セキュリティテスト、ログ解析に使うプロジェクトを装い、セキュリティ分野の開発者も標的にしています。

見つかった例には、ネットワークスキャナー「Fscan」の出力を解析・整形する軽量スクリプトを名乗るリポジトリがあります。Doctor Webは、Visual Studioのプロジェクトファイルに加え、PythonやGoのソースコードにも悪意あるコードを確認しました。

コードは長い空白の後ろに隠されることがあり、Visual Studioのプロジェクトではビルド前に実行する処理に仕込まれていました。感染ファイルを取得するとPowerShellスクリプトが動き、暗号化された文字列からダウンロード先を得て、Electronベースのローダー「Microsoft.exe」を展開します。

ローダーが防御機能を回避し複数のマルウェアを展開

ローダーは端末で自動起動するよう設定し、権限を高めたうえでWindowsのセキュリティ機能や復元機能を無効化し、正規プロセスに次段階のコードを注入します。標準のMode3では、explorer.exeを親プロセスに見せかけるほか、Smart App Controlの設定変更や、セキュリティソフトの監視を妨げる処理を行います。

Mode3でマルウェアを起動できない場合はMode2に切り替わり、Windows Defenderの除外設定を追加して、PowerShellで復号したコードをRegAsm.exeへ注入します。Doctor Webは、別の起動方式としてMode3に似たMode3nonや、設定ファイルを使わないHandlerも確認しています。

端末には遠隔操作用のAsyncRAT、クリップボード内の暗号資産アドレスを差し替えるクリッパー、情報窃取型マルウェアが展開されます。情報窃取型マルウェアはブラウザー情報、VPN設定、FTPクライアントの設定、ゲームアカウント情報、Discordトークンなどを集め、Telegramのボット経由で送信します。

Visual Studioのビルド前処理を確認する

Visual Studioのpre-build eventは、ビルド開始前に実行するコマンドを指定する仕組みです。プロジェクトのプロパティにある「Build Events」でコマンドを設定できます。ビルドが該当段階まで進まない場合や、ビルド対象のファイルがない場合はイベントが実行されません。

Visual Studio 2017向けのMicrosoft Learn資料では、プロジェクトのプロパティの「Build Events」タブでpre-build eventのコマンドを確認する手順が示されています。イベントの実行結果はVisual StudioのOutputウィンドウで「Build」を選ぶと確認できます。プロジェクトが最新でビルドが発生しない場合、pre-build eventは動きません。

ビルド環境を分離し実行内容を追跡

GitHubはビルドシステムの保護策として、手順を明確かつ再現可能にし、ビルド中に何が実行されたか把握できる状態にすることを挙げています。また、各ビルドを新しい環境で開始することも推奨しており、GitHub Actionsでは実行ごとに新しいランナーイメージを使います。

GitHubのアーティファクト証明は、ビルド成果物の出所や完全性を検証するための署名付き情報です。ワークフロー、リポジトリ、組織、環境、コミットID、実行のきっかけなどを含められ、成果物とソースコード、ビルド手順の関係を確認できます。

開発ツールを提供するAstralは、開発やリリースに関わる重要な処理を開発者のローカル端末から離し、管理・観察できる環境で実行しています。同社はGitHub Actionsの権限を既定で読み取り専用にし、秘密情報もデプロイ環境ごとに分けています。また、外部からの未信頼コードを実行する場合は、第三者のプルリクエストに特権情報を渡さない安全なトリガーを使う必要があると説明しています。

Doctor Webは、ローダーの実行を維持し、端末から削除された場合に再取得するための未完成の機能も見つけました。攻撃者が新機能の追加を進めている兆候として、未使用の処理から別のアーカイブをダウンロード・展開する仕組みも確認されています。