Sysdig Threat Research Team(TRT)は、GitHubリポジトリgluestack/gluestack-uiにおける重大な脆弱性を発見しました。これはCVE-2025-53104 として指定されており、侵害されたNPMパッケージが関与する最近のサプライチェーン攻撃に関与していました。このCVEにはCVSS v3.1の基本スコア9.1が割り当てられています。
この新たな脆弱性を悪用することで、攻撃者は悪意のあるGitHub Discussionのタイトルまたは本文を作成し、GitHub Actions(GHA)ランナー上で任意のコマンドを実行できます。これらの悪意ある行為により、シークレットの流出、リポジトリ内容の不正な変更、関連するNPMパッケージの侵害が発生する可能性があります。
Sysdig TRTによる初期発見と、他のCI/CDセキュリティ製品にも影響し得るこの脆弱性の影響をよりよく理解するために、チームの調査結果を見ていきましょう。
gluestack-uiの脆弱性を読み解く
Gluestackは、ReactおよびReact Nativeアプリケーションを構築するためのモダンなクロスプラットフォームUIフレームワークで、ネイティブ環境向けに設計されたユーティリティファーストのスタイリングシステムを提供します。その中核となるコンポーネントライブラリであるgluestack-uiは、入力フォームやモーダルなど、カスタマイズ可能でテーマ適用可能なUIコンポーネントを提供し、iOS、Android、Webでシームレスに動作します。
6月上旬にこのリポジトリで侵害された複数のNPMパッケージが関与したサプライチェーンインシデントを分析する中で、Sysdig TRTは考え得る根本原因を特定するためにリポジトリを調査しました。既報の侵害原因は、開発者の1人のパーソナルアクセストークンが盗まれたことでした。しかし、GHAワークフローdiscussion-to-slack.ymlにおいて、別の可能性も見つかりました。
なお、新たに特定されたこの脆弱性CVE-2025-53104は、攻撃者の初期アクセスがメンテナのキーの窃取に関連していた最近のインシデントとは無関係です。しかし、Sysdig TRTが見つけたこの脆弱性でも同様の結果を引き起こし得ます。
on:Add commentMore actions
discussion:
types: [created]
jobs:
notify-slack:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Get discussion details
id: discussion-details
run: |
echo "title=${{ github.event.discussion.title }}" >> $GITHUB_OUTPUT
echo "body=${{ github.event.discussion.body }}" >> $GITHUB_OUTPUT
echo "url=${{ github.event.discussion.html_url }}" >> $GITHUB_OUTPUT
echo "author=${{ github.event.discussion.user.login }}" >> $GITHUB_OUTPUT
echo "category=${{ github.event.discussion.category.name }}" >> $GITHUB_OUTPUT
...
上記のワークフローは、GitHubのDiscussionが作成されるたびにトリガーされます。その後、情報はGITHUB_OUTPUTに追加され、Slack経由でメッセージを送信するために使用されます。このワークフローは、Discussionのタイトルや本文などユーザーが制御できる入力を安全でない方法で扱っているため、コードインジェクションに対して特に脆弱です。
攻撃者は、新しいGitHub Discussionの本文またはタイトルに$(curl ...)のような悪意あるペイロードを投稿することで、この脆弱性を悪用できます。この操作によりワークフローがトリガーされ、GitHubランナーインスタンス上で任意のコードが実行されます。攻撃者はその後、実行時に環境内で利用可能なGITHUB_TOKENやその他の機密リポジトリシークレットを流出させる可能性があります。
以下のスクリーンショットに示すとおり、流出したGITHUB_TOKENには権限が昇格しており、攻撃者がリポジトリ内容、リリース、ワークフローに対して不正な変更を行える状態でした。
既存のリリースを改ざんしたり新しいリリースを作成したりすると、侵害されたNPMパッケージが所有者のレジストリに公開される可能性があり、深刻なサプライチェーン攻撃への扉を開くことになります。
影響と緩和策
前述のとおり、CVE-2025-53104にはCVSS v3.1の基本スコア9.1が割り当てられています。この脆弱性は、対象リポジトリの完全性と機密性に大きな影響を与えます。
- 完全性: 脆弱性を悪用することで、攻撃者はリポジトリの内容を変更し、新しいリリースやタグを作成できます。これは、NPMリポジトリにアップロードされる新規および既存のパッケージ双方の完全性にも影響します。
- 機密性: 攻撃者は、リポジトリのGitHubトークンに加え、リポジトリ内の他のシークレットも流出させることができます。
CVE-2025-53104は、影響を受けるGitHub Actionsワークフローを修正する2025年6月13日公開のパッチにより緩和されました。
GitHub Actionsの入力を安全に扱う方法
上記で触れたNPMサプライチェーン攻撃のようなインシデントを避けるためには、入力を安全に管理することが極めて重要です。GitHub Actionsでは、環境変数を用いてユーザー制御の入力を扱うことが可能です。ワークフローステップ内で保持したいDiscussionの各要素に、環境変数を関連付けることができます。
env:
DISCUSSION_TITLE: ${{ github.event.discussion.title }}
DISCUSSION_BODY: ${{ github.event.discussion.body }}
DISCUSSION_URL: ${{ github.event.discussion.html_url }}
DISCUSSION_AUTHOR: ${{ github.event.discussion.user.login }}
DISCUSSION_CATEGORY: ${{ github.event.discussion.category.name }}
タイトルや本文などのユーザー制御入力をenvに渡すことで、コマンドに直接展開(補間)されることがなくなり、コマンドインジェクションを根本的に回避できます。さらに、すべての変数はクォートされ、ログ出力や出力処理でも安全に使用されます。
結論
サプライチェーン攻撃および関連する脅威は、現代のセキュリティチームと開発者にとって最優先事項であり、攻撃者にとっても急速に好まれる手口になりつつあります。CVE-2025-53104を悪用すると、攻撃者は任意のコマンドを注入し、NPMパッケージ内で深刻なサプライチェーン侵害を引き起こす可能性があります。こうしたリスクを防ぐには、すべてのユーザー入力を安全に取り扱い、厳格な入力検証の実践に従うことが不可欠です。
開示タイムライン
2025年6月11日 – Sysdig TRTがgluestackのメンテナにセキュリティ問題を報告
2025年6月13日 – gluestackのメンテナが報告された問題を確認
2025年6月13日 – gluestackがセキュリティ問題を修正するパッチをリリース
2025年6月30日 – CVE-2025-53104を伴うGHSAにより公開開示