悪意あるNuGetパッケージが「時限爆弾」を投下、2027年・2028年に作動予定

はじめに

複数の悪意あるNuGetパッケージが、2027年および2028年に作動するよう設定された破壊的なペイロードを投下していることが判明しました。これらのパッケージは、データベースの実装やシーメンスS7産業用制御デバイスを標的としており、感染したデバイスのパラメータに応じて作動するかどうかが決まる確率的なトリガーを使用しています。

発見された悪意あるパッケージ

コードセキュリティ企業Socketの研究者たちは、開発者名「shanhai666」で公開された9つの悪意あるパッケージをNuGet上で発見しました。これらのパッケージは、正規の機能と並行して有害なコードを含んでいました。

  • SqlUnicorn.Core
  • SqlDbRepository
  • SqlLiteRepository
  • SqlUnicornCoreTest
  • SqlUnicornCore
  • SqlRepository
  • MyDbRepository
  • MCDbRepository
  • Sharp7Extend

特に危険なのは「Sharp7Extend」で、これはシーメンスのプログラマブルロジックコントローラー(PLC)とのイーサネット通信に使用される正規のSharp7ライブラリのユーザーを標的としています。Socketの研究者たちは、「信頼されているSharp7の名前に『Extend』を付加することで、脅威アクターはSharp7の拡張機能や強化機能を検索する開発者を悪用している」と述べています。これらのパッケージは、ダウンロード数が約9,500に達した後、記事執筆時点では削除されています。

「時限爆弾」の仕組み

Socketの研究者によると、これらのパッケージは99%が正規のコードで構成されており、安心感と信頼を偽装していますが、わずか20行の悪意あるペイロードを含んでいます。このマルウェアは、C#の拡張メソッドを悪用し、すべてのデータベースおよびPLC操作に悪意あるロジックを透過的に注入します。

拡張メソッドは、アプリケーションがデータベースクエリやPLC操作を実行するたびに実行されます。また、侵害されたシステムの現在の日付が、2027年8月8日から2028年11月29日までのハードコードされたトリガー日付と照合されます。日付条件が一致した場合、コードは1から100までの乱数を生成し、それが80より大きい場合(20%の確率で)、ホストプロセスを即座に終了させる「Process.GetCurrentProcess().Kill()」を呼び出します。

Sharp7Extendの多層的な攻撃

正規のSharp7ライブラリを模倣した「Sharp7Extend」パッケージは、異なるアプローチも採用しています。2028年6月6日まで、20%の確率でPLC通信を即座に終了させます。また、別の妨害方法として、存在しない設定値からの読み取りを試み、初期化を常に失敗させるコードも含まれています。

さらに、このパッケージはPLC内部操作のフィルター値を生成し、ペイロード実行に30分から90分の遅延を設定します。この時間が経過した後、フィルターを通過するPLC書き込みは80%の確率で破損する可能性があり、その結果、アクチュエータがコマンドを受信しなかったり、設定値が更新されなかったり、安全システムが作動しなかったり、生産パラメータが変更されなかったりする事態を引き起こします。

Socketの研究者たちは、「即時的なランダムプロセス終了(BeginTran()経由)と遅延型書き込み破損(ResFliter経由)の組み合わせは、時間とともに進化する洗練された多層攻撃を生み出す」と説明しています。

推奨される対策

これらの拡張機能の正確な目的と起源は不明ですが、影響を受ける可能性のある組織は、直ちに9つのパッケージについて資産を監査し、いずれかが存在する場合は侵害を想定する必要があります。Sharp7Extendを実行している産業環境では、PLC書き込み操作の整合性を監査し、安全システムログでコマンドの欠落や作動失敗を確認し、重要な操作には書き込み検証を実装することが推奨されます。


元記事: https://www.bleepingcomputer.com/news/security/malicious-nuget-packages-drop-disruptive-time-bombs/