アプリケーションセキュリティ設定の欠陥による脅威 -現状と対策

概要

TOAST Securityのサービスではセキュリティの脅威を検知し、情報を提供するサービスを行っています。直近では内部開発やサービスに使用するアプリケーションの種類が多様化し、これに伴い不要なサービスが外部に漏れるなどして、セキュリティ脅威が増加しています。今回は2018年の期間内に発生した、アプリケーションのセキュリティ設定不備による攻撃脅威や措置案について紹介したいと思います。

脆弱性発見比率:アプリケーション経由で情報が露出する脆弱性が多数

以下のグラフは当サービス調べによる2018年における、外部から接続可能なアプリケーションに攻撃を試みたり、脆弱性チェックなどをして確認されたアプリケーションタイプ別の脆弱性発見率です。最も比率が高いAccount Infoは、ソースコード上、絶対パスとなっているホームディレクトリのアカウント情報の露出することで引き起こされるものです。残りは大半がサービスと関係ない不要なページの露出や、アプリケーション管理ページが不特定多数からアクセス可能になっていることが原因でした。

アプリケーション設定の脆弱性と対策例

最も多く検出されたアプリケーションを対象に、どのような脅威が存在するか、また必要な措置案について説明します。

脆弱性の露出脅威名
(当サービス内での通称)
脆弱性の影響 詳細および対策例
Account Info アカウント情報の流出
  • ソースコード上、ファイル呼出時に絶対パスではなく相対パスを使用する必要があります。エラーコードでもアカウント情報が多数表示されるので、例外処理中やエラーにコンソールログなどが表示されないようにする必要があります。
Information
exposure

サービス情報の公開

  • サーバーのステータス情報、ディレクトリインデックス(Directory Indexing)、Django、デバッグページを介してサービス情報が露出される、サンプルページでのファイルのアップロード機能で、2次攻撃の標的になっています。
  • サービス運営上、外部の不要ページを削除または内部でのみアクセス可能にするACLセキュリティ設定を考慮する必要があります。
Tomcat 管理ページの外部公開、ファイルのアップロード
  • Tomcat設置時にTomcat 管理ページが全世界からアクセス可能になっていて基本パスワードでアクセスされたり、ウェブシェル(ウェブ経由でリモートシェル同様の処理ができるプログラム)のアップロードにより、インスタンスに侵入される可能性がありました。
  • Tomcatインストール後、管理ページは必ず削除するようにお勧めします。
Service Admin 管理ページの露出
  • 一般的なサービスをはじめChef、Grapana、nGrinder、Graphiteなどのアプリケーションの管理者ページを外部に露出していると、侵入者を招くことになりセキュリティ上問題があります。
  • 管理者ページは必ず管理者以外アクセスできないように制限(ACL設定など)が必要です。
SSH サーバー権限奪取
  • インスタンスのSSHポートの変更や設定変更により、意図せずに外部からのアクセスが可能になり、総当たり(Brute Force)攻撃を受ける可能性があります。
  • システム権限を獲得された結果とサービスが悪質ウィルスに感染(ボットネット、仮想通貨マイニングなど)すると、過度のトラフィックを発生させることもあります。結果、IDCにも影響を及ぼします。
  • どのような環境でもSSHは必ず外部から接続できないようにしてください。
Jenkins リモートコマンドの実行
  • Jenkins管理ページでGroovy Scriptの入力が可能なページがあり、当該機能を利用したリモートコマンド実行でセキュリティインジデントが発生します。
  • Jenkinsログインは内部でのみアクセスできるようにACLセキュリティ設定を行ってください。外部からのアクセスが必要な場合、セキュリティ部署のセキュリティチェックを受けてください。
Redis リモートコマンドの実行
  • Redis CLI認証の不備から攻撃者が権限を獲得し、悪意のあるファイルのダウンロードを介して仮想通貨マイニング攻撃を試みます。
  • 実際にクラウドがターゲットになっており、世界の有名な8220マイニンググループの攻撃を受け、脆弱な一部の公的機関に影響があったので注意が必要です。
  • 外部アクセス制限や認証権限設定を強化して対策を行ってください。
Memcached リモートコマンドの実行
  • Memcachedセキュリティ設定がない(認証不備など)影響でサービス情報や内部の重要なデータが外部に露出されることがあります。  またTCP、UDP2つのプロトコルで駆動ができ、UDPで動作時はDRDoSに悪用されるこがあります。
  • 認証設定やサービス起動時にUDPを使用しないようにオプションの適用をお勧めします。
Hadoop
Kubernetes
リモートコマンドの実行
  • Hadoop YarnとKubernetesのAPIホールを利用してノード(Node)を対象にリモートコマンドの実行が可能であるため、インシデントの影響力は少なくありません。
  • 該当APIを外部アクセスできないようにACL適用、または認証を適用するなどして、セキュリティ部署のセキュリティチェックを受けてください。

 

参考:安全なウェブアプリケーションの使用に向けた基本的なセキュリティ対策

上記のアプリケーション以外も攻撃対象になることがありますので、以下の脆弱性対策を参考にしてください。

セキュリティ対策 説明
認証やアクセス制御の使用 外部露出が不要なページに対するユーザー名/パスワード基盤の認証機能と、特定のIPやドメインに対するアクセス制御機能の適用
ウェブプロセス権限の制限 ウェブサービス運営に必要な最小限の権限のみを持つように制限
自動ディレクトリリスティングの使用中止 ディレクトリ要請時、ディレクトリ内に存在するファイルリストを表示しないように設定
サンプルファイルの除去 デフォルト設置されるサンプルファイルやテストファイル、マニュアルファイルなどを削除
不要な情報の外部公開の防止 Nginx、Apacheのバージョンやステータス情報、phpinfo情報など、不要な情報の公開防止
アップロード制御 アップロードを許可するファイルの種類指定、アップロード先でのファイル実行権限の除去、入力値検証等の制御
パスワードポリシー遵守 デフォルトID/パスワードの使用禁止、パスワードの複雑性を高め類推不可能なものを使用
セキュリティの脆弱性パッチ適用 周期的な脆弱性パッチやバージョンのアップグレードを実行
ログ設定やファイル保護 ログ収集の設定、またログファイルの公開、改ざん/削除が行われないように不要なアクセスから保護
リンクの使用禁止 ウェブコンテンツディレクトリの中で他のサーバーのディレクトリやファイルにアクセスできるシンボリックリンク、エイリアス(aliases)、ショートカットなど

TOAST Meetup 編集部

TOASTの技術ナレッジやお得なイベント情報を発信していきます
pagetop