医療関係者では無いのですが、Webの脆弱性の検査とかやってますので「診断」という技法それ自体は共通ではないかと思い、パクれる点は無いかな~と購入してみて、少しずつ、一年かけてゆーっくり読み終えました。
感想としては、おなじ診断業務ということもあり、いくつか参考にできそうな考え方がありました。
もちろん病気の鑑別とWebアプリの脆弱性の判定とで異なる部分も多々ありますが、著者の診断にかける真剣さや情熱は大いに共感できるところです。
ということで、いくつか「これは」と思った考え方やポイントを抜書きしてきます。さすがに業務内容に近い部分は書けませんが、一般論レベルで「診断ならこうだよな~」というのをコメントしてます。
なお、ここでのWeb脆弱性診断は基本的にブラックボックステストによる検査を想定してます。
基礎的な診断戦略として、3種類が紹介されている。うち、System1(直観的診断), System2(網羅的・論理的・分析的診断)は昔からある戦略。System3が水平思考を活用した「ラテラル・アプローチ」で、最近出てきた戦略。
System1/System2は、どちらかだけで診断を進められるというようなものではなく、System1で立てた仮設を検討するためにSystem2のフレームワークを使ったり、逆に、System2の結果からSystem1の直観的な思考がひらめくこともある。
System3は、上手くあつかうことで診断を効率化したり、System1/2とうまく連携できる。
経験とフィードバックについては、「診断エラーノート」というので診断の経験を蓄積していこう、というのが紹介されてました。
アプリの挙動から「このパラメータが怪しい」など見当をつけて、実際に検査するという、ヒューリスティック性の高い検査に相当すると考えられます。
パラメータの用途などを確認してから、それならこういう脅威は考えられないか?として、試すケースが多いと思います。
直観的思考で上手く行かなかった場合に、System2の分析的思考の出番となる。
重要なのは分析的思考に切り替えるための質問、"Conquer BIAS" の語呂合わせ。
これらにより、バイアスを回避して、分析的思考と併せて診断の精度を高められる。
検査ツールなどを利用して、パラメータを網羅的に検査するのがこれに相当すると考えられます。
パラメータの値を不正な擬似攻撃用の値に改ざんして送信していきますが、パターンの質や量とサーバのレスポンスが、検査にかかる時間に直接反映されます。
また、ツールによる大量の通信結果を精査する必要があるため、ツールの検出特性や結果の見せ方(UI)が作業コストに影響してきそうです。
患者に直接聞く、の他に、以下のような戦略が紹介されてる。
直観で鑑別した診断だけで終わらせず、臨床上の表現形が似ている他の診断を検討にあげ、その診断はありえないか検証する。
直観のスピードを維持しつつ、似たような表現形を持つ鑑別を漏らさないよう網羅性を上げることが出来る。
ただし、もちろん、ある症状から、それと似た表現形の病名を想起できないといけないので、相応の知識と経験は必要。
合併疾患をトレース、つまり水平方向での他の診断が一緒にできないか思考する。
さらに、疾患の原因に別の病気が存在するケースもあるため、垂直方向に疾患の原因を掘り下げていく。
上記までの複数の戦略を重ねて使い、絞り込んでいく。
さらに奥の手として、同僚や上級医に聞いてみる、ググる、など。
判定に直接結びつくわけではありませんが、レスポンスがひどく遅くなったりして、お客様にサーバの状況を確認するケースがあります。
また、もし陽性なら危険度が高いので指摘したいが、どうにもサーバの反応が曖昧で、白黒判別しきれない場合に、お客様に状況を伝えて、直接確認してもらうケースもまれにあります。
あまり遭遇したことのない独自性の高い機能で、どう脅威を考えれば良いのか分かりづらい場合、同僚や上級診断員と相談して知恵を借りる場合があります。
患者に病歴を聞くときの技法について、実践的なノウハウが紹介されています。
お客様のエンジニアと会話する場合に、こちらがセキュリティを監査する立場になりますので、上から目線になってしまったり、非難するような物言いにならないよう気をつけます。
お客様のエンジニアあってこそのセキュリティということですので、上下関係ではなく協力関係にある、という点をこちらも意識し、お客様にも意識させるような言葉遣いに気をつけます。
こうした戦略を以下に駆使したり、思考力を鍛えるか。診断学の教育について、「カンファレンス」という形で部署内・院内などで知識や事例を共有するのが良いが、どのような運営の仕方をするか、によっても効率面で違いが出てくる。
著者としては上記に加え、やはりベッドサイド教育、つまり実際に患者と相対して会話して思考していくのを推奨している。
さらに、診断に特化した部門を結成し、研修医の上に上級医を据えて監督した上で、ローテーションなどで事例を共有しつつ、診断技法を高めていく組織的なアプローチを考察している。
診断員の教育となりますと、最近ですとスキルマップが提案されたり活発です。
診断員自体が歴史の浅い職務ですので、これからどう教育や研修コースが整備されていくのか、これからの話になりそうです。
ある現象にたいして、ある脆弱性を判定できたとして、じつは別の脆弱性でもあった、という合わせ技的な現象がママあります。
一個の脆弱性の判定で意識を止めてしまうと、さらなる問題の見当を見逃す場合もありますので、他の問題は無いか見当する必要があります。
例えば、エラーメッセージの詳細が出てるのでその問題を指摘してそこで終わりではなく、エラーメッセージの内容をよくよく見てみたらSQL文が含まれてて、それをヒントにSQLインジェクションを見つけられるケースが時々あります。
医療の診断現場と、Web脆弱性の診断現場ですが、かかるプレッシャーについては比べ物になりません。
とはいえ、プレッシャーの特性としての「網羅性の保証」や「漏れ・抜けに対するリスク」という特徴は似通っていますし、診断や検査という業務特性も似通っています。
そのため、よりプレッシャーの高い医療の診断現場の話は、Web脆弱性の診断に色々と応用が効きそうに思い、読んでみましたが、案外面白かったです。
著者の体験として、患者の訴えや聴診・触診結果、病歴などから思考を重ねて鑑別していくエピソードがいくつかありましたが、いずれも読んでいてワクワクしてくるような面白さを感じました。
恐らく当事者としても、患者と共同して診断を積み上げていき、治療を進めるのはやりがいと面白みのある部分なのだろうと推察いたします。
Web脆弱性診断の教育や研修を担当される方に、一読をオススメしたい一冊でした。
※なお、プレッシャー等についての心構えなどについてはこちらがオススメ。