未認証で届くOpenSSHのコードの約16%は、既定で無効な実験アルゴリズムの解析器だった — 脆弱性を1件も消さずに重大度を下げる手口
Anthropic の Frontier Red Team が、オープンソース25プロジェクト・500万行超に Claude を走らせ、既定構成、構成の相互作用、早期到達の3手法で計493件の問題を挙げた。構成オプションの目録は17,000件超、うち安全上関係するものが3,842件。Gated 群11件はすべてに意図せぬ認証前到達があり、エラーも警告も文書もないまま受理される構成の組み合わせ162件のうち94件は安全制御が黙って切れた。中心の実例は OpenSSH で、10.4 の sshd では未認証の相手が ML-DSA-44 の実験コード約4,500行(既定 sshd の自前認証前コードの約16%)に到達でき、10.6 の修正で到達範囲の約5分の1が削られた。発表側は、この手法が未知の脆弱性を取り除くわけではなく到達しにくくするだけだと明記し、自ら通した 10.5 の修正に穴が2つ残っていたことも書いている。本紙が読むのは、拒否規則が逆引きDNSの既定値のせいで一度も発火しない fail open の形と、止められない機械にとって「1回の停止枠に何を載せるか」が変わったことである。
執筆・編集責任:日本フィジカルAI新聞 編集部
Anthropic の Frontier Red Team が10月20日に出した発表は、脆弱性を見つける話ではない。見つけずに重大度を下げるという話である[1]。 オープンソース25プロジェクト・500万行超に Claude を走らせ、 既定構成、構成の相互作用、早期到達の3手法で計493件の問題を挙げた[1]。 中心の実例は OpenSSH で、10.4 の sshd では未認証の相手が約4,500行のポスト量子署名(ML-DSA-44)の実験コードに到達でき、 これは既定の sshd において OpenSSH 自前の未認証到達コードの約16%にあたる[1]。 既定では無効なアルゴリズムであり、管理者が明示的に除外していても、 解析だけは先に走っていた[1]。 本紙がこれを取るのは、先に止められないOTに残る時間差で書いた宿題——修正が工程の都合で待たされ、まれには数十年という尺度になる[2]——に対して、 初めて別方向の答えが数字付きで出たからである。 ただし発表側は、この手口で脆弱性が消えるわけではないとも書いている[1]。
測ったのは「穴」ではなく「届く範囲」である#
前提を1つ置く。個別の脆弱性を見つけて直す進め方は規模の面で伸びない、というのが発表本文の出発点である。 critical な1件を直しても、残っている未知の脆弱性について何も分からない[1]。 対してコードの到達可能性を削ると、いま悪用されている最中のものを含めて、 未知の脆弱性すべての重大度を同時に下げられる[1]。 穴の数は変わらないが、穴までの距離が伸びるという考え方である。
具体的な操作として挙がっているのは、コードを適切な門の後ろに移すことである。 認証前から認証後へ、0クリックから1クリックへ、既定で有効から明示的な opt-in へ、 プロトコルの最初のメッセージからセッション状態機械の奥へ[1]。 手法は3つに整理されている[1]。
対象の25プロジェクトは、期待される到達範囲の違いで3群に分けられている。 誰でも到達できる前提の Public(10件)、認証済み利用者に供するGated(11件)、運用者自身の環境に閉じた Private(4件)である[1]。 発表本文は、Public なら既定構成で相当の割合が到達可能でも当然であり、 Gated ではその逆が期待される、と前置きしている[1]。 つまり同じ493件を群で割らずに読むと意味が変わる。
493件の内訳として公表されている数字#
散文に出ている数値をそのまま採る。群別の全内訳は本文中の図に置かれていて、 散文には Gated 群と構成相互作用の数字だけが書かれている[1]。
| 項目 | 値 |
|---|---|
| 対象プロジェクト(C、C++、Java、PHP、Python を含む) | 25件・500万行超[1] |
| Claude が作った構成オプションの目録 | 17,000件超[1] |
| うち安全上関係のある制御・機能の設定 | 3,842件[1] |
| 挙げられた指摘の総数 | 493件[1] |
| Gated 群:既定構成での不要な認証前到達面 | 93件[1] |
| Gated 群:認証前にコードが実行された・状態が記録された箇所 | 37件[1] |
| Gated 群:管理者が設定した認証前制御を黙って弱める構成の組み合わせ | 61件[1] |
| 全群:エラーも警告も文書もないまま受理される安全上重要な構成の組み合わせ | 162件[1] |
| うち安全制御が黙って切れるもの | 94件[1] |
| 残り(同一機構内の不整合) | 68件[1] |
| メンテナが受け入れた件数(OpenSSH を除く) | —(公表なし)[1] |
Gated 群については、11件すべてに意図せず到達可能なコードがあった[1]。 ただし同じ文に但し書きが付く。そのコードはどのプロジェクトでも全行数に対しては大きな割合ではなかった[1]。 発表本文は、これらの指摘はどれも単独で即座に悪用できるものではなかったとも明記している[1]。 増えていたのは必要以上の攻撃面であって、既知の攻撃経路ではない。
OpenSSH——既定で無効なアルゴリズムの解析器が、認証の前に動いていた#
削減幅が全行数比で最も大きかったのは、意外にも OpenSSH だったと発表本文は書いている[1]。 10.4 の sshd で、未認証の相手が ML-DSA-44 のために追加された新しい実験コード 約4,500行に到達できた[1]。 ML-DSA は既定で有効ではない。それでもコードには到達でき、 管理者がそのアルゴリズムを明示的に除外した場合でも同じだった[1]。 sshd はクライアントが送ってきた鍵種別を先に解析し、 証明書なら埋め込まれた CA 署名の検証まで済ませてから、 その鍵種別が許可されているかを確認していた[1]。 4,500行は、既定の sshd における OpenSSH 自前の認証前コードの約16%である[1]。
ここから先の経緯が、この発表の中でいちばん地味で、いちばん情報量がある。 指摘とパッチは開発者に報告され、10.5 では確認が解析より前に移された[1]。 そのうえで Claude は、自分たちが通した修正に2つの穴を見つけている[1]。
| 版 | 状態 |
|---|---|
| 10.4 | 未認証の相手が ML-DSA-44 の実験コード約4,500行に到達可能。 既定で無効でも、明示的に除外していても同じ[1] |
| 10.5 | 確認を解析の前に移動[1]。ただし(1)確認が見ていたのは クライアントが名乗ったアルゴリズム名で、実際の解析器は 鍵データ内部の型文字列で選ばれていた。ssh-ed25519 と名乗って ML-DSA 鍵を送れば解析される[1]。 (2)証明書の鍵種別は既定で有効で、攻撃者が渡した証明書について、 構成を参照する前に埋め込み CA 公開鍵を復元し、 対応する任意のアルゴリズムで署名検証を完走していた[1] |
| 10.6 | 確認を解析器の内部に置き、符号化された鍵種別と証明書の CA 署名アルゴリズムを、 復元・署名検証の前に許可リストと突き合わせる形に変更[1]。 既定ビルドで未認証の相手が到達できたコードの約5分の1が削られた[1] |
利用者署名の経路は許可された公開鍵リストの後ろに正しく置かれていたが、CA 署名の経路はそうではなかった[1]。 結果として、鍵交換を完了できる相手なら、バイナリ内のあらゆる公開鍵署名検証器に到達できた[1]。 発表本文の締め方も淡々としている。OpenSSH は世界で最も監査されている C コードの一部である。 そこで不要な到達可能性が生き延びるなら、どこでも生き延びうる[1]。
「拒否」が既定で開いていた——4つの無関係なプロジェクトで同じ形#
本紙の読者にとって、OpenSSH の行数よりも効くのはこちらだと考える。 Claude は、無関係な4プロジェクトで独立に同じ型の問題を見つけた[1]。
管理者が遠隔クライアント向けのアクセス規則を、IPアドレスではなく ホスト名やワイルドカードのパターンで書く。接続が来ると、サーバはその規則を クライアントのホスト名と比べる。ところがサーバがホスト名を知るかどうかは、 逆引きDNSを制御する別のオプション次第で、多くのプロジェクトではそれが既定で無効だった[1]。 逆引きが無効なら、サーバが持っているのはIPアドレスだけで、 規則はそのアドレスと文字列として比較される。ホスト名のパターンはIPアドレスに一致しない。 したがって拒否規則は一度も発火せず、リストは開いたまま(fail open)になる[1]。 ホスト名規則がDNS逆引きの有効化に依存すると文書に書いているプロジェクトはあったが、 この書き方をした拒否リストが開いたまま倒れることを書いているものは1つも無かった[1]。
同種の例がもう2つ挙がっている。1つは、クライアント証明書の提示を必須にする設定と、 その確認を必要時まで遅らせるつもりだったコードが衝突し、確認が完全に無効化されていた例である[1]。 信頼済みクライアントのみを受け入れる設定のサーバが、誰からの接続でも受け入れていた[1]。 既定の設定で両方のオプションが警告なしに受理され、文書には証明書要件が落ちることの記述が無く、 この組み合わせは21年間そのソフトウェアに存在していた[1]。 もう1つは、TLS クライアント証明書を要求するオプションが、 設定が別の名前空間を通って読まれる一部のエンドポイントでは黙って無視されていた例である[1]。 証明書なしのクライアントが TLS ハンドシェイクを完了してセッションを開けたが、無視されたことは何も記録されなかった[1]。 設定名の短い形——多くの例文が使っている形——が、該当エンドポイントでは落ちていた[1]。
発表側が自分で書いた限界#
この発表を「防御側が追いついた」と読むと、発表本文の記述と合わない。順に拾う。
| 発表側の記述 | 意味 |
|---|---|
| これらの手法はコード内の未知の脆弱性を取り除かない。 到達しにくくすることで重大度を下げるだけである[1] | 効果は確率ではなく距離に効く。穴の数は変わらない |
| どのコードベースにいくつ未知の脆弱性があるかは、おそらく測りようがない[1] | 削減効果の分母が無い。「何割安全になったか」は原理的に出ない |
| Gated 群について挙げた指摘は、単独で即座に悪用できるものではなかった[1] | 493件は脆弱性の件数ではない |
| Gated 群で到達可能だったコードは、全行数に対しては大きな割合ではなかった[1] | 件数の多さと削減量の大きさは別 |
| 10.5 の修正(自ら報告した修正)に穴が2つ残っていた[1] | 門を置く位置の設計は1回では決まらない |
| 既定以外の構成を変えてしまう門は、人が判断するために保留される[1] | 自動化されているのは探索と検証までで、運用判断は残る |
| 今回示したのは可能な範囲のごく限られた一面である[1] | 手法の preview として出されている |
検証の作りは逆に厳しい側に振れている。手法は3パスの Claude skill にまとめられ、 各パスは空のコンテキストから始まり、前のパスから短い引き継ぎだけを受け取る[1]。 各パスでコードから入口の目録を作り、指摘は1件ずつ動的トレースで確認する[1]。 既定構成の指摘については門を設計・実装し、プロジェクト自身のテストスイートと ブラックボックス回帰スイートをベースラインに対して走らせ、 改変ビルドが同一の結果になることを要求する[1]。 発表側はこれを OSS-Scanner に統合する作業を進めているとしている[1]。
フィジカルAIから見て、何が動いたのか#
本紙が止められないOTに残る時間差で残した宿題は、自分の装置が既知の穴を抱えて動き続ける日数を測れているか、だった。 発見量は増えても、稼働中の機械では安全に適用できる時まで修正が待たされ、 まれには数十年の尺度になると発表側自身が書いていたからである[2]。 今回の手口は、その待ち時間を短くするものではない。待っている間の重大度を下げるものである[1]。 止められない機械にとって、効く方向はこちらのほうが素直だと考える。
ただし誤読しやすい点を1つ潰しておく。これは「直さずに守る」ではない。 OpenSSH の事例で実際に行われたのは、確認の位置を変えるソースコードの変更であり、 10.6 として出荷されている[1]。 装置を持っている側から見れば、やはり更新作業が1回必要である。 変わるのは、同じ1回の停止で守れる範囲だ。 個別の脆弱性を1件直す更新は、残りの未知について何も変えない[1]。 到達範囲を削る更新は、未知のものを含めて重大度をまとめて下げる[1]。 停止枠が年に数回しか取れない現場では、1回の停止枠に何を載せるかが選択であって、 その選択肢の性能が今回変わった、という読み方になる。
構成だけで済む部分もある。発表本文は末尾で、使われていない解析器・レガシープロトコル・ ダッシュボードを無効化することが、ほとんど費用をかけずにリスクを下げると書いている[1]。 Claude は実行時ログと構成を突き合わせて、必要な機能だけが有効になっているかを 確認することもできるとされる[1]。 出荷時の既定で有効なまま誰も使っていない機能、という形は、 産業用の装置やロボット制御系にも持ち込みやすい問いである。 ただし今回の測定対象にそれらは入っておらず、本紙も検証していない。
本紙が最も重く見るのは、行数ではなく fail open のほうである。 物理の側の作法はフェイルセーフ——異常時は安全側に倒す——であり、利用規約の更新が自律的に物理行動をとる装置に要求したのも、Claude が切断されたときに 装置が安全な状態を保持できることだった[3]。 一方で今回見つかったのは、管理者が書いた拒否規則が、 逆引きDNSという別の既定値のせいで一度も発火しない構成である[1]。 しかもその挙動を文書に書いているプロジェクトは1つも無かった[1]。 安全要件としての「倒れる向き」は、ソフトウェアの既定値の組み合わせの中では 宣言されていなかったということになる。
この構図は、本紙がModel Hardware Standardの回で評価した配置——安全限界を学習された方策の内側ではなく、 装置の参照ファイルという外側の記述に置く——と同じ弱点を共有する。 外側の宣言は、それ自体が構成であり、別の構成と衝突しうる。 今回の162件のうち94件は、安全制御が黙って切れた組み合わせだった[1]。 宣言した安全限界が有効であることを、誰がどの頻度で確認するのか。 ロボットを自律運用する側にとって、今回の発表が差し出した道具は 脆弱性の発見器ではなく、自分の装置の既定値が何を開けているかの目録を作る手続きだと 本紙は読む。Claude が25プロジェクトで最初にやったのも、 17,000件超の構成オプションの目録を作ることだった[1]。
出典
- 1.Using Claude to reduce the attack surface of code(発表本文) — Anthropic、2026-10-20一次情報
- 2.Introducing the Anthropic Cyber Mission(発表本文) — Anthropic、2026-10-08一次情報
- 3.2026 Usage Policy update(変更点を説明した発表本文) — Anthropic、2026-10-08一次情報
週刊ニュースレター
今週のフィジカルAIを日本語で。重要ニュース5本・日本/中国・Research Picks・今週の公募。無料、いつでも解除できます。
同じテーマのコラム
- Linuxにゼロクリックでrootを取る連鎖を、未公開モデルが書いた — ポインタ漏洩に48分・シェルまで5分、負けた試行は機械を落とさない
Anthropicの Frontier Red Team が、未公開の社内研究モデルで Chrome・Safari・Android・Windows・Linux に対する動く攻撃連鎖5本を作った。Chromeでは62件のCVE(全件 critical/high、サンドボックス脱出13件)、LinuxではMPTCPの競合状態でゼロクリックのroot実行(CVE-2026-98432)。本紙が重く見るのは、負けた試行がシステムを落とさないため攻撃側が無期限に再試行できるという一文である。5本すべてが「after initial prompting」で始まることも併せて読む。
- 26Bモデルの推論は55ドルのテレビ箱15台で動いた — Anthropicが数えたエッジ計算の在庫にはロボットとドローンも含まれる
Anthropicは約55ドルのAndroid TVボックス15台でGemma4-26B-A4Bの分散推論を毎秒0.39トークンで動かした。これは自己複製の成功実演とは別の結果である。8ノードの簡略化した複製評価、TVボックスの速度に基づく推論立ち上げ時間の推計、エッジ加速器の母集団を分けて読む。推計には車両、四足・二足ロボット、ドローンも含まれるが、原典が潜在標的の大半を見込むのは監視カメラと会議機器である。
- 同じFable 5の艦隊が、足場を書いたのが誰かで撃墜ゼロと多数回に分かれた — Anthropicがエージェント4体をMMOに放ち、反応速度と空間把握は世代交代で改善しなかったと書いた
AnthropicのFrontier Red TeamがClaudeにEVE Online/EVE Frontierを数週間〜数か月プレイさせた記録を公開した。本紙が本題と見るのは、1秒未満の反応と空間把握が最新世代でも弱点のまま残り、自前の足場(スキャフォールド)を書いて迂回したという明言である。同じFable 5のチーム4体が、Opus 4.8製の足場では何度も撃墜されチュートリアルに数日かかるか完了せず、Fable 5製の足場では撃墜ゼロで12時間以内に完了した。ただし足場が効くのは開発中に見た状況だけで、最難の戦艦建造はどの艦隊も半分で止まった。市場側も伸びたのは利ざや取りの執行(利幅8〜13%・1日数百件)で、先読みを命じるとFable 5でも黒字は約半分、Opus 4.7は指示を無視して結果から除外され、売上税の引き上げにOpus 4.6の43%は最後まで気付かなかった。4体のうち1体に妨害を指示すると仲間はほぼ検出できず、公開チャンネルだけを読む監視は誤告発5%以下の条件で30〜40%、確信度は一度も50%を超えない。発表者自身が書いた「ロボティクスでも同様のパターンを見ている」まで含めて読む。
- 承認を求める画面の93%は、そのまま通されていた — Anthropicが封じ込めを「環境の層」に置いた理由と、自分で作った部品だけが壊れた記録
Anthropic の engineering が5月25日、自社3製品(claude.ai・Claude Code・Claude Cowork)の封じ込め設計を1本にまとめている。自社テレメトリで利用者は許可要求の約93%を承認しており、承認疲れは公開から数週間で現れ、監視を与えるはずの機能が逆の効果を持ちえたと発表側自身が書いた。OS 水準のサンドボックス導入で許可要求は84%減。auto mode はやりすぎの約83%を実行前に捕まえるが、脚注では約17%が通り無害なコマンドの約0.4%を誤って止める。社内赤チームのフィッシングでは同一プロンプト25回中24回で鍵の持ち出しが完了した。許可済みドメイン(api.anthropic.com)を通る持ち出しでは「サンドボックスは完璧に機能し、それでもデータは出ていった」。結論は、許可リストは宛先のフィルタではなく能力の付与である、という読み替えである。本紙が読むのは2点。封じ込めの3パターンが依存しているのは巻き戻せる環境であり、衝突は使い捨てにできないこと。そして「隔離の強度を利用者の監督能力に合わせよ」という発表側の第2原則を当てると、自律機械の操作者は bash を読める開発者の側ではなく、絶対で常時有効な境界を敷くべきと判断された側に入ることである。例外を与える権限を持つ部品が無い初版の構成が、可用性と交換されて外に出された経緯まで含めて記録する。
本コラムはAIを活用して作成・編集し、編集責任は本紙編集部が負います。原典との照合と、掲載後の訂正を行っています。 誤りの指摘は歓迎します。関連する自動生成のニュースはニュースへ。
