过得怎样?(いかがお過ごしですか?)診断員の XC です。
先日、現役診断員のパネルディスカッションがあると聞いて、「江戸前セキュリティ勉強会」に参加してきました。休憩時間にはちょっと贅沢なおやつがふるまわれたり、ライトニングトークで著名な方々がかわるがわる発表したりと、あきさせないくふうが盛りだくさんでした。
勉強会のふんいきなどは Masaru Ogura さんのまとめられた
江戸前セキュリティ勉強会(2015/01) #edomaesec
が参考になると思います。
さて、前半は先日の OWASP Night でも取りあげられた「脆弱性診断士スキルマップ」について、その作成の動機や今後の展開について発表があったのですが、個人的に興味ぶかかったのは後半のディスカッションでした。
事前にアンケート形式で 診断にまつわるこんなことが聞きたい! という質問を募集しており、とある診断員さんの司会で、パネリストの abend さん,Ikeda Masakazu さん,ykame さんに日ごろ診断していて思うところを存分に語っていただく、というのが主な趣旨でした。
以下は、その質疑応答のいくつかを Q&A 形式にしてまとめてみたものです。
脆弱そうなサイトだと感じるポイントはありますか?
- すべてのリクエストを POST で送信している
- hidden 属性を利用したパラメーターが大量にある
- PHP や Perl の CGI を利用している
- 画面のデザインやユーザーインターフェイスの見ためが古い
- HTML の構造が複雑
- セッション管理があまい
- 画面遷移時にパラメーターを持ちまわしている
- Google で検索すると管理画面が見つかる
診断したくないシステムはありますか?
- 診断される側は選ぶ権利があるけれど、診断する側に選ぶ権利はない!
- 基幹系・稟議系の業務アプリケーションは操作方法がわかりづらい(ぶ厚いマニュアルを読みこむだけで時間が…)
- ASP.NET の ViewState を利用するなど、とにかくパラメーターが多い(それだけ検査パターンも必要だし、見積もりもたいへん)
- 診断ツールで自動的に検査することができない(手動でリクエストを送信しないといけない)
- 認可や権限に関わる項目が多い(ロールの種類など)
- 外国語で表示される(中国語は漢字だからなんとなくわかるが、タイ語や韓国語はお手上げ)
- 診断開始から数分で大量に脆弱性が見つかる
- すべての画面で脆弱性が見つかる
診断時に注意していることはありますか?
- 入力ミス(一字まちがえただけで破壊的な影響をもたらす場合など)
- 完了処理(決済の画面を診断していたら知らぬ間に本番サイトに遷移していて、商品が代引きで届いてしまった…!)
- 診断対象が本番サイトしかない
- リモートからの診断よりも、オンサイトでの診断のほうが気をつかう
診断していて楽しいことはありますか?
- そんなことありましたっけ?
どうやってスキルアップしていますか?
- 話題になっている脆弱性は自分で検証してみる(手を動かす)
- 情報収集は大事
- CTF で技術を学ぶ(Write-up を書いたり読んだり?)
- 日ごろから診断作業を楽にするくふうをしておく
- 脆弱性について知識のない人にもわかりやすく説明できるようになる
脆弱性をなおしてもらえない場合、どうしますか?
- 作業範囲は診断から報告までだけど、本来的には修正してもらうまで
- 報告会でとおりいっぺんのことしか言えないのではだめ(開発現場の諸事情や政治的な部分も考慮する)
- 報告会で「開発者に怒ってください」と依頼されたことも(´Д`)
- 現場と経営層など、報告を受ける人の立場に応じて説明の粒度を変える
診断時に人間関係でもめたことはありますか?
- 顧客側で事前の連携がとれておらず、診断したらデータセンターからクレームがきた(依頼主は診断に積極的だったが、現場が許可していなかった)
バグバウンティをやっているのですが、診断員になれますか?
- CTF のノリで診断するのは危険(CTF と診断とは観点が異なるため)
- CTF は倫理的なリミッターをはずしてナナメ上の発想で突破する必要があるが、診断では破壊的な行為は極力慎まなければならない
私自身は診断で脆弱性を見つけたとき、開発した方々の苦労がしのばれて安易に「やった!」とよろこんでよいものか迷うのですが、パネリストの方々から「脆弱性をみつけたときはやはりうれしい」ということばが聞けたのですこしほっとしました。