
既知の脆弱性を持つコンポーネントの使用
ほとんどのアプリケーションでは、大量のサードパーティ製コンポーネントを使用します。これらのコンポーネントは、ロギング、テンプレート、データベースアクセスなど、あらゆる機能を提供します。
これにより、ソフトウェアの開発がはるかに容易になり、時間を大幅に節約できますが、これらのコンポーネントも人間によって作成されており、中には必然的に脆弱性が含まれているものもあります。つまり、知らないうちに悪用される可能性のある脆弱性に晒される可能性があるということです。
コンポーネントを最新の状態に保つ
一般的な経験則として、フレームワーク、ライブラリ、その他のコンポーネントを定期的に最新の状態に保つことを強くお勧めします。これには様々な方法があります。
- 多くのソース管理ソフトウェアはリポジトリを分析し、依存関係に脆弱性が発見された場合に警告します。
- 多くのパッケージマネージャーがアプリケーションを分析し、脆弱な依存関係を特定できます。
- 脆弱な依存関係を特定できるソフトウェアコンポジション分析(SCA)ソリューションは数多く存在します。
技術的負債のリスク軽減
ライブラリのアップグレードに関する厄介な問題の1つは、コードを壊すような変更が加えられる可能性があることです。これらは文書化されていることが多いですが、文書化されていない変更もあり、コードが本番環境で実行されるまで反映されない場合もあります。
アプリケーションが最新バージョンより多くのバージョンを実行している場合、最新バージョンへのアップグレードにはかなりの作業が必要になることがあります。緊急を要する脆弱性が公開された場合、アップグレードに数日かかるような状況を避けるため、サードパーティのコンポーネントを比較的最新の状態に保つことが重要です。
また、リリースノートを読まずにやみくもにパッケージをアップグレードすることは推奨しません。リリースノートには、明らかではないがアプリケーションの機能を変える可能性のある変更に関する重要な情報が含まれている可能性があるためです。
更新すると安全性がさらに高まる可能性がありますか?
よくあることではありませんが、脆弱性によって次のような事例が報告されています。
- 古いバージョンには存在しません
- 脆弱性を修正する際に紹介してもらう
このようなケースでは、パッケージを定期的に更新することはあまり望ましくないと思ってしまうかもしれません。もちろん、このような考え方は技術的負債の蓄積につながるため、できる限り避けるべきです。
このシナリオは比較的まれであることを考慮すると、パッケージを頻繁に更新することの利点は、新たに導入された脆弱性の可能性をはるかに上回ります。定期的に最新情報を入手していれば、いずれにせよ簡単に軽減できるはずです。
また、ベンダーは何の開示もなく黙って脆弱性を修正しないと想定していますが、これは残念ながら今でも非常に一般的です。
注目すべき例
以下に、最近耳にしたであろういくつかの注目すべき例を示します。ライブラリをチェックし、常に最新の状態に保つことが重要である方法と理由がわかります。