Apache HTTPd als schädlich erachtete Entwickler

Hintergrund
In den letzten 25 Jahren war ich der führende Entwickler der Apreq Unterprojekt innerhalb der Apache HTTPd-Server Übergeordnetes Projekt. Die ursprüngliche Idee von libapreq, als sicher/performant HTML-Formularweiterleitung und Cookie-Einstellungen Parsing-Bibliothek, kam aus einer Zusammenarbeit zwischen Lincoln Stein und Doug MacEachern in der späten 90s.
Damals war es meine Vision, die Bibliothek in eine generische, nicht perlbezogene Bibliothek zu verwandeln. C Bibliothek, die Sprachbindungen aus anderen Programmiersprachen unterstützt, weshalb ich für das Projekt homosexuell unter dem Dach HTTPd statt der Apache-Perl Projekt.
Mit dem Aufkommen von httpd-2. Xeine völlig neue I/O-Filter Architektur entstand aus httpd Kern, sowie die vollständige Trennung von Jährlich aus dem Kern selbst als allgemeinere POSIX-ähnliche Portabilitätslaufzeit für C Projekte wie Subversion. Tatsächlich libapreq2 stärker mit dem APR Apache Projekt in diesem Sinne, und seine Perl API spiegelt dies als Teil seiner APR::Anforderung Aufbau. Es verfügt über einen integrierten CGI-Modus für Standalone-Betrieb, außerhalb der httpd Laufzeit, die das Testen von Einheiten zum Kinderspiel macht.
Die Schlüsselkomponente von apreq2 war schon immer der mod_apreq2 Apache-Modul, das zuerst von Bill Wrowe Anfang 2000s. Was er während einer Brainstorming-Sitzung mit mir (persönlich) entwarf, war eine einzige Parser-Bibliothek. httpd, dass **die weitergeleitete Anforderung body mit jedem wichtigen Stakeholdermodul in der Laufzeit geteilt wird. Das bedeutete, dass geparste Daten an Module bereitgestellt wurden, die mit der Anforderungsverarbeitungs-Engine vor, während und nach der Ausführung des Content Handlers verbunden sind. Und es musste auch für Unteranforderungen arbeiten, unabhängig davon, ob der Content Handler die geparsten Daten konsumiert oder den Raw Request Body selbst konsumiert und repariert hat.
Ich habe die Designziele im Laufe der Jahre mehrmals erklärt, auch im Jahr 2012. Gerät@httpd. Aber es war immer wie mit diesen Jungs mit dem Wind zu reden; sie kümmerten sich einfach nie.
Sturmwolken sammeln sich
Während diese Vision sehr erfolgreich war, mit Sprachbindungen für mehrere Sprachen wie Perl, PHP, TCL, R, etc., seit etwa 2010 hat es sich als tragisch für die vorhandene Benutzercommunity bestehend aus allenNicht nur die Mitglieder der Perl Gemeinschaft.
Was ist passiert? Philip Gollucci, ein Perl/FreeBSD-Kollege zu der Zeit, begann aufgeregt, dass wir das Projekt fördern, das innerhalb des HTTPd-Servers selbst veröffentlicht werden soll. Was Philip hat’Ich wusste damals sehr gut, wie sehr peevish, vapid und territorial Das Team wurde, was bedeutet hätte, direkt mit ihnen zusammenzuarbeiten Entscheidungen für Benutzer über die Codebasis.
Im Jahr 2012 bekam Philip, was er wollte, und ich hörte auf zu widerstehen, so dass er Gabelung das vorhandene Projekt kopiert und C Bibliothekskomponenten in HTTPd Core.
Fallout
2018 Ich bin von der Stiftung en masse zurückgetreten1. Sie können die Gründe erraten.
2020 oder so, google’s Security Team nutzte eine Alpha-Veröffentlichung von httpd 2.5, indem es seine 8-jährige Kopie von apreq2. Sie fanden ein paar Hotspots, die repariert werden mussten.
Anstatt die Höflichkeit zu haben, sich an Philip zu wenden, Issac Goldstand, Max Kellermann (@MaxKellermann), ich selbst (@joesuf4) oder andere an der Entwicklung von libapreq2, ein Junior-Ingenieur im HTTPd-Team ging über das Geschäft von “Fehlerbehebung” Die Schwachstellen, die Google gefunden hat. Sie können eine Aufzeichnung seiner Versuchs- und Fehlerarbeit in jeder Veröffentlichung seitdem sehen.
Aber der Putsch der Gnade war die Freilassung von 2022. 2.17, wobei der Rookie-Entwickler Absichtlich einen fatalen Bug in die Codebase eingeführt, brechen ein neunzehnjähriger Regressionstest.
Postmortem
Wenn Sie sich fragen, wie etwas mit einem gebrochenen Regressionstest weitergeht PANSie’Sie müssen sich ansehen, wie RELENG wird im Serverprojekt ausgeführt.
Lange Geschichte kurz, Sie kommentierten den Test und es trotzdem versendet hat, und nannte es ein Sicherheitsrelease, das Behebung einer Schwachstelle, die jede vorherige Veröffentlichung anfällig für.

Warum kümmere ich mich jetzt? Weil ich’m der sucker Benutzer greifen auf Antworten zu als bekannter Sachverständiger.
Das ist scheiße, aber ich’Es tut mir leid, Ihnen zu sagen, dass meine Tage mit dem Superman-Umhang in Apache vor etwa einem Jahrzehnt endete.
In jedem Fall kann ich an dieser Stelle am besten meinen Produktionsquellenbaum für libapreq2 zeigen. — @joesuf4/apreq (und @joesuf4/mod_perl).
Fußnoten
- Eine tut’einfach “Rücktritt von der ASF”. Um eine saubere Pause zu machen, muss man nicht nur von der ASF-Mitgliedschaft zurücktreten, sondern von jedem Projekt / Ausschuss, in dem man Mitglied ist. Ansonsten ertrinkt man in nie endender höllischer Apache-E-Mail-Spam.
