ANDPAD開発組織のセキュリティレベル向上への取り組みについて

こんにちは!エンジニアの福間(fkm_y)です。 今回はANDPADの開発組織におけるセキュリティレベル向上の取り組みについて紹介します! この記事を読んでANDPADの開発組織にもセキュリティメインで取り組んでいるチームがあることを知ってもらえればと思います。

セキュリティレベル向上の取り組みを行う理由

ANDPADでは建設に関わる多数のユーザーにご利用いただいています。そのため、不正な入力によってサイトデザインが壊されたりレスポンスが返ってこなくなるとユーザーの業務を止めてしまいます。またユーザーの情報も多数取り扱っていますが、これが不正に取得され社外へ漏洩してしまうとユーザーに多大な損害を発生させてしまいます。 そんなことを防ぎANDPADを守るため様々なセキュリティレベル向上の対応を実施しています。

対応方針

直近では対応を以下に分類した上でクリティカルなものや短期間で大きな成果をあげることが可能な施策から優先して対応していました。

  • 既知の脆弱性の調査
  • 既知の脆弱性の解消
  • 新規の脆弱性の増加防止

取り組みの紹介

脆弱性の調査/解消

具体的な話は書けませんが、リリース前には既知の脆弱性が既存コードに含まれていないことの調査対応や、新規で見つかった脆弱性がプロダクトに含まれていないことの調査対応を行っています。現状は人力に頼っているところが大きいので後でも出てきますが自動化するためのツール導入の検討などを進めている最中です。

静的解析ツールの追加導入

  • Railsプロダクトには既にbrakemanなど多数導入されていましたが、検知しきれないものを検知するため、追加でsemgrepを追加導入しました。
  • 静的解析ツールはCIによって自動実行されています。追加したらCIの実行終了時間が伸びてしまったのでは?と疑う方もいると思いますが並列実行しているため実行終了時間は遅くならず、開発者体験も損なわずに済みました。
  • 社内で知見共有していたため、Rails以外のプロダクトチームにも導入されるという好事例も生まれました。 tech.andpad.co.jp

輪読会の開催

チームが再編成されたばかりでチームのセキュリティ知識に格差がある状態でした。そのため知識のベースアップを行うために徳丸本こと「体系的に学ぶ 安全なWebアプリケーションの作り方」を使った輪読会を開催していました。現在は徳丸本の輪読会が終わり別の書籍を使った輪読会が継続されています。知識のベースアップも出来ましたが他開発チームと情報交換できる副次的効果を得ることも出来ました。

セキュリティガイドラインの作成と周知

静的解析ツールによって脆弱性のあるコードは検知できるようになっていたのですが、得意不得意なスキルが開発者にもあるのでセキュリティ知識が乏しい開発者の場合、脆弱性のあるコードの危険性が具体的に理解できていない問題がありました。そのためセキュリティガイドラインを作成、周知し代表的な脆弱性を認知してもらうことから始めました。 IPAの「安全なウェブサイトの作り方」など優れたドキュメントもあるのですが、多忙な人でもかい摘んで読めるように再編集を行い小分けにしてSlackで周知していました。

f:id:fkmy:20220310192245p:plain

さいごに

今回、セキュリティチームで行っている取り組みの一部を紹介させていただきました。セキュリティチームは現在少数精鋭でワイワイやっていますがサービスの拡大に伴い対応サイクルをより早く回すため、静的解析ツールの追加導入や脆弱性管理ツールの導入なども検討しています。そのほかにもやりたいことはたくさんあるのですが施策を実行するための人が足りていません。セキュリティに高い関心を持っている方、是非私たちと一緒に働きましょう!

hrmos.co

engineer.andpad.co.jp