engineers_blogこんにちは。インターンの田邉です。マネーフォワードのセキュリティを支えている「CISO室」にて、脆弱性診断を担当しています。この度、社内で脆弱性診断を実施し無事に報告まで終えることができたので、その気づきとまとめを投稿します。注意!脆弱性診断の手法のなかには攻撃行為となるものも含まれています。自分の管理下にないシステムに対しては脆弱性診断を行わないでください。インターンをすることになったきっかけ私は大学で情報セキュリティを専攻しています。BLUEという情報セキュリティの国際会議に、昨年、学生スタッフとして参加しました。その時のアフターパーティーで、スポンサー参加していたマネーフォワードの@ken5scalさんと出会い、マネーフォワードのインターンに誘っていただきました。脆弱性診断について脆弱性診断とは?「システムに攻撃を行い、悪いところがないか調べること。多少の語弊はあるかもしれませんが、一言で言えばこのようなイメージです。攻撃して終わりではなく、攻撃した後に検証を行ってリスクを分析し、報告するまでが脆弱性診断です。脆弱性診断は、診断の対象とするシステムによっていくつかの種類に分類されます。組織内(たとえばオフィス)のネットワークに侵入できるか、ネットワークに侵入された場合にどのような脅威があるのかを調査するこの中で、私がインターンで行っているのはWebアプリケーション脆弱性診断(これ以降、診断と呼びます)です。診断の流れ診断には以下の3つのフェーズがあります。報告書を作成する報告会を開催する以降では、各フェーズで私が行った内容について書いていきます。(参考にした書籍については後述します。ZAP」という診断ツールを使用しました。適切な設定を行い、診断のボタンを押すだけで、報告書まで作成してくれるのでとても便利です。一方で、診断結果が間違っていることも考えられるので、しっかりと検証する必要があります。今回の診断でも検証した結果、適切に処理されているにも関わらず脆弱性として報告されたものがありました。上図では、すでに設定を終えているので、「動的スキャン」をクリックするだけで診断がスタートします。Suite」という診断ツールを使用しました。Suiteを使用することで、通信内容を確認することや同じ内容のパケットを複数回送信することなどができます。パケットを攻撃コードに細工して送信することもできます。Suiteを使用することで、自動診断ツールでは検知できない脆弱性を効率的に調べることができます。自動診断ツールで検知できない脆弱性の例として、以下の2点が挙げられます。報告にはgithubのissueを活用し、脆弱性を見つけた時には、その脆弱性に対するリスクの高い低いに関係なくいったんissueとして報告しました。これにより、報告会での議論の結果、必要なものだけをissueに残すことができます。簡単に修正できそうなものに関してはプルリクエストを出しました。診断の中での気づき診断を行う上で注意したこと診断はテスト環境で行いました。テスト環境だったとしても、リンクをたどった先が本番環境だったり、外部のWebサイトだったりします。今回は診断ツールの設定を行い、診断対象外のドメインが宛先となっているパケットは破棄するようにしました。上図の設定を行うことで、指定したURL以外のパケットは破棄されるようになります。ユーザ企業が社内で診断することのメリットここでは、診断をアウトソーシングではなく社内で行うことのメリットについて私の意見を書かせていただきます。私は以下の4つの理由があると考えています。診断によって、攻撃技術についての知見を社内に蓄積することができる蓄積された知見によって診断の技術がさらに向上する社内に知見を共有することで、社内全体のセキュリティ意識が向上するプロダクトへのコミットgithubのプルリクエストによる修正依頼をだすことができる上記の理由から、マネーフォワードは積極的に社内で診断を実施していきます。今回学んだことプロダクトオーナーと密に連携を取りながら、脆弱性診断の一通りの流れを体験することができました。報告フェーズでは、プロダクトにプルリクエストという形でコミットすることができました。今後の行うこと今回得た知見を活かして、MFクラウドの別のサービスの診断を行う予定です。今回の診断では、リスク分析が甘かったり、検証に時間がかかってしまったりすることがあったので、次回の診断ではスピーディーに診断を行っていきたいです。今後気をつけること今回の診断における決定的なミスは、作業ログを取っていなかったことです。エンジニアとしては当然のことなのかもしれませんが、作業ログを残すことの大切さに気づけていませんでした。社内の情報共有ツールでの報告が疎かになってしまっており、自分のやっていることがブラックボックス化してしまっていました。今後は、積極的にアウトプットして、社内での情報共有に努めていきたいと考えております。安全なWebアプリケーションの作り方(著:徳丸浩さま)最後にどうしても伝えたいことプロダクトオーナーの方と密に連携を取りながら診断を進めることができた点が、今回の診断の最大の収穫だったと考えています。私をランチに誘っていただき直接コミュニケーションをとる機会を多くとることができました。その結果、報告するだけの一方向の診断ではなく、報告に対する議論が活発に行われる双方向な診断をすることができました。今後も双方向の診断を目指し、プロダクトオーナーの方と連携しながら診断を行っていきたいと思います。マネーフォワードでは、エンジニアインターンを募集しています。ご応募お待ちしています。