バックポートとは
バックポートとは、ソフトウェアのパッチまたは更新が最近のソフトウェアバージョンから取得され、同じソフトウェアの古いバージョンに適用されることです。
バックポートは、レガシーソフトウェアや、開発者によってまだサポートされている古いバージョンのソフトウェアにおけるセキュリティ上の欠陥に対処するために、最も一般的に使用されます。新しいバージョンは安定性に問題がある、またはダウンストリームアプリケーションとの互換性がない可能性があるという理由で、ユーザーが古いバージョンのソフトウェアを維持することがよくあります。
バックポートの仕組み
バックポートは、新しいバージョンのソフトウェアから古いバージョンに更新またはパッチを適用するあらゆるアクティビティの総称です。
このプロセスは、数行のコードを更新するのみの簡単なものである場合もあれば、複数ファイルのコード全体にわたって大幅な修正が必要になる場合もあります。
後者の場合、バックポートの適用は、ソフトウェアの最新バージョンにアップグレードする場合と比較して実用的ではない場合があります。ただし、場合によっては、アプリケーションの新しいバージョンに極めて重要な操作に影響を及ぼす可能性のある安定性に関する問題がある場合、レガシーアプリケーションの保持が必要になることがあります。
バックポートプロセス
バックポートは、複数のステップからなるプロセスです。ここでは、バックポートを開発および展開するための基本的なステップの概要を示します。
- パッチまたは更新が必要なソフトウェアバージョン内のセキュリティ上の欠陥を特定します。
- 同じソフトウェアの新しいバージョンでこの問題に対処するために利用できるパッチ、更新、または修正を判別します。
- 古いコードバージョンと互換性を持つように、修正を適応させます。
- バックポートされたコードまたはバックポートパッケージがITアーキテクチャ内で完全な機能を維持していることと、根本的なセキュリティ上の欠陥に対処していることを確認するために、慎重にテストを実施します。
- 前のステップで特定された、望ましくないあらゆる二次的影響に対処します。
- バックポートされたパッチを展開します。
バックポートの担当者
バックポートでは、ソフトウェアのソースコードにアクセスする必要があります。そのため、バックポートは、クローズドソースソフトウェアの中心となる開発チームが開発および提供できます。これは、公式パッチまたはバグ修正の一部として行うことができます。Linuxなどのオープンソースソフトウェアでは、サードパーティがバックポートを提供し、ソフトウェア開発チームに送信する場合もあります。
脆弱性管理におけるバックポートの位置付け
バックポートには多くの長所がありますが、複雑なセキュリティ問題を簡単に修正できるわけではありません。さらに、長期的にバックポートに依存すると、他のセキュリティの脅威が発生する可能性があり、そのリスクは、元の問題のリスクを上回る可能性があります。
バックポートの一般的な問題と考慮事項
長期的なサポートとメンテナンスのコスト
バックポートは、古いバージョンのソフトウェアにおけるセキュリティ上の欠陥や脆弱性に対処する効果的な方法です。ただし、各バックポートにより、システムアーキテクチャ内が非常に複雑化し、メンテナンスコストが高くなる可能性があります。
例えば、「Python 2.7.18」は、Python 2の最終的な公式リリースでした。セキュリティパッチを最新の状態に保ち、Pythonが提供するすべての新しい進歩を引き続き活用するために、組織はPython 3にアップグレードするか、要件の凍結を開始し、レガシーの長期サポートにコミットする必要がありました。クラウドストライクのデータサイエンスチームは、まさにこのジレンマに直面していました。この記事では、チームの意思決定プロセスと、約200K行のPythonを最新のフレームワークに更新するためにチームが実行したステップについて説明します。
バックポートの二次的影響
Pythonのブログ記事で説明したように、各バックポートは、IT環境内に数多くの望ましくない二次的影響を及ぼす可能性があります。アップストリームソフトウェアアプリケーションがすべてのダウンストリームアプリケーションに影響を与えるように、コアソフトウェアに適用されるバックポートも同様に影響を与えます。これは、バックポートがカーネル内で適用される場合にも当てはまります。
その他のセキュリティへの影響と脆弱性
バックポートは、IT環境内の既知のバグに対処するための一般的な手法です。同時に、レガシーコードベースに依存すると、組織のセキュリティにその他の潜在的に重大な影響を与えます。古いコードやレガシーコードに依存すると、環境に弱点や脆弱性が生じる可能性があります。これらの問題は、主要なアプリケーションだけでなく、すべての依存ライブラリおよび公開リポジトリにフォークされたアプリケーションにも影響します。各バックポートが組織の全体的なセキュリティ戦略およびITアーキテクチャにどのように適合するかを考慮することが重要です。これは、アップストリームのソフトウェアアプリケーションとカーネル自体の両方に適用されます。
数値の混同
バックポートは、列挙プロセスが十分に理解されていない場合、ユーザーにセキュリティに対する誤った認識を与える可能性があります。例えば、ユーザーがセキュリティ問題に対処するためのソフトウェアアップグレードに関するマスコミ報道を読んだとします。ただし、実際には、アプリケーションの最新のアップストリームバージョンではなく、ベンダーから更新されたパッケージをインストールします。このシナリオでは、ユーザーは、バックポートパッケージが適用された、古いアップストリームバージョンのソフトウェアを引き続き実行することになります。これでは、最新バージョンのソフトウェアを操作する場合の完全なセキュリティ機能と利点は提供されません。ユーザーは、最新バージョンに更新されていることを確認するために、特定のソフトウェア更新番号を確認し、二重にチェックする必要があります。