「職人芸とされていた脆弱性診断の技術を誰でも使えるものに」Webセキュリティのプロ・上野宣さんに訊く|翔泳社の本

「職人芸とされていた脆弱性診断の技術を誰でも使えるものに」Webセキュリティのプロ・上野宣さんに訊く

2016/08/09 08:00

 脆弱性診断は高度な知識を持つ専門家のものと思っていませんか? 翔泳社が8月1日に刊行した『Webセキュリティ担当者のための脆弱性診断スタートガイド』は、脆弱性診断のプロフェッショナルである上野宣さんが、これまでプロのセンスに頼られてきたものを標準的な技術として解説した入門書です。今回、上野さんに本書の特徴や初心者が注意する点などについてうかがいました。

業界標準の脆弱性診断技術を具体化した入門書が必要とされている

――8月1日(月)に『Webセキュリティ担当者のための脆弱性診断スタートガイド 上野宣が教える情報漏えいを防ぐ技術』が刊行となりました。上野さんはこの道のプロフェッショナルですが、具体的にはどのようなお仕事をされているのでしょうか。

上野:現在、私は主に脆弱性診断に関して広く携わっています。2006年に立ち上げたサイバーセキュリティ関連のトレーニングを行う株式会社トライコーダでは、「Webアプリケーション脆弱性診断講座」を実施しており、脆弱性診断サービスも提供しています。トレーニングの顧客には自社で脆弱性診断を行いたいという開発会社を始めとして、防衛省や警察などの官公庁の方々がいらっしゃいます。加えて、社内にCSIRT(コンピュータセキュリティ問題に対応するチーム)を立ち上げるための教育にも役立てていただいています。

 また、私自身はOWASPというWebをはじめとするソフトウェアのセキュリティの普及啓発を行う世界的なオープンソース・ソフトウェアコミュニティの日本チャプターのリーダーなども務めています。

――そんな上野さんが本書のような入門書を執筆した理由、その必要性について教えてください。

上野:プログラムのバグはテストの実施によって発見し、修正を行いますが、脆弱性も同様です。脆弱性を発見するためのテスト手法を「脆弱性診断」といいます。

 仕事柄、主にセキュリティ会社が提供している脆弱性診断サービスについて、サービス利用者から「内容や善し悪しがよく分からない」という声をしばしば聞きます。特に、自動診断ツールを実行したレポートだけを提供するサービスと手動診断も行うサービスの違いや、その品質の違いなどが分かりにくいようです。価格が高ければ品質がよいとも限らないのが現状です。

 そういう状況を変えていくために、「脆弱性診断士スキルマッププロジェクト」というワーキンググループを、脆弱性診断サービスを提供している十社以上の会社で立ち上げました。

 現在、Webアプリケーションの脆弱性診断を行う技術者に必要な知識や技術をまとめた「脆弱性診断士(Webアプリケーション)スキルマップ&シラバス」という資料が、日本セキュリティオペレーション事業者協議会(ISOG-J)にあるセキュリティオペレーションガイドラインWG(WG1)と、OWASP Japanの共同ワーキンググループ「脆弱性診断士スキルマッププロジェクト(代表は上野)」から公開されています。

 この資料は脆弱性診断を行う個人の技術的な能力を具体的にすべく、脆弱性診断を行う技術者(脆弱性診断士)のスキルマップと学習の指針となるシラバスを整備したものです。

 こういった経験から、業界標準としての脆弱性診断技術というのはどういうものかを掴んでいくことができました。本書はその入門編として執筆しました。この1冊があれば、Webアプリケーションの脆弱性診断をひととおり身につけることができるでしょう。

上野宣さん
上野宣さん:株式会社トライコーダ 代表取締役

手法を知り方法を学ぶことで、誰にでもできるようになる

――書籍名にある「Webセキュリティ担当者」、つまり読者はどんな方を想定されていますか?

上野:本書はセキュリティ会社で脆弱性診断士として活躍したい人から、開発会社などで自社のWebアプリケーションのセキュリティレベルを高めたい人外注先が開発したWebアプリケーションの受け入れテストとして脆弱性診断を行いたい人などの用途に応えるものです。

 脆弱性診断はセキュリティ会社が実施することが多いのが現状のようです。それは脆弱性診断という技術が特殊なために、熟練のセキュリティ専門家でないと実施できないという誤解からかもしれません。

 実際はそうではありません。手法を知り、方法を学ぶことで誰にでもできるようになる技術です。さらにはシステムの仕様を知っている開発者が脆弱性診断を行うことで、システムのことを知らないセキュリティ専門家が行うよりもうまく行える可能性すらあるのです。

――読み進めるうえでどのような知識が必要なのでしょうか。

上野:本書は入門編ですので、一般的なWebアプリケーションを利用したり、パッケージソフトをインストールしたりできれば問題ありません。しかし、「Webアプリケーション開発に関する知識」や「診断対象システムに対する理解」があることで、より多くの脆弱性を発見することができます

 何らかのプログラミング言語でのWebアプリケーションの開発経験があるのとないのとでは、脆弱性診断に対する理解の深まりや発見できる脆弱性の多さも変わってきます。

 というのは、Webアプリケーションの脆弱性診断の多くは、Webアプリケーションのソースコードを直接読まずに外部からリクエストを送るなどして実施する、いわゆるブラックボックス型のテストです。ですが、開発経験やプログラムを書いた経験があると、「自分ならこういう風に実装するから、ここに脆弱性があるはずだ」とか、「ここには同じような脆弱性が埋め込まれているはずだ」とか、そういった勘が働きます。

 また、脆弱性診断を行う場合には、診断対象システムに対する理解も必要になります。脆弱性診断士には「システムに要求されている設計仕様の理解」や「システムを利用する業務に関する知識」が求められます

 脆弱性診断に必要なことは、脆弱性やセキュリティ上の問題点を探し出すことであり、設計仕様の実装ミスを探すことではありません。しかし、システムの正しい動作が分からなかったり、使用方法がまったく分からなかったりするようでは、十分な脆弱性診断が行えない可能性もあります。

 ショッピングサイトやグループウェアといった一般的に使われるシステムであれば、ユーザーとしての利用経験があるのでそれなりに理解できているでしょう。ところが、普段まったく使わないような医療系のシステムや制御系システムだと困ることが出てくるかもしれません。

自分たちで積極的に脆弱性を探して修正する必要がある

――本書は「スタートガイド」ですが、読者はどんなことまでできるようになるのでしょうか。

上野初心者がWebアプリケーションの脆弱性診断をひととおり行うことができるようになることを目標としています。

 内容としては、Webアプリケーションが適切なセキュリティ要件定義通りに実装できているかどうかのテストを行う手法と、脆弱性に繋がるバグを発見するテストを行う手法、つまり「脆弱性診断を実施する手法」を学ぶための一冊となっています。

 脆弱性診断という名前から、発見するのは「脆弱性」だけのように思われるかもしれませんが、それ以外に「セキュリティ機能の不足」も発見することができます。これは、もし実装していればセキュリティレベルを強化することができる機能が不足していることを指します。バグではありませんが、実装されていることで防げる攻撃があるのです。

 例えば、HTTPSによる暗号化通信を使用していない場合や、セキュリティ機能を持ったHTTPヘッダーフィールドを使用していない場合などが該当します。セキュリティ機能を実装するか否かは、Webアプリケーションの発注者などと決定するセキュリティ要件次第となりますが、積極的に採用する方が望ましいものです。

――本書で学べる脆弱性診断によって、どんなリスクを減らすことができますか?

上野:何かのシステムにWebアプリケーションを採用する場合、主な選択肢としては下記の二つになります。

  1. CMS(WordPress、EC-CUBEなど)やグループウェア(サイボウズ Office、IBM Notes/Dominoなど)などの既存のプロダクトを使用
  2. 新規開発もしくは既存のプロダクトに改修を加えたWebアプリケーションを使用

 1.のような既存のWebアプリケーションのプロダクトは、一般的にバージョン管理がなされています。プロダクトのサポートが継続されている限りは、脆弱性が修正されるとアップデートされたバージョンが提供されます。そのため、脆弱性対策としては、既知の脆弱性をアップデートなどによって修正するか、設定の不備を見直すことなどで対応することができます。

 一方、2.のような新規開発もしくは既存のプロダクトに改修を加えたWebアプリケーションの脆弱性対策は、一般的には開発会社などが要件定義・設計・実装・テストを行いリリースします。1.のようなプロダクトと大きく違う点は、そのWebアプリケーションに脆弱性があったとしても、自分たちが手を加えない限り勝手に修正されることがないことです。そのため、セキュリティ対策を自分たちで行う必要があるわけです。

 脆弱性対策としては、下記のことが必要となります。

  • 適切なセキュリティ要件定義を行う
  • セキュリティ要件定義に基づき、適切に設計して実装を行う
  • セキュリティ要件定義通りに実装できているかどうかのテストを行う(脆弱性診断)
  • 脆弱性に繋がるバグがないかどうかのテストを行う(脆弱性診断)
  • 第三者が開発したシステムを受け入れる際に、機能テスト・性能テストとともにセキュリティテストを行う(脆弱性診断)

 このタイプのWebアプリケーションは、攻撃者が先に脆弱性を見つけて悪用する可能性があります。この状態での攻撃は「ゼロデイ攻撃(Zero-day attack)」と呼ばれ、脆弱性に対処する手段がない状態で脅威にさらされる状況となり、危険な事態に陥る可能性もあります。

 そのため、自分たちで積極的に脆弱性を探して、攻撃者が脆弱性を発見して悪用する前に修正を行っておく必要があるのです。本書で習得できる脆弱性診断によって、そのリスクを少しでも減らしてもらいたいですね。

脆弱性診断技術を勘とセンスの「職人芸」にしないために

――これから本書で学ぼうとする方へ、最後に伝えておきたいことはありますか?

上野:脆弱性診断の基本的なやり方は手順があり、それを覚えるのは難しくはありません。しかし、従来、脆弱性診断技術は職人芸のように思われてきました。たしかに、多くの脆弱性を発見しようとすると、システムやプログラミングなど多くの知識が求められます。

 それらは勘やセンスだとして片付けられることが多かったのですが、本書ではその部分を言語化して標準的な技術としてまとめました。この苦労は私だけがしたのではなく、先に挙げた「脆弱性診断士スキルマッププロジェクト」という業界のワーキンググループの皆さんで分かち合ったものです。

 本書を執筆したのは私ですが、随所随所に業界トップレベルのエンジニアたちの知恵や知識、勘所などが詰まっていることを感じながら読み進めていただければと思います。

Webセキュリティ担当者のための脆弱性診断スタートガイド

 Amazon  SEshop  その他

Webセキュリティ担当者のための脆弱性診断スタートガイド
上野宣が教える情報漏えいを防ぐ技術

著者:上野宣
発売日:2016年8月1日(火)
価格:3,456円(税込)

本書について

本書では脆弱性診断を行う際のスタンダードツールとなっているOWASP ZAPとBurp Suiteを使用し、開発者やセキュリティ担当者がセキュリティに問題がないかを検査する方法を解説します。