はじめに
AIが劇的に進化した事が要因なのか、最近ライブラリなどの脆弱性の発見(パッチリリース)が多いように思います。
会社のSlackで情報を集めてもらっているのはとてもありがたいですが、ちょっと最近は量が多い、、、
それっぽいは確認が必要なので、毎回大変。そのため、GitHubで提供されている機能を利用して対応します。
GitHubの脆弱性に対するセキュリティ機能
GitHubには、コードの脆弱性を自動で検知・修正するための強力なセキュリティ機能(GitHub Security)が標準でいくつも備わっています。
Dependabot(依存関係のチェック)
一番手軽で、真っ先に導入すべき機能です。自分たちが書いたコードではなく、プロジェクトで使っている外部ライブラリやパッケージの脆弱性をチェック。
プライベートリポジトリでも無料で導入可能。
Dependabot alerts(アラート)
package.json や requirements.txt などを監視し、既知の脆弱性を持つ古いバージョンのライブラリが見つかると通知してくれます。
Dependabot security updates(自動修正)
脆弱性が見つかった際、それを解決する安全なバージョンへアップデートするための Pull Request (PR) を自動で作成してくれます。
Secret Scanning(機密情報の漏洩検知)
うっかりミスによる重大なインシデントを防ぐための機能。
APIキー、アクセストークン、パスワードなどがコード内にハードコードされたままPushされていないかをスキャンします。
プライベートリポジトリでは有料で、費用:$19 / 月。
プッシュ保護(Push Protection)
この機能を有効にすると、シークレット情報が含まれるコミットをPushしようとした時点でブロックしてくれるため、未然に漏洩を防ぐことができます。
Code Scanning / CodeQL(静的コード解析)
自分たちで書いたソースコードそのものに潜む脆弱性(SQLインジェクションやクロスサイトスクリプティング、メモリリークなど)を解析したい場合に使用。
GitHubが開発した「CodeQL」という強力な解析エンジンなどを使って、コードを静的スキャンします。
プライベートリポジトリでは有料で、費用:$30 / 月。
GitHub Actionsと連動させて、「PRを作成した時」や「MainブランチにPushした時」に自動でスキャンを走らせるのが一般的です。サードパーティ製のリントツールやセキュリティツール(ESLintやSonarQubeなど)の出力結果を統合することも可能です。
Private Vulnerability Reporting(プライベート脆弱性報告)
自動チェックツールではなく、運用面でのセキュリティ機能。
外部のユーザーや開発者があなたのリポジトリに脆弱性を見つけた際、公開のIssueではなく、あなただけにコッソリと安全に報告できる専用の窓口を設けることができます。オープンソースのプロジェクトを公開している場合に非常に有用です。
パブリックリポジトリ向け(外部からの報告受付用)に設計された機能のため、プライベートでは基本的に使われません。
おわりに
まずは「Dependabot」の“Dependabot alerts“から導入開始です。これだけで解決では無いですが、今よりは楽になると思います。
今後は「Secret Scanning」の導入も検討して、より楽により安全にシステムをメンテして行きます!
参考(感謝)
- AIに聴きながら
