ブログ

コーダーが征服するセキュリティ:Infrastructure as Codeシリーズ:不十分なトランスポート層保護

June 1, 2020
マティアス・マドゥ博士

組織内でInfrastructure as Code(IaC)のセキュアなデプロイを始めたいと考えている開発者の方は、ぜひこの記事をご覧ください。本稿は、IaCセキュリティのベストプラクティスを習得するための「IaCシリーズ」の次章となります。

本題に入る前に、前回の課題はいかがでしたか?「安全でない暗号化」をマスターできた方は、詳細を掘り下げる前に「不十分なトランスポート層の保護」に挑戦してみましょう。

さらに詳しく学び、完璧なスコアを目指したい方は、ぜひ読み進めてください。

前回の記事では、アプリケーションやプログラムが保存する重要データや個人情報を保護するために、安全な暗号化が不可欠であることを解説しました。強力な暗号化は、最後の防衛線として機能します。たとえ攻撃者にデータが盗まれたとしても、強力に暗号化されていれば、ファイル内の情報は保護されます。

しかし、保存データの保護は、データ防御のほんの一部に過ぎません。有効なユーザーが保護されたデータにアクセスする必要があるときは、そのデータをユーザーに送信しなければなりません。また、アプリケーションが全体的なワークロードの一環として他のプログラムとデータを共有することもあります。トランスポート層が保護されていない場合、外部からの盗聴や、権限のない内部ユーザーによる閲覧に対して脆弱になります。そのため、トランスポート層の保護が不十分であることは、深刻な問題を引き起こす可能性があります。

これはよくある問題です。セキュリティ組織のOWASPも、不十分なトランスポート層の保護(insufficient transport layer protection)に関する詳細なページを公開しています。

なぜトランスポート層の保護が不十分だと危険なのでしょうか?

トランスポート層の保護が不十分な場合、熟練したハッカーが中間者攻撃(MITM攻撃)などの手法を用いて、ユーザーとアプリケーション間を流れる情報を傍受することは比較的容易です。この種の盗聴の最も危険な点は、ネットワークの外側で行われるため、内部のサイバーセキュリティプラットフォームやスキャンからはほぼ完全に不可視であることです。

例えば、NginxサービスをデプロイするDocker環境の場合:

services:
 nginx:
   image: localhost:5000/scw_nginx
   build: ./nginx
   secrets:
     - nginx_cert
     - nginx_key
   volumes:
     - type: bind
       source: ./nginx/nginx.conf
       target: /etc/nginx/nginx.conf
       read_only: yes
   ports:
     - 80:8443
   networks:
     - frontend
   deploy:
     restart_policy: *default-restart_policy
     resources: *default-resources_policy

このNginxサービスの設定では接続が暗号化・保護されないため、リンクを通じてやり取りされるすべての情報が、さまざまな攻撃や盗聴に対して脆弱になります。

server {
       server_name scw-dev-blog.org;
      listen 8443;
       ssl_protocols TLSv1.2 TLSv1.3;
       ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
       ssl_prefer_server_ciphers on;
       ssl_certificate /run/secrets/nginx_cert;
       ssl_certificate_key /run/secrets/nginx_key;
       access_log /dev/stdout;
       error_log /dev/stderr;
       location / {
           proxy_pass http://wordpress:8080;
           proxy_set_header Host $http_host;
           proxy_set_header X-Forwarded-Host $http_host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header X-Forwarded-Proto $scheme;
       }
   }

多くの場合、トランスポート層が盗聴されている最初の兆候は、盗まれた大量のユーザーパスワードがその後の攻撃で使用されることです。顧客情報、財務記録、重要な企業秘密などのデータが安全でないトランスポート層を通じて盗まれた場合、侵害されたことにすら気づかない可能性があります。

保護が必要なのは、ユーザーとアプリケーション間のトランスポート層だけではありません。バックエンドでは、多くのアプリケーションが相互に、あるいはワークフローチェーンの先にあるサーバーと通信しています。こうした内部通信は通常、外部からの盗聴にはさらされませんが、ネットワークへのアクセス権はあるものの、特定の高度に保護された機密情報へのアクセス権を持たないユーザーに対してデータが露出する可能性があります。

完全なデータ保護のためのトランスポート層の適切なセキュリティ対策

トランスポート層の保護は、アプリケーションの作成段階で行うのが最善です。このプロセスは、セキュアなバックエンドインフラを構築することから始まります。Webサイトの場合、すべてHTTPSを使用する必要があります。HTTPとHTTPSのインフラを混在させてはいけません。また、安全でないHTTPリクエストをHTTPSインフラへ自動的にルーティングするようにサイトを設定すべきです。

上記の例において、トランスポート層を保護する適切な方法は以下の通りです。

server {
       server_name scw-dev-blog.org;
       listen 8443 ssl;
       ssl_protocols TLSv1.2 TLSv1.3;
       ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
       ssl_prefer_server_ciphers on;
       ssl_certificate /run/secrets/nginx_cert;
       ssl_certificate_key /run/secrets/nginx_key;
       access_log /dev/stdout;
       error_log /dev/stderr;
       location / {
           proxy_pass http://wordpress:8080;
           proxy_set_header Host $http_host;
           proxy_set_header X-Forwarded-Host $http_host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header X-Forwarded-Proto $scheme;
       }
   }

この例では、Nginxサービスとのすべての接続が強力に暗号化されています。Nginx設定のサーバーセクションには、listen 8443 ssl のみが含まれており、SSLを強制して接続を保護しています。

内部の脅威からデータを保護するため、開発者はTLS 1.2のような強力なトランスポート層暗号化プロトコルを採用すべきです。TLS 1.2または同等のプロトコルを導入したら、SSL v2のような脆弱なプロトコルはインフラストラクチャから完全に削除し、二度と使用されないように自動的にブロックする必要があります。

アプリケーションのセキュリティ対策は、保存データとトランスポート層の両方が十分に保護されて初めて完了することを忘れないでください。これにより、内部データおよび許可された外部ユーザーへ送信されるデータの両方に対して、完全なエンドツーエンドの保護を保証できます。
この脆弱性に関する詳細や、その他のセキュリティ上の欠陥から組織や顧客を守る方法については、Secure Code Warriorのブログページをご覧ください。また、デモを試して、Secure Code Warriorトレーニングプラットフォームでサイバーセキュリティスキルを常に最新の状態に保つことも可能です。

タグライン

AI主導の開発をリリース前にガバナンスする

AIを活用したリスク測定、コミット時のセキュアコーディングポリシーの強制、そしてSDLC全体を通じたセキュアなデリバリーの加速を実現します。

デモを予約する
リソースライブラリ

他のブログ記事を見る

セキュアコーディング、AIガバナンス、ソフトウェアリスク管理に関する専門的なコンテンツをご覧ください。

すべて表示
導入事例
フィルターラベル
これはdivブロック内のテキストです。

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

詳細はこちら
導入事例
フィルターラベル
これはdivブロック内のテキストです。

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

詳細はこちら
導入事例
フィルターラベル
これはdivブロック内のテキストです。

セキュリティ文化の統一:Sageはいかにしてチャンピオンプログラムを構築したか

Sageがどのようにして柔軟かつ関係性を重視したアプローチでセキュリティを強化し、200名以上のセキュリティチャンピオンを育成して、目に見えるリスク低減を実現したのかをご紹介します。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

2026年サイバーセキュリティ意識向上月間:企業防衛に不可欠なAIセキュリティの理解

主要なAI企業の多くが、安全対策が追いつくまでの間、AI開発を世界的に減速させるよう公に呼びかける事態となっています。しかし現実には、深刻なセキュリティ問題はすでに顕在化しています。AI導入に伴う金銭的コストやリスクが増大し続ける中、多くのセキュリティリーダーや経営陣は差し迫った状況に追い込まれています。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

イネーブラー8:プログラムのブランディング

セキュアコーディングプログラムを成功させるには、優れたコンテンツ以上のものが必要です。イネーブラー8では、ブランディングによって参加を「憧れのステータスを得る体験」へと変える方法を解説します。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

すべての従業員が今、AIサイバーセキュリティの最前線に立っている

エンタープライズテクノロジーの状況は、手遅れになるまで誰も予測できなかったほどの速さで変化しています。私たちは今、人間が書いたコードと基本的なコパイロット支援の時代から、エージェント型開発ライフサイクル(ADLC)の時代へと正式に足を踏み入れました。自律型AIエージェントは、複数の機能にわたってかつてない効率性をもたらす一方で、全く新しい種類のセキュリティリスクや規制リスクも引き起こしています。

詳細はこちら

AIを活用した開発をリリース前にセキュアに

開発者のリスクを可視化し、ポリシーを適用することで、ソフトウェア開発ライフサイクル全体における脆弱性を未然に防ぎます。

デモを予約する
該当する項目が見つかりません。