Checkmarxは4月10日(米国時間)、「New Technique Detected in an Open Source Supply Chain Attack」において、GitHubリポジトリから悪意のあるVisual Studioプロジェクトが配布されたとして、注意を呼び掛けた。このプロジェクトをビルドすると悪意のあるコードが実行され、マルウェア「Keyzetsu Clipper」の亜種がインストールされるという。

  • New Technique Detected in an Open Source Supply Chain Attack

    New Technique Detected in an Open Source Supply Chain Attack

悪意のあるVisual Studioプロジェクトの詳細

Checkmarxによると、発見された悪意のあるVisual Studioプロジェクトは、多くの被害者を生み出すためにGitHubの検索システムを悪用するという。GitHubには「Sort by: Recently updated(最近更新されたもの)」という検索フィルターが存在する。この検索結果の上位に表示され続けるために、GitHub Actionsを利用して自動的に小さな変更を頻繁に繰り返す。

また、リポジトリの信頼性を向上させるために架空のユーザーを作成し、控えめな数の偽スターを追加するという。リポジトリのStargazersを確認すると、ほぼ同一期間に作成されたアカウントからスターが付けられており不自然なことがわかる。

  • 同一期間に作成されたアカウントによる不自然なスター付け - 引用:Checkmarx

    同一期間に作成されたアカウントによる不自然なスター付け 引用:Checkmarx

悪意のあるコードはリポジトリの「.csproj」または「.vcxproj」ファイルに埋め込まれており、ビルドプロセスの初期段階(PreBuildEvent)にて実行される。VBScriptで記述されたこのコードは難読化されたPowerShellスクリプトを展開して実行する。PowerShellスクリプトは次の処理を実行する。

  • 環境のIPアドレスから国コードを区別し、ロシアで実行されているか判断する
  • 国コードに基づいて特定のURLから暗号化されたペイロードをダウンロードする
  • ペイロードを復号して実行する
  • 「.vcxproj」に埋め込まれた悪意のあるコード - 引用:Checkmarx

    「.vcxproj」に埋め込まれた悪意のあるコード 引用:Checkmarx

マルウェア「Keyzetsu Clipper」の亜種

最終的に実行されるマルウェアはセキュリティソリューションの検出を回避するために、サイズを750MBにパディングしているという。そのため、VirusTotalに登録・調査することはできない。

マルウェアを分析したところ、「Keyzetsu Clipper」と類似点があるとされ、その亜種とみられている。このマルウェアはクリップボードを監視して暗号資産ウォレットのアドレスを攻撃者のアドレスに差し替える機能を持ち、暗号資産を窃取するとされる。

対策

Checkmarxはこのような攻撃を回避するために、次のような対策を推奨している。

  • リポジトリの存続期間に対して多すぎるコミット数が存在したり、同じファイルに繰り返したりするコミットがある場合は注意する
  • リポジトリのStargazersを確認し、同一期間に作成されたアカウントからスターが付けられていないかどうかを確認する

Checkmarxは開発者に対し、オープンソースを盲目的に信用することは無責任だとして、徹底したコードレビューを実施して採用するように求めている。また、xzの事案のようにアップデート後に悪意のあるコードが追加されることがあるため、セキュリティソリューションによるコード検査の徹底も推奨されている。Checkmarxは、今回の調査の過程において判明したセキュリティ侵害インジケーター(IoC: Indicator of Compromise)を公開しており、必要に応じて活用することが望まれている。