Vercel Security
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Vercelでは、チームはクライアントに属する完全な環境であり、プロジェクトはアプリケーションです。
Vercelのハードニングレビューには、Viewer role permissionを持つユーザー、または少なくともProject viewer permission over the projectsを持つユーザーに依頼する必要があります(プロジェクトのみを確認する場合、チーム設定を確認する必要はありません)。
目的: プロジェクト名、フレームワーク、ビルド設定などの基本的なプロジェクト設定を管理します。
転送
誤設定: プロジェクトを別のチームに転送することを許可します
リスク: 攻撃者がプロジェクトを盗む可能性があります
プロジェクトの削除
誤設定: プロジェクトを削除することを許可します
リスク: プロジェクトが削除される可能性があります
目的: カスタムドメイン、DNS設定、SSL設定を管理します。
DNS設定エラー
誤設定: 悪意のあるサーバーを指す不正確なDNSレコード(A、CNAME)。
リスク: ドメインハイジャック、トラフィックの傍受、フィッシング攻撃。
SSL/TLS証明書管理
誤設定: 弱いまたは期限切れのSSL/TLS証明書を使用します。
リスク: 中間者攻撃(MITM)に対して脆弱であり、データの整合性と機密性が損なわれる可能性があります。
DNSSECの実装
誤設定: DNSSECを有効にしない、または不正確なDNSSEC設定。
リスク: DNSスプーフィングやキャッシュポイズニング攻撃に対する感受性が高まります。
ドメインごとの使用環境
誤設定: 本番環境でドメインが使用する環境を変更します。
リスク: 本番環境で利用可能であってはならない潜在的な秘密や機能が露出する可能性があります。
目的: 特定の設定と変数を持つ異なる環境(開発、プレビュー、本番)を定義します。
環境の分離
誤設定: 環境間で環境変数を共有します。
リスク: 本番の秘密が開発またはプレビュー環境に漏洩し、露出が増加します。
機密環境へのアクセス
誤設定: 本番環境への広範なアクセスを許可します。
リスク: 無許可の変更やライブアプリケーションへのアクセスが可能になり、ダウンタイムやデータ漏洩の可能性があります。
目的: アプリケーションで使用される環境固有の変数と秘密を管理します。
機密変数の露出
誤設定: 機密変数にNEXT_PUBLIC_
をプレフィックスし、クライアント側でアクセス可能にします。
リスク: APIキー、データベースの資格情報、またはその他の機密データが公開され、データ漏洩につながる可能性があります。
機密無効
誤設定: 無効(デフォルト)の場合、生成された秘密の値を読むことが可能です。
リスク: 機密情報の偶発的な露出や無許可のアクセスの可能性が高まります。
共有環境変数
誤設定: これらはチームレベルで設定された環境変数であり、機密情報を含む可能性があります。
リスク: 機密情報の偶発的な露出や無許可のアクセスの可能性が高まります。
目的: Gitリポジトリの統合、ブランチ保護、デプロイメントトリガーを設定します。
無視されたビルドステップ (TODO)
誤設定: このオプションは、GitHubに新しいコミットがプッシュされたときに実行されるbashスクリプト/コマンドを設定できるようです。これによりRCEが可能になる可能性があります。
リスク: TBD
目的: プロジェクトの機能を強化するためにサードパーティのサービスやツールを接続します。
安全でないサードパーティの統合
誤設定: 信頼できないまたは安全でないサードパーティサービスとの統合。
リスク: 脆弱性、データ漏洩、または侵害された統合を通じたバックドアの導入。
過剰な権限を持つ統合
誤設定: 統合サービスに過剰な権限を付与します。
リスク: プロジェクトリソースへの無許可のアクセス、データの操作、またはサービスの中断。
統合監視の欠如
誤設定: サードパーティの統合を監視および監査しない。
リスク: 侵害された統合の検出が遅れ、セキュリティ侵害の影響が増大します。
目的: 様々な保護メカニズムを通じてデプロイメントを安全にし、誰が環境にアクセスし、デプロイできるかを制御します。
Vercel認証
誤設定: 認証を無効にするか、チームメンバーのチェックを強制しない。
リスク: 無許可のユーザーがデプロイメントにアクセスでき、データ漏洩やアプリケーションの悪用につながる可能性があります。
自動化のための保護バイパス
誤設定: バイパス秘密を公開するか、弱い秘密を使用します。
リスク: 攻撃者がデプロイメント保護をバイパスし、保護されたデプロイメントにアクセスして操作することができます。
共有リンク
誤設定: リンクを無差別に共有するか、古いリンクを取り消さない。
リスク: 認証やIP制限をバイパスして保護されたデプロイメントに無許可でアクセスすることができます。
OPTIONS Allowlist
誤設定: 過度に広いパスや機密エンドポイントを許可リストに追加します。
リスク: 攻撃者が無防備なパスを利用して無許可のアクションを実行したり、セキュリティチェックをバイパスしたりすることができます。
パスワード保護
誤設定: 弱いパスワードを使用するか、安全でない方法で共有します。
リスク: パスワードが推測されたり漏洩した場合、デプロイメントに無許可でアクセスされる可能性があります。
注: Proプランで利用可能で、Advanced Deployment Protectionの一部として追加の$150/月が必要です。
デプロイメント保護の例外
誤設定: 本番または機密ドメインを例外リストに誤って追加します。
リスク: 重要なデプロイメントが公開され、データ漏洩や無許可のアクセスにつながる可能性があります。
注: Proプランで利用可能で、Advanced Deployment Protectionの一部として追加の$150/月が必要です。
信頼されたIP
誤設定: IPアドレスやCIDR範囲を不正確に指定します。
リスク: 正当なユーザーがブロックされるか、無許可のIPがアクセスを得る可能性があります。
注: Enterpriseプランで利用可能です。
目的: サーバーレス関数を設定し、ランタイム設定、メモリ割り当て、セキュリティポリシーを含めます。
なし
目的: パフォーマンスを最適化し、データストレージを制御するためのキャッシング戦略と設定を管理します。
キャッシュの消去
誤設定: すべてのキャッシュを削除することを許可します。
リスク: 無許可のユーザーがキャッシュを削除し、潜在的なDoSを引き起こす可能性があります。
目的: 指定された間隔で自動化されたタスクやスクリプトをスケジュールします。
Cronジョブの無効化
誤設定: コード内で宣言されたcronジョブを無効にすることを許可します。
リスク: サービスの中断の可能性(cronジョブの目的によります)
目的: 外部ログサービスを設定して、アプリケーションログをキャプチャし、監視および監査のために保存します。
なし(チーム設定から管理)
目的: プロジェクトアクセス、ソース保護などに影響を与えるさまざまなセキュリティ関連設定の中央ハブです。
ビルドログとソース保護
誤設定: 保護を無効にするか、/logs
および/src
パスを公開します。
リスク: ビルドログやソースコードへの無許可のアクセスが可能になり、情報漏洩や脆弱性の悪用につながる可能性があります。
Gitフォーク保護
誤設定: 適切なレビューなしに無許可のプルリクエストを許可します。
リスク: 悪意のあるコードがコードベースにマージされ、脆弱性やバックドアが導入される可能性があります。
OIDC連携による安全なバックエンドアクセス
誤設定: OIDCパラメータを不正確に設定するか、安全でない発行者URLを使用します。
リスク: 誤った認証フローを通じてバックエンドサービスへの無許可のアクセスが可能になります。
デプロイメント保持ポリシー
誤設定: 保持期間を短すぎる(デプロイメント履歴を失う)または長すぎる(不必要なデータ保持)に設定します。
リスク: 必要なときにロールバックできない、または古いデプロイメントからのデータ露出のリスクが増加します。
最近削除されたデプロイメント
誤設定: 削除されたデプロイメントを監視しないか、自動削除のみに依存します。
リスク: 重要なデプロイメント履歴の喪失が監査やロールバックを妨げます。
目的: 設定を微調整し、セキュリティを強化するための追加のプロジェクト設定にアクセスします。
ディレクトリリスト
誤設定: ディレクトリリストを有効にすると、ユーザーがインデックスファイルなしでディレクトリの内容を表示できるようになります。
リスク: 機密ファイル、アプリケーション構造、攻撃の潜在的なエントリポイントが露出します。
攻撃チャレンジモードの有効化
誤設定: これを有効にすると、DoSに対するWebアプリケーションの防御が向上しますが、使いやすさが犠牲になります。
リスク: ユーザーエクスペリエンスの問題の可能性があります。
誤設定: トラフィックをブロック/解除することを許可します。
リスク: 悪意のあるトラフィックを許可するか、無害なトラフィックをブロックする可能性があります。
誤設定: アプリケーションの完全なソースコードを読むアクセスを許可します。
リスク: 機密情報の露出の可能性があります。
誤設定: この保護は、クライアントとサーバーアプリケーションが常に同じバージョンを使用することを保証し、クライアントがサーバーと異なるバージョンを使用することによる非同期を防ぎます。
リスク: これを無効にすると(有効な場合)、将来の新しいデプロイメントでDoSの問題を引き起こす可能性があります。
転送
誤設定: すべてのプロジェクトを別のチームに転送することを許可します。
リスク: 攻撃者がプロジェクトを盗む可能性があります。
プロジェクトの削除
誤設定: すべてのプロジェクトを持つチームを削除することを許可します。
リスク: プロジェクトが削除される可能性があります。
Speed Insightsコスト制限
誤設定: 攻撃者がこの数値を増加させる可能性があります。
リスク: コストの増加。
メンバーの追加
誤設定: 攻撃者が制御するアカウントを招待して持続性を維持する可能性があります。
リスク: 攻撃者の持続性。
役割
誤設定: 不要な人に過剰な権限を付与することは、Vercelの設定のリスクを増加させます。すべての可能な役割をhttps://vercel.com/docs/accounts/team-members-and-roles/access-rolesで確認してください。
リスク: Vercelチームの露出が増加します。
Vercelのアクセスグループは、事前定義された役割の割り当てを持つプロジェクトとチームメンバーのコレクションであり、複数のプロジェクトにわたる集中管理されたアクセス管理を可能にします。
潜在的な誤設定:
メンバーの過剰権限: 必要以上の権限を持つ役割を割り当て、無許可のアクセスやアクションを引き起こす可能性があります。
不適切な役割の割り当て: チームメンバーの責任に合わない役割を誤って割り当て、特権の昇格を引き起こす可能性があります。
プロジェクトの分離不足: 機密プロジェクトを分離せず、意図したよりも広範なアクセスを許可します。
不十分なグループ管理: アクセスグループを定期的にレビューまたは更新しないことで、古くなったり不適切なアクセス権限が生じます。
不一致な役割定義: 異なるアクセスグループ間で不一致または不明瞭な役割定義を使用し、混乱やセキュリティの隙間を引き起こします。
サードパーティへのログドレイン:
誤設定: 攻撃者がログを盗むためにログドレインを設定する可能性があります。
リスク: 部分的な持続性。
チームメールドメイン: 設定されると、この設定は、指定されたドメイン(例: mydomain.com
)で終わるメールアドレスを持つVercel個人アカウントを自動的に招待し、サインアップ時およびダッシュボード上でチームに参加させます。
誤設定:
誤ったメールドメインを指定するか、チームメールドメイン設定でスペルミスをする。
会社特有のドメインの代わりに一般的なメールドメイン(例: gmail.com
, hotmail.com
)を使用する。
リスク:
無許可のアクセス: 意図しないドメインのユーザーがチームに参加するための招待を受ける可能性があります。
データ露出: 無許可の個人に機密プロジェクト情報が露出する可能性があります。
保護されたGitスコープ: 他のVercelチームが保護されたスコープからリポジトリをデプロイするのを防ぐために、チームに最大5つのGitスコープを追加できます。複数のチームが同じスコープを指定でき、両方のチームがアクセスできます。
誤設定: 重要なGitスコープを保護リストに追加しない。
リスク:
無許可のデプロイメント: 他のチームがあなたの組織のGitスコープから無許可でリポジトリをデプロイする可能性があります。
知的財産の露出: 専有コードがデプロイされ、チーム外でアクセスされる可能性があります。
環境変数ポリシー: チームの環境変数の作成と編集に関するポリシーを強制します。具体的には、すべての環境変数が機密環境変数として作成され、Vercelのデプロイメントシステムによってのみ復号化できるように強制できます。
誤設定: 機密環境変数の強制を無効にする。
リスク:
秘密の露出: 環境変数が無許可のチームメンバーによって表示または編集される可能性があります。
データ漏洩: APIキーや資格情報などの機密情報が漏洩する可能性があります。
監査ログ: チームの活動を過去90日間までエクスポートします。監査ログは、チームメンバーによって実行されたアクションの監視と追跡に役立ちます。
誤設定: 無許可のチームメンバーに監査ログへのアクセスを付与します。
リスク:
プライバシーの侵害: 機密ユーザー活動やデータの露出。
ログの改ざん: 悪意のある者が自分の足跡を隠すためにログを変更または削除する可能性があります。
SAMLシングルサインオン: チームのSAML認証とディレクトリ同期をカスタマイズし、中央集権的な認証とユーザー管理のためにアイデンティティプロバイダー(IdP)との統合を可能にします。
誤設定: 攻撃者がSAMLパラメータ(Entity ID、SSO URL、または証明書フィンガープリント)を設定することでチームをバックドアする可能性があります。
リスク: 持続性を維持。
IPアドレスの可視性: IPアドレスが監視クエリやログドレインに表示されるかどうかを制御します。これは、特定のデータ保護法の下で個人情報と見なされる可能性があります。
誤設定: 必要なくIPアドレスの可視性を有効にしたままにする。
リスク:
プライバシーの侵害: GDPRなどのデータ保護規制に対する不遵守。
法的影響: 個人データの取り扱いに関する罰金やペナルティの可能性。
IPブロッキング: VercelがリクエストをブロックすべきIPアドレスやCIDR範囲を設定できます。ブロックされたリクエストは請求に寄与しません。
誤設定: 攻撃者によって悪用され、悪意のあるトラフィックを許可したり、正当なトラフィックをブロックしたりする可能性があります。
リスク:
正当なユーザーへのサービス拒否: 有効なユーザーやパートナーのアクセスをブロックします。
運用の中断: 特定の地域やクライアントのサービスの可用性の喪失。
Vercel Secure Computeは、Vercel Functionsとバックエンド環境(例: データベース)間の安全でプライベートな接続を可能にし、専用IPアドレスを持つ隔離されたネットワークを確立します。これにより、バックエンドサービスを公開する必要がなくなり、セキュリティ、コンプライアンス、プライバシーが向上します。
不正確なAWSリージョンの選択
誤設定: Secure Computeネットワークのためにバックエンドサービスのリージョンと一致しないAWSリージョンを選択します。
リスク: レイテンシの増加、データ居住地コンプライアンスの問題、パフォーマンスの低下。
重複するCIDRブロック
誤設定: 既存のVPCや他のネットワークと重複するCIDRブロックを選択します。
リスク: ネットワークの競合が発生し、接続の失敗、無許可のアクセス、またはネットワーク間のデータ漏洩が発生する可能性があります。
不適切なVPCピアリング設定
誤設定: VPCピアリングを不正確に設定します(例: 不正確なVPC ID、未完成のルートテーブルの更新)。
リスク: バックエンドインフラストラクチャへの無許可のアクセス、セキュアな接続の失敗、データ漏洩の可能性。
過剰なプロジェクト割り当て
誤設定: 適切な分離なしに複数のプロジェクトを単一のSecure Computeネットワークに割り当てます。
リスク: 共有IPの露出が攻撃面を増加させ、侵害されたプロジェクトが他のプロジェクトに影響を与える可能性があります。
不十分なIPアドレス管理
誤設定: 専用IPアドレスを適切に管理またはローテーションしない。
リスク: IPスプーフィング、追跡の脆弱性、悪意のある活動に関連付けられた場合の潜在的なブラックリスト。
不必要にビルドコンテナを含める
誤設定: ビルド中にバックエンドアクセスが必要ない場合にSecure Computeネットワークにビルドコンテナを追加します。
リスク: 拡大した攻撃面、プロビジョニングの遅延、ネットワークリソースの不必要な消費。
バイパス秘密を安全に扱わない
誤設定: デプロイメント保護をバイパスするために使用される秘密を公開または不適切に扱います。
リスク: 保護されたデプロイメントへの無許可のアクセスが可能になり、攻撃者が悪意のあるコードを操作またはデプロイすることができます。
リージョンフェイルオーバー設定を無視する
誤設定: パッシブフェイルオーバーリージョンを設定しないか、フェイルオーバー設定を誤って設定します。
リスク: プライマリリージョンの障害時にサービスのダウンタイムが発生し、可用性が低下し、データの不整合が発生する可能性があります。
VPCピアリング接続制限を超える
誤設定: 許可された制限(例: 50接続を超える)を超えてVPCピアリング接続を確立しようとします。
リスク: 必要なバックエンドサービスに安全に接続できず、デプロイメントの失敗や運用の中断を引き起こす可能性があります。
安全でないネットワーク設定
誤設定: 弱いファイアウォールルール、暗号化の欠如、またはSecure Computeネットワーク内の不適切なネットワークセグメンテーション。
リスク: データの傍受、バックエンドサービスへの無許可のアクセス、攻撃に対する脆弱性の増加。
目的: すべてのプロジェクトで使用される環境固有の変数と秘密を管理します。
機密変数の露出
誤設定: 機密変数にNEXT_PUBLIC_
をプレフィックスし、クライアント側でアクセス可能にします。
リスク: APIキー、データベースの資格情報、またはその他の機密データが公開され、データ漏洩につながる可能性があります。
機密無効
誤設定: 無効(デフォルト)の場合、生成された秘密の値を読むことが可能です。
リスク: 機密情報の偶発的な露出や無許可のアクセスの可能性が高まります。
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)