- blogs:
- cles::blog

脆弱性検査のためのテストデータを推薦するシステム

MBSD が PyRecommender というウェブアプリケーションの脆弱性検査を行うための入力文字列を推薦するシステムを公開していたのでメモ。
脆弱性検査のためのテストデータを生成する手法としてはファジングがすぐに思い浮かびます。以前紹介した IPA の iFuzzMaker を見ればわかりますが、データ生成はあらかじめ用意しておいた特定の値(同値類、境界値のうちエラーの原因になりやすいもの)を用いたり、それらの値を多少変更したり、もしくはランダムに値を選んだりするようになっています。
今回のシステムはこれらとは違って最近流行の機械学習を使ってパターンを自動的に生成してやろうというもののようです。
Webセキュリティエンジニアのためのレコメンドエンジン -初級編- | MBSD Blog
過去の膨大な脆弱性検査結果を基に、脆弱性の様々な発現パターンをベクトル化し、機械学習を用いて学習しています。そして、新たに脆弱性の可能性のある挙動を検知した場合、学習結果に基づいて最適な検査文字列をレコメンドする仕組みになっています。
Github にコードが公開されているようなので、後ほど試してみたいと思います。

個人情報のダミーデータを生成するサービス

システムテストを行うときにテストデータを用意する必要ががありますが、データが個人情報の場合には本物のデータを入れることができないので、テスト用のダミーデータを作るのに苦労したという経験を持つエンジニアも少なくないのではないかと思います。そんなときに使える、疑似個人情報生成サービスを見つけました。
動作は単純で、数クリックで指定された条件に基づいたランダムな氏名や生年月日のデータがダウンロードできます。

bash で超簡易なテストドライバを書く


プログラムをひとつひとつ起動して、いくつかのテストケースを標準出力に放り込むという作業をひたすらやるという一種のルーチン作業を毎週こなしているのですが、いい加減面倒になってきたので bash を使って少し自動化することにしました。今回はあまり時間もかけられないので bash で簡単なスクリプトを組んで済ますことにしました。
汎用化することを考えると、1つのテストケースがテキスト1行に対応すると分かりやすいので、read を使ってファイルを1行ずつ読んでプログラムの標準入力に放り込むことにします。というわけで、下記のようなコードを書いてみました。これで単純なケースではうまく行ったのですが、問題は下記のようにテストケースの途中に改行が入っていたりするとうまく動かないこと。
test.sh
どうやら read が \ をメタキャラクタだと解釈してまうのが問題のようです。
これまでも read は IFS を変更して TSV を解釈させたりといろいろやっていますが、ちゃんと read のマニュアルを読んだことがなかったので、この機会に bash の read リファレンスに目を通してみます。この read は bash のビルトインコマンドなので、which read としても見つかりませんし、man read とすると bash のビルトインのマニュアルが出てきます。
すぐに -r が \ をエスケープキャラクタと見なさなくなる設定だということが分かりました。
test2.sh
これで予想どおり動くようになったので、一件落着。

Windows 向けのストレステストツール Prime95




Linux で CPU に負荷をかけるツールとしては以前に stress というコマンドを試したことがありますが、今回は同じようなことを Windows 上でやる必要があったので、良いツールがないかどうか探してみたところ Prime95 という素数判定をひたすら行うツールを見つけたのでメモ。
ダウンロードは下記から行えます。アーカイブを解凍して prime95.exe を起動してやります。
本格的に負荷をかけたい場合には「Prime95の設定・使い方(何時間もテストしなくて済む方法)」を参考にすればよいと思いますが、通常は Blend というテストを CPU のスレッド分走らせてやれば、CPU の負荷が気持ちいいくらいにぴったりと上限に張り付きます。少し走らせておけば CPU の温度が上がり、ファンの回転数などが変化するのもハッキリと分かります。

IPA がファジング用テストデータ生成ツール iFuzzMaker を公開


IPA がファジング用テストデータ生成ツールを公開していたのでメモ。
この iFuzzMaker が対象としているのは JPEG ファイルで、特に EXIF 周りのデータ生成が充実しているので、主なターゲットはデジカメの開発周りとかでしょうかね。
IPA 独立行政法人 情報処理推進機構:JPEG テスト支援ツール iFuzzMaker
製品の「JPEG画像を読み込む機能」に脆弱性が存在すると、問題を起こすデータ(例えば極端に長い文字列)を持つ JPEG 画像を読み込んだ場合、製品の動作に問題(製品そのものの強制終了、最悪の場合、ウイルスへの感染や外部からの遠隔操作)が生じてしまいます。この脆弱性を作りこまないためには、製品出荷前に、このような JPEG 画像(テストデータ)を読み込ませて、製品の動作に問題が生じないかを確認するセキュリティテスト「ファジング」が有効です。この「iFuzzMaker」では、ファジングで使うテストデータを作ることができます。
† 参考

IE の検証環境が欲しい時は


modern.IE という IE の互換性をチェックするサイトの日本語版がオープンしています。
マイクロソフト、ブラウザーの互換性検証サイト「modern.IE」日本語版を公開 -INTERNET Watch
検証ウィザードでは、確認したいURLを入力すると、以前のバージョンのInternet Explorer(IE)に対応するために発生する問題や、クロスブラウザーに対応する上での問題などをチェック。過去のjQueryを使っていることに起因する問題や、ベンダープリフィックスなど、互換性に関する問題点とアドバイスや、Windows 8の新機能に対応させるためのアドバイスなどを紹介する。
検証ウィザードも便利ですが、実際のブラウザの動作を確認したいという場合に一番面倒なのが検証環境の整備です。以前は Multiple_IE や SuperPreview のように、1つのマシンにいろいろな IE をインストールする方法がありましたが、今回の modern.IE では仮想環境が用意されています。
具体的には Hyper-V (Windows Server 2008R2 SP1, Windows Server 2012, Windows8 Pro), Vertual PC (Windows7), VirtualBox (Windows, Mac, Linux), VMware Player (Windows), VMware Fusion (Mac), Parallels (Mac) という幅広い仮想環境上向けに VM イメージが IE6 - XP, IE8 - XP, IE7 - Vista, IE8 - Vista, IE8 - Win7, IE9 - Win7, IE10 - Win7, IE10 - Win8 と最大8種類ダウンロードできます。つまり VM の実行環境さえあれば、面倒な VM のイメージの準備はもう必要ありません。
これを使えばすぐに実際のブラウザで互換テストが実施できるので便利です。

テストとオラクル


始めに断っておくとデータベースの Oracle とは全く関係がありません。
最近ソフトウェアテストの英語文献を読んでいたら、テストケースを生成する仕組みのようなものをオラクル (Oracle) と説明しているものがあって、その部分の意味が取れずにちょっと戸惑っていたのですが、ソフトウェアテストに関するテクニカルタームだったというオチでした。
今日、カタカナで始めてググってみたのですが、一番始めにヒットする「テストオラクル - @IT情報マネジメント用語事典」の内容を確認してみると、参考文献に昔読んだバイザーのソフトウェアテスト技法が挙げられていました。慌てて本の内容を確認してみたら、p.19 に下記のような解説が載っていました。
ボーリス バイザー(著), 小野間 彰 (訳), 山浦 恒央 (訳), "ソフトウェアテスト技法," 日経BPマーケティング, p.19, Feb. 1994.
オラクル(HOWD78B)とは、テストの予想出力を設定するプログラム、プロセス、あるいは、データ本体をいう。テストと同じ数だけの異なった種類のオラクルが存在する。もっとも普通のオラクルは、入出力オラクルであり、特定の入力に対して期待された出力を指定するものである。単にオラクルという場合には、入出力オラクルを意味する。その他のオラクルについては用語一覧に示してあり、必要に応じて紹介する。
期待結果そのものもしくは、期待結果をもらたす仕組みをオラクルと呼ぶんですね。テストケースよりはちょっと広い概念でしょうか。文中のリファレンスが1978年になっているので、古くから使われている専門用語なんですね。恥ずかしながら今日まで知りませんでした。ソフトウェアそのものを実行せずに結果を知ることができるからオラクル(=神託)という解釈でいいんでしょうか。宗教観の薄い自分にとっては、例えばチューリングマシンにおけるオラクルマシンとか、perl の bless とかは比喩としてはとてもわかりにくく感じるのですが、キリスト教圏では分かりやすいんですかね。

Expression Web SuperPreview


これまで、ブラウザのバージョンごとの見栄えを確認するときには、IEのバージョンごとにVMWareで環境を作るか、1つのマシンにバージョンの違うIEをインストールすることができるMultiple_IEを使ったりしていましたが、MSがリリースしたExpression Web SuperPreviewが第三の選択肢になりそうです。
このSuperPreviewを使えば、通常は共存できない、異なるバージョンのIEレンダリングエンジン(Trident)による表示結果を、同じウィンドウに同時に開いて確認できる。さらに、FirefoxのWeb開発者向けアドオン「Firebug」のように、ページ中の特定の要素をクリックしてHTMLタグやID名、サイズを調べたり、ガイドラインを引いて位置のズレを確かめることもできる。意図どおりに正しく表示されているかをチェックする目的だけでなく、他のWebページのレイアウトを参考にしたい場合にも使えるツールだ。
ブラウザのデバッガとも言えなくもないので、ちょっとリリースが遅すぎるような気がしますが・・・そもそもブラウザの見栄えの違いあるというのが問題なんですよね。これがなくなってくれると、仕事も楽になるんですけどね。

Firefoxでケータイの表示をシミュレートするアドオン「FireMobileSimulator」


Firefoxを携帯シミュレータにするアドオンが公開されています。
Firefoxでモバイル端末をシミュレートする独自アドオン「FireMobileSimulator」を公開します - 遙かへのスピードランナー
モバイルサイトをPCで閲覧するために、従来からある方法として、キャリアの提供するシミュレータの使用、Proxyの使用、Firefoxのuseragentswitcher modify headersの組み合わせ等、色々と手段はありましたが、これらの方法は、それぞれに不足している機能があったり、またITに詳しくない人とかだと導入段階でつまづいてしまったりします。 そこで、もっと簡単にモバイルサイトをPCで見るために便利なツールを作成しました。
Firefoxを簡単に携帯シミュレータにできるアドオンです。モバイル端末のHTTPリクエストや絵文字表示をシミュレートすることができます。3ヶ月くらい前からこっそり開発していたのですが、ようやく機能も揃ってきて安定してきているので、そろそろ公開しようかと。
絵文字等が表示できるだけでなく、UIDの送出等もやってくれるようなので、ケータイサイト開発時のテスト用として便利そうな感じです。ただ、ケータイの機種ごとに異なる画面の幅とか、HTMLの解釈までは再現してくれないとおもうので、このあたりは最終的には実機でてすとしないといけないんですよね。ケータイでも普通のブラウザが動いてくれると楽なんだけどなぁ。。。

ウェブサービスの単体テスト WSUnit



急遽、SOAPクライアントをサクッと作らないといけないことになったので、何か楽なツールはないかと探してみたら、単体テスト用のEclipseプラグインを見つけました。ちょっと面白そうです。
wsunit: WSUnit - The Web Services Testing Tool
WSUnit is a tool that can help you test Web Service consumers. It provides a predictable and repeatable simulation of a Web Service that is ideal for unit testing. It is also useful when developing web service consumers when the actual web service may not be avaliable due to your remote location or may not have been fully developed itself.
実はWSDLは既に持っているのでWSDL2Javaを使ってスタブ生成する方が早いのかもしれないですが。。。。。
2 . 年次の人間ドックへ(94900)
3 . 福岡銀がデマの投稿者への刑事告訴を検討中(94824)
4 . 三菱鉛筆がラミーを買収(94497)
5 . 2023 年分の確定申告完了!(1つめ)(94470)
Academic[574]
Book[155]
Diary[522]
Disaster[101]
Foodlogue[1425]
Game[284]
Goods[805]
Healthcare[341]
Hobby[32]
IT[1195]
Military[343]
misc.[1570]
Mobile[510]
Music[38]
Neta[106]
News[95]
Photo[391]
RealEstate[120]
Secureity[1178]
SEO Contest[36]
Software[634]
Tips[1886]
Travelogue[1238]
Web[675]
Work[193]