前回のポストでは、ネットワークとユーザーの分離などについて話しました。このような政策的セキュリティレベルの向上を進めながら、一番悩む部分が開発環境のセキュリティレベル向上です。開発効率と生産性を逃すことなく、実質的なセキュリティの向上に役立つポリシーと技術を適用したいと思いました。また、現在進行中の開発プロセスを大きく逸脱しないことを望みました。
単にセキュリティ認証の取得で終わるのではなく、製品のセキュリティの向上に焦点を当てており、運用の観点だけでなく開発の観点からも役立つプロセスを確立することが目標でした。
WhaTap LabsはGithubを利用してコード管理を行っており、Jenkinsを利用して開発、運用環境にビルドおよび配布しています。また、jiraを利用してすべての問題を追跡しています。
上記の手順にセキュアコーディング分析と修正ステップを導入し、問題の状況を事前にブロックしました。
セキュアコーディングサービスの条件は以下の通りです。
オープンソース、有料サービスなど様々なサービスのパイロットを進行しました。各サービスごとに長所と短所が明確に存在しましたが、内部プロセスと最も適したsnykを導入しました。githubにコードがコミットされると、連動したsnykプラグがセキュアコーディングをチェックします。コードの脆弱性が発生すると、Jiraに自動的に脆弱性チケットを作成します。作成されたチケットに基づいて開発チームが誤検知を判断し、脆弱性対策を実施します。
最終的に確立されたセキュアコーディングプロセスは次のとおりです。
① 開発者がGithubにWhaTapのコードをコミットします。
② WhaTapプロジェクトに連動したsnykが自動的に脆弱性を探索します。
③ Jiraに脆弱性別にチケットが生成されます。
④ 開発者がそのチケットを誤っているかどうかを判断します。
⑤ 誤検知でない場合は、その脆弱性を修正します。
⑥ 修正された脆弱性をGithubにコミットし、Jiraチケットをcloseします。
Jiraにセキュアコーディング証跡資料が残され、認証取得に大きな助けとなりました。
現在はGithubとJiraのみ有料プランとして使用しており、snykは無料プランを利用しています。 検出された脆弱性のレポート機能が存在しないことが無料プランの最大の違いでしたが、連動したJira機能を利用してレポート生成が可能であり、これを認証証跡資料として十分に使用できます。
さらに、簡単にわかりにくいいくつかの脆弱性を知ることができるプロセスが確立され、製品内部のセキュリティを向上させるのに役立ちました。
WhaTap Labsは100%クラウド環境で、すべてのデータはクラウドストレージに保存されています。KMS、eSigner CKAなどのクラウドサービスを利用しているが、サービスが利用できない複数の証明書、アクセスキーなど、内部で使用する重要な認証データが外部に公開される可能性が常に存在していました。これを検出する方法が必要でした。
検出するリポジトリは次のとおりです。
Github、S3、dockerなど、さまざまなストレージ検出をサポートするオープンサービスであるTruffleHogを利用して、定期的に脆弱性を検出しています。
特に、ハードコーディングされた秘密鍵、秘密鍵を検出できるだけでなく、pdf、エンコードされたテキスト、画像などでも検出が可能です。
WhaTapは以下の2つのクラウドストレージを検出しています。
Found verified result 🐷🔑Detector Type:Decoder Type:Raw result:Rotation_guide:Project:Commit:Email:File:Line:Repository:Timestamp:
上記の形式はGithub検出フォームであり、他にリポジトリごとにサポートフォームは異なります。
検出結果フォームを見ると、commit履歴とともにタイプを確認できます。誤検知かどうかを判断した後、誤検知でない場合は、担当者を通じて措置を進めます。
この時、単に措置だけ進行するのではなく、今後同じ問題防止のために該当ファイル、データが上がった原因を把握して前の開発者に共有します。
脆弱性を検出することも重要ですが、これを防ぐことが重要です。パブリックストアは、誤って誤ってデータをアップロードする可能性が非常に高いため、定期的に脆弱性を検出することをお勧めします。
さまざまなストレージ検出をサポートするオープンサービスであるTruffleHogホームページへ
最後の第3弾では、規定/指針/手続きの検討事項、個人情報暗号化ガイドなど認証に必要な手順をご説明します。