freeeのプロダクトセキュリティを高めるための取り組み

この記事はfreee Developers Advent Calender 2018 21日目の記事です。

 

こんにちは、freeeでCSIRTとソフトウェアエンジニアの二足のわらじを履く liva です。

社内では「攻撃する人」で通ってます。日常の本人は至って無害です。

 

早いものでもう年末で、この記事が公開される日は会社の忘年会です。

きっと今年もどんちゃん騒ぎです。お酒は好きですが酒に呑まれてインシデントを起こさないように気をつけたいところです。

 

freeeのプロダクトは日々様々な機能開発が行われ、短いスパンで各種リリースされ、プロダクト自体が大きくなっています。

それに伴って外部からの侵入や情報漏洩を狙った攻撃を受ける可能性が増えてきています。

この記事ではそういったことを防ぐために社内で行ってる取り組みを紹介します。

1週間前に公開されたeijiさんの記事よりはプロダクト寄りのお話になります。

developers.freee.co.jp

 

 

商用ツールを利用した脆弱性診断

freeeのプロダクトは大規模でとてもじゃないけど人が全部見切れる量ではありません。そこで脆弱性診断に特化した商用のツールを利用して日々スキャンをかけています。いわゆる内製化です。1年かけてようやくメインプロダクト1つを完了させられました。巨大すぎるぞ。

ツールは「現状どうなっているか」を把握するために利用しています。検出されてきた脆弱性は以下の観点で対応要/不要のハンドリングを行っています。

  • その脆弱性の存在確認
  • その脆弱性を突かれた場合の被害と影響範囲

ツールは機械判定なため、どうしても誤検知の問題があります。そのため、まずはその脆弱性が本当に存在するのかを確認します。誤検知であることがわかった場合は、そこで対応は終了です。

存在していることがわかった場合、その脆弱性による被害と影響範囲を調査します。ここで言う「被害」とは金銭的であったり、社会的信用であったり、様々です。情報が漏洩する場合は社会的信用が、サービスダウンを引き起こす場合は金銭的な被害と社会的な信用が失われます。被害を想定し、その影響範囲を想定し、対処する/しないの判断を行っています。

対処する場合、機能によっては私が修正することもありますが、そのコードを実装した人にお願いすることもあります。現状は私が修正を行うことが多いです。

 

外部ベンダーへの脆弱性診断依頼

ツールだけではが存在するのでそれの対応として外部のセキュリティベンダーに依頼することもあります。第三者の専門家に依頼するため、私が業務の合間に片手間で探すより安心感があります。

依頼時は

  • 実施時期
  • 対象プロダクト
  • 仕様書や関係ドキュメント

の3点をまず伝えて、ざっと診断の規模を測ってもらいます。ざっくり出してもらった後は規模の調整をして、環境準備やベンダーから送られてきたヒアリングシートへの記入等を行い、診断を実施してもらいます。あとは報告書を受け取って内容を吟味します。修正の要否をざっと出した後、開発チームに脆弱性の修正を依頼、終わったところで再診断を実施します。このあたりはどこのセキュリティベンダーも同じ流れでしょう。

特定の期間中、第三者に見てもらえるのでとても助かります。

 

     

 

商用ツールは主に既存プロダクト、外部ベンダーは新規プロダクトと使い分けています。

プロダクトの性質によっては新規プロダクトであっても商用ツールを利用して回すこともあり、その場合の手動で見る箇所は私が担当しています。私は元々セキュリティベンダーで脆弱性診断をやっていたので、このあたりは慣れています。ある程度管理できる環境で攻撃を試せるので、第三者の立場でやっていた頃に比べて、とても気楽にやっています。

 

     

 

脆弱性診断以外で進めていることとして、開発者向けに脆弱性診断のTips集を作成して、PRレビュー時の動作確認に活かしてもらおうという試みが進行中です。その第1段としてTips集を作成しているのですが、この記事を書きながら並列で進めています。この記事が公開される頃には社内にも公開されているでしょう(多分)。

開発者にやってほしいという理由としては、コストと手戻りの省力化です。脆弱性診断を実施する頃になるとプロダクトはほぼ完成していてリリースを待っている状態です。そこで脆弱性を検出し、修正を行うとなると多大な手戻りが発生します。時間やコストの無駄になるため、PRを出した段階で最低限確認してほしい項目を出して、それを開発者に確認してもらい、必要なら修正してもらおうと考えています。

このあたりはまだ固まっていないので年始から本格的に検討していく予定です。

 

また、社内エンジニア向けのイベントとしてQ毎にhardeningというのをやっています。

悪いこと考えるおじさん’sがわざとセキュリティホールを作ったサーバーとプロダクトを用意して、参加者に配ります。2日間でセキュリティホールを探して修正、修正期間が終わるとおじさん’sが攻撃を仕掛けます。

今年の新卒で入社したエンジニアとバリバリの現役エンジニアを対象に2回実施して、概ね好評でした。

こちらは過去に本ブログで記事が公開されているのでよかったらどうぞ。

developers.freee.co.jp

 

freeeでは一緒に働ける人を募集中です。

jobs.freee.co.jp

 

CSIRTエンジニアも募集中です。

www.wantedly.com

 

明日は弊社の第1号社員平栗さんです。