はじめに
ソフトウェアアプリケーションの脆弱性を悪用するために使用される多くの一般的な攻撃ベクトルがあります。この記事では、最も一般的な脆弱性のいくつかと、Workvivoでそれらにどのように対処するかについて説明します。
SQLインジェクション
「SQLインジェクションは、データ駆動型を攻撃するために使用されるコードインジェクション手法です
不正なSQL文が入力フィールドに挿入されて実行されるアプリケーション(例:データベースの内容を攻撃者にダンプするため) - Wikipedia
Workvivoのソースコードは、オブジェクトリレーショナルマッパー(ORM)ライブラリを通じてすべてのデータベースインタラクションを完全に抽象化し、ユーザー入力を自動的にサニタイズし、パラメータ化されたクエリを使用してSQLインジェクションが不可能になるようにします。Workvivoのソースコードには直接のSQLクエリはなく、コードレビューのガイドラインでは、すべてのデータベースインタラクションはORMを経由する必要があると規定されています。
XSSプロテクション
" クロスサイトスクリプティング (XSS) 攻撃はインジェクションの一種で、
他の点では無害で信頼できるウェブサイトに悪意のあるスクリプトが注入される。XSS攻撃は、攻撃者がWebアプリケーションを使用して、通常はブラウザサイドスクリプトの形式で悪意のあるコードを別のエンドユーザーに送信したときに発生する。"- ソース
Workvivoは、すべてのユーザー入力をサニタイズし、悪意のあるコードが含まれていないことを確認するために検証することで、XSSから保護します。また、すべての出力をサニタイズしてエスケープし、悪意のあるコードがデータベースに侵入した場合に、ブラウザでの出力時に実行されないようにします。
CSRF保護
"Cross-Site Request Forgery(CSRF)は、エンドユーザーが現在Authentication, Authorization & Application Security – Highly Confidential AuthenticatedとされているWebアプリケーション上で望ましくないアクションを実行させる攻撃です。CSRF攻撃は、データの盗難ではなく、特に状態を変更するリクエストを対象としています。なぜなら、攻撃者は偽造されたリクエストに対する応答を見る方法がないからです。
Workvivoは、アプリケーションが管理するアクティブなユーザーセッションごとにCSRFトークンを自動的に生成することで、CSRFから保護する。次に、このトークンを使用して、認証されたユーザーが実際にアプリケーションにリクエストを行っていることを確認する。このトークンをリクエストヘッダーのすべてのAPIリクエストに渡す。トークンはリクエストのたびに更新され、正しいトークンを渡さないAPIリクエストはエラーレスポンスを返す。
HTTPS
WorkvivoはHTTPSプロトコルでの動作のみをサポートしているため、クライアントとサーバー間のすべての通信は、スニッフィングや傍受ができない安全で暗号化されたチャネルで処理されます。ユーザーが暗号化されていないHTTP経由でWorkvivoにアクセスしようとすると、HTTPSバージョンのURLに自動的にリダイレクトされます。
AWS Certificate Managerを使用して、現在の証明書の有効期限が切れるときに新しいTLS証明書を自動的に生成します。これには、カスタムドメイン名のプロビジョニング証明書が含まれます。このアプローチにより、TLS 証明書の有効期限が切れるシナリオが発生しなくなります。
侵入検知
Workvivoには、アプリケーションへのすべての侵入の試みを記録し、脅威レベルに基づいてリスクの高い試みを積極的に防止する最先端の侵入検出システムが含まれています。