TASVS-NETWORK: 通信とプライバシー (Communication and Privacy)
Last updated
Last updated
すべてのネットワーク通信とサービスが安全で、暗号化され、認可されていないアクセス、データ漏洩、インジェクション攻撃から保護されていることを確保します。
TASVS-ID | 説明 | L1 | L2 | L3 |
---|---|---|---|---|
容易に発見可能なトークンとキーを使用すると、アプリケーションのセキュリティを危殆化する可能性があります。プレーンテキストや弱い暗号化を使用してトークンとキーを送信すると、攻撃者に機密情報を漏洩する可能性があります。
データは Transport Layer Security (TLS) を使用してネットワーク上で暗号化し、攻撃者による盗聴や傍受から保護すべきです。TLS はシッククライアントとサーバー間で安全な通信を提供し、ネットワーク経由で送信されるデータの機密性と完全性を確保します。
セッショントークンは十分なエントロピーを備えて、ブルートフォース攻撃や攻撃者による推測を防ぐべきです。少なくとも 64 ビットのエントロピーを持つトークンは安全であると考えられ、認可されていないアクセスやセッションハイジャックから保護するのに役立ちます。
ユーザー認証時に新しいセッショントークンを生成することで、セッション固定化攻撃を防止することに役立ち、各ユーザーセッションがユニークで安全であることを確保します。セッションハイジャックやユーザーアカウントへの認可されていないアクセスから保護するには、ユーザー認証ごとに新しいセッショントークンを作成することが不可欠です。
セッショントークンは承認された暗号アルゴリズムを使用して生成し、セキュリティと完全性を確保すべきです。強力な暗号アルゴリズムを使用することで、攻撃者による改竄や認可されていないアクセスからセッショントークンを保護するのに役立ちます。
再認証は、定期的にユーザーに身元確認を要求することで、認可されていないアクセスやセッションハイジャックからユーザーアカウントを保護するのに役立ちます。再認証はアクティブに使用されているときとアイドル期間経過後の両方で行い、ユーザーセッションのセキュリティを確保し、ユーザーアカウントへの認可されていないアクセスを防ぐべきです。
共有アカウントやデフォルトアカウントは、機密情報やリソースへの認可されていないアクセスを提供して、アプリケーションにセキュリティリスクをもたらす可能性があります。認可されていないアクセスを防ぎ、ユーザーアカウントを侵害から保護するには、共有アカウントやデフォルトアカウントがアプリケーションに存在しないことを確保することが不可欠です。
セッショントークンはアプリケーションでのユーザー認証と認可のための安全で信頼できる方法を提供します。静的 API シークレットやキーの代わりにセッショントークンを使用することで、認可されていないアクセスやセッションハイジャックから機密情報を保護するのに役立ちます。
最小権限の原則は、ユーザーのアクセスをタスクの実行に必要なリソースや機能のみに制限することで、認可されていないアクセスや権限昇格からアプリケーションを保護するのに役立ちます。ユーザーは特定の権限を持つ機能、データファイル、URL、コントローラ、サービス、その他のリソースにのみアクセスできるようにすべきです。
メモリ監視はメモリに保存されている機密情報への認可されていないアクセスを検出して防止するのに役立ちます。メモリの使用状況とアクセスを監視することで、バッファオーバーフロー、メモリリーク、インジェクション攻撃など、メモリ関連の脆弱性や攻撃を特定して緩和するのに役立てることができます。
テレメトリキャプチャは、アプリケーション内の不審なアクティビティ、異常な動作、セキュリティインシデントを検出して対応するのに役立ちます。バイナリの改竄が検出された場合、ソフトウェアの動作が異常である場合、インターネット接続が失われた場合、あるいはライセンスが無効である場合にテレメトリがデータをキャプチャすることは、セキュリティ脅威や攻撃を特定して緩和するのに役立てることができます。
ユーザー入力のサニタイゼーションは、認可されていないアクセスやデータ漏洩からアプリケーションを保護するのに役立ちます。メールシステムに渡す前にユーザー入力をサニタイズすることで、SMTP インジェクション攻撃や IMAP インジェクション攻撃を防ぎ、アプリケーションのセキュリティを確保するのに役立てることができます。
ユーザー入力のサニタイゼーションは、インジェクション攻撃を防ぎ、認可されていないアクセスやデータ漏洩からアプリケーションを保護するのに役立ちます。Active Directory (AD) システムに渡す前にユーザー入力をサニタイズすることで、LDAP 攻撃を防ぎ、アプリケーションのセキュリティを確保するのに役立てることができます。
データ選択やデータベースクエリは、パラメータ化クエリ、オブジェクトリレーショナルマッピング (ORM)、エンティティフレームワーク、その他の安全な方法を使用して、SQL インジェクション攻撃から保護すべきです。パラメータ化クエリと安全なデータアクセス方法を使用することで、SQL インジェクション攻撃を防ぎ、アプリケーションのセキュリティを確保できます。
ネットワーク上にサービスを公開すると、機密情報やリソースへの認可されていないアクセスを提供して、アプリケーションにセキュリティリスクをもたらす可能性があります。シッククライアントが、ローカルホストにバインドする場合でも、ネットワーク上にサービスを公開しないようにし、認可されていないアクセスを防ぎ、ユーザーアカウントを侵害から保護することが不可欠です。
\newpage{}
TASVS-NETWORK-1
データ漏洩 (Data leakage)
TASVS-NETWORK-1.1
トークンとキーはプレーンテキストで送信されない、あるいは MITM 攻撃により簡単にデコードや復号が可能ではないことを検証します。
X
X
X
TASVS-NETWORK-1.2
データは TLS を使用してネットワーク上で暗号化されます。セキュアチャネルがアプリ全体で一貫して使用されます。
X
X
X
TASVS-NETWORK-2
ライセンスと認証サーバー (Licensing & Authentication Servers)
TASVS-NETWORK-2.1
セッショントークンが少なくとも 64 ビットのエントロピーを持つことを検証します。
X
X
X
TASVS-NETWORK-2.2
アプリケーションがユーザー認証時に新しいセッショントークンを生成することを検証します。
X
X
X
TASVS-NETWORK-2.3
セッショントークンが承認された暗号アルゴリズムを使用して生成されることを検証します。
X
X
X
TASVS-NETWORK-2.4
認証器でユーザーがログインしたままにすることを許可する場合、アクティブな使用時とアイドル期間が経過した後の両方で、再認証が定期的に行われることを検証します。
X
X
X
TASVS-NETWORK-2.5
共有アカウントやデフォルトアカウントが存在しないことを検証します ("root" や "admin" など)。
X
X
X
TASVS-NETWORK-2.6
レガシーな実装を除き、アプリケーションが静的な API シークレットとキーではなく、セッショントークンを使用していることを検証します。
X
X
X
TASVS-NETWORK-2.7
最小権限の原則が存在することを検証します。ユーザーが特定の認可を持つ機能、データファイル、URL、コントローラ、サービス、その他のリソースにのみアクセスできるようにします。これはなりすましや権限昇格に対する保護を意味します。
X
X
X
TASVS-NETWORK-3
海賊版の検出 (Piracy Detection)
TASVS-NETWORK-3.1
メモリ監視を実施します。
X
X
X
TASVS-NETWORK-3.2
バイナリの改竄が検出された場合、ソフトウェアの動作が異常である場合、インターネット接続が失われた場合、あるいはライセンスが無効である場合にテレメトリがデータをキャプチャします。
X
X
X
TASVS-NETWORK-4
コネクテッドサービス (Connected Services)
TASVS-NETWORK-4.1
アプリケーションがメールシステムに渡す前にユーザー入力をサニタイズして、SMTP インジェクションや IMAP インジェクションから保護することを検証します。
X
X
X
TASVS-NETWORK-4.2
アプリケーションが AD システムに渡す前にユーザー入力をサニタイズして、LDAP インジェクションから保護することを検証します。
X
X
X
TASVS-NETWORK-4.3
データ選択やデータベースクエリ (SQL, HQL, ORM, NoSQL など) が、パラメータ化クエリ、ORM、エンティティフレームワークを使用すること、もしくは SQL インジェクション攻撃から保護することを検証します。
X
X
X
TASVS-NETWORK-4.4
シッククライアントが、ローカルホストにバインドする場合でも、デバッグ機能などのサービスをネットワーク上に公開しないことを検証します。
X
X
X