サプライ チェーンへの攻撃: 開発者

2021 年には、サプライ チェーン セキュリティの弱点を特定するエントリを公開しました。 文書化された攻撃の急増に直面して、エントリは、悪意のあるアクターがどのようにギャップを見つけて悪用し、可能性のある利益と混乱を利用するかについての概要をまとめました.

このエントリでは、サプライ チェーンの 1 つの特定の部分、つまり開発者自身に焦点を当てます。 開発者に焦点を当てた適切な攻撃モデルを見つけるには、まず、誰が開発者 (したがってターゲット) と見なされているか、そのワークフロー、および日常的なツールを理解する必要があります。 また、開発者とそれぞれのツールを悪用してサプライ チェーンを危険にさらす方法と、これらの脅威シナリオを理解することで、開発者と組織がプロジェクトと自分自身を保護するためにどのようなトレードオフを行うべきかを決定する方法にも焦点を当てています。

「開発者」とは?

辞書の定義を使用して、開発者はコンピューター ソフトウェアを開発する人であると述べます。 私たちの理解では、コードを書く人。 これには、Java、JavaScript、TypeScript、Go、Python、C/C++ などの一般的なプログラミング言語またはスクリプト言語、および Dockerfiles、Kubernetes、Terraform HCL などのインフラストラクチャまたはコンテナーのデプロイ定義を含む他の多くの言語が含まれます。 その説明だけでも、この定義は、コードを書くすべての人やセキュリティ研究者など、IT 業界のさまざまな部分をカバーしています。

ワークフロー自体は開発者や会社によって異なる場合がありますが、開発者が統合開発環境 (IDE) をどのように使用しているかに応じて、次のいずれかのカテゴリに分類される可能性が高くなります。

  • ローカル IDE: 開発者は、自分のマシンに IDE をローカルにインストールしています。 この場合、開発者は次のことができます。
    • コードをリモート リポジトリにプルまたはプッシュし、ビルドを実行してローカルでデバッグする、または
    • 変更をリモート リポジトリにコミットし、継続的インテグレーション/継続的デリバリー (CI/CD) イベントをトリガーし、品質保証 (QA) 評価または運用環境へのデプロイにつながります。
  • クラウド IDE: 開発者は、AWS Cloud9、Visual Studio Online、GitHub Codespaces、および現在利用可能な他の多くのプラットフォームなど、クラウド サービスでホストされる IDE を使用します。 この場合、開発者のマシンは、通常はブラウザーを介して IDE へのゲートウェイとして機能し、メイン コードの実行は、クラウド サービス プロバイダー内のクラウド IDE のリモート ホストで実行されます。

開発者の定義は複数の職業をカバーしているため、一部のワークフローではリストから一部の項目を除外できます。 たとえば、研究目的の概念実証では、CI/CD パイプライン全体をセットアップしない可能性が高くなります。 ただし、ほとんどのワークフローには、開発用の IDE の使用が含まれます。 オンライン コーディング プラットフォームのセキュリティ リスクに関する以前のエントリで特定のプラットフォームについても説明したため、このエントリではローカル IDE に焦点を当てます。

ローカル IDE の使用例

ローカル IDE を使用する場合の使用例の 1 つは、開発者がコードをローカル コンピューターにプルする場合です。 このコードは、実行できるようにバイナリ形式にさらにコンパイルされます。 ほとんどの開発者は、コードベースが意図したとおりに機能するため、コードベースが「ダーティ」ではない可能性が高いと想定しているため、以前の貢献者によって記述されたコードには暗黙の信頼があります。 この信頼は、ソース コード自体だけでなく、ビルド スクリプト、ライブラリ、依存関係、その他のプロジェクト ファイル (含まれている場合) にも適用されます。 これにより、最初の脅威シナリオ、つまり悪意のあるアクションをプロジェクト ファイルまたはビルド スクリプトに挿入することになります。

開発者として、実行前にリモート コードをプルした後、ビルド スクリプトを読みますか?

悪意のあるビルド コマンドをビルド スクリプトまたはプロジェクト ファイルに挿入することで、さまざまな一般的な IDE およびプログラミング言語をテストしました (該当する場合)。 テストした IDE のバージョンの結果は次のとおりです。

  • Eclipse 2022-09
  • アパッチ NetBeans 16
  • PyCharm 2022.2.4
  • IntelliJ IDEA 2022.03
  • ビジュアル スタジオ 2022
  • ビジュアル スタジオ コード 1.73.1

一般的な脅威モデルを検討するときは、制御されていない入力もすべて含める必要があります。 これには、ソース コード、そのファイル、およびビルド前およびビルド後のスクリプトと IDE 拡張機能 (該当する場合) が含まれます。 以前、2020 年の記事の 1 つで、悪意のある IDE 拡張機能の危険性について書きました。

.

Leave a Comment

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