OWASPトップ10リスクの管理
当社のセキュリティ・プログラムの一環として、リスクの管理は最も重要です。
OWASPのトップ10リストは、アプリケーションに影響を与える最も一般的なリスクをまとめたものであり、当社のソリューションの安全性確保に関する当社の取り組みを実証するための素晴らしい出発点となります。
脆弱性の予防と影響の軽減
- 私たちのセキュア SDLC のいくつかの要素は、以下のリスクに特化したものではなく、セキュリティ問題全般に対処するものです。
- 開発者は、セキュアコーディングトレーニングにアクセスし、参加する時間を与えられる。これらのトレーニングは非常に実践的であり、コード中のセキュリティ問題を発見し、修正するための実地経験を提供するように設計されています。
- 社内の「コーディング・セキュリティ基準」と「セキュア設計原則」は、セキュリティの再要件のリストとして機能し、すべてのコードが従わなければならないルールのリストを提供する。静的スキャンは、弱点や脆弱性の特定に役立ちます。
- コードが本番サーバーに到達する前に潜在的な問題を発見するため、当社のアプリケーションに対して定期的な内部侵入テストが実施されています。
- 脆弱性が悪用された場合の影響は、当社の技術スタックの可能な限りすべてのレベルで最小特権の原則を実装することによって低減されます。
OWASP トップ10リスク
壊れたアクセス制御
すべてのアクセスは、発信者ID、発信元エンドポイント、リクエストパラメータなどの必要なデータに基づいてバックエンドシステムによって承認され、垂直方向と水平方向の両方の特権昇格を防止します。アクセス制御ソリューションは可能な限り再利用されます。認証に関連するAPIコールは、DoSや自動データハーベスティングのリスクを低減するためにレートが制限されています。
暗号の失敗
ウェブクライアントまたは最近のデバイスと当社サーバー間の接続は、常にTLSをサポートしています。これには、クライアント・ブラウザから当社のウェブ・サーバへの接続だけでなく、デバイスから当社のサービスへの接続も含まれます。平文プロトコルは、機密データを送信するデバイスの通信には、デバイス通信に関する特定の顧客要件がない限り使用されません。
暗号アルゴリズムと鍵の強度は定期的に見直され、必要に応じて更新されます。
当社のSQLデータベース内の静止データは、暗号化されたボリュームに保存されます。
注射
インジェクション型の脆弱性に対する防御の第一線として、私たちのウェブアプリケーションは入力検証を実装しています。ユーザの入力は、可能であれば、型と形式を検証されます。
また、最近のフレームワークは、XML 文書を含む特定のオブジェクトを作成する際に、インジェクションを防止する ための適切なエンコーディングを提供し、このような脆弱性のリスクを低減します。
SQLインジェクションのリスクは、ORMを正しく使用することでさらに大幅に減少します。
OSコマンド・インジェクションのリスクも、OSコマンドがコードから実行されることのないJavaベースの技術スタックによって大幅に低減されています。
XSSに関しては、クロスサイト・スクリプティングについて、コードとテスト環境を手動でレビューしています。私たちが使用しているいくつかの技術やフレームワークは、デフォルトで適切なエンコーディングを適用することで、XSSの防止に役立っています。
不安定なデザイン
社内のコーディング・セキュリティ基準とセキュアデザイン原則は、セキュリティ要件のリストとして機能し、すべてのコードとアーキテクチャが従わなければならないルールのリストを提供します。改善の可能性を判断する際には、BSIMM や SAMM などの情報源を考慮します。当社のセキュリティ・カウンシルは、セキュリティ設計に関するガバナンスと監督を行います。
セキュリティの設定ミス
私たちは、テクノロジー・スタックのすべてのレベルで最小特権の原則を導入することを目指しています。また、必要なコンポーネントのみをインストールすることで、攻撃対象領域を縮小しています。サーバー構成は自動化されたソリューションによって管理され、社内ポリシーへの準拠を保証します。アプリケーション・レベルの構成も自動的に管理され、セキュリティ・コード・レビューと静的解析によってチェックされます。
XML処理については、可能な限りインラインDTD処理を無効にするか、必要な場合は適切な緩和策を適用します。
脆弱で時代遅れのコンポーネント
サードパーティのコンポーネントとその脆弱性をレビューします。脆弱性のあるコンポーネントは評価され、脆弱性が当社のサービスに影響する場合は、リスクに応じてアップデートや修正が予定されます。オープンソースのコンポーネントの場合は、脆弱性のあるコンポーネントのGitHub通知によってもサポートされます。さらに、定期的なネットワーク・スキャンを実施し、当社の環境全体で脆弱性のあるサービスを見つけます。
識別と認証の失敗
当社のウェブアプリケーションは、NISTの勧告(NIST 800-63-3)に従った強固なパスワードを要求します。
ログインに何度も失敗すると、アカウントは指数関数的に増加する時間だけロックされます。成功したログイン試行と失敗したログイン試行の両方が記録されます。パスワード回復は電子メールで行われ、トークンのみが送信される。パスワードが電子メールで送信されることはない。データベース内のパスワードは、標準的でよく知られた実装を使用して、適切な鍵導出関数(プレーンな暗号ハッシュではない)でハッシュ化される。これにより、既知のパスワード・ハッシュのリストであっても、ブルートフォース攻撃を防ぐことができる。
ソフトウェアとデータの完全性の失敗
私たちのウェブサービスは、信頼され、レビューされたCIパイプラインを介して更新されます。サードパーティモジュールの脆弱性は、GitHubによって部分的に提供される自動化によってチェックされる。デバイスは、署名されたファームウェア・アップデートを使用し、署名されていない、あるいは信頼されていないイメー ジをロードしない。ファームウェアは、署名キーを適切に保護する厳格で慎重に設計されたプロセスによってのみ署名することができます。
不十分なロギングとモニタリング
監査可能なイベントはログに記録され、ログはリアルタイムで中央リポジトリに収集されます。監査証跡が利用可能です。異常を検知するためのアプリケーション監視を実施しています。ログに秘密が含まれることはなく、GDPRに準拠しています。
サーバーサイドリクエストフォージェリ
開発者はSSRFを認識しており、コードレビューと静的スキャンはそのような問題を防ぐのに役立っている。SSRFを軽減するために、ユーザ入力は必要に応じてサニタイズされます。また、同様の問題を特にテストすることは、私たちの侵入テストの一部です。