Malicious NuGet packages drop disruptive 'time bombs'

NuGet 上の複数の悪意のあるパッケージには、2027 年と 2028 年に起動が予定されている破壊工作ペイロードがあり、データベース実装とシーメンス S7 産業用制御デバイスを標的としています。

埋め込まれた悪意のあるコードは、確率的トリガーを使用しているため、感染したデバイス上の一連のパラメータによって起動したりしなかったりします。

NuGetは、オープンソースのパッケージ・マネージャーとソフトウェア配布システムで、開発者は自分のプロジェクトですぐに実行できる.NETライブラリをダウンロードして含めることができる。

Wiz

コード・セキュリティ企業Socketの研究者は、NuGet上で9つの悪意のあるパッケージを発見した。これらはすべて開発者名shanhai666で公開されており、有害なコードとともに正当な機能を備えていた。

これらのパッケージは、”戦略的に、.NETアプリケーションで使用される3つの主要なデータベース・プロバイダー(SQL Server、PostgreSQL、SQLite)すべてをターゲットにしている”。しかし、その中で最も危険なのはSharp7Extendで、シーメンスのプログラマブル・ロジック・コントローラ(PLC)とイーサネット上で通信するための正規のSharp7ライブラリのユーザーを標的にしている。

「信頼できるSharp7の名前に “Extend “を追加することで、脅威の主体はSharp7の拡張や機能強化を探している開発者を悪用する」とSocketの研究者は述べている。

shanhai666という開発者名の下で、NuGetは12のパッケージをリストアップしたが、そのうち悪意のあるコードを含んでいたのは9つだけだった:

  1. SqlUnicorn.Core
  2. SqlDbRepository
  3. SqlLiteRepository
  4. SqlUnicornCoreTest
  5. SqlUnicornCore
  6. Sqlリポジトリ
  7. MyDbリポジトリ
  8. MCDbリポジトリ
  9. Sharp7Extend

公開時点では、この開発者の名前でリストされているパッケージはありません。しかし、ダウンロード数がほぼ9,500に達した後にリストが削除されたことに注意すべきである。

2028年に向けてこっそり「爆弾」を仕掛ける

Socketの研究者によると、パッケージにはほとんど(99%)正当なコードが含まれており、偽の安全性と信頼感を作り出しているが、20行の小さな悪意のあるペイロードが含まれている。

「このマルウェアはC#の拡張メソッドを悪用して、すべてのデータベースとPLC操作に悪意のあるロジックを透過的に注入する」と、Socket社は今週のレポートで説明している

この拡張メソッドは、アプリケーションがデータベース・クエリやPLC操作を実行するたびに実行される。また、ハードコードされたトリガー日付(2027年8月8日から2028年11月29日までの範囲)に対して、侵害されたシステムの現在の日付の検証も行われている。

Trigger date
2028年11月のトリガー日
ソースはこちら:ソケット

日付の条件が一致した場合、コードは「Random」クラスを作成して 1~100 の間の数値を生成し、それが 80 より高い場合(20%の確率)、「Process.GetCurrentProcess().Kill()」を呼び出してホストプロセスを直ちに終了させる。

トランザクションメソッドや接続メソッドを頻繁に呼び出す典型的なPLCクライアントの場合、これは操作の即時停止につながります。

Sharp7Extend パッケージは、シーメンス S7 PLC 用の一般的な .NET 通信レイヤである正規の Sharp7 ライブラリになりすましており、20% のケースで PLC 通信を即座に終了するという、正反対のアプローチに従っている。このメカニズムは 2028 年 6 月 6 日に期限切れとなる。

Sharp7Extend パッケージの 2 番目の妨害手法は、存在しない構成値から読み取ろうとするコードです。その結果、初期化は常に失敗する。

2 つ目のメカニズムは、PLC 内部操作のフィルタ値を作成し、ペイロードの実行遅延を 30 分から 90 分の間に設定します。

この時間が経過すると、フィルタを通過した PLC 書き込みが破損する可能性が 80% になり、その結果、アクチュエータがコマンドを受信できなくなり、セットポイントが更新されなくなり、安全システムが作動しなくなり、生産パラメータが変更されなくなります。

Corrupting PLC writes
破損する PLC 書き込み
ソース:ソケット

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

これらの拡張機能の正確な目的と起源はまだ不明だが、影響を受ける可能性のある組織は、9つのパッケージが存在しないか直ちに資産を監査し、存在する場合は危殆化を想定することが推奨される。

Sharp7Extendが稼働している産業環境では、PLCの書き込み操作の完全性を監査し、安全システムのログにコマンドの見逃しや起動の失敗がないかチェックし、重要な操作には書き込み検証を実施すること。

.ia_ad { background-color:#width: 95%; max-width: 800px; margin: 15px auto; border-radius: 8px; border:1px solid #d6ddee; display: flex; align-items: stretch; padding: 0; overflow: hidden; }:0; overflow: hidden; } .ia_lef { flex: 1; max-width: 200px; height: auto; display: flex; align-items: stretch; } .ia_lef a { display: flex; width: 100%; height: 100%; } .ia_lef a img { width: 100%; height: 100%; border-radius: 8px 0 0 8px; margin: 0; display: block; } .ia_rig { flex: 2; padding:display: flex; flex-direction: column; justify-content: center; } .ia_rig h2 { font-size: 17px !important; font-weight: 700; color:#line-height: 1.4; font-family:margin: 0 0 14px 0; } .ia_rig p { font-weight: bold; font-size: 14px; margin: 0 0 clamp(6px, 2vw, 14px) 0; } .ia_button { background-color:#border:1px solid #3b59aa; color: black; text-align: center; text-decoration: none; border-radius: 8px; display: inline-block; font-size: 16px; font-weight: bold; cursor: pointer; padding:width: fit-content; } .ia_button a { text-decoration: none; color: inherit; display: block; } @media (max-width: 600px) { .ia_ad { flex-direction: column; align-items: center; } .ia_lef { max-width: 100%; } .ia_lef a img { border-radius: 8px 8px 0 0; } .ia_rig { padding:15px;
width: 100%;
}

.ia_button {
width: 100%;
margin: 0px auto;
}
}

秘密 セキュリティ・チートシート:スプロールからコントロールへ

古いキーのクリーンアップでも、AIが生成するコードのガードレールの設定でも、このガイドはチームが最初からセキュアに構築するのに役立ちます。

チートシートを入手して、秘密管理の手間を省きましょう。