Trellix は、15 年前の Python バグに関連する 62,000 のオープンソース プロジェクトのパッチ適用を自動化します

Trellix の研究チームは、Python プログラミング エコシステムにおける 15 年前のパス トラバーサルの脆弱性の影響を受けやすい、約 62,000 のオープン ソース プロジェクトにパッチを適用したと述べました。

チームは、昨年末に Python の tarfile モジュールで CVE-2007-4559 として追跡されたバグを特定しました。 2007 年に最初に Python プロジェクトに報告されましたが、未チェックのままでした。 それ以来、約 350,000 のオープンソース プロジェクトと、その他の無数のクローズド ソースまたはプロプライエタリ ソフトウェア プロジェクトで使用されているため、その存在感は大幅に拡大しています。

脆弱性の表面領域を最小限に抑えるために、チームは脆弱性を大規模に修正することに関するセキュリティ研究者の Jonathan Leitschuh の DEFCON 2022 の講演から着想を得ました。 23 Trellix ブログ投稿。

多くのオープンソース プロジェクトには専任のスタッフとリソースが不足しているため、大量のパッチ適用と自動パッチ適用は、攻撃対象領域を縮小するための効果的なツールになる可能性があります。 まだ比較的新しい概念ではありますが、昨年 Leitschuh によって導入された最初の主要な現実世界のアプリケーションで、Trellix の研究者は SC Media に、今回の成功したパッチは、オープンソース コミュニティが将来的に同様の戦術を活用してより良いものにする道を開くと語っています。プロジェクトを潜在的な悪用から守ります。

Trellix Advanced Research Center の脆弱性研究者である Kasimir Schulz 氏は、次のように述べています。

Schulz 氏によると、自動化されたアプローチを使用する際の最大の課題の 1 つは、パッチの品質を低下させることなく、できるだけ多くのプロジェクトにパッチを適用する必要性とのバランスを取ることです。 実際には脆弱ではないプロジェクトへのスパム送信を回避するために、チームはコード スキャン ツールを、脆弱性の最も一般的に発生する形式に集中させました。

具体的には、チームのパッチ適用プロセスは、パッチ適用フェーズとプル リクエスト フェーズの 2 つのステップに分けることができ、どちらも自動化されています。

パッチ適用段階で、GitHub からの実用的なデータの迅速な提供を利用して、チームは、キーワード「import tarfile」を含むリポジトリとファイルのリストを追跡することにより、後でスキャンするリポジトリの一意のリストを作成しました。 リストが配信されたとき、チームは Creosote (開発者がアプリケーションに脆弱性があるかどうかを確認するために作成した無料のツール) を使用して、パッチを適用する必要のあるリポジトリを特定しました。 脆弱なリポジトリが特定されると、チームはファイルにパッチを適用し、ユーザーが 2 つのファイルを比較できるようにローカル パッチの差分を作成しました。

その後、チームはプル リクエスト フェーズに移行し、最初にローカル パッチの差分のリストを確認し、次に GitHub でリポジトリのフォークを作成しました。 フォークのクローンを作成した後、元のファイルが変更されていない場合は、元のファイルをパッチを適用したファイルに置き換えました。

「その後、変更をレポジトリにコミットし、フォークしたレポジトリから元のレポジトリへのプル リクエストを作成し、私たちが誰で、プル リクエストを行った理由を詳述するメッセージを作成しました。 この時点で、変更を受け入れるか拒否するかは、リポジトリの所有者次第でした」とブログ投稿は説明しています。

自動パッチ適用はメスではなくブロードソードです

Trellix の成功は、より広範なオープンソース コミュニティのモデルとして役立つ可能性がありますが、セキュリティ研究者によると、自動化された大規模なパッチには、独自の一連の課題とセキュリティ リスクが伴います。

「Trellix の研究者が採用した自動パッチ適用アプローチは非常に役立つと思いますが、脆弱性が適用される条件が非常に厳しいブログ投稿で説明されているような、特定の状況でしか実践できないことを残念に思います。 Rezilion の脆弱性研究ディレクターである Yotam Perkal 氏は次のように述べています。

リスクの 1 つは、大規模な自動パッチ適用が、特定の IT 環境によっては効果が低くなる可能性がある、メスというよりむしろブロードソードとして機能する可能性があることです。

「研究者が、ノイズをあまり生成せずに特定の脆弱なコード パターンを特定する CodeQL クエリを定義できれば理想的です。 [or] 誤検知です」と Perkal 氏は述べています。 ただし、脆弱なコード パターンが悪用されるには、多くの場合、複数の論理条件が必要になるため、このようなクエリを作成するのは簡単ではないと述べています。

テストは、大量パッチのもう 1 つの課題です。 多くの場合、研究者は単に何かにパッチを当ててそれが害を及ぼさないことを期待するのではなく、パッチの後にソフトウェアをテストして、何も壊れておらず、更新によって実際の問題が実際に軽減されることを確認します.

「適切なテスト保護策が整っていれば、大量のパッチを適用することで、従来の脆弱性を緩和する大きな可能性がもたらされます」と Mackey 氏は述べています。 「努力の結果をテストすることに投資せずに、『悪いバージョン』を『良いバージョン』に文字列を単純に置き換えるだけでこれを達成できると考える人がいるなら、彼らは良いことよりも悪いことを生み出す可能性が高い.」

Leave a Comment

Your email address will not be published. Required fields are marked *