go-pear.pharにバックドアが仕込まれていた

半年以内にgo-pear.pharを使った人は必ずチェックしましょう。


# 2019/01/19

PEAR公式Twitterアカウントからツイート。
このアカウント全然活動してない。

## https://twitter.com/pear/status/1086634389465956352

<blockquote class="twitter-tweet" data-lang="ja"><p lang="en" dir="ltr">A security breach has been found on the <a href="https://t.co/dwKlscDEFf">https://t.co/dwKlscDEFf</a> webserver, with a tainted go-pear.phar discovered. <br>The PEAR website itself has been disabled until a known clean site can be rebuilt. A more detailed announcement will be on the PEAR Blog once it&#39;s back online.</p>&mdash; PEAR (@pear) <a href="https://twitter.com/pear/status/1086634389465956352?ref_src=twsrc%5Etfw">2019年1月19日</a></blockquote>

pear.php.netで、不正なgo-pear.pharが発見されたというセキュリティ報告がありました。
問題が解決されるまでPEARのWebサイトは無効になっています。
より詳細な発表は復旧後PEARブログで報告します。

## https://twitter.com/pear/status/1086634503731404800

<blockquote class="twitter-tweet" data-lang="ja"><p lang="en" dir="ltr">If you have downloaded this go-pear.phar in the past six months, you should get a new copy of the same release version from GitHub (pear/pearweb_phars) and compare file hashes. If different, you may have the infected file.</p>&mdash; PEAR (@pear) <a href="https://twitter.com/pear/status/1086634503731404800?ref_src=twsrc%5Etfw">2019年1月19日</a></blockquote>


過去六ヶ月以内にgo-pear.pharをダウンロードした人は、[GitHub](https://github.com/pear/pearweb_phars)から同じバージョンのファイルをダウンロードしてハッシュを比較する必要があります。
ハッシュが異なっていた場合、感染している可能性があります。

# 2019/01/21

[hype.codes](https://hype.codes/)というサイトに[記事](https://hype.codes/pear-be-hacked)が掲載されました。
悪意のあるコードを含むファイルのひとつは、MD5ハッシュが"1e26d9dd3110af79a9595f1a77a82de7"です。

# 2019/01/22

[RAPID7](https://www.rapid7.com/)というサイトに[PHP Extension and Application Repository (PEAR) Compromise: What You Need to Know](https://blog.rapid7.com/2019/01/22/php-extension-and-application-repository-pear-compromise-what-you-need-to-know/)という記事が掲載されました。
go-pear.pharに実際に何が仕込まれていたかの[詳細](https://www.virustotal.com/#/file/f74c4406c53e5b0187b8b1cfeb5b74f88ac9294acca29bdba8bd11371b2245e8/detection)が出ています。


# 2019/01/23

PEARバージョンv1.10.10が[リリース](https://github.com/pear/pearweb_phars/releases/tag/v1.10.10)されました。
コード自体は[v1.10.9](https://github.com/pear/pearweb_phars/releases/tag/v1.10.9)と全く同じで、update用です。
また署名が追加されています。

[ZDNet](https://www.zdnet.com/)に[Mystery still surrounds hack of PHP PEAR website](https://www.zdnet.com/article/mystery-still-surrounds-hack-of-php-pear-website/)という記事が掲載されました。
公式が何も言わないから、具体的に何があったのか詳細が未だにわからないよ、といった内容です。
ZDNet Japanには記事がありません。

[srad](https://srad.jp/)に[ストーリー](https://developers.srad.jp/story/19/01/23/0513207/)が立ちました。
日本語の記事はこれが初めてのようです。

# 感想

2019/01/23現在、[pear.php.net](http://pear.php.net/)はメンテナンス画面になります。
[SSL](https://pear.php.net/)はセキュリティ警告が出ます。
[pecl.php.net](https://pecl.php.net/)は正常です。

仕込まれてから発覚までのスパンの長さといい、ニュース記事の少なさといい、公式の反応の遅さといい、寂れっぷりが半端ありません。
日本語記事なんて2019/01/23時点で[sradしかない](https://developers.srad.jp/story/19/01/23/0513207/)っぽいです。
曲がりなりにも公式だというのに、どんだけ目が少ないんだ。
まあ、みんなComposerに乗り換えた後ですからね。

ただ、go-pear.phpはPECLにも使えるので、何らかのPECL拡張をインストールしていた場合、そちらでひっかかってる可能性があります。
注意しましょう。

## PEARは死んだ、何故だ

リリースまでが非常に大変である、が理由の9割でしょう。

パッケージを作成し、PEARアカウントを作成し、開発者MLで承認申請を出し、5人以上の承認(マイナス票もある)を得て初めてリリースすることができます。
参加者は厳選され、当然ながら大多数は参加を敬遠することになりました。

そんな煩雑さをどうにかすべく[Openpear](http://openpear.org/)というものを作った人がいました。
PUSHするだけでリリースできるという仕組みをなんと2008年に作り上げた、非常に先見の明のある発明です。
ただ開発者が[日本人一人](https://twitter.com/sotarok)とか二人程度で開発が追いつかず、夜な夜なエラーを吐いてはサーバが死に、日本語なので海外に広まらず、といった諸々の問題が重なり、2012年に登場したComposerによって役目を終えました。

そして今やComposerの全盛期です。
もはやPEARに拘る意味は全くないと言っていいでしょう。

Composerではエクステンションが作れないのでPECLは替えが効きませんが、PHP7.4で[FFI](https://wiki.php.net/rfc/ffi)がやってきたらPECLすらもいらなくなる日がやってくるかもしれませんね。