SJ blog
security
A

信頼度ランク

S 公式ソース確認済み
A 成功実績多数・失敗例少数
B 賛否両論
C 動作未確認・セキュリティリスク高
Z 個人所感

SentryのSAML SSOに重大な認証欠陥——CVE-2026-42354でマルチ組織環境の任意アカウントを乗っ取り可能

Sentryのマルチ組織自己ホスト環境でSAML SSOの認証欠陥(CVE-2026-42354)が発覚。悪意あるIdPを利用した任意アカウント乗っ取りが可能。修正版は26.2.0以上。

一言結論

CVE-2026-42354はSentryのSAML SSO実装における重大な認証不備で、マルチ組織構成の自己ホストSentryで悪意あるSAML IdPを操作することで任意ユーザーアカウントの乗っ取りが可能。自己ホスト環境でSENTRY_SINGLE_ORGANIZATION=Falseの設定の場合は即時26.2.0以上へのアップグレードが必要。

何が起きたか

SentryはCVE-2026-42354(GitHub Advisory: GHSA-ggmg-cqg6-j45g)として、SAML SSOの認証処理における重大な欠陥を公開した。

この脆弱性を利用すると、攻撃者は任意のユーザーアカウントに成りすまして、そのユーザーが持つエラートラッキング情報・パフォーマンスデータ・プロジェクト設定などすべての情報にアクセスできる。


脆弱性の仕組み

SAMLの仕組みとSentryの問題

SAML(Security Assertion Markup Language)は、IdP(Identity Provider: 例Okta, Azure AD)がユーザー認証を行い、そのアサーションをSP(Service Provider: 今回はSentry)に送信するSSO標準だ。

Sentryは受信したSAMLアサーションを処理する際、アサーション内のEmailアドレスを使って既存の内部ユーザーとリンクする。ここに問題がある。

正常なフロー:
Okta → SAMLアサーション {email: alice@company.com} → Sentry
Sentry: alice@company.com に対応するユーザーを検索してセッション確立 ✅

攻撃フロー:
攻撃者が管理するSentry組織 → 悪意あるIdPを設定
攻撃者のIdP → SAMLアサーション {email: victim@company.com} → Sentry
Sentry: victim@company.com のアカウントにセッションをリンク → アカウント乗っ取り ❌

攻撃の前提条件

この攻撃が成立するには以下の条件が必要だ。

  1. 攻撃者が対象のSentryインスタンスに別の組織(攻撃者制御)を持っている、またはSSOの設定を変更できる権限を持つ
  2. Sentryがマルチ組織構成SENTRY_SINGLE_ORGANIZATION = False)で動作している
  3. 被害者のメールアドレスが攻撃者に既知である

これらの条件が揃った場合、攻撃者は自分の組織に悪意あるSAML IdPを設定し、被害者のメールアドレスを含んだクラフトされたSAMLアサーションを送信することで、被害者のアカウントを乗っ取れる。


影響範囲

影響を受ける環境

  • 自己ホスト(Self-Hosted)SentrySENTRY_SINGLE_ORGANIZATION = False(デフォルト)かつ複数組織が存在する場合
  • 自己ホスト環境でSAML SSOを有効にしている場合

影響を受けない環境

  • SENTRY_SINGLE_ORGANIZATION = Trueに設定されているシングル組織インスタンス(対応不要)
  • Sentry SaaS(sentry.io)は修正済みのため影響なし

影響する情報の種類

Sentryはソフトウェアのエラー・例外・パフォーマンスをリアルタイムで収集するため、侵害されると以下にアクセスされる。

侵害された場合にアクセスされうる情報:
- 全プロジェクトのエラーログ(スタックトレース・コードスニペット含む)
- 環境変数やリクエストパラメータ(機密情報が含まれる場合がある)
- ユーザー情報(IPアドレス・ブラウザ情報等)
- パフォーマンストレース・トランザクション
- リリース情報・コミットハッシュ
- チームメンバー情報・プロジェクト設定

修正方法

即時アップグレード

# 自己ホストSentryのバージョン確認
docker exec sentry-web sentry --version
# または
kubectl exec -n sentry sentry-web-xxx -- sentry --version

# 26.2.0 以上にアップグレード
# 公式 self-hosted リポジトリに従って更新
# https://github.com/getsentry/self-hosted

修正バージョンは 26.2.0以上。26.4.1以上が最新パッチとして推奨される。

アップグレードできない場合の暫定緩和

オプション1: シングル組織モードに切り替え

# sentry/sentry.conf.py に追記
SENTRY_SINGLE_ORGANIZATION = True

ただし、複数組織をすでに使用している環境では運用上の影響が大きいため注意が必要だ。

オプション2: 全ユーザーに2FA必須化を強く推奨

2FAが有効な場合、SAMLアサーションで認証を突破されても2FAの追加検証が求められる。ただしこれはSentryの設定だけでは強制できず、個々のユーザーが自分のアカウントで有効化する必要がある。

2FA有効化の案内をユーザーに送信:
Sentry → Settings → Security → Two-Factor Authentication

SAML全般に共通する設計上の教訓

Sentryの本脆弱性は、SAMLを実装する際の普遍的な落とし穴を示している。

よくある設計ミス

# ❌ 問題のある実装パターン(概念的)
def handle_saml_response(saml_response):
    email = extract_email(saml_response)  # IdP提供のemailを信頼
    user = User.objects.get(email=email)  # 内部ユーザーを直接検索
    login(user)  # そのままログイン → IdPが信頼できない場合に危険

# ✅ 安全な実装
def handle_saml_response(saml_response):
    # 1. サービス固有の組織スコープでIdPを検証
    org_idp = get_idp_for_organization(current_org)
    # 2. このIdPからのアサーションのみ受け付ける
    if not verify_issuer(saml_response, org_idp):
        raise AuthenticationError("Invalid issuer")
    # 3. 組織スコープ内のユーザーのみ検索
    user = User.objects.get(email=email, org=current_org)
    login(user)

SAMLアサーションを実装する際のチェックリスト

□ Issuer(発行者)の検証を組織スコープで行っているか?
□ アサーションの署名検証は十分か(XSW攻撃への対策)?
□ マルチテナント環境でユーザー検索は組織スコープ内に限定されているか?
□ タイムスタンプ(NotBefore/NotOnOrAfter)を適切に検証しているか?
□ SAML Replayを防ぐためのレスポンスID追跡をしているか?

まとめ

CVE-2026-42354はSentryを自己ホストしているチームにとって深刻な脆弱性だ。2026年はSAMLに関する重大な脆弱性が複数発覚しており(WorkOSの分析によると4ヶ月で5件)、認証ライブラリのバージョン追跡とアップグレード計画が不可欠だ。

自己ホストSentryを運用しているなら、今日中にバージョンを確認すること。


参考リンク