RSS トレイル・オブ・ビッツ ブログ ノート

RSS トレイル・オブ・ビッツ ブログ

blog.trailofbits.comは、Trail of Bitsの公式ブログです。Trail of Bitsは、サイバーセキュリティ会社で、侵入テスト、セキュアコーディング、ソフトウェアセキュリティアセスメントなどを含む多くのサービスを提供します。 このブログは、サイバーセキュリティに関する知識と洞察を共有することに焦点を当てているようです。記事や投稿は、ソフトウェアセキュリティ、脅威モデリング、脆弱性分析、セキュアコーディング慣行など、多くのトピックをカバーしています。 ウェブサイトのデザインは、シンプルで整然としており、特定の記事やトピックを簡単に見つけることができます。サイト上には検索機能もあり、ユーザーが特定の記事やトピックを素早く見つけることができます。加えて、記事はトピック別にカテゴライズされており、関連するコンテンツを閲覧することが簡単です。 このブログは、サイバーセキュリティの専門家がゲストポストを寄稿することもあり、サイト上の視点と洞察の多様性を高めています。 全体的に、Trail of Bitsのブログは、サイバーセキュリティに関する学びを深め、フィールドの最新の開発とトレンドを追跡することに興味のある人々にとって、有益なリソースのようです。

ノートのスレッド

Trail of Bits は、OpenAI の Daybreak イニシアチブと提携し、オープンソースソフトウェアのセキュリティ脆弱性に対処するために Patch the Planet を立ち上げました。このプログラムは、GPT-5.5-Cyber のような高度な AI モデルを利用してバグを特定し、Trail of Bits のエンジニアが発見されたバグのトリアージとパッチ適用を行います。開始から最初の 1 週間で、このイニシアチブは、暗号化やネットワーキングを含む、さまざまな重要なソフトウェア分野の 19 のプロジェクトを調査しました。その結果、数百のバグが発見され、64 のプルリクエストが提出され、51 のイシューが起票されました。重要なのは、Trail of Bits は単なるバグレポートではなく、実際のパッチを提供することに重点を置いており、すでに 37 のパッチがマージされています。これらのマージされた貢献には、バグ修正、新しいテスト、ファジングハーネス、サプライチェーンツールの改善が含まれていました。python.org や aiohttp のような特定のプロジェクトは、メンテナーからの大幅な改善と迅速な修正を見ました。このイニシアチブはまた、ファジングラボやバリアント分析パイプラインのような複雑なセキュリティツールを迅速に構築する上での AI の力を強調しました。この記事は、AI によってバグを見つけることは容易になりつつあるものの、現在の真の課題は、発見の確認、深刻度の評価、効果的なパッチの実装にあると強調しています。Trail of Bits は Patch the Planet を継続しており、より多くのオープンソースメンテナーに支援の申請を呼びかけています。
CdXz5zHNQW_zplxitPXLL.gif
研究者たちは、一部のRSA秘密鍵には0に強く偏ったビットが存在し、それを検出し迅速に素因数分解できることを発見しました。badkeysプロジェクトのHanno Böck氏と共に、彼らはこの特性を持つ数百のユニークな鍵を発見し、過去のデータを分析してこの問題を時系列で追跡しました。これらの鍵における0ビットのパターンはしばしば高度に構造化されており、パターンを悪用するための多項式ベースの暗号解読技術の開発を可能にしました。研究者たちは、繰り返し現れる0ビットブロックを持つRSAモジュラスの2つのパターンを特定しました。一方のパターンは未解明のままで、もう一方はCompleteFTPファイル転送ソフトウェアの古いバージョンのbig-integerコードにおける型不一致に起因することが判明しました。CompleteFTPのバグは脆弱な短袖DSA鍵も生成し、研究者たちはインターネットスキャンから603のユニークなRSA秘密鍵と74のDSA鍵を回収しました。badkeysプロジェクトは、既知の脆弱性について公開鍵をチェックするオープンソースサービスであり、実世界の鍵のデータセットを検索することで、研究者たちは実際に多数の鍵にこれらのパターンが存在することを発見しました。研究者たちはCompleteFTPの脆弱性をリバースエンジニアリングし、それが肢のサイズとRNG出力のサイズの不一致によって引き起こされたことを発見しました。この脆弱性は、CompleteFTPチームが脆弱な鍵を自動的にチェックし、鍵の再生成が必要な場合にユーザーに警告するアップデートをリリースした後に封じ込められました。研究者たちはまた、整数を多項式として表現することによって整数を素因数分解する技術を開発しました。これは一般的なRSAモジュラスを素因数分解するために使用できます。これらの脆弱性の発見は、実践的な研究の重要性と、潜在的な弱点を特定し対処するために暗号実装の継続的な監視の必要性を浮き彫りにしています。
CdXz5zHNQW_iFKnuRveAb.webp
パブリックなスキルマーケットプレイスには、認証情報やデータを盗むために設計された悪意のあるスキルが蔓延しています。セキュリティ企業は、インストール前にこれらの脅威を検出するためのスキルスキャナーを導入しましたが、私たちのテストではそれらが効果的でないことが明らかになりました。私たちは、CiscoのエージェントスキルスキャナーであるClawHubと、skills.shに統合された複数のスキャナーの検出メカニズムを正常に回避しました。これらの回避は、標準的な攻撃手法と比較的少ない労力で達成されました。これらのスキャナーの静的な性質は、攻撃者が成功するまで繰り返し手法をテストし、洗練させることを可能にします。 ソフトウェアサプライチェーンのセキュリティは常に懸念事項であり、エージェントシステムの台頭は新たなベクトル、すなわちスキルを導入しました。悪意のあるスキルは、コードに加えて自然言語プロンプトを活用でき、攻撃の可能性を拡大します。ZIPアーカイブ、キュレーションされたマーケットプレイス、パブリックマーケットプレイスなどのスキル配布チャネルは、セキュリティよりも速度を優先することがよくあります。特にパブリックマーケットプレイスは、ユーザーのシステムを侵害することを目的とした悪意のあるスキルで溢れかえっています。 VirusTotalとGemini 3 Flashベースのツールを使用するClawHubのスキャナーの分析では、悪意のあるコードを不明瞭にするために過剰な改行を追加するだけで回避できることが示されました。任意のgitリポジトリを処理するCiscoのスキルスキャナーとskills.shのスキャナーも脆弱でした。私たちは、.docxファイル内に悪意のある命令を埋め込み、パターンマッチングとLLMベースの分析の両方を回避するポイズニングされた.pycバイトコードを使用することでこれを悪用しました。skills.shに対するプロンプトインジェクション攻撃は、無害に見える企業の構成言語内に悪意のあるコマンドを偽装しました。これらの発見は、現在のスキルセキュリティ対策における重大な脆弱性を浮き彫りにしています。
CdXz5zHNQW_sN7fPOqey7.webp
セキュリティ研究は、CIセキュリティを強化するためにGitHub Actions静的アナライザーであるzizmorを改善することを目的としていました。この研究は、攻撃者がTrivyの侵害のような設定ミスを悪用する脆弱性に対処しました。チームは、zizmorの機能を検証するために、オープンソースリポジトリから41,253のワークフローのテストコーパスを構築しました。このテストは、アンカーの使用はまれではあるものの、基盤となるプロジェクトに存在することを浮き彫りにしました。分析により、zizmor内の4つのアンカー処理バグが特定され、修正されました。さらに、チームはデシリアライゼーションのエッジケースと式評価バグに対処しました。チームは、zizmorの式評価をGitHubのテストと一致させました。テストアプローチには、実際のワークフローのダウンロード、zizmorの実行、および失敗への対処が含まれていました。チームの作業の結果、20件のイシューが提出され、15件のプルリクエストがマージされました。この研究は、GitHub Actionsを使用するオープンソースプロジェクトのセキュリティを改善することを目的としていました。これらの改善は、CIセキュリティを強化し、サプライチェーン攻撃を防ぐのに役立ちます。
CdXz5zHNQW_7aI8OOG07k.webp
Goのネイティブファジングは、Rust、C、C++のエコシステムに見られる高度な機能を欠いており、整数オーバーフローやゴルーチンリークのような一般的なバグを検出できません。これらの制限に対処するため、gosentryはGoツールチェーンのファジング指向フォークとして開発されました。GosentryはLibAFLを統合し、ネイティブ構造体ファジング、Nautilusによる文法ベースファジング、そしてこれまで見逃されていたバグクラスの検出を可能にします。標準の`testing.F`ワークフローを維持しており、既存のGoファズハーネスを新しいコマンドラインフラグで使用できます。Gosentryは、構造体、スライス、ポインタのような複合型を扱う構造体認識ファジングを通じて、入力品質を向上させます。また、NautilusがJSONのような複雑な構造体に対して文法的に有効な入力を生成・変異させる文法ベースファジングもサポートしています。このツールは、Goのバニラファザーが見逃す整数オーバーフロー、データ競合、ゴルーチンリーク、実行タイムアウトなど、さまざまな不正な動作を特定します。ファズコールバックをキャプチャし、RustベースのLibAFLランナーで実行することで、gosentryはファジングエンジン、スケジューリング、検出器を改善します。すでにOptimismやRevmのようなプロジェクトで、ネイティブGoファジングでは発見が困難な重要なバグを発見しています。このプロジェクトはGitHubでオープンソース化されており、すべての機能に関する包括的なドキュメントが提供されています。
提供されたテキストは、テストハンドブックからの2つのセキュリティチャレンジ、LinuxのpingプログラムとWindowsドライバーのレジストリハンドラーについて説明しています。Linuxのチャレンジは、入力検証の不備と`inet_ntoa`関数がグローバルバッファを使用することによるコマンドインジェクションの脆弱性を露呈し、攻撃者がセキュリティチェックをバイパスできるようにします。Windowsのチャレンジは、ドライバーが`RtlQueryRegistryValues`を使用してレジストリからバージョン情報を読み取る脆弱性を強調しており、攻撃者がレジストリパスを制御できるようになります。これにより、任意のレジストリキーを読み取ることが可能になります。主な脆弱性は、`RTL_QUERY_REGISTRY_DIRECT`を使用する際の型チェックの欠如であり、型混同によるスタックオーバーフローを可能にします。Windowsドライバーで`RTL_QUERY_REGISTRY_TYPECHECK`フラグが欠落していると、`RTL_QUERY_REGISTRY_DIRECT`を使用して信頼できないハイブから読み取ろうとしたときにカーネルセキュリティ障害が発生します。このバグは、元々MS11-011で対処されていましたが、攻撃者がスタック上のデータを上書きすることを可能にします。その後、テキストは、LLMを活用してC/C++コードベースのバグを見つけるために設計された、c-reviewという新しいClaudeスキルを紹介します。このスキルは、テストハンドブックのチェックリストを脆弱性を特定するためのプロンプトとして利用します。
CdXz5zHNQW_Mg1wCwp9Lj.webp
Trailmark は、ソースコードをクエリ可能なコールグラフに変換する新しいオープンソースライブラリです。このグラフは、関数、クラス、それらの関係、およびセマンティックメタデータを表します。Claude スキルは、Python API を介してこのグラフと直接対話できます。従来のセキュリティ分析はしばしば検出事項のリストに依存しますが、攻撃者はグラフで考え、防御側に不利な状況を作り出します。Trailmark は、Claude のような AI モデルにこのグラフベースの推論能力を提供することを目指しています。 突然変異テストは、コードに小さな変更を加えてテストの品質を評価する方法であり、多くの生き残った突然変異体を生成します。これらの突然変異体のフラットなリストでは、同等、デッドコード、または実際に重要なものとの区別がつきません。Trailmark は、Claude がセキュリティの関連性に基づいてこれらの突然変異体をトリアージできるようにします。例えば、信頼されていない入力からの到達可能性などが挙げられます。このライブラリは、コードを 3 つのフェーズで処理します。tree-sitter を使用した AST の解析、高性能グラフへのインデックス作成、および呼び出し元、呼び出し先、攻撃サーフェスなどの情報のクエリです。 Trailmark は 17 のプログラミング言語をサポートし、8 つの事前構築済み Claude Code スキルを提供しています。これらのスキルは、突然変異体のトリアージ、テストベクトルの生成、プロトコル図の作成などのタスクを支援します。例えば、「genotoxic」スキルはグラフ分析を使用して生き残った突然変異体を分類します。「vector-forge」は、特定されたカバレッジギャップを埋めるためのテストベクトルを生成します。Trailmark は、静的アナライザーや監査ツールの検出結果も統合し、それらをコードグラフにマッピングします。 暗号ライブラリでの内部使用により、十分にテストされたコードでは同等の突然変異体が大部分を占めることが多いことが明らかになりました。これはフラットなリストでは見落とされていた詳細です。グラフ分析は、libhydrogen の単一の置換プリミティブがすべての暗号操作に影響を与えるなど、アーキテクチャ上のボトルネックも浮き彫りにしました。突然変異テストは、テストがコードの動作を制約できていない場所を特定することにより、標準化されたテストベクトルがない新しい構造にとって価値があることが証明されています。さまざまなコードベース全体で、一般的なパターンが現れました。算術モジュールは高いブラスト半径を持ち、コーデックパーサーは主要なファジングターゲットであり、プロパティベースのテストはしばしばまばらです。最終的に、Trailmark は、さまざまな分析ツールを連携させ、より的を絞ったセキュリティ評価を可能にする接続組織として機能します。
GoogleのQuantum AIグループは、ゼロ知識証明を使用して、最初の世代の量子コンピューターが楕円曲線暗号を9分で破壊できることを主張した。Trail of Bitsは、GoogleのRustプローバーコードの脆弱性を利用して、Googleのメトリクスを大幅に改善した偽のゼロ知識証明を作成した。これらの脆弱性には、メモリの安全性の問題と論理的な欠陥が含まれており、Googleはこれらを修正している。Trail of Bitsの証明は、合計操作を830万に、キュービットを1,164に削減し、Toffoliゲートを排除しながら、Googleの未修正の検証を通過し、正当な証明と区別がつかなかった。Googleの証明は、量子回路のコストを計算するためにゼロ知識仮想マシン(zkVM)を使用していた。zkVMシミュレーションには、プログラム(量子回路などのプライベート入力)が特定のパブリック出力(リソースの境界を含む)を生成することを証明することが含まれる。重要な脆弱性の1つは、回路のアセンブリスクリプトの操作タイプを操作してToffoliゲートカウンターを回避することであった。これにより、プログラムはコストを正しく報告せずに操作を実行でき、実質的に証明を偽造できた。この事件は、ゼロ知識証明システムによって導入される独自の攻撃面を示している。
CdXz5zHNQW_xMS1ou095P.webp
Testing Handbookに新たな章が追加され、CおよびC++コード向けのセキュリティチェックリストが提供されました。この章では、複数のプラットフォームにわたる一般的なバグ、落とし穴、APIの問題について詳しく説明しています。Linux、Windows、seccompの各セクションに分かれており、手動でのコードレビューに焦点を当てています。また、このチェックリストをバグ発見のためのプロンプトとして使用する、LLM(大規模言語モデル)ベースのツールも開発中です。読者のレビュー能力を試すために2つの課題が用意されており、早期に正解した提出者には賞品が贈られます。この章では、言語レベルの問題から始まり、プラットフォーム固有の問題へと進む、さまざまな脆弱性について解説しています。Linuxセクションではlibcの落とし穴、WindowsセクションではDLLインジェクションとパス走査の問題に焦点を当てています。seccompセクションでは、サンドボックスのバイパスについて扱います。ハンドブックは継続的に更新され、貢献も歓迎されています。課題は、シンプルなpingプログラムとWindowsドライバの脆弱性を特定することです。著者は、チェックリストベースのレビューはセキュリティの出発点であり、専門知識の代わりになるものではないと強調しています。
WhatsAppの新しいプライベート推論機能は、エンドツーエンド暗号化とAIを統合することを目指しており、メッセージをトラステッド・エグゼキューション・エンクレーブ(TEE)と呼ばれる安全なハードウェアエンクレーブ内で処理します。これらのTEEは、AMDのSEV-SNPやNvidiaの機密GPUプラットフォームを利用しており、Metaでさえ平文のメッセージにアクセスできないように設計されています。プレローンチ監査では、ユーザーのプライバシーを侵害する可能性のある8つの重大な問題を含む、多数の脆弱性が特定されました。これらの脆弱性は、アテステーション測定後にロードされる信頼できないデータや、セキュリティパッチレベルの誤った検証に起因していました。例えば、アテステーション測定後に環境変数やACPIテーブルをロードすると、悪意のあるコードを注入するためのバックドアが作成されました。また、システムは当初、ファームウェアが主張するパッチレベルを、暗号証明書に対して検証せずに信頼していました。さらに、アテステーションレポートに鮮度保証がなかったため、リプレイ攻撃が可能になり、攻撃者は安全なサーバーになりすますことができました。Metaは、変数の厳格な検証、カスタムブートローダー、証明書ベースのパッチレベル検証、およびアテステーションレポートへのnonceの追加を実施することで、これらの問題に対処しました。監査では、TEEが万能なソリューションではなく、実装と展開において細心の注意が必要であることが強調されています。主な教訓として、すべての重要なデータを測定すること、入力を検証すること、徹底的なネガティブテストを実施することの重要性が挙げられます。物理的なセキュリティと再現可能な透明性の実現も、TEEの展開における継続的な課題です。最終的に、TEEベースのシステムを保護するには、主要なアーキテクチャの選択だけでなく、あらゆるレイヤーでのセキュリティに厳格な注意を払うことが重要です。
コードカバレッジは危険な指標です。なぜなら、それは実行を測定するだけで、検証を測定しないため、テストされていない重要な機能が隠されてしまう可能性があるからです。ミューテーションテストは、意図的にバグを導入してテストがそれらを検出できるかを確認することで、テストされていないコードにフラグを立てることでこの問題に対処します。歴史的に、ミューテーションテストツールは遅く、言語固有であったため、特にブロックチェーンでの採用を妨げていました。正規表現を使用したUniversalmutatorは普及しましたが、複数行のステートメントや非効率的なミュータントの優先順位付けには限界がありました。Slither-mutateは、ミュータントの優先順位付けとよりクリーンなテストサイクルにより速度を向上させましたが、Solidity固有のままでした。 新しいツールであるMuTONとmewtは、これらの課題を克服することを目指しています。MuTONは、tree-sitterパーサーを利用して言語の理解を深め、複数行のステートメントを処理することで、TONブロックチェーン言語のファーストクラスサポートを提供します。Mewtは、Solidity、Rust、Goもサポートする言語に依存しないコアとして機能します。どちらのツールも結果をSQLiteデータベースに保存し、永続性と柔軟なフィルタリングを可能にします。AIエージェントは、専門的なスキルを使用してキャンペーンを効率的に構成し、結果をトリアージできるようになりました。 今後の開発は、要件をエンコードするAI主導のテスト生成に焦点を当てており、バグ検出だけでなく、要件をエンコードします。目標は、AIエージェントに懐疑心を植え付け、堅牢なテストスイートのために外部検証を要求することです。ユーザーはMuTONとmewtをインストールし、オープンソースプロジェクトに貢献し、ミューテーションテストを合理化する新しいAIスキルに注目することが奨励されています。これらの進歩は、ミューテーションテストをソフトウェア開発のより日常的で効果的な部分に変えることを約束します。
その企業はAIイニシアチブを開始し、当初の懐疑的な姿勢から1年以内にAIを大幅に統合し、多数のプラグインとエージェントを開発しました。これは、AIの可能性を認識するのに苦労し、広範な導入にもかかわらず生産性への影響が最小限にとどまることが多い多くの企業とは対照的です。著者は、AI統合の明確なレベルを定義しています。AI支援、AI拡張、AIネイティブであり、AIを中核要素とする組織設計の根本的な変化として後者を強調しています。著者は、AI導入に対する4つの主要な心理的障壁を強調しています。自己高揚バイアス、アイデンティティの脅威、不完全さへの不寛容、そして不透明性です。これらの障壁を克服するために、同社は成熟度マトリックスを実装し、専門家のスキルをエンコードすることで新しいアイデンティティを育成し、慎重なキュレーションとサンドボックス化を通じてエラーを軽減し、包括的なAIハンドブックを通じて透明性を高めました。実装は、標準化されたツール、明確な使用ポリシー、測定可能な進捗状況に焦点を当て、導入を促進および加速させ、短期間で集中的なハッカソンを実施して迅速な開発を推進しました。再利用可能なスキルリポジトリとキュレーションされたマーケットプレイスは、知識の共有とAIシステムの継続的な改善を促進し、運用上の優位性を生み出しました。
CdXz5zHNQW_50LokEbBRD.webp
新しいClaudeプラグインが、以前のブログ記事で紹介された次元解析という手法を用いて、コード開発と監査のためにリリースされました。バグを見つけるセキュリティスキルとは異なり、このプラグインはコードに次元型を注釈付けし、ミスマッチを検出します。このアプローチはテストで93%の再現率を達成し、50%の再現率のベースラインプロンプトを上回りました。このプラグインは、Claudeで提供されるコマンドを通じてダウンロードして使用できます。従来のセキュリティ分析スキルは、しばしば質の低い結果をもたらします。次元解析プラグインは、LLMを使用してコードベースを次元型で分類し、LLMの判断だけに頼ることはありません。これにより、より正確で信頼性の高いバグ検出が可能になります。このプラグインは、次元発見、注釈付け、伝播、検証の4つのフェーズで動作します。最初のフェーズでは、基本単位と派生単位を特定し、次元語彙を作成します。2番目のフェーズでは、コードベースに注釈付けを行い、さまざまな要素に次元型を割り当てます。3番目のフェーズでは、次元がファイル間で伝播され、最終段階で次元のミスマッチが特定され、分類されます。開発者は、プラグインを実行し、注釈をコミットして、コードの理解を深め、バグを見つける必要があります。また、開発者は、プラグインの改善に役立てるため、見逃された次元エラーを報告することをユーザーに推奨しています。
CdXz5zHNQW_2bndNvCXGc.webp
CdXz5zHNQW_igCZfhbvo6.webp