情報セキュリティのCIA
情報セキュリティというのは何を指しているのか?
JIS Q 27001/ISMSという規格では情報セキュリティのマネジメントシステムについて規定しています。
そして、その規格では3つの要素が挙げられています。
1. 機密性(Confidentiality)
誰がどの情報にアクセスできるのかがきちんと管理されていることをさします。
2. 完全性(Integrity)
情報が無くなっていないか、また改竄されていないかということをさしています。
3. 可用性(Availability)
システムが停止ぜずに稼働していることをさします。
Confidentiality, Integrity, Availability3つの頭文字をとって、情報セキュリティの3要素を情報セキュリティのCIAと呼ぶことがあります。
情報セキュリティの目的
1. 情報資産の保護
- 企業:顧客データ, R&D, 財務データ
- 個人:個人情報, カード情報
企業においてはクライアントのデータ、研究開発のデータ、財務に関するデーターなどを守らなくてはなりません。
そして、個人の場合は個人情報やクレジットカードの情報といった様々なプライベートな情報という資産があります。
2. クライアントからの信用・信頼の獲得
3. ビジネス成果の向上
こうした活動を通じてビジネス成果を向上したりまた機会損失をなくしたりといったことがゴールになります。
情報セキュリティとはコストである
- セキュリティ機器の購入
- 業務手順が増加
- 警備員やネットワークセキュリティの監視
情報セキュリティを考える上で大事なのは「セキュリティを管理することはコストである」ということ。
例えば入退室管理の時のIDカード認証キーといったセキュリティ対策のための機器を購入したり、現場ではセキュリティを厳しくしようとすると業務手順が増えて煩雑になります。
また警備員を雇ったりネットワーク上では侵入検知の監視をするためのシステムを用意したりと様々なコストが発生します。
直接プロフィット(利益)を生むわけではありません。
コストと成果のバランス
- ROI(投資対効果)の最大化
セキュリティを考える上で大事な意識
単にコストをかけていくとセキュリティの強度はどんどん上がっていきますが、あまりコストをかけすぎるとビジネスに支障が出ます。
なので、かかるコストと得られるセキュリティのちょうど良いバランスの所 <経営の言葉では Return on Investment (投資対効果)> これを最大にしましょう。
脆弱性
- Vulnerability (弱さ)
- Security Hall (セキュリティの穴)
脆弱性とは日本語で「弱さ」という意味で英語では「Valnerability」と言います。
またその弱さの原因となるシステム上の欠陥のことを「Security Hall」と言います。
- ソフトウェアの欠陥
クロスサイトスクリプティング・SQLインジェクション
例えば、webサイトに使われているフレームワークに欠陥があった場合にクロスサイトスクリプティングといって他のサイトにユーザーが飛ばされたり、それからSQLインジェクション、データーベース上にある機密情報が漏れてしまうといった事故につながります。
- 運用ミス
脆弱なパスワード・アクセス設定
ソフトウェアの欠陥だけではなく人的なミスも脆弱性と呼ばれています。
推測されやすいパスワードを設定したため管理者アカウントを乗っ取られたりアクセス設定が弱く見えてはいけないファイルが見えてしまうといった事が挙げられます。
セキュリティインシデント (事故)
脆弱性を突いた事故のことをセキュリティインシデントと言います。
事故の例
- システムへの不正侵入
- 機密情報の漏洩、改ざん
- サービスの停止
被害
- 経済的損失 (賠償金)
- 風評被害 (収益減少)
例えばブルートフォースアタックによってAdminのパスワードを当てられてシステムに入られてしまうといったケースがあります。
そして侵入された後には顧客の情報が漏れてしまう(機密情報の漏洩)やカードの使用履歴が改ざんされるまたサービスが停止させられるといった事故があります。
これらの事故によりどういった被害があるかというと賠償金といった経済的損失を被ったり、風評被害によりブランドイメージが下がり収益が減少するというような事があります。
具体的な事例
2017年4月13日に総務省が運営する「e-Stat」という統計サイトに不正アクセスがあり最大で約2万3千人の利用者の個人情報が流失した恐れがあるという事故がありました。
出典:https://this.kiji.is/225221675468916215
こちらの情報流出の原因はソフトフェアの脆弱性を突いたものです。
Apache Struts2(Javaのライブラリ)と呼ばれるJavaを使ったサーバーサイドのプログラミングのライブラリの欠陥を突いたものとされています。
確認方法
こうしたニュースを見たときにどうやって自分のサービスが安全なのかを確認するには上記の例で言えば「Apache Struts2」というワードが出ているので、Googleで”Apache Struts2 脆弱性”で検索すると、公開されている脆弱性であればIPA(情報推進機構)と呼ばれているところがセキュリティに関する情報を公開しています。
そこに脆弱性の問題点や影響を受けるバージョン、対策方法といった情報が掲載されています
IPA:https://www.ipa.go.jp/security/ciadr/vul/20170906-struts.html
対策
- セキュリティパッチを当てる
セキュリティアップデート(自動・ML)
- サービスが止まらないように別のH/Wでテストする > 本番に適応
インシデントの対策としてはセキュリティパッチを当てるというのがあります。
WindowsやMacでは大体月に1回くらいセキュリティアップデートと呼ばれるソフトウェアのパッケージが自動で配信されてきます。
こうしたセキュリティ対策をするためのソフトウェアをセキュリティパッチ(パッチ=絆創膏)と言います。
ただし、いきなりこうしたパッチを当ててサービスが止まってしまわないように、サービスが動いている本番機とは別にテスト用のハードウェアを用意してそこに本番機と同じ構成のソフトウェアを用意して正常に動作したら本番に適応するという運用が望ましいとされています。
※セキュリティパッチを当てることで回避できるのはSecurity Hallであり、ソフトウェアの欠陥は開発者がそれを作りこまないようにする必要があります。
脆弱性情報
- CVE (Common Vulnerabilities and Exposures)
CVE- 西暦 – 連番
例:Heartbleed(OpenSSL) CVE-2014-0160
- JVN (Japan Vulnerability Notes)
脆弱性識別番号
Heartbleed → JVNVU#994-1838
先ほど参照したApache Strutsなどには番号が付いています。
アメリカではCVE(共通脆弱性識別子)といってソフトウェアの脆弱性を対象として、米国政府の支援を受けた非営利団体のMITRE社が提供している脆弱性情報データベースです。
CVEでは脆弱性にユニークな識別番号 「CVE-ID」(CVE-登録時の西暦-通し番号の形式)です。
MITREでは、CVE-IDをCVE識別番号管理サイト(http://cve.mitre.org/)で公開しています。インテル セキュリティをはじめとしてさまざまな企業や団体が共通して利用できる識別番号としてCVEを利用しています。
日本国内ではJVNという日本で使用されているソフトウェアなどの脆弱性関連情報とその対策情報を提供し、情報セキュリティ対策に資することを目的とする脆弱性対策情報ポータルサイト(https://jvn.jp)があります。
セキュリティの脅威一覧
- 情報セキュリティ10大脅威
2016年に発生した社会的に影響が大きかったと考えられる情報セキュリティにおける事案から、IPAが脅威候補を選出し、情報セキュリティ分野の研究者、企業の実務担当者などからなる「10大脅威選考会」が脅威候補に対して審議・投票を行い、決定したものがあります。
サーバー攻撃の種類
- ブルートフォースアタック
ブルートフォースアタック(総当たり攻撃)とは、暗号解読方法の一つであり、可能な組み合わせを全て試す方法です。
ブルートフォース(力づく)という言葉が意味を表しているように、人間の手では時間がかかりすぎる方法ではありますが、
手軽に実行できるツールが普及しており時間的制約がない限りは確実にパスワードを割り出して侵入する事ができる方法です。
対策→パスワード10回失敗したらアカウントをロックの仕組みを実現する。
- Dos攻撃/DDos攻撃
Dos攻撃は、攻撃側と相手側の1対1で行われますが、DDos攻撃とは、複数に分散(Distribute)した攻撃マシンからの一斉攻撃を行います。
DDos攻撃の防御が難しい点は、この複数台の攻撃マシンがどこにあるのか攻撃が始まるまでわからないということです。
そのため、攻撃箇所全てから守りきることが困難なことが挙げられます。
対策→DoS、DDoS攻撃に対応したファイアーウォールやサーバ・ネットワークトラフィックを監視するシステムを導入し、攻撃を仕掛けてくるIPアドレスを特定し、遮断する。
- SQLインジェクション
DBサーバと連携したWEBシステムの場合、WEBサーバではユーザが入力した情報を基にSQL文を組み立てるものがあります。そのSQL文によってデータベースへのデータ追加・更新など行います。
このとき、WEBサーバがセキュリティ的に無防備な状態であると、ブラウザから入力された「悪意のあるSQL文」をそのままデータベース操作の一部に注入(Injection)される可能性があります。
対策→DBのプリペアードステートメントという仕組みを利用してSQL文を組み立てるようにする。
- クロスサイトスクリプティング
掲示板やブログなどユーザが入力した内容をWEBページとして出力するWEBアプリケーションに対して多く行われる攻撃です。
例えば、掲示板に悪意のあるスクリプト(簡易的なプログラミング言語のこと)を埋め込んだリンクを貼り付け、そのページを閲覧したユーザのブラウザ上でスクリプト(プログラム)を実行させるという攻撃を行います。
対策→「<」「>」「“」「‘」「&」をエスケープする。属性名は「”」で囲む。URL (aタグやsrcタグ)は 「http://」や「https://」のみとする。など
セキュリティ診断
- セキュリティ診断
- 脆弱性診断
- ペネトレーションテスト (Pen Test)
セキュリティ診断には脆弱性診断やペネトレーションテストといった色々な呼び方があります。
作業内容としてはまず、ペネトレーションテスティングをするペンテスターと呼ばれるエンジニアがファイヤーウォール越しにどのような脆弱性の要素があるのか、各要素にどのような弱点があるのか、の診断を行ってレポートを書く作業と、場合によっては実際にシステムに侵入できるどうかということを確認するこの2つのステップからなっています。
一般的な脆弱性チェックの対象としては、Webアプリケーション、サーバーハードウェア、データベース
無線LAN、スマートフォンアプリ、認証システムがなどがあります。
3つのタイプ
テストには3つのタイプがある。
理想的にはブラックボックステストが良いとされていますが、場合によってあらかじめ情報がわかった状態でチェックしたり、部分的に情報がわかった状態でチェックしたりします。
テストの実施手順
脆弱性診断:どのような脆弱性があるのか? → どんな脆弱性(危険性)があるのかを一覧にまとめる
ペネトレーションテスト
- 攻撃シナリオを作成
クライアントと話をして攻撃のシナリオを作成します
- シナリオ通り攻撃して侵入できるか?
シナリオに基づいて攻撃をして侵入ができたかどうかを検証
- 報告書作成(脆弱性のテスト結果)
システムのどんなところに脆弱性があって強度を上げるにはどうしたらいいかを提案
現在技術の発展とともにこういった情報セキュリティに対するニーズがどんどん増えてきており、案件やエンジニアの募集がされていますので、これを機に情報セキュリティの素養を高めていきましょう。
ペンテスター参考記事:https://www.ibm.com/think/jp-ja/business/white-hacker/
※最新の情報の取得・更新に努めておりますが、掲載内容については、その正確性、完全性、有用性、最新性等についていかなる保証もするものではありません。