Skip to main content

セキュリティパッチはどこから入手できる?

2018年1月25日

0 分で読めます

ソフトウェアにおける既知の脆弱性は広く知られた問題であり、世界最大級のセキュリティ侵害の原因にもなっています。たとえば、Mossack Fonesca(パナマ文書)の侵害、1,100のWebサイトからなるネットワークで4,500万件のパスワードとIPアドレスが盗まれたVerticalScopeの侵害、200万件のユーザー名とパスワードが盗まれたUbuntuフォーラムの侵害などがあります。

既知の脆弱性への最善の対処法は、ソフトウェアをアップグレードすることです。しかし、常にそれが可能とは限りません。利用しているソフトウェアのセキュリティアップグレードがすぐには提供されない場合があります。また、アップグレードに「破壊的変更」と呼ばれる大幅な機能変更が含まれ、人や他の連携システムがソフトウェアにアクセスして利用する方法に影響することもあります。そのため、アップグレードには多大なコストがかかり、実行が難しい場合も少なくありません。

次善策は、ソフトウェアにパッチを適用することです。セキュリティパッチとは、機能への変更を最小限に抑えながら、特定のセキュリティ問題を修正するソフトウェア更新です。

クローズドソースソフトウェアの場合、セキュリティパッチを入手する唯一の方法は、ソフトウェアベンダーから受け取り、インストールすることです。よく知られた例がWindows Updateで、何百万台ものWindows PCにセキュリティパッチを配信しています。商用ソフトウェアベンダーのパッチを管理する分野は急速に発展しており、アプリケーションのセキュリティパッチを入手、テスト、適用するプロセスである「パッチ管理」についても多くの情報が公開されています。新しいパッチのリリースをIT担当者に知らせ、コンピューター群に展開するためのさまざまなツールも開発されています。

オープンソースソフトウェアは多くの組織のユースケースで事実上の標準となりつつあり、新しいソフトウェアを開発するためのインフラとしても広く使われています。オープンソースもクローズドソースと同様に脆弱性の影響を受けますが、最新の脆弱性に対するセキュリティパッチをどこで入手できるのか、必ずしも明確ではありません。また、多くのオープンソースのメンテナーは余暇を使ってプロジェクトを維持しているため、脆弱性が発見されても、ソフトウェアのアップグレードやパッチ適用までに時間がかかることがあります。

オープンソースソフトウェアのセキュリティパッチを見つける4つの方法

1. オープンソースの開発者によるアップグレードやパッチを利用する

パッチを探すなら、脆弱性のあるオープンソースソフトウェアの新しいバージョンを確認するのが基本です。脆弱性は、多くの場合、ライブラリのメンテナーによって修正されます。

2. プルリクエスト

オープンソースのコントリビューターが、セキュリティ脆弱性を修正するコードを提案するプルリクエストを作成することがあります。しかし、そのプルリクエストがメインのソフトウェアにマージされるまでには時間がかかる場合があり、結局マージされないこともあります。

たとえば、人気のJavaScript製Markdownパーサーライブラリmarkedでは、XSSの脆弱性に対する修正プルリクエストが1年間オープンのままで、その後ようやく新しいリリースに取り込まれました。

脆弱性を修正するプルリクエストがオープンになっている場合、そのコードをダウンロードして、新たにパッチを適用したバージョンとして利用できます。ただし、提案されたコード変更が期待どおりに動作しない、あるいはソフトウェアにリグレッションを引き起こすリスクは残ります。そのため、少なくともコミュニティの他のメンバーによってコードがレビューされているかを確認し、デプロイ前にテストすることをおすすめします。

3. フォークして修正する

開発者自身が、オープンソースソフトウェアをフォーク(独自のバージョンを作成)して、脆弱性を修正する方法もあります。自分のニーズに合った安定したバージョンから脆弱性を取り除けるため、信頼性を確保できるのが利点です。

一方で、フォークするとソフトウェアのメインラインから更新や修正を受け取れなくなり、いずれはさらに脆弱な状態に陥る可能性があります。新たな脆弱性は常に発見されているからです。

4. アップデートフィード

Linuxエコシステムを支援するRedHatとCanonicalは、セキュリティアップデートを含む更新情報をLinuxユーザーに配信しています。

CanonicalのLivePatchサービスを使うと、システムを再起動せずに、重大なUbuntuカーネルパッチを適用できます。

RedHatが提供するYumパッケージマネージャーを使うと、Linuxパッケージを最新の利用可能なバージョンに更新でき、多くの場合、セキュリティ修正も含まれています。yum check-updateコマンドは、更新が利用可能なインストール済みパッケージを確認します。yum update packageコマンドを実行すると、パッケージが自動的に最新バージョンに更新されます。

Yumセキュリティプラグインは、セキュリティ関連のアップデートを識別します。このプラグインはRedHat Enterprise Linux 5.0以降で利用でき、RedHat Enterprise Linux 7.0以降には組み込まれています。

さらに、npm(Node.js)やMaven(Java)などのパッケージマネージャーも、パッケージを最新の状態に保ち、セキュリティアップデートをインストールするのに役立ちます。ただし、セキュリティ関連のアップデートかどうかを判別する機能はありません。

5. Snyk

既知の脆弱性を管理するツールは、オープンソースの開発ワークフローに欠かせません。ただし、パッチ適用にも対応していることが重要です。そこでSnykは、創業当初からコアサービスにパッチ適用機能を組み込みました。脆弱性データベースには、Snyk独自のパッチを登録しています。その多くは、脆弱性が残る以前のバージョンにオリジナルの修正をバックポートしたものです。ほかにも、プルリクエストをテストし、すぐにインストールできるパッチとしてパッケージ化したものや、Snykのセキュリティリサーチチームが作成したパッチがあります。

snyk-botが脆弱なnpm依存関係にパッチを適用したGitHubプルリクエスト。すべてのチェックに合格し、マージの競合もありません。

これらのパッチは、CLIを使って自動ビルドプロセスに取り込むことも、自動プルリクエストとしてプロジェクトに提出することもできます。パッチ適用の手間を減らすことで、通常のワークフローの中ですばやくパッチをテストして適用できます。

まとめ

ほとんどすべてのソフトウェア製品はいずれ脆弱性の影響を受け、アップグレードやパッチが必要になります。重要なのは、脆弱性を修正するパッチをどれだけ早く入手できるか、そしてどれだけ簡単に適用できるかです。

クローズドソースソフトウェアのユーザーはソフトウェアベンダーに依存しますが、ベンダーのセキュリティ問題への対応は徐々に迅速になっています。オープンソースソフトウェアでは、活発なメンテナーコミュニティが、セキュリティ脆弱性やその他の欠陥に対する最善の備えです。しかし、多くの場合、必要なときに必要なパッチがオープンソースコミュニティから提供されるとは限りません。

自分でパッチを探したり作成したりする方法もありますが、Canonical、RedHat、Snykのようなプロバイダーが提供する自動修正を利用することもできます。オープンソースエコシステムがますます複雑になるなか、ツールはあらゆる組織のセキュリティ体制に不可欠な要素になると考えられます。

カテゴリー: