Apache HTTPd Devs Considered Harmful

背景
過去25年間、私はアプレック 内のサブプロジェクトApache HTTPdサーバー 親プロジェクト。オリジナルアイデアライブラリ、安全/性能としてHTMLフォーム提出 およびクッキー 解析ライブラリは、Lincoln SteinとDoug MacEachernの間のコラボレーションにより、後期90sに登場しました。
当時の私のビジョンは、ライブラリを一般的な非Perl関連に変換することでしたC 他のプログラミング言語からの言語バインディングをサポートするライブラリ。そのため、プロジェクトをプッシュしましたホームページ の代わりに HTTPd傘の下Apache-Perl プロジェクト
THEADVENTOF httpd-2。Xまったく新しいI/Oフィルタ アーキテクチャの出現元httpd コア、および完全な分離買掛金 より汎用的なPOSIXのような移植性ランタイムとしてコア自体からC プロジェクトSubversion。実際、libapreq2 より厳密には、Apache APR その精神のプロジェクトとそのPerl APIは、その一部としてそれを反映していますAPR:: 要求 ビルドアウトスタンドアロン操作用のCGIモードが内蔵されており、httpd ランタイム。ユニット・テストが簡単になります。
しかし、主なコンポーネントapreq2 常にmod_apreq2 Apacheモジュール(最初に考案したモジュール) Bill Wrowe 初期の2000s 彼が設計したのは、私とのブレーンストーミングセッション中(個人的には)は、内部にある単一のパーサーライブラリでしたhttpd発行したリクエストbodyを、実行時にすべての主要な利害関係者モジュールと共有します。つまり、コンテンツ・ハンドラが実行される前に、duringおよびafter*リクエスト処理エンジンに接続されたモジュールに解析済データを提供することでした。また、コンテンツ・ハンドラが解析されたデータを消費したか、RAWリクエスト本文自体を消費して再解析したかに関係なく、サブリクエストに対しても機能する必要がありました。
私は2012年でさえ、何年にもわたってデザイン目標を何度も説明しました開発@httpd。けれども、この人たちと風に話しかけてきたようなもので、彼らは決して気にかけなかった。
嵐雲収集
このビジョンは大成功しましたが、次のような複数の言語で言語バインディングを利用できます。Perl, PHP, TCL, R、等、2010年頃からそれはのための悲劇的な証明しました既存のユーザー・コミュニティ それらすべてから構成されるメンバーだけではなく、Perl コミュニティ
何が起こったのですか。Philip Gollucci当時、Perl/FreeBSDの同僚が、HTTPdサーバー自体の中から解放されるプロジェクトをプロモートすることを積極的に開始しました。内容フィリップは’よく知っていた当時は、どれくらい完全にピービッシュ、急速、領土 チームは直接協力する必要があった。ユーザー対応の決定 コードベースについて
2012年、フィリップは彼が望むものを得て、私は抵抗するのをやめた。フォーク 既存のプロジェクトをコピーC HTTPdコアへのライブラリ・コンポーネント。
フォールアウト
2018年 私はFoundation en masseから辞任しました1。理由を推測できます。
2020年以降、グーグル’sセキュリティチームは、httpd 2.5のアルファ版リリースを利用して、8年前のコピーをファズしました。apreq2。修理が必要なホットスポットを見つけました。
フィリップに手を差し伸べる代わりに、Issac Goldstand, Max Kellermann (@MaxKellermann)、自分自身(@joesuf4)、または開発に関与する他のユーザーlibapreq2、 HTTPdチームのジュニアエンジニアは、”バグ修正” グーグルが発見した脆弱性それ以降、すべてのリリースで試行錯誤の記録を確認できます。
しかし、クーデター・デ・グレースは2022年のリリースでした。2.17ルーキー開発者意図的にコードベースに致命的なバグを導入【Breaking】19歳の回帰テスト.
ポストモーテム
壊れた回帰テストで何が起こるか疑問に思っている場合パンあなた’どのように見なければならない関連 はサーバープロジェクトで実行されます。
短い長い物語、彼らはテストをコメントしました そして、それをとにかく出荷し、それをセキュリティリリースと呼んだ。以前のリリースごとに脆弱性を修正しました。.

なぜ今気になるのか。なぜなら’m吸盤ユーザーがアンサーにリーチ 既知の問題の専門家です。
ツッコミですが、私’アパチェでスーパーマンの帽子をかぶった私の日々は、約十年前に終わったと言ってごめんなさい。
いずれにせよ、この時点でできる最善のことは、libapreq2の本番ソース・ツリーを表示することです— @joesuf4/apreq (および@joesuf4/mod_perl)。
脚注
1.1 つ’t単純”ASFからの辞任”。クリーンな休憩をするには、ASFのメンバーシップだけでなく、すべてのプロジェクト/委員会のメンバーから辞任する必要があります。そうでなければ、一人は地獄のApacheメールスパムに溺れてしまう。
