OutSystems Platformでセキュアなアプリケーションを構築するには

セキュリティに対するOutSystemsのコミットメント

OutSystemsは、OutSystems Platformで生成されたアプリケーションのセキュリティを常に強化することに全力を尽くしています。そして、OutSystems Platformで、開発者がセキュアなアプリケーションを最小限の労力で構築できるようにするためのメカニズムを提供しています。

OWASPの脆弱性トップ10

The Open Web Application Security Project(OWASP)は、フリーでオープンなソフトウェアセキュリティに関するコミュニティです。OWASP Top 10は、Webアプリケーションに存在しうる重大な脆弱性について説明するものです。そのような脆弱性が存在しないアプリケーションの構築を、OutSystems Platformがどのように支援しているかを紹介します。

インジェクション(A1)

OutSystems Platformはデフォルトで、コンテンツがUI上に表示される前に、コンテンツをエスケープ処理します。デフォルトのエスケープメカニズムを無効にする必要がある場合、OutSystems Platformは、HTML、Javascript、SQL、URLをエンコードする機能を提供します。それにより、使用コンテキストに基づいた適切なエスケープが行えます。

さらに、OutSystems Platformは、HTML、JavaScript、およびSQLの無害化機能も提供します。これらの機能によって、開発者は悪質な可能性のあるコンテンツがユーザーの入力によって入り込み処理されるのを、データベース内に保存され、Webページ上で表示される前に阻止できます。

その上、OutSystems Platformの開発環境では、開発時にコードインジェクション攻撃につながる可能性のあるアプリケーションのパターンを発見すると警告を発する機能も提供されています。これにより、開発者はアプリケーションをデプロイする前に攻撃につながる欠陥に気づくことができます。

認証とセッション管理の不備(A2)

OutSystems Platformは、デフォルトで次のことを保証しています。

  • ユーザー名/ユーザーIDがユーザー識別用Cookieに含まれないようにする。
  • セッションIDをURL内に搬送しない。
  • セッションの期限満了時にタイムアウトとする。
  • すべてのパスワードで強力な暗号化アルゴリズムを使用する。

また、OutSystems Platformは、各ログイン時にセッションIDを透過的に変更し、リクエスト毎に検証を行うことで、セッション固定攻撃を防止します。

さらに、すべてのコンテンツをセキュアな接続を使用して確実に送信するためのメカニズムも提供しています。この機能は、各スクリーンあるいは連携エンドポイントだけでなく、さらに範囲を広げてアプリ全体およびAPIポートフォリオにも拡大できます。このきめの細かい制御機能を活用すると、企業特有のニーズに適合するようにセキュリティを微調整してアプリケーションを作成できるようになります。

デフォルトでは、すべてのモバイルアプリケーションで、すべての画面および連携にHTTPSを使用できるようになっています。
OutSystems Platformはまた、外部の認証プロバイダーを使用して簡単にアプリケーションの連携を行えるメカニズムを提供しています。これにより、アプリケーションを企業のエコシステムに適合させる労力を最小化できます。

クロスサイトスクリプティング(A3)

クロスサイトスクリプティング(XSS)についても、インジェクションの問題と同様に対処しています。OutSystems Platformは、入力データをエンコードし無害化する機能を備えています。OutSystemsのモデル駆動型アプローチでは、リアルタイムの分析を可能にしています。それにより、従来とは異なりOutSystems Platformの開発環境では、アプリケーションのデプロイ以前の開発時にセキュリティ上の問題を修正できる機能を提供されます。

さらに、アーキテクト、オペレーター、あるいは管理者がコンテンツのセキュリティポリシーを定義できる仕様になっており、アプリケーションのページが、どのドメインからリソース(画像、CSS、スクリプト、メディア)を取得するかも指定できます。この設定は、環境毎に、あるいはすべてのアプリケーションや特定のアプリケーションを指定して行うことができます。XSS攻撃は悪質なサイトからスクリプトをロードするため、アプリケーションのリソースのロード元を制限することで、効果的にXSS攻撃のリスクを緩和することができます。

さらに、コンテンツセキュリティポリシーも使用して、アプリケーションページがフレームに埋め込まれるのを防ぎ、クリックジャッキング攻撃を阻止しています。

安全でないオブジェクト直接参照および機能レベルアクセス制御の欠落(A4、A7)

一般的に、これら2つの問題は、アプリケーションの設計および実装に関連するものですが、OutSystems Platformでは、次のように、どのユーザーがどのアプリケーションリソースにアクセスできるかを簡単に定義できるようにしています。

  • 特定の画面へのアクセスにはどのユーザーロールが必要か、あるいは、どのユーザーに特定のアプリケーションへのアクセス権限を持たせるかを定義する。
  • ユーザー権限に応じて、UI要素を無効化したり隠したりする。
  • アクションが実行されるとき、ユーザー権限を検証する。
  • ユーザー権限に基づいて、特定のロジックを実行したり、データのサブセットへのアクセスを行う。

OutSystems Platformのすべての管理用コンソールおよびAPIは、ユーザー権限を強力に検証します。それにより、適切な権限を持つユーザーのみが各オペレーションを実行できるようにしています。

セキュリティ設定のミスおよび機密データの露出(A5、A6)

通常これら2つの問題は、アプリケーションの設計または実装に不備がある場合に発生します。OutSystems Platformでは、プラットフォームのインストールをセキュアに行う方法について、システム管理者に明確かつ簡潔な説明を提供しています。

さらに、すべてのコンテンツをセキュアな接続を用いて確実に送信するために必要なメカニズムも備えています。また、データベースに保存されるデータのセキュリティを確保するために、既存の暗号化APIを使用した連携を可能にしています。

クロスサイトリクエストフォージェリ(A8)

OutSystems Platformは、デフォルトで、各ページにトークンベースのメカニズムを採用し、Webページが特定の環境の特定のユーザー向けに生成されたことを確認しています。トークンは暗号化され、正当なエンドユーザーのみが持つ情報を使用して署名されます。
POSTリクエストがサーバーに発行されると、リクエストを送信しているユーザーに対しトークンを検証します。POSTリクエストがそのようなトークンを含んでいない場合、あるいは無効なトークンを含む場合には、そのリクエストは中断され、元となるデータへの変更を行いません。

既知の脆弱性を持つコンポーネントの使用(A9)

OutSystemsは、サポートするスタックバージョンの更新を定期的に行います。

未検証のリダイレクトとフォーワード(A10)

インジェクションやXSSの場合と同じように、OutSystems Platformの開発環境では、開発時に未検証のリダイレクト攻撃につながる可能性のあるアプリケーションのパターンを発見すると警告を発する機能を提供しています。さらに、フローのリダイレクト先のURLが、アプリケーションが実行されるのと同じドメインに属していることを確認できる機能も備え、未検証のリダイレクト攻撃のリスクを回避しています。