shiichan

Sandbox SDK を今すぐ 0.12.14 に!eMudhra 証明書の侵害に対応

みんな、しぃちゃんだよ!今日はちょっと真剣なセキュリティのお知らせだよ。Sandbox SDK を使っているみんなは要チェックなの!

Cloudflare Changelog developers.cloudflare.com

なにが発表されたの?

Cloudflare の Changelog で、Sandbox SDK 0.12.14 が eMudhra の侵害を受けて信頼する証明書を更新したと告知されたよ。

eMudhra の中間認証局 8 つの秘密鍵が復元できてしまう状態で、それらにチェーンする証明書なら、どんなホスト名のものでも偽造できちゃうんだって。

なぜ重要なの?

0.12.14 より前の Sandbox SDK イメージは、この証明書を信頼しているよ。そのため、コンテナから直接出ていく HTTPS 接続は、偽造証明書で傍受される可能性があるの。

対象になりうる接続の例はこれだよ。

  • mountBucket()
  • バックアップ
  • gitCheckout()
  • トンネル
  • サンドボックス内で動くコード

これで何が変わるの?

更新すれば、イメージが侵害された証明書を拒否するようになるよ。0.x は「すぐに更新」、1.x は SDK 自体の更新は不要でイメージの再ビルドが必要、と対応が分かれるよ。

深く潜ってみよう

Sandbox SDK 0.x の対応

  • @cloudflare/sandbox@0.12.14 をインストールする
  • Dockerfile の FROM を対応するイメージに変える。-python、-opencode、-musl のサフィックスはそのまま残す
  • 再デプロイする。ロールアウトで、動いているサンドボックスは新しいイメージのものに置き換わる
  • next プレリリースを使っているなら 0.13.0-next.825.1 以降にする
FROM docker.io/cloudflare/sandbox:0.12.14

すぐ更新できないとき(0.8.7 以降)

すべての HTTPS を Worker 経由にすると、イメージが何を信頼していても、Cloudflare がポート 443 の証明書をすべて検査してくれるよ。

import { Sandbox, ContainerProxy } from "@cloudflare/sandbox";

export { ContainerProxy };

export class MySandbox extends Sandbox {
  interceptHttps = true;
}

MySandbox.outbound = (request) => fetch(request);

デプロイしたあと、動いているサンドボックスを止めて、傍受用の証明書つきで再起動させてね。ただし cloudflared トンネルなど他のポートの TLS は対象外で、注入された証明書を無視するクライアントは接続に失敗するよ。

Sandbox SDK 1.x の対応

SDK 自体は TLS 接続をしないから、更新は不要。イメージを作り直す必要があるよ。

  • Dockerfile のベースイメージを pull し、docker builder prune --all を実行する。やらないと wrangler deploy が古い CA 証明書やランタイムを出荷することがある。イメージをダイジェストで指定しているなら、新しいイメージを作って push しダイジェストを更新する
  • Worker をデプロイする
  • 動いているサンドボックスを止める。動作中のものは元のイメージのままなので、たとえば this.ctx.container.destroy() を使う
  • スナップショットを使っているなら、更新後のイメージで動くサンドボックスから作り直す。スナップショットは元のイメージと証明書を復元するため

確認方法

サンドボックスの中から、emudhra.we-have-a-problem.com に載っているテスト用ホストへ、使っている TLS クライアント(curl、node、bun など)で接続してみてね。すべて失敗すれば OK だよ。

0.12.13 と 0.12.14 の変更点

  • 0.12.13: システムの CA バンドル、Node.js、cloudflared、pip が侵害された証明書を拒否。Ubuntu と Alpine の CA 証明書、Node.js 22.23.4、cloudflared 2026.10.2、pip 26.2.2(-python イメージ)を含む
  • 0.12.14: Bun を 1.4.4 に更新。bun コマンドと、10 MiB 以上のアーカイブの createBackup() アップロードも拒否するように。-opencode イメージは Bun 1.4.4 で動く OpenCode 1.19.4 以降を同梱

まとめ

  • eMudhra の中間 CA 8 つの秘密鍵が復元可能で、偽造証明書が作れる状態
  • 0.12.14 より前のイメージは影響を受ける
  • 0.x は @cloudflare/sandbox@0.12.14 へ今すぐ更新して再デプロイ
  • 1.x はイメージの再ビルドと、サンドボックス・スナップショットの作り直し
  • 更新できないときは interceptHttps で Worker 経由にする暫定策もある

Sandbox SDK でエージェントやコード実行環境を動かしているみんなに、すぐ確認してほしい更新だよ!