東陽テクニカ運用前のインシデント対策とは情報漏えいに関しては、これまで多くの事件が起き対策が進んでいる。そのため原因は、内部犯や設定ミスなどによる人的要因が多いと思うかもしれない。実はWebアプリケーション攻撃によるものが一番多い※。Webアプリの攻撃を防ぐ最適な方法として東陽テクニカの北條氏が推奨するのが、運用前のインシデント対策だ。氏Webアプリケーション攻撃には脆弱性対策が必須Webアプリからの情報漏えいの攻撃例には、改ざんされたWebサイトに誘導してマルウエアをダウンロードさせる「水飲み場型攻撃」や「ドライブバイダウンロード攻撃」などがある。System)の脆弱性を突いてWebサイトを改ざんするケースが多いため、知らないうちに加害者となる可能性もある。北條氏は、「エンドポイントで対応していても、未対応の攻撃には対抗できません」とまず警告する。一つが、Webアプリからの情報漏えいだ。代表的な攻撃がDBにアクセスし情報を窃取するSQLインジェクションや、cookie情報を利用した不正アクセスなどをするクロスサイトスクリプティングである。これらは、Webアプリの脆弱性対策を行っていれば防御可能の攻撃だ。多くの企業では多数のセキュリティ対策製品を利用しているが、これらは役に立たないのだろうか。各製品は多層防御の考え方で、それぞれの領域で防御している。暗号化通信は盗視リスクの低減、ファイアウォールは接続リスクの低減、IPS/IDSは侵入リスクの低減、WAFは攻撃データリスクの低減という具合で、それぞれの役目しか果たさない。WebアプリにフォーカスしたWAFはどうか。北條氏は、「たとえばストアドクロスサイトスクリプティングは、攻撃を仕掛ける段階では問題なく、いったんDBに書き込まれた後、それを基に操作することで発生します。2段階の攻撃になるため、WAFでは検知が難しい。それを防止するには、攻撃ロジックそのものの防御が必要です」と語る。本質的にはWebアプリの脆弱性を塞がなければ対策はできないのだ。多層防御を行っていても、Webアプリの脆弱性が残っていれば攻撃を防げない運用前のロジック修正を可能にするIASTでは、いつ脆弱性対策を行うべきか。インシデント対応プロセスでは、インシデントが発生してからの対応を規定しており、インシデントの発生そのものを抑えることを考慮していない。北條氏は、「Webアプリのロジックそのものを修正しないと本当の意味での脆弱性対策にはならないので、運用前に対策を行う必要があります」と語る。一般的な開発は、設計、実装、テスト、リリースというプロセスで行われる。セキュリティ要件を考慮した開発では、設計時にアクセス権や認証などに関するセキュリティの基本方針を決定し、それに基づいて実装する。その後、確実に実装されているかを脆弱性診断で確認し、脆弱性が発見される場合は対策を行い、最終テストを実施。リリースという運びになる。開発現場によっては、設計時のセキュリティ要件の検討が十分に行われずに開発工程が進み、テストの後に脆弱性を診断するケースがある。開発部門のセキュリティスキルが十分でなく、セキュリティ設計の妥当性が判断できないからである。北條氏は、「十分にセキュリティ設計の妥当性を検証する余裕がありません。出荷前にはセキュリティリスクを担保したいので、外部の脆弱性診断サービスは行います。リリースが目前に迫っていると、本当にクリティカルですぐに対策ができるもの以外はあまり対策されないことも多い。ロジックに関わる脆弱性は設計からやり直す必要があり、なかなか対策されません」と語る。強固な脆弱性対策を実施するにはどうすればいいのだろうか。開発部門に高度なセキュリティスキルを持つ人材を確保できないとすれば、高度なスキルがなくても脆弱性診断をし、対策をできればよい。そのためのソリューションとして北條氏が提案するのが、「IAST(イアスト)」である。スキル不足や時間不足を補いセキュアプログラミングを実現IASTは、開発中にできる脆弱性診断ツールだ。通常の脆弱性診断では動作結果の報告はするが、ソースコードは見ていないので原因までは分からない。オプションでソースコード診断を行うこともできるが、時間も費用もかかる。その点IASTは、機能テスト環境にエージェントを組み込むだけで、テストで実行された機能をインタラクティブに脆弱性診断をし、コードの問題箇所とセキュアコーディング情報を提示する。「セキュリティスキルの高くない開発者でも簡単に利用できます」(北條氏)IASTの一つは、イスラエルのセキュリティ企業Checkmarx社が提供している。同社は、Gartner社のリポートで高評価を得ており、ソースコード診断で定評がある。SAST(シーエックスサスト)」だ。「CxOSA(シーエックスオーサ)」は、オープンソースのリスク解析を行う。対しセキュアプログラミング情報を提供する。1機能テストを実行中に自動的に脆弱性を診断し結果を報告。2問題箇所をソースコードレベルで指摘し対策を提示。ソースコード修正例を表示するので、すぐ修正できる。3呼び出されるサードパーティライブラリの問題箇所も指摘。「バイナリデータをデコンパイルしてソースコードを解読するので、ソースコードを所有していない外注先が制作したライブラリ内部の脆弱性まで可視化します」(北條氏)。4唯一完全にSASTと連携。CxIASTは動作した結果判明する脆弱性を検出するので、重複する脆弱性は特に重要性が高いことが分かる。5脆弱性診断ルーチンのカスタマイズ。「カスタマイズで診断精度を向上できます。独自の脆弱性診断ルーチンも制作可能です」(北條氏)CxIASTで脆弱性診断を実施するには、CxIASTサーバを用意し、Webアプリにエージェントを仕込むだけで準備が完了。診断はツールが自動で行うので、テスターが診断を行うためのキックとしてWebアプリを使用すればよい。利用シーンとしては、QA部門による機能テストに加え、ステージング環境での動作チェックがある。北條氏は、「検証中に仕掛けておいて、裏で同時に脆弱性診断ができると非常に費用対効果が高くお勧めです」と語る。最後に北條氏は、「インシデント対策にはアプリ自体を安全にすることが重要です。自動的に脆弱性を診断するIASTを活用して、スキルと時間の不足を解決してください」と語った。