Check Point CloudGuard Spectral は、PyPI 上の悪意のあるパッケージに対する新しい難読化技術を公開します


2022 年 11 月 9 日

ハイライト:

  • Check Point Research (CPR) は、Python プログラミング言語の開発者が使用する主要なパッケージ インデックスである PyPI で、新しくユニークな悪意のあるパッケージを検出します。

  • 新しい悪意のあるパッケージは、コードを画像に隠し、Github のオープンソース プロジェクトを介して感染するように設計されています。

  • CPR は責任を持ってこの情報を PyPI に開示し、PyPI はすぐにパッケージを削除しました

悪意のあるパッケージに対する新しい難読化手法 – 画像内にコードを隠す

Check Point CloudGuard Spectral Data Science チームは最近、Python プログラミング言語のソフトウェアのリポジトリである PyPI で、新しくユニークな悪意のあるパッケージを検出しました。 悪意のあるパッケージは、画像にコードを隠し (画像ベース コードの難読化 – ステガノグラフィー)、Github のオープンソース プロジェクトを介して PyPI ユーザーに感染するように設計されています。 これらの調査結果は、PyPi の難読化技術が進化したことを証明する攻撃者による慎重な計画と思考を反映しています。

一般的な悪意のあるパッケージ構造

オープンソース ドメインの悪意のあるパッケージには、一般的に次のようなものがあります。 3つの主要コンポーネント

  1. 悪意のあるコード: ウイルス実行可能ファイルのダウンロードと実行、攻撃者に対してリモート シェルを開くこと、または攻撃者が見つけたすべての PII を収集して別の場所に公開することを担当します。
  2. キャリアコード: 悪意のあるコードに侵入する責任があります。 通常、それは悪意のあるスニペットがインストール コードの一部としてバンドルされた正規のパッケージです (PyPI の setup.py や NPM のポスト インストール スクリプトなど)。 キャリアコードは難読化によって隠されているか、インストール中にpastebin.comなどのソースから動的にダウンロードできます.
  3. 感染パッケージ: 被害者が最初に悪意のあるパッケージをインストールするように誘導します。 一般的な手法は、ネーム スクワッティングのバリエーションです。 一般的な正当なものに似たパッケージ名を選択します。

攻撃者は通常、パッケージの名前付けのトレードオフに直面します。 あまりにも太字または一般的なパッケージ名を選択すると、視認性が高くなり、迅速に検出される可能性があります。 ただし、ニッチな名前を選択すると、パッケージのダウンロード量が少なくなり、感染の成功数が減少する可能性があります。 攻撃者は、潜在的なユーザーに積極的に関与して、感染したパッケージをインストールさせることで、このギャップを埋める必要があります。 ほとんどの場合、攻撃者はスケールを好むようです (一般的なパッケージ名を模倣します。ダウンロード数が多いと、パッケージの寿命が短くなる可能性がある場合でも、少なくともいくつかの感染が発生することが保証されると想定されます)。 などの場合もあります。 アピカラー、 よりユニークで自明ではない悪意のあるコード設計の選択肢を含めます。

アピカラー

研究者が検出した悪意のあるパッケージは、「apicolor」という名前でした。 一見すると、PyPI の多くの開発パッケージの 1 つに見えました。 これは非常に新しいもので (最初は 31/10 に公開されました)、一般的な説明と、これが「REST API のコア ライブラリ」であるというあいまいなヘッダーがありました。 Apicolor は、一般的な悪意のあるパッケージの観察者にはほとんど見えませんでした。

パッケージのインストール スクリプトを詳しく調べたところ、研究者は冒頭に奇妙で自明ではないコード セクションがあることに気付きました。 追加の要件を (より一般的な要件セクションではなく) 手動でインストールすることから始めます。次に、Web から画像をダウンロードし、新しくインストールされたパッケージを使用して画像を処理し、exec コマンドを使用して生成された出力の処理をトリガーします。 コード スニペットは、一般的な setup.py インストール スクリプトで一般的に見られるものとは大きく異なります。

手動でインストールする 2 つのパッケージは、 リクエスト (API を使用するための非常に人気のあるヘルパー パッケージ)、および ジュディブ. judib パッケージの詳細は、最初は「進行中」のパッケージのように見えます。空の説明と、これが「純粋な Python judyb モジュール」であることを示すあいまいなヘッダーがあります。 さらに詳しく調べてみると、judib が apicolor とほぼ同時期に最初にリリースされたことが明らかになりました。

judyb コードは、 ステガノグラフィー モジュール、画像内の隠されたメッセージの表示と非表示を担当します。 Check Point Research は、apicolor のインストール中にダウンロードされたイメージに隠し部分が含まれているのではないかと疑っていました。

apicolor インストール コードに戻ると、最初のステップは Web からダウンロードされた画像を観察することでした。 それは正当なもののようで、何も変わったことはありませんでした。

この画像に judyb ‘reveal’ メソッドを適用すると、 隠されたメッセージ、その画像から明らかになりました。 このメッセージには、base64 で難読化された Python コードが含まれているようです。これは、悪意のあるパッケージが悪意のあるコードを隠すための一般的な方法です。

base64 を使用してそのスニペットの難読化を解除すると、次の一般的な悪意のあるコード パターンが明らかになりました: Web から悪意のある exe をダウンロードし、ローカルで実行します。

apicolor パッケージの悪意のある部分とキャリア部分を見つけた後、感染部分を公開するときが来ました。

積極的に感染

そのようなパッケージを調査する直接の場所は GitHub です。 研究者は、これらのパッケージを使用するコード プロジェクトを検索し、チームが感染手法をさらに理解できるようにしました (誰かが誤ってインストールしたかどうか、インストールした場合は、どのように発生したか)。 この検索の使用、apicolor と judib はかなりニッチであり、GitHub プロジェクトでの使用が少ないことが明らかになりました。

これらのパッケージをコードに組み込んでいるように見える GitHub ユーザーは 3 人だけです。 それらを(超冗長な)要件として、公開されている GitHub プロジェクトに追加します。 当然のことながら、これら 3 人のユーザーは新しい GitHub ユーザーであることが判明しました。

隠れた感染

感染プロセスは次のようになります。

Web で正当なプロジェクトを検索しているときに、ユーザーはこれらの GitHub オープンソース プロジェクトを見つけてローカルにインストールしますが、悪意のあるパッケージがインポートされることを知りません。 コードが機能しているように見えることに注意することが重要です。 場合によっては、空の悪意のあるパッケージがあります。 インストーラーの観点から見ると、彼らは GitHub からのオープンソース プロジェクトを試していますが、その中に悪意のあるトロイの木馬の一部が隠されていることを知りません。

Carful ユーザーは、星やフォークの数などの側面を見て、評判の良いオープンソース プロジェクトのみを検討します。 言及されたプロジェクトは、数十のスターと数百のフォークを持ち、この基準に適合しているようです。 しかし、詳しく見てみると、その評判は総合的に生成されたものであり、フォークしているアカウントは 1 つだけであり、スターリング アカウントのセットはほとんどがこれらのアカウント プロジェクトを「スター化」しているように見えるだけであり、おそらくこのキャンペーンのサポート部分です。

PyPI への責任ある開示

これらのパッケージが特定されると、Check Point Research は PyPI にそれらの存在を警告し、PyPI は apicolor パッケージを削除しました。

チェックポイント CloudGuardスペクトルユーザーはそのような悪意のあるパッケージから引き続き保護されます

サプライ チェーン攻撃は、組織と外部関係者の間の信頼関係を悪用するように設計されています。 これらの関係には、パートナーシップ、ベンダー関係、またはサードパーティ ソフトウェアの使用が含まれる場合があります。 サイバー脅威アクターは、ある組織に侵入した後、サプライ チェーンを上っていき、これらの信頼関係を利用して他の組織の環境にアクセスします。 このような攻撃は近年ますます頻繁になり、影響が大きくなっているため、開発者は自分のアクションを安全に保ち、使用中のすべてのソフトウェア要素、特に異なるリポジトリ、特に自己ではないリポジトリからダウンロードされているものを再確認することが不可欠です。 -作成した。

Spectralops.io (現在は Check Point の子会社) の使命は、安全な開発プロセスを生成して、開発者が (セキュリティに関して) 正しいことを確実に実行できるようにすることです。 この取り組みの一環として、このようなサプライ チェーン攻撃のリスクを防ぐために、悪意のあるパッケージの後に PyPI を常にスキャンしています。

次のレベルの攻撃はこちら

研究者は、新しいタイプの組織化された攻撃を確認しています。 攻撃者は、「一般的なパッケージを模倣し、悪意のあるコードをわずかに隠す」手法から進化しています。 彼らは、特定のタイプのユーザーを直接ターゲットとする組織的なキャンペーンを作成しています。 注目度の高い PyPI プラットフォームから GitHub などのより混雑したドメインに感染フェーズを移すと、悪意のあるパッケージの検出がより困難になります。 これらのタイプの攻撃は、 在宅勤務のターゲット ユーザー、サイド プロジェクトに会社のマシンを使用する可能性が高い個人。 脅威アクターとハッカーは進化しており、常に新しいドメインと手法を探して行動しています。 新たな悪意のある攻撃が発生しており、ユーザーは警戒と認識を維持する必要があります。

Leave a Comment

Your email address will not be published. Required fields are marked *