テストの種類・セキュリティテスト

2020年10月1日テスト品質

セキュリティテストはなぜ重要になってきたの?

セキュリティテストとは、個人情報の抜き取りや装置の乗っ取り踏み台化 などのサイバー攻撃に対して、必要・十分な防御力をもっている事を確認するテストです。ですのでファジングテストとぺネストレーションテストのように、装置に対してサイバー攻撃を仕掛けてみて、装置が問題を起こさないかを確認するというテストの方法が一般的です。

アカウントの乗っ取り情報の漏洩などのサイバーセキュリティ―の問題が一般のニュースでも取り上げられるようになってきて、インターネットのセキュリティについての関心も少しずつ高まってきました。これは、スマフォの普及が進んで多くの人がインターネットを生活の基盤として使う事が増えてきた事で、インターネットの危険性についても目に付く事が増えてきたからです。

しかしスマフォの普及と並行して、実はそれ以上のスピードで世の中を支える様々な機能で IoT が進展しています。 IoT とは Internet of Things の略称ですが、全ての物がインターネットに繋がる事を示しています。身近な物だと、清涼飲料水の自動販売機だったり、駐車場の精算機だったり、コンビニのレジだったりと、これまではそれが単体で働いていた機器がインターネットに繋がって、サーバと情報を交換する事でより良いサービスを提供するようになってきています。

インターネットに繋がって役に立つサービスを提供する事自体はとても嬉しい事なのですが、物事には表があれば必ず裏があります。インターネットに繋がる事で色々な事が出来るようになるという表の世界の嬉しさの裏には、世界のどこからでもサイバー攻撃を受ける可能性がある、という裏の世界の恐ろしさが同時に発生しています。 そして、このサイバー攻撃から身を守るのがセキュリティー機能です。

各国が軍隊の中にサイバー軍を組織して、サイバー空間つまりはインターネットの中で攻撃と防衛を繰り広げている現在では、セキュリティ機能の重要性はどんどん大きくなってきています。個人情報の抜き取りや装置の乗っ取りや、踏み台化して他の装置の攻撃に使われる、などの危険が常に存在してるのがインターネットの世界なので、そのようなサイバー攻撃に耐えられるかどうかを確認するのが、セキュリティ機能を確認するセキュリティテストです。

組み込みシステムのセキュリティテスト

セキュリティテストと言うと、数年前まではテストの対象は多くの場合は企業が運用しているサーバでした。サーバには多くの重要な情報が記録されているのでその情報を盗むために攻撃されたり、重要な機能を提供している場合にはその機能を妨害するために攻撃されたりします。例えば、地方自治体の運用するサーバならば、その自治体の住人の住所や氏名などの個人情報が内部に記録されていますし、地方自治体のいろいろな窓口業務をインターネットを介して住民に提供する重要な機を提供しています。 このようなサーバがサイバー攻撃を受けて、住民の情報を盗まれたり、窓口業務が停止したりしては大変です。そうならないように、地上自治体のサーバは十分なセキュリティ機能を持っている必要があり、セキュリティテストではその機能を確認します。

ところで、IoT の広まりで数が増えてきな組み込みシステムに必要なセキュリティも、サーバと同じでしょうか? 組み込みシステムはサーバの様に大量の情報を内部に記憶したり窓口業務を一手に引き受けたりする事はありません。 例えば街中の自動販売機を考えてみると、その中には一日にどんな種類の飲料が何本売れたかとか今現在の商品は何本残っているか、という情報はあります。でも、これらの情報はわざわざサイバー攻撃を仕掛けてまで盗みだす価値があるとは思えません。 では、組み込みシステムはセキュリティ機能は気にしなくても良いのでしょうか? 

残念ながらそんな事はありません。自分の中に重要な情報は持っていなくても、例え小さくてもインターネットに繋がっているコンピュータなので、サイバー攻撃で乗っ取られてしまうと踏み台として他のコンピュータシステムを攻撃するための拠点に使われてしまう危険性があります。IoT に使われている組み込みコンピュータは世の中の裏方として働いている事が多く、スマフォのように人の目に付く事が殆どないので、乗っ取られていても判り難いという点もあり、攻撃の対象になり易いのです。実際に、数年前には街中に設置されている多数の IPカメラが乗っ取られるという事件も起きています。

このように、組み込みシステムの場合には、内部の情報を盗まれるよりはシステムを乗っ取られる事による問題のほうが大きいので、セキュリティについても乗っ取りに対する防衛という観点により重点を置いてセキュリティテストで確認する事になります。とはいえ、情報を盗むのもシステムを乗っ取るのも、どちらもシステムに侵入するという基本的なところは同じなので、これに対応するテストの方法もそんなに変わりはありません。隠れた脆弱性を検査するファジングテストや、システムへの侵入を試みるぺネストレーションテストなどが主体になります。組み込みシステムの場合には、システムの乗っ取りにより注意をおいてテストをする、という事を気に留めておけば良いでしょう。

 ファジングテスト

ファジングという言葉は聞いた事がある人も多いと思いますが、ソフトの脆弱性を見つけるための手法の1つです。脆弱性というと読んで字のごとくソフトの持つ脆くて弱い性質ですが、具体的にはコンピュータに潜在している情報セキュリティー上の欠陥の事ですね。セキュリティーホールと呼ばれる事もありますが、要するにサイバー攻撃の攻撃ポイントです。 ですので、ファジングとは、コンピュータに潜在しているセキュリティーホールを見付ける多面お手法の1つです。

では、ファジングとはどんな事をしてソフトのセキュリティーホールを見付けるのかというと、検査対象のコンピュータにファズと呼ばれる問題を引き起こしそうなデータを多量に送り込んで、それに対するコンピュータの応答を監視して脆弱性の有無を確認するという方法を取ります。

検対象に送り付けるファズデータは、対象がウェブサーバなら HTTP リクエスト、ウェブラウザなら HTTPレスポンス、ネットワーク通信機能なら TCP やIP などの通信プロトコル、CUI プログラムならコマンドや引数など、調査対象によって様々です。これらのファズデータを生成し検査対象のコンピュータに送り付けて、再起動やハングアップや異常な応答が起きないかを監視するのが、ファジングツールと呼ばれるファジングテスト用のツールソフトです。

ファジングテストは多くのファズデータを送り付けてテストをするのでファジングツールを用いて行います。有償のファジングツールは使い勝手も良く検査対象も広い範囲が可能な物が多いです。 ですが、初めてファジングを試してみる場合や、多くのテスト費用が書けれれない開発プロジェクトの場合には、無償のファジングツールを試してみるとのいうのも、ひとつの手です。

ファジングについては IPA からも様々な情報やツール提供されていますので、興味のある方はぜひIPAのファジングの紹介ページもご覧ください。

 ぺネストレーションテスト

ぺネストレーションテストは、セキュリティの専門家疑似的な攻撃を行ってコンピュータシステムのセキュリティの問題点を見付けるテストです。日本語では侵入テスト疑似ハッキングテストと呼ばれています。ホワイトハッカーと呼ばれるセキュリティの専門家が、様々なツールも駆使してコンピュータシステムへの侵入を試みるテストです。

ファジングテストが様々なファズデータを作成して網羅的に脆弱性を調べようとするのに対して、ぺネストレーションテストは特定の意図を持つ攻撃者がシステムの攻撃に成功するかどうかを確認するテストです。ですので、ぺネストレーションテストの成果はテストを計画し実施するホワイトハッカーの力量に大きく依存します。経験の豊富なホワイトハッカーにテストを依頼すると、テスト費用も高額になってきます。このことからも判るように、ぺネストレーションテストは一般的に有償です。

 どのテストをすれ良いの?

ファジングテストとぺネストレーションテスト、どちらのテストをしておけば良いのでしょうか? 両方とも実施できれば一番良いのですが、それほどテスト期間やテスト費用が潤沢にある開発プロジェクトばかりではないのが現実です。どちらか一方だけしか実施できないのであれば、グータラ親父はファジングテストの実施を勧めます。

脆弱性を確認するファジングテストは攻撃されるリスクの有無をある程度は網羅的に確認するテストです。一方で、ペネトレーションテストは特定の意図を想定した攻撃を予防するためのテストです。製品に要求されるセキュリティの内容にもよるので一概には言えないのですが、ある程度網羅性が望めるファジングテストから手を付けるのが良いのではないでしょうか。

(次の記事)テストの種類・The Art of Softare Testing のシステムテストカテゴリ に続く
(前の記事)テストの種類・RAS の機能テスト に戻る
 テストの記事の先頭 に戻る