有志16人が27.5時間で、ビットコイン関連のオープンソース390本を一斉に点検した。挙がった指摘は4,962件。うちcriticalが85件、highが635件だと点検した側は公表している。かかった費用はAIの利用料で4万ドル超、非営利のOpenSatsが負担した。ソフト全体の棚卸しが、この規模と値段でできてしまう段階に入ったということだ。自分が毎日開いているアプリも、その390本のどこかに入っていたかもしれない。
4,962件は、4,962個の穴ではない
まず数字の範囲を絞りたい。以下はいずれも、点検した側が公表し、複数報道が一致して伝えている数字である。点検結果そのものにあたる公式一次ソース未確認のため、報道によって食い違う数値は採らなかった。
4,962件のうち、深刻度がhighまたはcriticalとされたのは720件で、全体の14.5%。1プロジェクトあたり1.85件という計算になる。
ただしこの4,962件は、確認された欠陥の数ではない。指摘の91%は自動スキャンからの受付で、実際に動かして再現できたと報告されているのは約21%。誤検知として取り下げられたものは8件。そして開発元に正式に伝えられたのは、390本のうち19本にとどまる。
件数は、まだ途中経過だ。
偏りは、守るために入れる道具のほうに寄っていた
深刻度の高い指摘が集まった分野には偏りがあった。割合が最も高かったのはプライバシー・コインジョイン系で24%、次いでスワップ・取引所が21%、決済や加盟店向けが17%。暗号ライブラリやSDKは10%だが、件数そのものは1,101件と多い。
出典が示しているのは分布であって、原因ではない。「プライバシー系は危ない」という話には読み替えられないし、点検の手の入り方が分野ごとに違えば分布も動く。
それでも残る事実がひとつある。追跡されないために入れた道具や、他人に預けないために入れた道具も、点検される側にいるということだ。守りのために選んだものが、点検の例外になるわけではない。
直す側の手が、先に足りなくなる
この一斉点検が始まる前日、8月3日に、非カストディアルのブリッジBoltzがスワップを無期限で停止している。理由は攻撃が成功したからではなく、速度差だった。同社は数ヶ月にわたってAIを使った自動的な探索が増え続けたと説明し、攻撃側が自分たちの規模のチームで見つけて直せるよりも速く回るようになった、と述べた。
利用者の資金は危険にさらされていない、と同社は明言している。設計上ブリッジが資金を預からないため、返金の経路は本体とは独立して動き、返金用のAPIも生かしたままだという。
それでも影響は下流に出た。ZEUS、Aqua、Bull Bitcoinなど、Boltzの仕組みを内側で使っていたウォレットやサービスで、スワップ機能が止まった。これらのアプリを入れていた人にとって、止まったのは自分が選んだアプリではなく、その下で動いていた部品のほうだった。
自分が使っているものと、その下で動いているものは、同じではない。
手元で確かめられること、確かめられないこと
コードを読めない側にも、見えるものはいくつかある。
- そのアプリやリポジトリの最終更新がいつか。数ヶ月単位で止まっているなら、指摘が届いても直す人がいない状態かもしれない
- セキュリティに関する連絡先や告知の窓口があるか。宛先が書かれていない道具は、今回のような指摘が出ても届く先がない
- 自分がその道具に何を預けているか。鍵そのものを持たせているのか、送金の経路として通しているだけなのか。Boltzで止まったのは後者だった
確かめられないことのほうが多い。指摘の中身が妥当かどうかは、その分野のコードを読める人にしか評価できない。そもそも大半のプロジェクトには、まだ指摘そのものが届いていない。だから「指摘が出ていないから安全」でも「出ているから危険」でもない。今回の数字は、どちらの結論も支えていない。
慌てて乗り換えるのも、それ自体が工程を増やす。鍵を作り直したり移したりする作業は、普段やらないことを手順書を見ながらやる時間になり、そこが一番手の滑りやすいところでもある。先日のCOLDCARDの件は、自分の端末が対象かを確かめる順序の話だった。今回はその一段外側で、道具を作っている側がどれだけ見られているか、という話になる。
道具の点検は、これまで一部の専門家が時間をかけてやることだった。それが16人と4万ドルで390本に届くところまで来ている。同じ手法は、まだ点検されていない場所にも向かうだろう。
あなたが鍵や送金を任せている道具のうち、最後に誰かの目が入ったのがいつか答えられるものは、どれくらいあるだろうか?