モバイルアプリに特化した専門チームを立ち上げる
モバイルアプリの脆弱性診断の内製化を実現するため、小西氏らは製品のセキュリティに対応するPSIRTにモバイルアプリの現状についてヒアリングを実施した。主な内容は現在の管理方法や各製品のモバイル開発チームについてだ。ある程度、現状を把握するとPSIRT内で専門チームのメンバーを募集して、チームの立ち上げを進めた。
チームの立ち上げでは、ヒアリング結果をもとにチームでやるべきタスクを洗い出し、モバイルアプリ開発チームへのヒアリングを実施した。そして専門チームにおける業務の進め方、チームの体制、フローの整備を進めた。
また同時にモバイル専門PSIRTチームへの相談窓口を作り、開発チームに周知することで、開発チームがモバイルアプリのセキュリティに関して相談できるようにした。こうしてモバイルアプリのセキュリティに対応できる専門チームの体制が整っていった。
モバイルアプリの脆弱性診断体制を構築する
知識や知見を蓄え、チームを整え、いよいよモバイルアプリの脆弱性診断のための体制作りに着手した。
社内診断の大まかな流れはこうだ。まずは新しく実装する機能に対して、診断が必要かどうか判断する。もし診断が必要であれば、診断項目を記載した試験仕様書を作成する。そして仕様書を元に診断を実施し、結果を報告する流れになる。
それぞれの段階で必要なものは何かと考えると、診断可否の判断と試験仕様書作成では診断を考察する知見、つまり診断観点が必要となる。診断を実施する際には診断方法が必要となる。そして診断報告時には診断結果にもとづいた対応フローが必要となる。そのため診断観点、診断方法、診断対応フローを準備していくことにした。
必要なものをどのように準備したのかを順に見ていこう。まず診断観点では、チームでOWASP MASVSの輪講を実施し、知見を高めていった。輪講中のメモからMiroで付せんを作り、それぞれの機能に対してどのような場所を注意するかという視点で分類していった。この分類から診断観点を判断できるチェックシートを作成した。例えばデータを表示する機能なら、画面表示、エラー文、クリップボードなどに注目し、それぞれの観点を確認する。これで診断可否の判断や診断項目の作成ができるようになった。
次に診断方法の作成では、サイボウズのkintoneで診断方法を登録するためのアプリを作成し、具体的な診断方法を登録していった。登録する項目は、脆弱性のタイプ、脆弱性が起こりうる場所、どのようなケースで発生し、どのように診断するのかなどの手順を登録していく。またどのような結果が出れば脆弱性があると判断できるかも記載してある。
最後に製品ごとの診断の進め方や、脆弱性を検出した時の共有や報告方法などの診断対応フローを作成した。同じくkintoneでモバイルアプリの診断を管理するアプリも作成し、診断状況の把握や議論に役立てることにした。
こうして診断を社内で進めていく体制が構築できた。この取り組みから、小西氏はさまざまな変化を実感できたという。モバイルアプリ診断を常に実施できるようになり、外部からの指摘や検出された挙動に対して専門的な観点で判断が可能となった。また相談窓口を作ったことで相談も増えた。
これまでの取り組みを振り返り、小西氏は「モバイル製品のセキュリティ面での品質向上につなげることができました」と話す。今後は診断項目を最新の状況に合わせた改善と最適化、iOSの診断方法の拡充、チーム全体で知見を増やす場の提供などに向けて取り組みを継続していく。