PyTorch は、最も人気があり広く使用されている機械学習ツールキットの XNUMX つです。
(人工知能のリーダーボードのどこに位置するかについては言及しません。競争の激しい分野で広く使用されている多くのオープン ソース ツールと同様に、答えは質問者と、彼らがたまたま使用しているツールキットに依存するようです。彼ら自身。)
もともと Facebook (現在は Meta) によってオープンソース プロジェクトとして開発およびリリースされたこのソフトウェアは、2022 年後半に Linux Foundation に引き渡され、現在は PyTorch Foundation の保護下で実行されています。
残念ながら、 プロジェクトはサプライチェーン攻撃によって侵害されました 2022 年末のホリデー シーズン中、クリスマスの日 [2022-12-25] と大晦日の前日 [2022-12-30] の間。
攻撃者は悪意を持って Python パッケージを作成しました。 torchtriton
人気のある Python Package Index リポジトリである PyPI で。
名 torchtriton
PyTorch システム自体のパッケージの名前と一致するように選択され、危険な状況につながる PyTorch チームによる説明 (私たちの強調)次のように:
[A] 悪意のある依存パッケージ (
torchtriton
) […] は、PyTorch ナイトリー パッケージ インデックスで出荷されるものと同じパッケージ名で Python Package Index (PyPI) コード リポジトリにアップロードされました。 PyPI インデックスが優先されるため、 この悪意のあるパッケージは、公式リポジトリのバージョンではなくインストールされていました. この設計により、だれかがサード パーティのインデックスに存在するパッケージと同じ名前でパッケージを登録できるようになります。pip
デフォルトでそれらのバージョンをインストールします。
プログラム pip
、ちなみに、かつては次のように呼ばれていました pyinstall
であり、どうやら再帰的なジョークの略で、 pip installs packages
. 元の名前にもかかわらず、Python 自体をインストールするためのものではありません。Python ユーザーが、PyTorch や他の多くの一般的なツールなど、Python で記述されたソフトウェア ライブラリとアプリケーションを管理するための標準的な方法です。
サプライチェーンの策略にだまされた
不運にも危険な時期に PyTorch の pwned バージョンをインストールした人は、データを盗むマルウェアをコンピューターに埋め込まれてしまうことはほぼ確実です。
PyTorch 自身の短いが便利な情報によると マルウェアの分析、攻撃者は、感染したシステムから次の重要なデータの一部、ほとんど、またはすべてを盗みました。
- ホスト名、ユーザー名、システム上の既知のユーザー、およびすべてのシステム環境変数の内容を含むシステム情報。 環境変数は、プログラムが起動時にアクセスできるメモリのみの入力データを提供する方法です。多くの場合、クラウドベースのサービスへのアクセスを提供する暗号化キーや認証トークンなど、ディスクに保存する必要のないデータが含まれます。 既知のユーザーのリストは、
/etc/passwd
幸いなことに、実際にはパスワードやパスワード ハッシュは含まれていません。 - ローカルの Git 構成。 これは盗まれます
$HOME/.gitconfig
であり、通常、一般的な Git ソース コード管理システムを使用しているユーザーの個人的なセットアップに関する有用な情報が含まれています。 - SSH キー。 これらはディレクトリから盗まれます
$HOME/.ssh
. 通常、SSH キーには、SSH (セキュア シェル) 経由または SCP (セキュア コピー) を使用して、独自のネットワークまたはクラウド内の他のサーバーに安全に接続するために使用される秘密キーが含まれます。 多くの開発者は、秘密鍵の少なくとも一部を暗号化せずに保持しています。これにより、使用するスクリプトやソフトウェア ツールは、パスワードやハードウェア セキュリティ キーを毎回要求するために一時停止することなく、リモート システムに自動的に接続できます。 - サイズが 1000 キロバイトより小さい、ホーム ディレクトリ内の最初の 100 個の他のファイル。 PyTorch マルウェアの説明には、「最初の 1000 個のファイル リスト」がどのように計算されるかは記載されていません。 ファイル リストの内容と順序は、リストがアルファベット順にソートされているかどうかによって異なります。 ディレクトリ内のファイルを処理する前、処理中、または処理後にサブディレクトリにアクセスするかどうか。 隠しファイルを含めるかどうか。 ディレクトリを通過するコードでランダム性が使用されているかどうか。 おそらく、サイズのしきい値を下回るファイルは、最終的に盗まれる可能性があると想定する必要があります。
この時点で、良いニュースについて言及します。 いわゆる「ナイトリー」または実験的バージョンのソフトウェアを取得した人だけが危険にさらされました. (「ナイトリー」という名前は、通常、毎営業日の終わりに自動的に作成される最新のビルドであることから来ています。)
ほとんどの PyTorch ユーザーはおそらく固執するでしょう この攻撃の影響を受けなかった、いわゆる「安定」バージョン.
また、PyTorch のレポートから、 Triton マルウェア実行可能ファイルは、特に 64 ビット Linux 環境を標的にしていました.
したがって、Windows Subsystem for Linux (WSL) がインストールされている場合、この悪意のあるプログラムは Windows コンピューターでのみ実行されると想定しています。
ただし、定期的な「ナイトリー」をインストールする可能性が最も高い人々には、PyTorch 自体またはそれを使用するアプリケーションの開発者が含まれていることを忘れないでください。おそらく、企業ビルドへの秘密鍵ベースのアクセス権を持つ社内開発者が含まれます。 、テストおよび本番サーバー。
DNS データ盗用
興味深いことに、Triton マルウェアはデータを盗み出しません (サイバーセキュリティ業界が、 盗む or 違法コピー) HTTP、HTTPS、SSH、またはその他の高レベル プロトコルを使用します。
その代わりに、盗もうとするデータを暗号化し、犯罪者が管理するドメイン名に属する一連の「サーバー名」のようにエンコードします。
これは、一連の DNS ルックアップを行うことで、詐欺師が偽のリクエストごとに少量のデータをこっそり持ち出すことができることを意味します。
これは、によって使用されたのと同じ種類のトリックです Log4Shell ハッカー 2021 年末に、インメモリ環境変数から略奪された秘密の AWS アクセス キーの値である「名前」を使用して「サーバー」の DNS ルックアップを行い、暗号化キーを漏洩しました。
つまり、無意味であるとしても無害に見えるものは、次のような「サーバー」の DNS ルックアップです。 S3CR3TPA55W0RD.DODGY.EXAMPLE
にリストされている公式の DNS サーバーに向けられた単純なルックアップを装って、アクセスキーを静かに漏らします。 DODGY.EXAMPLE
ドメイン。
ライブ LOG4SHELL デモで DNS 経由のデータ流出を説明
ここでテキストがはっきりと読めない場合は、フル スクリーン モードを使用するか、 直接見る ユーチューブで。
ビデオ プレーヤーの歯車をクリックして、再生を高速化するか、字幕をオンにします。
詐欺師がドメインを所有している場合 DODGY.EXAMPLE
、これらのルックアップを行うときに接続するDNSサーバーを世界に伝えることができます.
さらに重要なことは、HTTP、SSH、およびその他の高レベルのデータ共有プロトコルを使用して、TCP ベースのネットワーク接続を厳密にフィルタリングするネットワークでさえ…
…DNS ルックアップに使用される UDP ベースのネットワーク接続をまったくフィルタリングしない場合があります。
詐欺師にとって唯一の欠点は、DNS リクエストのサイズがかなり制限されていることです。
個々のサーバー名は 64 文字(A ~ Z、37 ~ 0、ダッシュまたはハイフン記号)からなる 9 文字に制限されており、多くのネットワークでは、囲まれたすべてのリクエスト、ヘッダー、メタデータを含む個々の DNS パケットをそれぞれ 512 バイトに制限しています。
これが、この場合のマルウェアが最初にユーザーの秘密鍵を追跡し、その後、それぞれが 1000 バイト未満の最大 100,000 個のファイルに制限された理由であると推測しています。
こうすることで、攻撃者は大量の DNS ルックアップを生成することなく、特にサーバー アクセス キーを含む大量のプライベート データを盗むことができます。
異常に多数の DNS lookuo が、特にサイバーセキュリティ目的で適用される監視がない場合でも、日常的な運用上の理由で注目される可能性があります。
何をするか?
PyTorch はすでにこの攻撃をシャットダウンするためのアクションを実行しているため、まだ攻撃を受けていない場合は、ほぼ確実に攻撃を受けることはありません。 torchtriton
PyPI のパッケージは、故意に「ダッド」な同じ名前の空のパッケージに置き換えられました。
これは、インストールしようとした人またはソフトウェアが torchtriton
2022-12-30T08:38:06Z の後に PyPI から送信された場合、偶然または意図的にマルウェアを受信することはありません。
PyTorch は便利な IoC のリストを公開しています。 侵入の痕跡、ネットワーク全体で検索できます。
上で述べたように、ほとんどすべてのユーザーがこの攻撃の影響を受けなかった「安定版」バージョンに固執している場合でも、安定版を使用している場合でも、「ナイトリー」を試す開発者や愛好家がいる可能性があることを覚えておいてください。同じくリリース。
PyTorch によると:
- マルウェアはファイル名でインストールされます
triton
. デフォルトでは、サブディレクトリにあると予想されますtriton/runtime
Python サイトのパッケージ ディレクトリにあります。 ただし、ファイル名だけではマルウェアの指標としては弱いため、このファイルの存在を危険の証拠として扱ってください。 その不在をすべてクリアとして扱わないでください。 - この特定の攻撃のマルウェアには、SHA256 サムがあります。
2385b29489cd9e35f92c072780f903ae2e517ed422eae67246ae50a5cc738a0e
. 繰り返しになりますが、マルウェアは簡単に再コンパイルされて別のチェックサムを生成する可能性があるため、このファイルが存在しないことは明確な正常性の兆候ではありませんが、その存在を感染の兆候として扱うことができます。 - ドメイン名で終わるデータを盗むために使用される DNS ルックアップ
H4CK.CFD
. DNS ルックアップを名前で記録するネットワーク ログがある場合は、機密データが漏洩した証拠として、このテキスト文字列を検索できます。 - 悪意のある DNS 応答は明らかに、次の DNS サーバーに送信されました。
WHEEZY.IO
. 現時点では、そのサービスに関連付けられた IP 番号を見つけることができず、PyTorch は DNS トラフィックをこのマルウェアに関連付ける IP データを提供していないため、この情報が脅威ハンティングにどの程度使用されているかはわかりません。現時点では [2023-01-01T21:05:00Z]。
幸いなことに、PyTorch ユーザーの大部分は、ナイトリー ビルドを使用していないか、休暇期間中に作業していないか、またはその両方であるため、この影響を受けていないと推測しています。
しかし、あなたがナイトリー ビルドをいじくり回す PyTorch 愛好家であり、休暇中も作業を続けているのであれば、侵害されたという明確な証拠が見つからなくても…
…とはいえ、予防策として新しい SSH キーペアを生成し、SSH 経由でアクセスするさまざまなサーバーにアップロードした公開キーを更新することを検討することをお勧めします。
もちろん、侵害されたと思われる場合は、それらの SSH キーの更新を延期しないでください。まだ行っていない場合は、今すぐ行ってください。