
12年前のPHP修正コードが2000万インストール達成、開発者が廃止宣言
Jake A. Smith氏が2014年に書いた174行のPHPポリフィルパッケージ「http_build_url」が、Packagistから約2000万回インストールされた後、廃止されることになった。同パッケージは毎月40万回以上のインストール数を記録していた。
本文
Jake A. Smith氏は2014年、AOLのコンテンツ管理システムをPHP 5.2からPHP 5.3へアップグレードする際、廃止されたpecl_http拡張機能の「http_build_url()」関数の代替として、174行のPHPコードを書いた。当初は一時的な修正として位置づけられていたが、同氏がPackagistで公開したこのコードは、その後12年間で想定外の広がりを見せることになった。
広範な採用と影響範囲
http_build_urlパッケージはPackagistからほぼ2000万回インストールされ、毎月40万回以上のインストール数を記録している。WPMLはこのポリフィルを直接コードベースに組み込んでおり、WPMLはWordPressにおける多言語対応プラグインの市場リーダーとして150万以上のサイトにインストールされている。さらにidna-convert、SPIP(フランスのコンテンツ管理システム)、Debian、Ubuntuなどのプロジェクトにも採用されている。

廃止の決定
Smith氏は2021年に新しいメンテナーを募集し、3人の候補者が手を挙げたが、その直後に家族が亡くなったことを経験した。最終的に同氏は、パッケージを維持するのではなく廃止することを決めた。理由として、The PHP LeagueのURIライブラリやPHP 8.5に搭載される標準準拠のURI APIといった、より優れた代替手段が利用可能になったことを挙げている。
Smith氏は、広くインストールされているパッケージを新しいメンテナーに譲り渡すことで、セキュリティリスクが生じる可能性があると述べている。また、AOLのプラットフォームは2020年頃に廃止されたにもかかわらず、このポリフィルから移行されることはなかったという。
パッケージには既知の不具合も存在する。URLに末尾スラッシュが付いたパスを結合する際、パス内のすべての文字「a」が削除されるバグが報告されており、これは末尾スラッシュへの対応として追加された「a」を追加して削除するという回避方法が原因とされている。
筆者の見立て
- 「パッケージは引き続きインストールされるが新しい修正は得られず、わずか1行の修正でも、サポートする人がいない状況では予期しない影響をもたらす可能性がある」と予想している
- 「広くインストールされたパッケージに誰もがベットしていない新しいメンテナーが就く状況は、まさに攻撃者が狙うものである」と解釈している
- 「パッケージを維持することは、誰もが進むべき移行を遅延させるだけである」と論じている
- 「パッケージを譲り渡すことで、その上にさらなるリスクが積み重ねられる」と解釈している
この記事は元記事の事実のみに基づいて自動生成されました。
出典
Jake A. Smith — "My temporary PHP fix from 2014 has nearly 20M installs. Today I'm deprecating it." — https://jakeasmith.com/blog/http-build-url/