Log4j脆弱性に55万件のアラート送信も――GitHubで安全なソフトウェアを作成する5つの簡単な方法とは:CodeQL、Dependabot、GitHub Actionsなどを活用
GitHubは、「GitHub」のネイティブツールや機能を活用してより安全なソフトウェアを作成する5つの方法を紹介した。
GitHubは2022年4月22日(米国時間)、「GitHub」を使ってより安全なソフトウェアを作成する5つの方法を公式ブログで紹介した。
「GitHubには、安全なソフトウェアの作成と提供を容易にするネイティブツールや機能が多数用意されている」と、同社は述べている。これらを使う、以下の5つの方法によってワークフローにセキュリティを組み込めば、作業速度を犠牲にすることなく、より安全なソフトウェアを簡単に作成できるとしている。
1. CodeQLをワークフローに組み込む
GitHubの静的コード解析エンジン「CodeQL」は、コードをデータのように扱い、クエリ可能にする。既知のセキュリティ脆弱(ぜいじゃく)性パターンに対応したオープンソースソフトウェア(OSS)のクエリライブラリを使用してコードをスキャンし、潜在的な問題を特定する。
GitHubのCI/CD(継続的インテグレーション/継続的デリバリー)プラットフォーム「GitHub Actions」で、「CodeQL Analysis」というコードスキャンワークフローを任意のGitHubリポジトリに追加することで、開発環境におけるコードスキャンを自動化できる。新しいコードをプッシュしたときや、メインブランチに変更をコミットしたときなど、ニーズに合わせて任意のタイミングでコードスキャンを実行するようにワークフローを調整できる。
CodeQLによるコードスキャンで使用されるクエリライブラリは、新たな脆弱性の発生に対応してOSSコミュニティーが拡充を進めている。このため、CodeQLワークフローでコードスキャンの自動実行を設定しておけば、コードを新たな脆弱性から保護できる。
2. Dependabotで全ての依存関係を最新に保つ
GitHubの「Dependabot」は依存関係を自動的にスキャンし、GitHubの「Advisory Database」と照合し、依存関係に脆弱性が見つかった場合はアラートで知らせる。また、Dependabotのセキュリティアップデート(プルリクエスト)は、その依存関係を安全なバージョンに更新するのに役立つ。
Dependabotは依存関係の自動バージョン更新もサポートしており、これは設定ファイルのdependabot.ymlで設定できる。Dependabotがどのように依存関係を更新するか(どのエコシステムを有効にするかなど)、どんな頻度で新しい更新を探すかなどを指定することが可能だ。
こうしたDependabotは、CodeQLを補完するものといえる。CodeQLがコードのセキュリティ問題を検出するのに対して、Dependabotは、プロジェクトの依存関係に起因する脆弱性を検出するからだ。
最近の例では、Javaベースのロギングツール「Apache Log4j」の脆弱性が多くのパッケージのレジストリや依存関係に影響し、業界で大きな問題となった。だが、Java用プロジェクト管理ツール「Apache Maven」とDependabotを使用しているJava開発者は、比較的容易に対応できた。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 脆弱性を発見するコードスキャン機能がGitHubに統合、セキュリティの問題が次々見つかる
GitHubはコードの脆弱性を簡単に発見できるコードスキャン機能の一般提供を開始した。GitHubの機能に溶け込んでいるため、開発ワークフローの一環としてセキュリティ上の課題を解決しやすい。 - いまさら聞けない「CI/CD」の意義――GitHubとGitHub ActionsでCI/CDを試してみよう
GMOペパボにおけるCI/CD活用事例を紹介する本連載。第1回は組織でCI/CDを導入する目的と意義を整理し、GitHub/GitHub Actionsを利用してCI/CDを実践する方法を紹介します。 - GitHubに誤って機密データをアップロードしようとしていないか、オープンソースの対策ソフトが公開
クラウドコミュニケーションプラットフォームを手掛けるTwilioは、機密データを誤ってGitHubにアップロードすることを防ぐツール「Deadshot」を開発し、2021年5月にオープンソースソフトウェアとして公開した。