脆弱性のテストツールをテストするためのサンプルアプリケーションまとめ

脆弱性のテストツールをテストするときの困りどころ

脆弱性のテストをするためのツールを検証しようと思ったとき、困るのが「どこのサイトを対象にテストするか」です。うっかり一般に公開されているサイトでテストすると、業務妨害になりかねません。
世の中には、脆弱性をテストするためにわざと脆弱性やバグを仕込んだサンプルアプリケーションが、親切にも公開されています。自分が試したくなった時のためにまとめてみました。なお情報は2019年5月時点のものです。

サンプルアプリケーションのリンク集

1. Easy Buggy

脆弱性やバグの動きを理解するために作られたバグだらけのアプリケーションです。Javaがインストールされていれば手軽に動かせます。Boot版やPython版も用意されています。日本語のREADMEがあり、インストール方法や動かし方も分かりやすいです。
メモリリークデッドロックJVMクラッシュ、SQLインジェクションなどが試せます。
ダウンロードはこちらから。
github.com

2. OWASP Broken Web Applications

Webのセキュリティの啓蒙活動をしてるOWASPが公開している脆弱性診断練習用のWebアプリケーションです。VirtualBox上で動きます。練習用に作られているだけあって、よく知られている脆弱性は一通り試せます。
こちらのサイトからイメージが落とせます。
sourceforge.net

以前脆弱性診断ツールのOWASP ZAPの勉強会に参加した際に知りました。Virtual Boxでの設定方法は、こちらのブログで分かりやすく紹介されています。
nilfigo.hatenablog.com

3. AppGoat

IPAが公開している脆弱性体験学習のツールです。IPAに利用申請がいるので使ったことはないのですが、紹介しておきます。
www.ipa.go.jp

知っているもの、調べて出てきたものを挙げてみました。「他にもこんなのもあるよ!」などありましたら、コメントなどでお知らせいただけると助かります。

城めぐり ~土の城の最高傑作 杉山城

「土の城の最高傑作」、「築城の教科書」と名高い杉山城を訪問してきました。

お城の概要


公共交通機関ユーザーにはなかなか行きにくい距離ですが、技巧に富んだ多彩な防御機構が見られ、片道40分歩く価値がある城です。15世紀頃に山内上杉氏によって築かれたようですが、上杉氏の他の城には見られない高度な築城技術が用いられており、後北条氏の城という説も出ています。鎌倉街道を見下ろし、西は市野川に接する丘陵を丸ごと一つ縄張りとしています。比較的コンパクトな城ですが、色々見て回るのが楽しいので、駅との往復含め3〜4時間はみておきたいところです。なお杉山城は私有地で、持ち主の御厚意で整備・公開してくださっているそうです。大変ありがたいですね。
f:id:yuki_shiro:20190428150526j:plain:w400

見どころ

いくつも用いられた防御機構が見どころです。積善寺の裏手にある大手口から上がっていくとまず、外郭と南三の郭に出迎えられます。案内板を用意してくださっているので迷わずたどり着けます。見づらいけど縄張り全体図の入った案内板です。
f:id:yuki_shiro:20190428151609j:plain:w400
外郭には折れを持つ土塁があり、かなりの急角度と高さがあります。よじ登るのはまず不可能です。
f:id:yuki_shiro:20190428150315j:plain:w400
外郭から南三の郭に行くには、深い空堀を超えていく必要があります。ここには木橋がかかっていたらしいのですが、有事には橋は取り外せる構造だったようです。仮に木橋がかかっていても、位置的に南三の郭から見下ろされる構造のため、渡ろうとすると側面から横矢がかかってきます。
f:id:yuki_shiro:20190428153732j:plain:w400
本郭に入るまでのルートは、ほぼすべて正面と側面から攻撃を受けるようになっており、なかなかえげつない城です。南三の郭から南二の郭に入る際も食い違い虎口という防御機構が設けられています。
f:id:yuki_shiro:20190428150833j:plain:w400
見通しが悪く、二の郭に入るまでに何度か体の向きを変える必要もあります。
f:id:yuki_shiro:20190428150857j:plain:w400
井戸郭の井戸には今でも水がわいており、当時から水の確保はしっかりなされていたことがうかがえます。
f:id:yuki_shiro:20190428151153j:plain:w400
井戸郭から本郭に入るルートが設けられていますが、ここも木橋で、やはり有事には取り外せる構造だったようです。深い空堀が設けられており、本郭の土塁上から側面攻撃がかかるようになっています。今は空堀への転落防止のため柵が設置されていました。
f:id:yuki_shiro:20190428153243j:plain:w400
本郭は広い平地が設けられています。周辺一帯を見下ろすことができ、日光男体山まで見えるとか。当時はもう少し木を伐採していたと思うので、周辺の街道の様子などもばっちり見渡せたでしょう。
f:id:yuki_shiro:20190428153143j:plain:w400
本郭の東には、東二の郭、三の郭が設けられています。こちらは傾斜もなだらかで防御も比較的ゆるめでした。北には北二の郭、三の郭が設けられており、こちらは土塁がしっかり作られていました。
f:id:yuki_shiro:20190428152556j:plain:w400
杉山城は遺構がしっかり残っており、しかも分かりやすいよう図解豊富な看板が用意され、おもてなしを感じられる城でした。公開してくださっている所有者の方や整備してくださっているボランティアの方、本当にありがたい限りです。

今回の城めぐりには、こちらの本を参考にしました。著者の城好きの熱量が伝わってきて、思わず城めぐりをしたくなる一冊です。

城めぐり ~畠山重忠居館 菅谷館跡

埼玉県の武蔵嵐山にいくつか気になる城跡があったので巡ってきました。

お城の概要


源平が争ってた時代の有名な武将・畠山重忠の館跡です。都幾川(ときがわ)沿いの台地の上にあり、南は都幾川、東と西には天然の谷地形があり、城を作るのに良い地形です。12世紀くらいから戦国時代まで、増築を重ねながら城として機能していました。今見られる遺構は戦国時代のものだそうです。敷地内には、埼玉県立嵐山史跡の博物館や畠山重忠像などもあり、博物館込みでじっくり見て回ると1時間半くらいでした。
f:id:yuki_shiro:20190428135031j:plain:w400

見どころ

土塁と空堀が綺麗に残っています。当時の大手門方向である北側から入っていくと三の郭の土塁が迎えてくれます。
f:id:yuki_shiro:20190428130437j:plain:w400
三の郭には嵐山史跡の博物館があります。周辺の城郭についての映像資料や、発掘調査の出土品が見られます。周辺の城郭もセットで見て回りたい方は予習を兼ねてここを先に見ておくのオススメです。
博物館を出て少し進むと二の郭です。畠山重忠像が迎えてくれます。
f:id:yuki_shiro:20190428135310j:plain:w400
理知的できりっとした感じで、清廉潔白なイメージにあってます。余談ですが、アオダイショウと思われる蛇も出迎えてくれました。君の出迎えはいらない。

さて、二の郭の次が本郭になります。ここの守りが一番堅く、深い空堀と高い土塁が設けられています。
f:id:yuki_shiro:20190428135429j:plain:w400
土塁の角度も急です。写真ではいまいち伝わりませんが、土塁の上から見下ろすと3メートルほど高さがあり、堀底からよじ登るのはかなり困難と思われます。見下ろしてみた図がこちら↓。
f:id:yuki_shiro:20190428135937j:plain:w400
本郭の土塁には出っ張った部分も設けられており、攻めてくる敵に対して側面攻撃も仕掛けられるようになっています。直線だけじゃない変化が見られて防御の工夫がよく分かる箇所です。相変わらず写真では分かりにくいですが、土塁が直角に曲がっています。
f:id:yuki_shiro:20190428140121j:plain:w400
城の南側は都幾川に面した崖になっているので、そちらの守りは薄めで、本郭を守る南郭があるのみです。覗いてみましたが、結構急な崖で天然の防御機構となっていました。

戦国時代の遺構が綺麗に残っており、また史跡公園として整備されており歩きやすく、楽しく訪問できるお城でした。

おまけ

史跡公園近くの菅谷小学校、中学校の塀が素敵なデザインだったので思わず一枚。
f:id:yuki_shiro:20190428140716j:plain:w400

ユーザビリティの評価手法SUMIとWAMMIとは何ぞや?

SUMIとWAMMIは、用語としてはJSTQBのテストアナリストのシラバスの「使用性テスト」の部分に出てきます。ただ用語は出てくるものの、どういったものかはよく分からなかったので、調べたついでにメモしてみました。
なお、出てくる情報は2019/03時点のものです。

SUMIとWAMMI両方に共通するもの

SUMIもWAMMIもアイルランドのコークカレッジ大学で活動するヒューマンファクター研究グループによって開発されたユーザビリティを評価するための調査方法です。
いくつかのアンケート項目が用意され、ユーザにどの程度同意するか答えてもらうことにより、評価を行います。質問の中には、ポジティブなもの、ネガティブなもの、両方が含まれます。(適当に全部「同意」とかで答えられるのを防ぐためですかね)
SUMIはソフトウェアアプリケーションの評価に使われ、WAMMIはウェブサイトの評価に使われます。

SUMIとは

公式HPはこちら
http://sumi.uxp.ie/index.html
Software Usability Measurement Inventoryの略。シラバスでは「ソフトウェア使用性測定一覧表」と訳されています。

全部で50問の設問があり、「ソフトウェアのレスポンスが遅すぎないか」「同僚にこのソフトウェアを勧めるか」といった問いに対して、「同意する/分からない/同意しない」を答えていくものになります。設問の内容については、以下のサイトで英語版のサンプルが見られます。
http://sumi.uxp.ie/en/
こちらを正式に使うには、最小のプランで200ユーロかかる模様。詳細はメールでの問い合わせが必要なようです。日本語対応済み。

WAMMIとは

公式HPはこちら。
http://www.wammi.com/index.html

Website Analysis and Measurement Inventoryの略。シラバスでは「Webサイト解析と測定一覧表」と訳されています。

全部で20問の設問があり、「ウェブサイトには私にとって興味深いものがたくさんある」「このウェブサイトを見て回るのは難しい」といった問いに対して、どの程度同意するかを5段階で評価するものになります。こちらも、以下のサイトで英語版の設問のサンプルを見られます。
http://www.wammi.com/samples/index.html

WAMMIには日本語版はないようです(少なくともHPには記述がありませんでした)

WAMMIの利点は、世界中で使われている評価法のため、過去のウェブサイトのテスト結果から作られた参照用データベースに照らし合わせた結果を見ることができる点です。魅力、操作性、効率、有用性、学習可能性、そして全体的なユーザビリティスコアの6つの領域で、参照用データベースと比較したスコアを見られるそうです。

以上、調べても日本語情報はあまり出てこなかったので、まとめてみました。何かの参考になれば幸いです。

参考

「Advanced Level シラバス日本語版 テストアナリスト」
「ユーザーエクスペリエンスの測定 UXメトリクスの理論と実践」

ユーザーエクスペリエンスの測定 (情報デザインシリーズ)

ユーザーエクスペリエンスの測定 (情報デザインシリーズ)

第70回 脆弱性診断ええんやで(^^)参加メモ

最近脆弱性診断をGUIからできるOWASP ZAPに興味を持っているとつぶやいたら、お勧めいただいた勉強会に行ってきました。脆弱性診断研究会さんが毎月開いているもので、今回のテーマは「ワタシハCSRFチョットデキル」。
security-testing.connpass.com

OWASPってナニ?

Webアプリケーションのセキュリティの啓蒙活動をしてる団体。公式HPはこちら。
www.owasp.org

OWASP ZAPってナニ?

OWASP Zed Attack Proxyの略。OWASPが公開しているフリーのセキュリティ診断ツール。プロキシとして動作してブラウザとWebアプリケーション間の通信の閲覧および改ざんが行える。
www.owasp.org

OWASP ZAPの基本設定

プロテクトモード以外は使用禁止!ほかのモードだと管理外のサイトへ診断を実行する危険性が高い。基本的な使い方は、こちらのQiita記事が分かりやすかったので、リンクさせてもらいます。
qiita.com

CSRFとは

Cross Site Request Forgeli
偽造
対象のサイトにログインしているユーザが、その気がないのに勝手に他のサイトの操作を強制されてしまう

1. 攻撃者が罠サイトを用意
2. 適当なところに罠サイトのURLを貼る
3. 攻撃対象サイトに利用者がログイン
4.別タブで罠サイトにうっかりアクセス
5. 罠サイトのフォームが送信される→知らないうちに、書き込みが完了している
 
 攻撃者側は待つしかないが、ターゲットがリンクを踏んでしまえば投票や投稿が終わっている
 

CSRFをどのように防ぐか

セッションIDによる認証

 ①IDとパスワードを送信してログイン
 ②セッションIDを発行
 ③ログインフラグON
 ④SetCookie
  →WebアプリケーションのURLが変わらない限り同じCookieを送り続ける
 
 罠サイトに設置されているフォームを送信する際に利用者のブラウザからCookieがWebアプリに送信されてしまう

CSRF対策
  • 対策が必要な機能を洗い出し
    • 回復が難しい操作(パスワード変更、決済処理、退会処理など) ※操作を強制するだけで、結果を攻撃者が受け取ることはできない  
  • 根本的対策を実施
    • 秘密情報(token)をフォームに埋め込む
    • パスワード再入力:本人しか知らない情報を入力させる
    • Reffrerチェック
      • CSRFを経たリクエストは、ヘッダーにReffereがない→その場合は処理しない
  • 保険的対策を実施
    • 対策対象処理時にメール送信(パスワード変更や決済処理のときにメール送信する→ユーザが気づく)

質疑:

1. CSRF-Tokenはユーザは意識してないのか?
 →Yes. Hidden fieldになっているしユーザが意識することはない
  tokenとsessionIDはCSRFについては漏洩を気にすることはない
2. 根本対処としては、tokenとパスワード再入力はどちらがよいのか?
 →効果は一緒だが、パスワード再入力はユーザが嫌がる場合がある
3.対策が必要な機能でログアウト処理は入れるべきか?
 →CSRFとしてはしなくてもよい。うざったいだけで回復が容易なので。
  ただし、ログアウトは別の脆弱性がある場合があるので要チェック

城めぐり ~賀儀城探訪記 乃美宗勝の居城

2018年の城めぐり納めに訪問しました。

お城の概要

写真のこんもりした小山の部分が城跡です。
f:id:yuki_shiro:20181231111939j:plain:w400


忠海港の西にある、海に突き出た岩山に、小早川隆景家臣の乃美(のみ)宗勝(別名:浦宗勝)によって築かれた城です。築城年代は不明ですが、近くにある床浦(とこうら)神社の案内板によると、「神社をもともとあった岩山から浜辺に移す→岩山に築城」の流れがあったようなので、神社の棟札にある永禄年間の前後ではないでしょうか。標高6メートル程度で、規模も大きくないので、さっと見るだけなら15分程度です。

見どころ

標高は低めですが、海側は切り立った崖になっています。海側から攻撃するのは難しそうに見えました。後で調べてから知ったのですが、崖下に少し見えている洞窟は、かつて船隠しだったそうです。杭を打っていた穴などが、今でも残っているとか。行ったときに知っていれば近くまでいったのですが、ちょっと悔やまれます。
遺構は残念ながらほとんど残っていません。第二次世界大戦の忠魂碑のある山頂の広場部分が主郭だったようです。
f:id:yuki_shiro:20181231110855j:plain:w400
結構広い。それなりの人数が詰められそうですね。お城の碑もありました。
f:id:yuki_shiro:20181231111228j:plain:w400
浦宗勝公を追想し~」までは読めるんですが、その先が読めません…。草書体の読解能力が欲しいです。
遺構はほとんど残っていないものの、登ってみるとこの城の狙いは見張りにあったのだろうな、ということが伺えました。近隣の海がばっちり見渡せましたので。見晴らしがよいということは、狼煙をあげる場所としてもよいところですね。
f:id:yuki_shiro:20181231110812j:plain:w400
写真で遠くに見えている橋は、おそらくしまなみ海道多々羅大橋と思われます。訪れた日はお天気も良く波も穏やかだったので、良い景色が楽しめました。
f:id:yuki_shiro:20181231110935j:plain:w400
すぐそばにある砂浜も、小さな船を乗り付けて上陸したり、逆にすぐに海に漕ぎ出したりするにはよさそうです。周りが見渡しやすくて、すぐ海に出やすい砂浜があるあたり、水軍の城としていい立地ですね。お城の東隣は今でも現役で港だったりするので、戦国時代の大き目の船も停泊できたのではないでしょうか。
f:id:yuki_shiro:20181231111122j:plain:w400
砂浜の中央辺りに写っているのが、お城の概要でちらりと出てきた床浦神社です。
f:id:yuki_shiro:20181231110003j:plain:w400
海に向かって立つ鳥居がかっこいい。海の神社らしくていいですね。
f:id:yuki_shiro:20181231110033j:plain:w400
小さな神社ですが、説明版によると四国からも信仰を集めた神社だそうです。
f:id:yuki_shiro:20181231110101j:plain:w400
今はあまり整備されてなさそうなのがちょっと寂しいですね。数年前に本屋大賞を受賞した『村上海賊の娘』の人気で、しまなみ海道の村上海賊関係スポットは色々整備されているようなので、こちらも整備してもらえると個人的には嬉しいです。『村上海賊の娘』には乃美宗勝も登場します。

村上海賊の娘(一?四)(新潮文庫) 合本版

村上海賊の娘(一?四)(新潮文庫) 合本版

今回は訪問できませんでしたが、乃美宗勝菩提寺である勝運寺も近くにあるので、合わせて訪問するのも面白そうです。

「ASTERセミナー標準テキスト」読み合わせと「ソフトウェアテスト勉強会「やってみよう!探索的テスト~ハイクオリティな妄想の高速ループ~」」参加レポート

先日ASTERから公開された「ASTERセミナー標準テキスト」の有志による読み合わせと、「ソフトウェアテスト勉強会「やってみよう!探索的テスト~ハイクオリティな妄想の高速ループ~」」に参加してきたので、その感想レポートです。

ASTERセミナー標準テキスト読み合わせ

「ASTERセミナー標準テキスト」は、こちらからダウンロードできます
http://www.aster.or.jp/business/seminar_text.html

発端

ASTERの資料が公開されたので気になっている、とTwitterで呟いたら、有志による読み合わせ会が発足しました。テストクラスタありがたすぎる。
というわけで、三連休の初っ端からファミレスに集まり、セミナー標準テキストの読み合わせが行われました。今回は初回ということもあり、対象は1章+αくらいで進めました。

やり方

やり方は、時間を決めて各自読み込む、気になったところをそれぞれコメントしあう、という形でやってみました。エクストリームリーディングというそうです。
当日集まったメンバが、組み込み、第三者検証、開発、自社サービスと四社四様だったので、それぞれの立場からの見方があって興味深かったです。

読み合わせで気になったところ

詳しい話は割愛しますが、面白かったのは、ほぼ全員がP18の「テストの目的の拡大(機能充足→目的達成→価値提供)」を気にしていた点です。
f:id:yuki_shiro:20180919011351p:plain
※画像は、「ASTERセミナー標準テキスト」p18のスライドを引用させていただいています。

P18が気になってるのは、私の場合、次のような理由からです。

  • 拡大円の一番外側「ソフトウェア・システムが他の要素と連携し、ライフスタイルやビジネススタイルを変革しているか把握する」まで行きたいけど、どうすれば行けるんだ?
  • 外側から2番目「ソフトウェア・システムが目的を達成し、顧客(利用者)が満足しているかを把握すること」これは、最近気にしていることなので目下の課題。永遠の課題ではあるけど、今個人的には一番力を入れてるところ
  • 外側から3番目「非機能要求を含めてソフトウェアの品質情報を収集し、品質リスクを軽減する・より品質を高めること」については、最近、非機能って何だろう?と少しモヤモヤしているところ。
    • 性能とかセキュリティについては、ほぼほぼ機能では?
    • とはいえ、機能単体だけ見てると漏れる部分ではあるので、別出しになっているのは分かる気はする。
    • 『非機能』という訳語の問題?
  • この図、非常にいい図だと思うので印刷して会社にひそかに貼っておきたいw

あとは気になったページというか、耳が痛いページはP36の「テストの独立性と開発との関係」です。

  • 「対決ではなく、協調姿勢で開始する。全員のゴールは、高品質のシステムであること再認識するとよい。」この通りなのですが、守れていないことも多いので自戒。。

ソフトウェアテスト勉強会「やってみよう!探索的テスト~ハイクオリティな妄想の高速ループ~」

TEF道の中岫さんと根本さんが、JaSST'18 Tokyoで行われたセッションの再演をしてくださったものです。

探索的テストとは

資料はこちらから
http://jasst.jp/symposium/jasst18tokyo/pdf/E2.pdf

探索的テストとは、「「対象を動かしながら、テスト設計~実行~フィードバックを行っていく(ハイクオリティな妄想のループ)対話型のソフトウェアテスト」だそうです。詳しくは、上記の資料をどうぞ!
仕事でも自己流でやってみていますが、私はテストチャータとタイムボックス決めて、気になるところを重点的に動かしてみる、というやり方をしています。

ワークショップ内容

実際に探索的テストを行う対象のサイトを用意していただき、それを実際に動かしてみました。

  • 初めに一人で手を動かして、気になったところを出してみる
  • グループワークで気になったところと、どうしてその気になった点を出せたかについて報告しあう

このやり方を、テストチャータを変えて2度行いました。

ワークショップからの気づき

気になったところは、人によって出せる数が本当に異なるのが面白かったです。気になるところが出せる数が少ない人には、だいたい2パターンくらいあるのではないでしょうか。

  • 経験、知識があまりなく、「そういうものかな」と思ってしまう人
  • 気になるところを見つけてるけど、「仕様って書いてあるし、指摘していいのかな」と遠慮してしまう人

後者の場合、グループワークをやると「あ、それ、指摘してよかったんだ」という契機をもらえるので、後々、気になるところの検出数が上がる気がします。私は気になったところについて、「仕様」とある場合は、あげるべきかちょっと迷ってしまうので、勇気づけられましたw グループワークで、「どうしてその気になった点を出せたのか」をお互いに話せた点も、他の方から素敵な視点をもらえてよかったです。
前者の場合は、どうすればいいんでしょうね? ペアテストしてみる、とかでレベルアップできるんでしょうか。

感想

JaSST'18 Tokyoで、ちょっと出遅れていったら会場が満員で入れなかったので、再演がとても嬉しかったです! ありがとうございました!