1. HOME
  2. article
  3. CS四方山話(第18話)脆弱性 ファジング ペネトレーションテスト

CS四方山話(第18話)脆弱性 ファジング ペネトレーションテスト

四方山

今回は「脆弱性」「ファジング」「ペネトレーションテスト」といったキーワードに関してお話ししたいと思います。

何故ならば、直近、筆者は「脆弱性検証」に関する業務に関わっており、自分にとってタイムリーなネタであるという身勝手な理由に依ります。が、言い訳としては、サイバー攻撃やサイバーセキュリティーが日々ニュースになる昨今、これらのキーワードを知っていると、何かしら良いことがあるのでは?と思いますので、お付き合いください。

ソフトウェアを対象にした、セキュリティにおける狭義の脆弱性とは?

「脆弱性 (vulnerability)」という言葉は、IT系の用語として多用され、皆さんも目にする・耳にする機会が増えていると思います。「vulnerable」の語源は、ラテン語の「vulnus(傷)」で「傷つきやすい」という意味になります。

材料力学などで「脆さ」を表す言葉は「脆性 (brittleness) 」ですので、脆弱性とはニュアンスが異なります。物体としての脆さは「脆性 (brittleness) 」で、抽象的な脆さは「脆弱性 (vulnerability)」という棲み分けなのかな?と思います。
 
脆弱性 (vulnerability)」は、心理、医学、軍事、環境などの分野でも用いられますが、ここではIT系に的を絞ってお話ししますと次のような説明になると思います。

脆弱性(ぜいじゃくせい)とは、OS、アプリケーション、ネットワークなど情報システム全体や、それを構成する要素において、設計不備、実装不備、運用不備などが原因となって発生する情報システム上の欠陥である。

筆者は、30年以上ソフトウェアを作る仕事をしていますが、完璧なモノを作れた! と言い切れるものはありません。
 
システムの規模が大きくなると、ソースコードの規模も大きくなり、複数のヒトが分担してコードを書くことになり、「どこにも穴は無い」という完全性から遠ざかります。そうして、作り込まれたバグがセキュリティホールとなり脆弱性の原因となります。また、設計時に想定されていなかった用途に適用されるとか、そんな使い方するの? という想定外の操作によって問題が露見するというケースもあります。ある意味、設計時の運用想定が甘いと言われればそれまでなのですが、開発のご予算というものもありますので、一定の工期や工数の範囲の中で設計・実装・試験を行わざるを得ないのが「現実」で、「完璧なモノ」を作ることは難しいです。
ということで、日々、様々なOS、ツール、アプリケーションなどの脆弱性が報告されることになります。

CVE で脆弱性が公開されたら、すぐアップデートを!

CVE (Common Vulnerabilities and Exposures) は、日本語に訳すると「共通脆弱性識別子」ということになります。前述の通り、どんなプログラムにも脆弱性は潜んでいます。そして、その脆弱性は、何らかのきっかけで顕在化し報告されることになります。脆弱性の報告がバラバラに行われると収拾が付かなくなりますので、それを一元管理するという取り組みが行われています。
 
CVE は、1999年に、米MITRE社によって提案されました。MITRE社では、CERT/CCやHP、IBM、Red Hat、Symantecといった主だった脆弱性情報サイトと連携し、脆弱性情報の収集と採番を行ってくださっています(有り難いことです)。日本でも、IPAさん、JPCERT/CCさんなども、MITRE社と連携し、CVEに枠組みに参画しています。

 たとえば…

 Windows の 2022年8月(リリースは米現地時間8月9日)のセキュリティ更新では、
 CVE番号ベースで121件の脆弱性への対処が行われています。その内17件は深刻度「Critical」という評価になっていますので、皆さんも未対応であれば、早めのアップデートをお勧めします。
 下記は、上記に含まれる CVE の1つです。

macOS Monterey 12.5(リリースは米現地時間7月20日)では、CVE番号ベースで56件の脆弱性への対処が行われています。アプリケーションの権限昇格や、サンドボックスの迂回など「Critical」なモノも含まれており、やはり早めのアップデートをお勧めします。

日常使っているOSってそんなに問題を内包しているの? と思われるかも知れませんが、その通りです。

基本的には、OSなどのアップデートが公開されるまでは、該当するCVEでの脆弱性の公開も行われないようになっています。しかし、OSのアップデートと、そこで対処されたCVEが公開されれば、その脆弱性を利用した攻撃が考えられます。直ぐにアップデートを行わないPCなどを狙う訳です。 これを「ゼロデイ攻撃 ( Zero Day Attack )」と呼びます。セキュリティ・アップデートが公開された場合は、早めにアップデートを行うように心掛けましょう(PCだけでなく、ルータなどのIoT機器に関しても同様です)。

システム、ネットワーク、ハードウェアなども含めた広義の意味での脆弱性

CVE でリストアップされる脆弱性は、OS、ツール、アプリケーションの脆弱性ということになります。これらを「ソフトウェアの脆弱性」としましょう。しかし、広く捉えると、次のような脆弱性が考えられます。

・ソフトウェアの脆弱性
・システムの脆弱性
・ネットワークの脆弱性
・ハードウェアの脆弱性
・環境の脆弱性
・運用の脆弱性

「システムの脆弱性」とは、プログラムの複合体であるシステム全体での脆弱性ということになります。「システム」とは、たとえば「Webサイト」です。

いまや、日々、ブラウザを用いて各種Webサイトを参照するという行動が当たり前になっています。私も、開発など日々の業務を行う上でも、こうして原稿を書く上でも、ブラウザを用いて各種Webサイトを閲覧し情報収集することが必須となっています。そのぐらい多用されるWebサイトの仕組みは、当然、攻撃のリスクに晒されます。結果、開発側よりも早く、「悪い人」に脆弱性を発見され、その脆弱性を利用して攻撃が行われます。

Webサイトの脆弱性を狙った攻撃として有名処は「クロスサイトスクリプティング」「SQLインジェクション」です。ここでは詳説しませんが、前者では、悪意を持って構築されたサイトに誘導されてしまいます。後者では、Webサイトの裏方にあるデータベース上の情報が不正に参照されたり、削除されたりします。いずれも、個人情報や機密情報の漏洩につながり、深刻な被害をもたらすことになります。

「ネットワークの脆弱性」とは、対象となる機器(サーバやPCなど)の設定、あるいは、ネットワークを構成する機器(ルータなど)の設定などの不備によって、外部からのアクセスを適切に制御できていないために、対象となる機器のデータを参照されたり、その機器に侵入され乗っ取られたりするという問題です。対象機器が、データベースを抱えていれば、そのデータを参照され、暗号化されるランサムウェア攻撃を受けることになります。対象機器が、市場に多数投入されているIoT機器ならば、DDOS攻撃の踏み台にされる場合もあります。

「ハードウェアの脆弱性」とは、PCなどのハードウェア上で動作するソフトウェアの脆弱性ではなく、ハードウェア自体が内包している脆弱性になります。IoT機器などは、ハードウェア上でOSが動作して、その上でアプリケーションが動くという構成も多いので、OSやアプリケーションの問題で不具合が発生する場合は「ソフトウェアの脆弱性」ということになり、識別は難しいのですが……。

ハードウェア寄りの1つの例としては「Meltdown」という脆弱性があります。これは、pre-fetch というメモリを先読みするためのロジックの問題です。処理速度向上のために、CPUがメモリを先読みする動作を行うのですが、その仕組みを悪用して、本来は参照できないはずのメモリ領域を参照する状態を作ってしまうという問題です。

「環境の脆弱性」とは、ITシステムやその構成要素の問題ではなく、それらを実現している環境の問題です。たとえば、業務を運用するためのサーバーが社内に設置されているとします。その設備上の機器もソフトウェアも、キチンと設定され、また適切にアップデートが行われており、脆弱性はないとします。しかし、そのサーバーが設置されてサーバーは、施錠もされておらず「誰でも入れる」場所だったとします。すると悪意を持ったヒトが、その部屋に侵入し、コンソールから操作をして、データ参照できるかも知れません。もっと、手っ取り早いのは、水をぶっかける、電源を抜くなどの破壊行動で、業務を停止させる方法でしょう。大事なモノを仕舞っている部屋は、入退管理をキチンと行いましょう。

「運用の脆弱性」とは、システムを使う人々に起因する問題です。たとえば、社員全員で同じパスワードを使い回す、機密情報をUSBメモリに格納して持ち出す、セキュリティの甘い野良Wi-Fiに接続してメールを参照するなど、「セキュリティ」という概念を持たない、あるいは軽視している人間のモラルの低さが原因ということになります。

例によって、冒頭に掲げたテーマの 1/3 しか消化できませんでした……。ということで、残り2テーマは、第19話に委ねたいと思います。

脆弱性は、いろいろな形で、私達が日常的に使っている「道具」に潜んでいますし、「習慣」の中に潜んでいるものもあります。システム管理者さんなど、専門家にお願いしなければならないこともありますが、個人や会社で日常の中で気を付けることで防ぐことができる脆弱性もあります。そのような観点を皆さまに持って頂く機会になれば幸いです。


【四方山話】

●余談1

前回(第17話)の山口ネタ・クイズの答え合わせです。

➡問1:画像1は、山口市内の住宅街にあるタンクです。大きさは門扉などから類推してください。
さて、このタンクには「何が貯蔵」されているでしょうか?
➡答1:このタンクは、温泉のお湯を溜めるためのタンクです。

山口市には湯田温泉があります。SYNCHROの山口で1つ目のオフィスの住所は、山口市湯田温泉です。また、街中には、無料で使える足湯も数箇所あります。

タンクは、湯田温泉配給協同組合が管理しており加盟旅館など約60箇所にお湯を供給しているそうです。
画像1 温泉のお湯を溜めるためのタンク
➡問2:画像2は、山口市内にあるパラボラアンテナ群です。
これらのパラボラアンテナの「使用目的は何」でしょうか?(目的は1つではありません)
➡答2:このパラボラアンテナ群の正式名称は「KDDI株式会社 山口衛星通信所」です 。
現在、22基のパラボラアンテナが稼働しています。
32m、34m径の2基の大きなパラボラは電波望遠鏡で、国立天文台と山口大学が運用しています。
18m、9m径のパラボラは、インテルサット衛星、インマルサット衛星との通信用です。
画像2 KDDI株式会社 山口衛星通信所

●余談2

現在、山口県は、エヴァンゲリオン & 庵野秀明さん の 祭り中 です。宇部市では「まちじゅうエヴァンゲリオン」を展開中です。山口宇部空港には、全長3mの初号機が待ち構えています。

山口市にある山口県立美術館では「庵野秀明展」が開催されています。いずれも、9月4日までです。


CS四方山話の過去の記事はこちら(合わせてお読みください)


中村 健 (Ken Nakamura)
株式会社SYNCHRO 取締役 CTO
機械屋だったはずだが、いつの間にかソフト屋になっていた。
以前は計測制御、知識工学が専門分野で、日本版スペースシャトルの
飛行実験に関わったり、アクアラインを掘ったりしていた。
VoIPに関わったことで通信も専門分野に加わり、最近はネットワーク
セキュリティに注力している。
https://www.udc-synchro.co.jp/

サイバーセキュリティ四方山話の最新話は、メールマガジンにてもご案内致しています。是非JAPANSecuritySummit Updateのメールマガジンにご登録ください。
メールマガジンの登録はこちらからお願いします。

関連記事

サイバーセキュリティの課題をテーマ別に紹介中!!