freeeの開発情報ポータルサイト

freee PSIRTにjoinしてからの1年を振り返ります。

こんにちは!freee PSIRT(Product Security Incident Response Team)でお仕事をしています、kaworuです。

この記事は freee Developers Advent Calendar2022 9日目です。

12月になると「今年はどんな一年でしたか?」というやりとりも多いのではないでしょうか。 私にとっての2022年は「freee PSIRT での1年目」です。 2022年1月にfreeeにjoinし、およそ1年がたちました。 私というn=1の話ですが、振り返るのにちょうどよいタイミングとおもったので、記事にしてみました。

……1年間で、私はどうなっていくのでしょうか……?!

1 - 3月……freeeの環境や文化を特に感じた時期

freee PSIRTへ join !

1月17日、PSIRTでの仕事が始まりました。 私がPSIRTというお仕事に興味を持ったのは、セキュリティ企業でWebアプリケーション脆弱性診断業務をするなかで、よりプロダクトセキュリティに深く関わりたい・セキュリティエンジニアとしての幅を広げたい*1と考えたことがきっかけです。

実際にfreeeの生活が始まるといくつかのギャップがありました。

感じたギャップを手元のメモに残していていたので、この記事を書くにあたり久しぶりに読み返していたところ、全体のうち9割以上が入社3ヶ月以内の記録でした*2。メモのほとんどがよいギャップでした。

freeeの環境や文化を特に感じた時期だったのかな、と思います。 ひとつ、エピソードとして入社直後に勉強会の企画をしたことを続けます。

入社直後に勉強会の企画をしました。

きっかけは1月20日、「coinhive事件」の最高裁無罪判決が出て、JM*3との1on1で話題にしたことです。

その日の夜ふと思い立ち、過去、法律の勉強会を実施したときの運営メンバーに連絡をとってみました。 講師を担当いただいた法曹の方から解説会を提案していただき、「また勉強会が開催できるといいね」という話に。

翌日、法律の勉強会の企画をJMに相談したところ、「いいね」と背中を押してもらい、企画と準備をスタートしました。 あちこちから「こうするといいよ」というアドバイスがたくさん集まり、ちょうど入社1ヶ月の2月17日に開催することができました。

メインの解説は、刑事での上訴制度の解説(弁論について)、構成要件のお話、判決の解説(地裁から最高裁) 3件のLTを行いました。質疑応答や議論も非常に盛り上がり、予定していた時間を延長し、盛況な時間となりました!

終了後、私の企画は「(freeeのマジ価値2原則の)ムーブメントのひとつだよ」と教えてもらいました。 当時はあまりピンときていませんでしたが、1年をfreeeで過ごし、たくさんのムーブメントを目にしたり参加したりする中で、企画した勉強会もたしかにムーブメントのひとつだと感じています。

4 - 6月……脆弱性診断を回せるようになってきた時期

PSIRTのお仕事にも取り組み始め、まずは私の得意分野のWebアプリケーション脆弱性診断(以降、脆弱性診断と表記)を中心にスタートしました。

脆弱性診断の流れ(対象決め、準備、診断、結果、対応)を示した図
脆弱性診断のながれ

従来もfreeeでは脆弱性診断を実施していますが、プロダクトの進化や変化に合わせて、さらに細かく脆弱性を見つけられるように、 より小回りの効かせ・たくさん診断を回せるような体制作りをすすめていきました。

リリース予定を確認し、対象のプロダクトの仕様を理解し、ヒアリングに回って、環境やデータの準備をしてと、同期的に進めていました。……が、全然追いつきません!

「力技に頼るのではなくて、仕組みを作るのが大切」とアドバイスをもらい、診断チームのメンバーと非同期でヒアリングしやすくする仕組みを作成しました。 Google formに回答すると、脆弱性診断の準備に必要な確認事項が記されたGoogle documentが生成され、slack投稿される仕組みです。

Google formに回答すると、ヒアリング事項のフォームが作成され、slack投稿される仕組み
脆弱性診断用ヒアリングフォームの説明画像

(その後…11月に開催された開発合宿にてパワーアップされ、フォーム投稿と同時に、課題チケット起票と診断担当者のアサインも同時に行われるようになりました。) Design Docやヒアリング事項をみながら、外部のベンダーさんにお願いする場合、PSIRTのメンバーが脆弱性診断をする場合をうまく組み合わせて、脆弱性診断をおこなっています。

7 - 9月……脆弱性診断以外の取り組めるようになってきた時期

脆弱性診断にかかりきりだった状態を抜けて、他の仕事にも取り組めるようになってきました。

GitHub audit logをSIEMに取り組む仕組みづくり

GitHub audit log(監査ログ)は、GitHub上で、組織のメンバーが実行したアクションを確認できるログです。 GitHubのaudit log をSIEMに取り込んで可視化したり、ログの検索性をあげて解析・分析しやすくし、調査の助けとなることを期待して仕組み作りを行いました。

SIEMについての記事

Github APIにて取得したaudit logをs3 bucketに保存し、SIEMで確認できるようにする仕組みの構成図
GitHub audit logのSIEMへの取り込み

……本当は6月までに終えることを目標にしていたのですが、上述のように脆弱性診断に奮闘しすぎた結果、延長戦で取り組んだテーマです。 私にとって初挑戦の技術もあり、PSIRTのメンバーにサポートしてもらって、無事にaudit logがSIEMに取り込めるようになりました!

縦軸ログの取り込み件数、横軸時間の棒グラフ。
GitHub audit logのSIEMへの取り込み結果

縦軸がaudit logの件数、横軸が時間です。活動量ともいえるかもしれません。平日に高、土日は低い傾向を示しています。ときどき土日と同じような低い箇所は、お盆で夏季休暇を取る方がおおかったり、シルバーウィークのお休みの時期でした。

10 - 12月……いろいろなイベントを通して、考えている時期

いろいろなイベントを通して、強制的に視点や視野が広がるきっかけになったというのでしょうか、私自身考えることの幅が広がったように思います。 PSIRTとして、エンジニアとしてどんな私になりたいかなぁ、どういうふうにまわりに貢献できるかなぁ、などを考えています。

障害訓練

今回の訓練の設定は顧客情報の漏洩で、セキュリティインシデントそのものでした。

2022年の障害訓練は以下の記事にて紹介されています。 「うちの情報、freeeから漏れたんじゃないんですか?」 顧客から問い合わせ殺到──したらどうする? freeeが再び全社訓練(1/3 ページ) - ITmedia NEWS

セキュリティインシデント、所属チーム名のPSIRT、Product Security Incident Response Team の名前にあるように、私たちの動きが期待されているところです。 ですが、私はその場の流れを追いかけるのがやっとで、チームの中でも経験の多いメンバーに頼り切りでした……。

ひとつ個人的な気づきとして、「脆弱性診断と視点の転換」があります。 脆弱性診断では「こういう脆弱性がありましたので、このような脅威が考えられます」という報告の流れをします。 対して、障害対応では「実際の脅威から、なにが原因か?(脆弱性ならばどれ?)」を考える必要があるはずですが……長らく親しんだ脆弱性診断の流れで考えていた自分に気づきました。

自分のできてないことに落ち込み……いろいろなの振り返りを経て、現在は不足しているところを埋めようと、日々取り組んでいます。

Women Developers Summit 2022に登壇しました。

11月2日、スポンサーセッションに登壇をしました。

event.shoeisha.jp

speakerdeck.com

本記事でも触れた攻めや仕組みづくりの話に加えて、守りの視点のことも話ししました。

「女性エンジニアの学びと活躍を応援するカンファレンス」がテーマにあったので、 PSIRTのもうひとりの女性エンジニアmbさんの活躍も紹介してみました。 (ちなみに普段は、性差を意識することはなくて、「kaworuさんは、kaworuさん」という感じです。)

hardening研修

hardening研修は、毎年、新卒研修の一つとして実施されていて、PSIRTで運営をしています。

新人研修でHardening! - freee Developers Hub

期間中の私は攻撃の人として参加しました。

攻撃前にワンクッションとして派手な探索を仕掛けたのですが、異変に気づき対応したチームもあって素晴らしかったです。

普段の攻めのアクションとちがって、研修という観点からどのチームも同じように攻めるのが意外と難しいという学びを得ました。 (攻撃の自動化をチームですすめたのですが、対応できていない箇所を手動で行っていました。) 攻撃のバリエーションをもっと増やしたいなぁと考えていました。

……私もhardening受講したい!

おわりに

書きやすさから、時系列・イベントごとの記事になってしまいましたが、何気ない普段の日もいろんな取り組みで、一日一日がとても濃密です。

そして冒頭の「1年間で、私はどうなっていくのでしょうか………?!」の回答は「想像以上!(というか、想像できなかった!)」です。

「プロダクトセキュリティに深く関わりたい・セキュリティエンジニアとしての幅を広げたい」とfreee PSIRTにjoinし、 結構欲張って、あれやりたい!これやりたい!で1年過ごしました。引き続き2年目もプロダクトセキュリティに深く関わり、セキュリティエンジニアとして幅を広げていければと思います。

そして、1年目は「世話を焼いていくスタイル*4」に助けられてばかりだったので、 自分ももっと世話を焼いていくスタイルでいきたいと思っておりますー!

明日はRiku Oguraさんです。お楽しみに✨

*1:Webアプリケーション脆弱性診断は、Webアプリに対して、セキュリティ上の問題点がないかを検査・報告します。いろいろなWebアプリの脆弱性診断をするうちに、もっとよい提案はできないだろうか、力になれることはないだろうか、と考えるうちに、プロダクトセキュリティに興味を持ちました。

*2:ギャップのメモ、最後は入社半年ごろの記録でした。以降はメモが更新されていないので、私は半年ごろに、環境や文化に馴染んだのかなと思います。

*3:ジャーマネ。freeeにおけるマネージャーです。

*4:freeeの開発文化のひとつ