Portkey.ai Gateway: Server-Side Request Forgery (SSRF) in Custom Host

説明

Summary

The gateway determines the destination baseURL by prioritizing the value in the x-portkey-custom-host request header. The proxy route then appends the client-specified path to perform an external fetch. This can be maliciously used by users for SSRF (CWE-918) attack

Impact

This vulnerability can be exploited to force the server to make requests to arbitrary hosts on the internal network. This could allow an attacker to exfiltrate sensitive data, for instance, by accessing the AWS metadata service.

Patches

The issue is patched in 1.14.0 (https://github.com/Portkey-AI/gateway/pull/1372)

The vulnerability resides within the gateway's request processing function which handles the x-portkey-custom-host header. This parameter was passed directly or with insufficient validation/sanitization to an internal HTTP request function.

The fix (v1.14.0) implements a robust allow-list policy:

  1. All custom host inputs are now strictly validated to ensure the resulting URI points only to trusted, expected external services.

  2. The implementation now explicitly blocks requests to non-routable IP addresses, loopback addresses, private networks and standard metadata endpoints.

Credit

This vulnerability was discovered and reported responsibly by @im-soohyun. We thank them for their adherence to coordinated vulnerability disclosure principles.

References

https://cwe.mitre.org/data/definitions/918.html

基本情報

タイプ
reviewed
深刻度
medium
GitHub 上のアドバイザリ
アドバイザリを開く ↗
リポジトリのアドバイザリ
リポジトリのアドバイザリを開く ↗
ソースコード
ソースを見る ↗
公開(アドバイザリ)
2025-12-02 01:08:37 UTC
更新
2025-12-02 01:08:38 UTC
GitHub レビュー済み
2025-12-02 01:08:37 UTC
NVD で公開
2025-12-01

EPSS Score

Score Percentile
0.07% 22.49%

CVSS Scores

Base score Version Severity Vector
6.9 4.0
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X クリックして展開
攻撃ベクター (AV:N)
インターネットや社内 WAN など、ルーティングされたネットワーク越しに遠隔から踏み台にしうる。
攻撃の複雑さ (AC:L)
手順が短く、再現性が高い。
攻撃要件 (AT:N)
到達性以外に、追加のインフラ条件やデータ前提は要らない。
必要な権限 (PR:N)
昇格やログインなしで踏み台にしうる。
ユーザーの関与 (UI:N)
被害者の操作なしでも攻撃が完結しうる。
脆弱システムの機密性への影響 (VC:N)
脆弱な対象から機微情報が読まれうる余地はほとんどない。
脆弱システムの完全性への影響 (VI:N)
改ざん・なりすましで信頼が揺らぐ局面はほとんど想定されない。
脆弱システムの可用性への影響 (VA:N)
業務を止めるほどの停止や劣化は想定しにくい。
後続システムの機密性への影響 (SC:L)
下流の一部資産について限定的な漏えいが起きうる。
後続システムの完全性への影響 (SI:L)
下流の一部コンポーネントで改ざんが起きうるが、全体信頼は保たれやすい。
後続システムの可用性への影響 (SA:N)
下流サービスが止まるほどの影響は想定しにくい。
悪用の成熟度(Threat) (E:X)
Threat 情報が未指定のとき、最悪側(実害報告あり)に寄せて採点する。
機密性に対するセキュリティ要件(環境) (CR:X)
未指定のときは情報不足とみなし、スコア上は高要求(保守的)として扱う。
完全性に対するセキュリティ要件(環境) (IR:X)
未指定のときは情報不足とみなし、スコア上は高要求(保守的)として扱う。
可用性に対するセキュリティ要件(環境) (AR:X)
未指定のときは情報不足とみなし、スコア上は高要求(保守的)として扱う。
変更後の攻撃ベクター (MAV:X)
環境側で上書きしない限り、ベースの AV を採用。
変更後の攻撃の複雑さ (MAC:X)
環境側で上書きしない限り、ベースの AC を採用。
変更後の攻撃要件 (MAT:X)
環境側で上書きしない限り、ベースの AT を採用。
変更後の必要な権限 (MPR:X)
環境側で上書きしない限り、ベースの PR を採用。
変更後のユーザーの関与 (MUI:X)
環境側で上書きしない限り、ベースの UI を採用。
変更後の脆弱システムの機密性への影響 (MVC:X)
環境側で上書きしない限り、ベースの VC を採用。
変更後の脆弱システムの完全性への影響 (MVI:X)
環境側で上書きしない限り、ベースの VI を採用。
変更後の脆弱システムの可用性への影響 (MVA:X)
環境側で上書きしない限り、ベースの VA を採用。
変更後の後続システムの機密性への影響 (MSC:X)
環境側で上書きしない限り、ベースの SC を採用。
変更後の後続システムの完全性への影響 (MSI:X)
環境側で上書きしない限り、ベースの SI を採用。
変更後の後続システムの可用性への影響 (MSA:X)
環境側で上書きしない限り、ベースの SA を採用。
安全性(補足、スコア非変更) (S:X)
人的安全への追加評価を行わない。
自動化可否(補足、スコア非変更) (AU:X)
キルチェーン自動化の評価を行わない。
復旧(補足、スコア非変更) (R:X)
サービス復元パスの評価を行わない。
価値密度(補足、スコア非変更) (V:X)
一撃で握れる資産規模の評価を行わない。
対応工数(補足、スコア非変更) (RE:X)
修復コストの評価を行わない。
提供元の緊急度(補足、スコア非変更) (U:X)
ベンダー色分けの緊急度を付さない。

Identifiers

CWEs

CWE id Name
CWE-918 Server-Side Request Forgery (SSRF)

Credits

  • im-soohyun (finder)

Affected packages (1)

Vulnerable version ranges and first patched releases as published by GitHub.

Ecosystem Package Vulnerable range First patched Vulnerable functions
npm @portkey-ai/gateway < 1.14.0 1.14.0

References

cvelogic Threat Intelligence