fbpx

GitHubのバグにより、サードパーティアプリが昇格した権限を取得 #aqua #セキュリティ #サプライチェーン

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

本ブログは「Aqua Security」社の技術ブログで2022年6月13日に公開された「 GitHub Bug Allowed Third-party Apps to Gain Elevated Permissions 」の日本語翻訳です。

GitHubのバグにより、サードパーティアプリが昇格した権限を取得


2月末の5日間ほど、GitHub に接続しているサードパーティアプリケーションが、昇格した権限で新しいスコープインストールトークンを生成できるバグについて学びました。例えば、Codecov アプリを GitHub アカウントに接続し、リポジトリへの読み取り専用アクセス権を持っていた場合、そのウィンドウの間に、リポジトリへの書き込みアクセス権を持つ新しいトークンが作成可能になっていました。このバグは、データの損失、シークレットや認証情報の漏洩など、セキュリティ上の大きな問題につながる可能性がありました。GitHub が公開したのは先週末のことなので、実際の影響範囲はまだ確定していません。

GitHub Apps とは

GitHub Apps は、GitHub とアプリケーションを統合するために推奨される公式な方法です。Webhooks と GitHub の API を通じて、GitHub の表面的な機能を変更できるようになります。開発者は、独自の GitHub 機能を追加したり、定型処理を自動化したり、プロジェクトのワークフローを拡張するための統合を構築できます。現在、GitHub Marketplace には 580種類 以上のアプリがあり、最も人気のあるアプリは 数十万件のインストールに達しています。


人気の高いGitHub Apps

GitHub Apps は組織と個人の両方のアカウントにインストールでき、特定のリポジトリへのアクセス権を付与できます。GitHub Apps をインストールするには、組織のオーナーであるか、リポジトリの管理者権限を持っている必要があります。デフォルトでは、組織内の GitHub Apps の設定を管理できるのは組織オーナーだけです。

GitHub Apps でトークンを使った認証を行うには

GitHub によると、GitHub Apps は JSON Web Token(JWT)、OAuth トークン、またはインストールアクセストークンのいずれかを使って認証する必要があるとのことです。今回確認するバグは後者に関連するものです。インストールトークンは JWT で生成されます。まずJWTの概要と、その用途を理解しましょう。

JWT は、情報を JSON オブジェクトとして安全に送信する方法を定義したオープンスタンダードです。この情報は、デジタル署名されているため、検証して信頼性を確認できます。JWT は、大手テクノロジー企業で一般的に認可に使用されており、安全なアクセス委譲を可能にし、ユーザがパスワードを教えることなく、第三者のアプリケーションと安全に認証情報を交換できるようにします。

例えば、あるゲームに Facebook の友達リストへのアクセス権を与えたいとします。その場合、(JWT をトークンとする)OAuthを使用して、あなたの Facebook アカウントから特定のリソースを要求し、あなたの承認を得ることができます。OAuth トークンは、漏洩や悪意のある利用を防ぐため、通常1時間以内しか有効ではありません。

あなたの承認が得られた後、ゲーム(およびサードパーティアプリ)は、そのリソースにアクセスする必要があるときに、いつでもこのスコープ付き OAuth トークンを要求します。このOAtuthトークンを使用して、新しく、有効で、時間制限のあるアクセストークンを取得できます。

これらのトークンの何が問題だったのか

一般に、GitHub Apps はユーザアカウントや組織にアプリをインストールした際に付与されたスコープや権限に基づいて、スコープインストールトークンを作成します。例えば、ユーザのプロファイルデータを読み取るアクセス権を付与した場合、アプリが生成するスコープトークンは「read:user」パーミッションを持つことになります。

このバグにより、2022年2月25日から2022年3月2日までの約5日間、GitHub Apps が昇格したパーミッションでスコープインストールトークンを生成できました。例えば、あるアプリは、本来付与される「read:user」パーミッションから昇格した「write:user」パーミッションを持つトークンを生成できました。これらのトークンは、それぞれ1時間まで有効でした。

しかし、アプリは、もともと付与されたスコープ以外の追加スコープ(例えば、「パッケージ」)に対する新しいパーミッションを取得できません。

GitHub によると、すぐに調査を開始し、すぐにバグを修正したとのことです。

潜在的な影響範囲

このバグの公開範囲は広く、潜在的な影響は甚大なものになる可能性があります。GitHub を利用し、GitHub アプリをインストールしているすべての企業(基本的にすべての人)が、この影響を受ける可能性があります。しかし、GitHub はこのバグが悪意ある目的で悪用されたという証拠を持っていません。

潜在的には、バグウィンドウで新たに生成された各トークンが管理者アクセス権を得た可能性があり、これは組織にとって非常に大きな損害となりえます。例えば、ソフトウェアベンダーのソースコードや知的財産を含むプライベートリポジトリが流出したり削除されたりした場合、これは文字通りその企業の終わりを意味する可能性があります。

緩和策と推奨事項

この問題がお客様の環境に実際に与える影響は、サードパーティアプリのインストール時にお客様が付与した権限スコープに依存します。GitHub はこのバグが悪用されたかどうかを判断できず、悪意のある方法で生成・使用された可能性のある短命のトークンはすでに消失しています。

それでも、インストールされているすべての GitHub アプリとそのスコープとパーミッションを確認することをお勧めします。このガイダンスは、GitHub アプリとそのパーミッション、そして個人組織のリポジトリへのアクセスを評価するために使用できます。

長期的には、ソフトウェアのサプライチェーンにおけるサードパーティアクセスを適切に管理する専用ソリューションが、将来そのようなリスクを回避するのに役立ちます。例えば、Aqua の Cloud Native Application Protection Platform(CNAPP)は、近年買収した Argon の技術に基づき、ソフトウェアのサプライチェーンセキュリティのためのソリューションを提供しており、このようなサプライチェーンの脅威から保護できます。

まとめ


今回の GitHub の問題は、サードパーティアプリケーションやパッケージが、組織のセキュリティリスクとして増大していることを浮き彫りにしています。これらのサードパーティアプリケーションやソフトウェアサプライチェーン全般に対する管理、制御、可視性のないことが、攻撃者が情報収集や組織への侵入のためにこれらを標的とする攻撃が増えている理由です。2021年のわずかな期間に、ソフトウェアサプライチェーンへの攻撃は 300% 以上増加しました。

しかも、サードパーティアプリケーションは、必ずしも私たちの期待通りに動作するとは限らず、「意図的に」機密データを漏洩させてしまうことさえあります。Aqua のセキュリティ研究チームである Team Nautilus による最新の調査でも、Travis CI API 経由でフリーユーザの数万件のトークンの流出が判明したケースは、これに該当します。

New call-to-action

新規CTA