LLM が大規模な正式なソフトウェア検証の実現を可能にしています

2026/10/23 7:54

LLM が大規模な正式なソフトウェア検証の実現を可能にしています

RSS: https://news.ycombinator.com/rss

要約▶

Japanese Translation:

研究者は、大規模言語モデル(LLM)の Claude を用いて、100 以上のオープンソースソフトウェアライブラリに対して前例のない規模での形式的検証を実行し、歴史的なマイルストーンを達成しました。Theorem との協力により、プロダクション向けソフトウェアに対する初の大規模 AI 主導の形式的検証として、アセンブリ(RISC-V)レベルで実装されたコードが検証されました。その結果、64 MB 未満の入力に対して、123 のライブラリの実行可能アーティファクトがメモリ安全性エラーやフェイルするアサートなしに正常終了することが証明されました。この達成には、Claude が Rocq コードを約 1.8 億行生成し、239 のエントリポイントを対象にクラッシュしない仕様を証明するとともに、従来のフォージングで検出されなかった深刻なバグを特定・修正する作業が行われたことが寄与しました。具体的には、カウンタのアンダーフローや境界外読み取りといった複雑な問題を含むものが含まれます。検証の対象は Linux でコンパイルされた RISC-V 命令であり、ユーザーが信頼しなくてもよいのは既知のハードウェア/ソフトウェアの数学モデル、定理ステートメント自体、および Rocq の証明チェッカーのみです。基本的安全性を超えて、このアプローチはデータ圧縮の精度やアルゴリズムの正しさ(例:red-black トリーの再平衡)といった高位のプロパティも検証しました。チームは共有作業空間戦略を採用し、証明の再利用によりトークン使用量を 17%削減するものであり、Mathlib のような数学ライブラリの成長に類似しています。形式的に検証済みであっても、形式仕様が実態と異なったり機械モデルが現実と異なる場合(例:x86/ARM システム上)には、完全なバグの不在を保証しないことに留意する必要があります。本プロジェクトでは公衆の検討のために一部の証明をリリースしており、AI 支援による検証をソフトウェア開発ワークフローでの標準へと導く道筋を用意しています。

本文

LLM を活用した形式検証:ソフトウェアセキュリティ保証の新たな飛躍

著者: Keane Lucas, Aengus Lynch, Luna Tong, Luke Champine, Zygi Straznickas, Dino Distefano, Harshikaa Agrawal, Evyatar Ben Asher, Ava Howell, Sami Jawhar, Chris Rohlf, Nickolai Zeldovich, Nicholas Carlini, Rajashree Agrawal, Jason Gross

概要

  • 課題: 多くのソフトウェアにバグが存在し、AI はそれらを発見・悪用する。従来の防御策では不十分であり、コードがバグから完全に自由であることを証明する手法が必要。
  • 解決策: 形式検証は保証を提供するが、従来は専門家による数年単位の労力を要し実用的ではありませんでした。Theorem との協業により、大規模な言語モデル(LLM) を活用して形式証明を生成することが可能になりました。
  • 実績: Claude を用いて、100 以上のオープンソースライブラリにおける RISC-V アセンブリレベルでのセキュリティ特性を検証。
    • これにより、安全性が保証された新しいソフトウェア開発ワークフローを実現しました。
    • 証明生成プロセスにおいて、Claude は過去に数千万回のテストで見出されていなかったバグを発見しました。
  • 展望: モデルの能力向上に伴い、形式検証は安全なソフトウェア開発において不可欠な要素となっていくでしょう。

序論:LLM が形式検証を可能にした背景

  • 現状の問題点:
    • 成熟したかつ十分にテストされたソフトウェア(例:Linux カーネル)にもバグが存在し、LLM はそれらを見つけることが得意になっています。
    • 最先端モデルが悪意的なバグを連鎖させて致命的なエクスプロイトに繋げうるため、野外での悪用前に検出・修正する手法が必要です。
  • 形式検証の役割:
    • コードを数学的なモデルに変換し、特定のセキュリティ規則に従うことを証明するアプローチです。
    • 証明が失敗した場合はルール違反を示すため、失敗の原因除去を繰り返してバグが存在しないことを最終的に証明できます。
  • 従来からの課題:
    • 証明は元のコードより大きく、専門知識と多大な努力が必要でした(例:seL4 カーネルの実装に要した 2 人月に対し、検証には 20 人月)。
    • 航空機電子機器など、ミッションクリティカルなアプリケーションでのみ実用化されていました。
  • LLM による革命:
    • 最先端モデルがリアルワールドのソフトウェアに対して完全に自律的に正当性証明を生成できるようになり、形式検証は大幅に容易になりました。
  • 本プロジェクトのアプローチ:
    • 123 のオープンソースライブラリで有用なセキュリティ特性を検証しました(例:特定の条件下でクラッシュせず正常終了、メモリ安全エラーや断言失敗がないこと)。
    • これによりバグ修正のロードマップを提供し、証明の一部を公開・再利用可能にしています。

テストから証明へ(Turning tests into proofs)

  • 「正しさ」の定義:
    • 仕様(spec)によって定義されます。しかし、多くのプログラム(テキストエディタ、ブラウザなど)については包括的で曖昧性のない仕様が得られず、検証の大きな障害でした。
  • 解決手法:既存テストスイートから仕様の自動生成
    • オープンソースライブラリのコンパイル可能なテストスイートを自動的に仕様へ変換しました。
    • 「このテストスイートは常にパスする」というルールを、RISC-V コンパイル済みバイナリを実行することの意味を表すモデルに符号化しています。
  • LLM の役割:
    • 歴史的には不可能だった数百万行のコード(数万行のアセンブリ命令)の振る舞いについて証明を書くことを可能にしました。
  • プロセスの詳細:
    1. ファズテストからスタート: ファズサーが膨大な入力を生成しクラッシュを引き起こしますが、これは本質的に暴力行為でありどのパスも実行されるとは限りません。
    2. 仕様への変換: ファズテストを「64 MB 未満のあらゆる入力についてクラッシュしない」という仕様に変換しました。
    3. 証明の生成: Claude がこの仕様が証明できれば、以降のエントリーポイントへのファズリングは不要になります。
  • OSS-Fuzz イニシアチブとの連携:
    • 数週間で、123 つの異なる OSS-Fuzz ライブラリ(239 のエントリーポイントを跨ぐ)について、64 MB 以下のあらゆる入力でクラッシュがないことを証明しました。
    • 典型的な証明はセキュリティ保証を与えるために約600,000 行に達します(Rocq を含む約 1.8 億行のコード)。
  • 信頼できるコンポーネント:
    • 開発者が信頼する必要があるのは以下のアーティファクトのみです:
      • RISC-V および Linux プロセスの形式的モデル;
      • 証明された定理の正確なステートメント;
      • Rocq 証明チェッカー自体。

バグの発見と修正(Finding and fixing bugs)

  • 自律的なバグ修正:
    • Claude は数百のエントリーポイントを証明しようとし、その過程で数百のバグを発見しました。
    • 人間による介入を最小限にするため、Claude にコードのパッチ適用と仕様の再生成を任せています。
  • ファズサーで見逃された重大なバグ:
    • ファズサーは通常 1 MB 未満の入力に制限されるのに対し、Claude は以下の大規模なバグを発見しました:
      • デコンプレッサーのコピーにおけるカウンターアンダースローフ(境界外書き込み)。
      • 64 MB の入力および 2 GB 以上のメモリーが必要な画像デコーダーの境界外読み取り。
      • 同じファイルへの二つのハンドルの呼び出し系列を必要とする別のライブラリのバグ。
      • CVE-2026-56132 の再発見(深くネストされた入力が必要)。
  • 論理バグの発見:
    • アプリケーションがロードできるファイルを制限する機能が一貫して強制されないなど、クラッシュしない論理バグも見つかりました。
  • プロセスの利点:
    • RISC-V コンパイル済みファズテストにさらなるクラッシュがないことを証明すること自体が、修正すべき実際のバグをもたらすことを示しています。

メモリ安全性以上の証明(Proving more than memory safety)

  • 高レベルプロパティの検証:
    • ファズテストにクラッシュがないことは、より高レベルのプロパティの成立を保証します:
      • エンコード - デコードラウンドトリップ
      • 冪等性、代数的法則
      • リファレンス実装との同値性
  • 具体的な事例:
    • LZO 圧縮アルゴリズムにおいて、入力を超圧縮してデコンプレッションしたものが元のものと同一であることを保証しました。
  • 非明言的なプロパティの発見と証明:
    • cpp-httplib
      の OSS-Fuzz 証明において、Claude は
      std::set
      デストラクタによるスタックオーバーフローの可能性を排除しました。
    • リバートコード上で libc++ の赤黒ツリー再調整アルゴリズムがツリーの深さを対数的に制限するために正しく最適化されていることを証明しました。

他の形式検証ケーススタディ(Other formal verification case studies)

  • zlib 圧縮ファイルフォーマットの検証:
    • RFC 1950 の形式的仕様を作成し、Linux カーネル内の zlib 実装がそれに従うことを Claude に証明させました。
    • x86 アーキテクチャに対して直接証明を行い、マイナーなコーナーケースバグを発見・修正しました。
  • Python インタプリターの同値性証明:
    • Verus を使用し、CPython セマンティクスに従うことを Claude に証明させました。
    • 170 万回以上のランダム生成プログラム実行の結果、99.95% のケースで CPython と同一の振る舞いを発見しました。
  • セキュリティプロパティの確認:
    • 広く使用されている重要なアプリケーション(PDF リーダーなど)の問題を発見しました。
    • PDF リーダー検証において、通常年間報告される数と同じ数のセキュリティバグを一週間で発見しました。

これがまさに始まり(This is just the beginning)

  • コスト効率の向上:
    • 最新のモデル(Opus 5.5 など)は fewer トークンで証明可能です。
    • 証明の再利用: エージェントが他者の証明をコピーして自分のターゲットに適用することで、トークン使用量を**17%**削減し、以前失敗した試みでも成功させることができました。
  • 共有ライブラリの活用:
    • 多くの証明は C ランタイムや AddressSanitizer の初期化など共通するコードに関係しています。
    • エージェントチームはこれを利用し、完了した別のチームの証明をコピーして自分のプログラムに適応しました。
  • 未来への展望:
    • 既存ソフトウェアの膨大な身体を検証するための戦略として、最も重要な依存関係から始め、汎用仕様とバイナリレベルでの動作によるアプローチが有効です。
    • これはパッケージ粒度での証明再利用を促進し、パワーロー法則に従います(小さい共有ライブラリセットさえ証明すれば膨大なソフトウェア範囲をカバーできます)。
    • Theorem ロードマップにより、glibc, OpenSSL, cURL などのインフラを含む Nix エコシステム全体の検証が可能になる見込みです。

制限(Limitations)

  • 「形式的に検証」は「バグフリー」ではない:
    • 証明チェッカーは仕様と生体(現実の機械)が一致するかを知ることができません。
    • バグが発見されたのは、仕様が現実の機械モデル化しきれていないためです。
  • 具体的ギャップ:
    • アーキテクチャの違い: 証明は単一スレッド・静的 RISC-V バイナリ(musl libc)ですが、実際には x86/ARM で動的に glibc を使用する場合が多い。
    • 仕様のカバー範囲: ASan はすべてのメモリ安全バグを検出せず、すべてのエントリーポイントも検証されていません。
    • 誤用による影響: ライブラリ自体は正しくても、呼び出し者が誤用することでメモリー腐敗が発生します。
  • 将来への展望:
    • LLM の継続的な改善により、これらの制限が扱可能になり、より大きな割合の依存コードを検証できるようになります。

結論(Conclusion)

  • 明確な軌跡:
    • 形式検証は、歴史的最も安全クリティカルなコードでの専門家保証のみから、今日すべての生産ソフトウェアにおいてファズリングと同じくらい実用的なものになります。
  • 成熟への道:
    • 静的型やテストフレームワークと同様に、検証は LLM を活用し、「bolted-on」から「built-in」へと進化します。
  • 社会への呼びかけ:
    • LLM スケール形式検証は、以前不可能な範囲とスケールでセキュリティ保証を実現する有望なアプローチです。
    • 他者を実験することを推奨し、堅牢なソフトウェアが広く普及し、ソフトウェアバグはよく理解され速く解決される世界を構築しましょう。

同じ日のほかのニュース

一覧に戻る →

2026/10/23 8:45

Docker は変だ

## Japanese Translation: 本文は、主に Linux コンテナが特定のコア機能を利用して孤立化されたプロセスであり、仮想マシンとは異なること、また Docker がイメージをフォルダとして管理することを明確にしています。完全な仮想化と異なり、コンテナは隔離にはネームスペースを用い、リソース管理には cgroups を用いて、管理されたディレクトリ内でバイナリを直接実行します。重要な技術的詳細として、Go で記述される `runc` ランタイムがあり、これは初期システムコールの処理に C モジュールを使用して Linux カーネルとインターフェースする必要があります。Go は `fork` などの特定の機能へのネイティブサポートを持っていないため、不足している振る舞いを近似させるために `/proc/self/exe` などのワークアラウンドが必要です。さらに、標準的な Linux カーネル API は通常ルートの権限を必要とするため、Docker デモンはデフォルトで昇権限(elevated permissions)で動作します。これを解決するためには、ルートレスコンテナランタイムは、通常ルートベースのセットアップが提供する機能を複製するために、ユーザースペースのネットワーキングスタックを再構築する必要があります。結局のところ、これらのアーキテクチャ的な制約を理解することは、安全なルートレス環境を管理するユーザーにとって不可欠であり、不要な権限昇格を避けながらシステム安定性を維持する互換性のあるインフラを設計する企業にとっても重要です。

2026/10/22 23:32

Quad9(DNS レゾルバー)がフランスから退出します

## Japanese 訳: 2026 年 11 月 24 日より、Quad9 はフランスのユーザーに対して、無料のサイバープロテクトおよび一般的なサービスを提供を永久に停止いたします。この決断は、beIN が提起した重大な訴訟において Quad9 に不利となるフランス裁判所の判断を受けたものです。beIN は、特定のドメイン名の再帰的 DNS 解決をブロックすることが、視聴覚的な権利を保護するために必要であると主張しました。裁判所は、違反が完了するまで(11 月 14 日)の金融ペナルティを約 580,000 �ーロから毎日上記 1,000 ユーロに減額しましたが、Quad9 は再帰的 DNS 解決が中立かつ受動的なサービスであり、応答を変更することはそのミッションであるプライバシー、セキュリティ、そしてインテグリティに違反するとする理由をもってこれに従うことができないと述べています。さらに、Quad9 の無料サービスには登録や身元証明は不要であり、ユーザーと管轄区域を関連付けるデータベースを持たないため、geoIP ベースの管轄区域マッピングは技術的に不可能です。フランス裁判所の要求を満たすためにグローバルなブロックを実施することは、French の法律を全世界のユーザーに適用することを意味し、Quad9 にとって許容されない越境的な先例となります。以前にも地理的な IP ブロックの実施を試みた際(例:2021 年から 2023 年にかけてドイツ)、原告が VPN を介してブロックを回避したために裁判所に対する軽蔑罪として罰金が科されるなどしました。Quad9 に対して数百のドメイン名のブロックを求めて進行中の訴訟が約 20 件あり、累積的な法的リスクは大きいです。上訴は進行中ですが、Quad9 は予定通り撤退を進めることにします。この動きにより、国家機関(例:DINUM, EDF, SNCF)、研究ネットワーク(RENATER)、大学、医療提供者、および民間企業を含む何百万人ものフランスのユーザーが、サイバー脅威からほぼ 9 年間も重要な保護を失うことになります。Quad9 は、将来、監督なしで民間企業が DNS コンテンツフィルタリングを自動化することを可能にする法律に対して警告を発し、市民に対し、日常のドメイン名lookup が刑事犯罪ではないことを明確化することを目指しています。

2026/10/20 16:15

回路の秘められた生活が今すぐどこでも入手可能です

## Japanese Translation: 本書「回路の秘められた人生」は、厳格なテストにより完全に AI 生成コンテンツを含まないことが確認されたという重要な保証のもとにリリースされました。この区別は、2026 年という現在において極めて重要です。人工知能が作成する数百冊の書籍と競合しなければならない人類の著者にとって、また AI エンティティが関与する可能性のある既存のタイトル squatting(架空タイトル取得)慣行に対峙するためにも、この区別は不可欠です。合成された著作物および潜在的に squat されている文学物が拡大する中、こうした検証済みの人間による作品を支えるため、読者には本書を積極的に購入し、率直なレビューを残すことを推奨します。このようなフィードバックは推奨アルゴリズムに直接作用し、飽和した市場において非 AI コンテンツが visibility(可視性)を確保するのを保証します。入手可能なのは、米国大手小売業者であるバース&ノーブル(Barnes & Noble)やその他のグローバルプラットフォームに加え、欧州の購入者向けの特定の地域別 Amazon サイト(例:amazon.de, amazon.fr, amazon.pl, amazon.es, amazon.nl, amazon.se, amazon.it, amazon.co.uk)などです。この検証済みのテキストを選択し、本物のレビューを提供することで、読者は機械生成の代替案よりも真の人間の創造性を優先する倫理的な消費習慣を維持するのに貢献できます。こうした努力は集まり、出版風景が自動化された創出へと劇的に変化する中で、人間による著者の声が聞かれ、価値ある存在として存続することを保証します。 ## Text to translate: The book "The Secret Life of Circuits" has been released with a critical guarantee: rigorous testing confirms it is entirely free of AI-generated content. This distinction is vital in 2026, an era where human authors must compete against hundreds of books created by artificial intelligence, alongside existing title-squatting practices that may involve AI entities. To support these verified human works amidst this growing volume of synthetic and potentially squatted literature, readers are encouraged to actively purchase the book and leave honest reviews. Such feedback directly supports recommendation algorithms, ensuring visibility for non-AI content in a saturated market. Availability extends across major US retailers like Barnes & Noble and other global platforms, as well as specific regional Amazon sites for European buyers (e.g., amazon.de, amazon.fr, amazon.pl, amazon.es, amazon.nl, amazon.se, amazon.it, and amazon.co.uk). By choosing this verified text and providing authentic reviews, readers can help sustain ethical consumption habits, prioritizing genuine human creativity over machine-generated alternatives. This effort collectively ensures that human-authored voices remain heard and valued as the publishing landscape shifts dramatically toward automated creation.