脆弱性診断とは、コンピュータ・ネットワークの脆弱性を調査し、結果を報告・対策を提示する、ホワイトハッカー的なお仕事です。
なお、あらかじめ最初にお伝えしておきますが、この脆弱性診断という行為を、自ら管理するサーバ以外に実施してしまうと不正アクセスと見なされますので、ご注意ください。
脆弱性診断を大きく分類すると、プラットフォームの脆弱性診断と、Webアプリケーションの脆弱性診断があります。
プラットフォームの脆弱性とは、サーバ上で稼働しているOSやミドルウェアなど、既製品ソフトウェアの弱点です。サーバには、Windows Server,Linux などのOS、Apache、Tomcat、OpenSSL、などのOS上で動く既製品ソフトウェアが多数存在します。これら既製品ソフトウェアは、世界で広く利用されており、世界中の研究者の調査対象となっているため、時間の経過とともに日々新たな脆弱性が発見されては公開されます(公開された脆弱性を既知の脆弱性と呼びます)。
脆弱性データベース JVN iPedia
公開という行為は脆弱性を直していくためには重要なことではありますが、攻撃者に利用されることにもなります。したがって、サーバ管理者は、脆弱性情報をウォッチし、すみやかに対処する必要があるのです。
プラットフォームの脆弱性診断は、自ら管理しているサーバのOSやミドルウェアに、既知の脆弱性が存在するのかを確認する作業です。既知の脆弱性は膨大な数がありますので、主にツールを使って自動照合します。ただし、緊急の問題については個別対応する必要があります。
一例ですが、Nessusというツールがあり、非商用として無料で使用することができます。
脆弱性検知スキャナ Nessus
Webアプリケーションの脆弱性とは、独自の作り込みをしたWebアプリケーションの弱点のことです。既製品ではありませんので、個別に診断を行う必要があります。ただし、Webアプリケーションの脆弱性にはお決まりのパターンがあります(代表的なものとしてはSQLインジェクション、クロスサイト・スクリプティングなど)。これらお決まりのパターンの脆弱性がどこに存在するのか、調査を行います。アプリケーションの作り自体が、サイトによって異なりますので、どこに脆弱性があるのかは触ってみなければわかりません。また、アプリケーションの仕様を理解していなければ適切な診断ができません。したがって、主にエンジニアによるマニュアル診断が行われます。
Webアプリケーションの脆弱性診断に必要不可欠なのが、ローカルプロキシです。一例として、BurpSuiteというローカルプロキシが使われます。
ローカルプロキシ BurpSuite
脆弱性診断の基礎的なお話は以上です(細かい話は省略していますが、入門編ということでご了承下さい)。私の実感としては、まずプラットフォームの脆弱性については、幅広いセキュリティ知識と英語力と現場での経験が必要です。複雑で難しい判断をすばやく実施することが求められます。Webアプリケーションの脆弱性については、Webアプリの仕組みを良く理解していることが必要です。特にWebアプリの開発者であればスキルとして親和性が高いと思います。
※本投稿は、個人の見解に基づくものであり、所属団体等の見解を示すものではありません。世間一般の多様な考えの一つとしてご覧ください。