Skip to main content

Snykで脆弱性を先回りして修正し、Javaのセキュリティとプロジェクトの健全性を維持する

著者
Headshot of Lee Turner

Lee Turner

blog social snyk secure java

2021年11月16日

0 分で読めます

開発者として、私はGitHubアカウントで多くの時間を過ごしています。アプリや小さなユーティリティを作ったり、新しいことを学ぶために概念実証を作成したりしています。GitHubを頻繁に利用しているので、自分のアカウントは全体的に健全な状態だと思っています。アカウントでYubiKeyベースの2要素認証を有効にしたり、シークレットや機密ファイルをコミットしないようにしたり、オープンソースプロジェクトに関するGitHubのセキュリティに関するベストプラクティスに沿ってアカウントを定期的に確認したりと、重要な点に気を配っています。

チェックポイント!ソースコードリポジトリで2要素認証を有効にしていますか?セキュリティチャンピオンとしてさらに成長するには、セキュアコードレビューに取り組むのもおすすめです。

ただし、あらゆるシステムの健全性や衛生状態と同様に、私たちが積極的に行うことだけで決まるわけではありません。気づきにくい要素も影響します。これは、開発を終了したリポジトリで特に重要です。コードが変更されず、主な関心対象ではなくなったとしても、周囲の世界は進み続けます。面識のない人がそのリポジトリを見つけ、コードを学ぶため、あるいは現在書いているコードの基盤として利用する可能性があります。

だからこそ、私たち開発者には、コードを書いた時点だけでなく、そのコードがリポジトリで公開されている間ずっと、できる限り最良の状態に保つ責任があります。

先ほど述べたように、コードを取り巻く世界は変化していきます。利用している依存関係の新しいバージョンがリリースされ、依存するフレームワークやライブラリの古いバージョンにセキュリティ上の問題が見つかることもあります。常に最新バージョンに移行すればよいというわけではありませんが、こうした変更を継続的に把握し、リポジトリを最新かつ安全な状態に保つために必要な対応を取れる方法を見つける必要があります。

ヒント:GitHub Actionsや、リポジトリのコード変更に組み込まれたセキュリティ機能を活用している方は、GitHub Security Code Scanningについてぜひご覧ください。

脆弱性管理は、組織のセキュリティ態勢の強化に役立つプロセス、標準、ツールを備えた独自の分野です。保守しているレガシーJavaプロジェクトでそれを実現する方法や、セキュリティ対策を効率化する方法について詳しく知りたい方には、脆弱性の修正プロセスについて調べることをおすすめします。

レガシーJavaプロジェクトの脆弱性を発見して修正する

そこで役立つのがSnykです。Snykは、これまで見えなかった問題を可視化し、対処可能にします。Snykにリポジトリ(GitHub、GitLab、Bitbucket、Azureなど)を監視させることで、必要な情報を得て、コードの安全性を保つための対策を取れます。Snykは次のような方法でこれを実現します。

  • 依存するフレームワークやライブラリで見つかった脆弱性を報告

  • 利用している依存関係の新バージョンを通知

Snykをアカウントに接続すると、思いがけない発見があるかもしれません。私はSnykの無料プランから始め、いくつかのリポジトリをスキャンさせました。するとすぐに、古いSpring Bootアプリで重大度が「高」および「中」の問題が複数見つかりました。原因は、アプリが古いSpring Bootリリースでビルドされていたことだけでした。更新する理由がなかったため、そのままにしていたのです。

脆弱性ダッシュボード。重大、高、中、低の各問題の件数と、脆弱性の修正リンクが表示されています。

幸い、修正は簡単でした。使用していたSpring Bootのバージョンを更新し、アプリケーションを再テストして、変更をプッシュするだけです。

もちろん、アプリケーションの依存関係を常に最新に保てるのが理想です。ここで、先ほど挙げた2つ目の点についてSnykが役立ちます。Snykは新しい依存関係のバージョンが見つかったことを知らせるだけでなく、レビューとテストの準備ができたプルリクエストをリポジトリに作成することもできます。

snyk-botがkotlin-logging-jvmを2.0.10から2.0.11にアップグレードすることを推奨する、GitHubのプルリクエストコメント。

GitHubアカウントの健全性やセキュリティを高めるには、それらに影響するすべての要因を把握する必要があります。見えなかったものが見えるようになれば、是正措置を講じ、コードのライフサイクル全体を通してその状態を維持できます。Snykは、日々利用するツールと連携し、取るべき措置を判断するための知識を提供します。さらに、自動化できる作業は自動化します。

Javaのセキュリティに関するその他のリソース

この記事が、古いプロジェクトを保守して安全に保つうえで参考になれば幸いです。Java開発者としてセキュリティのスキルを高めたい方に、役立つリソースをいくつかご紹介します。

  1. Javaセキュリティを解説

  2. DockerでJavaコンテナを構築するための10のベストプラクティス

  3. OWASPのBrian Vermeer氏とJim Manico氏が執筆した、優れた€‹ €‹Javaセキュリティの10のベストプラクティス

  4. 最後に、安全なデシリアライゼーションのコーディングプラクティスを実践していますか?よくわからない場合は、Vermeer氏によるJavaのシリアライズとデシリアライズ:Javaのデシリアライズ脆弱性を解説をご覧ください。

CTFを始めよう

オンデマンドのバーチャル入門ワークショップで、CTFチャレンジの解き方を学びましょう。

続きを読む

blog feature ai lilac
Blog

エージェント型修正で脆弱性バックログをプルリクエストに変える

Evo Remediation Agentがオープンプレビューで利用可能になり、Evo Agentic AppSecに依存関係の自動解決機能が加わりました。AppSecチームは継続的な修正キャンペーンを実施できるようになりました

AI Background min crop
Blog

AIが、あなたが受け入れてきたあらゆるリスクを一気に顕在化させる:AI Security Panel: Unfilteredから得た7つの洞察

AIによって攻撃はより安価かつ高速になり、組織がすでに抱えているリスクが露呈しています。4人のセキュリティリーダーが、機械の速度に対応する防御と迅速な修復が今不可欠である理由を語ります。

blog feature ai violet
Blog

VulnBump:AIエージェントはビルドを壊さずに脆弱な依存関係を修正できるか?

VulnBumpでは、実際の依存関係のアップグレード307件をAIエージェントで検証します。脆弱性が解消され、ビルドとテストが正常に通った場合にのみ、修正成功と判定します。