ホームへ戻る

AI 輔助軟體安全

Datasette、マルチモデルのコーディングエージェント監査で権限・キャッシュの脆弱性を発見、1.0a39と0.65.4で同時修正

Datasetteは初めてClaudeおよびGPTシリーズのエージェントを用いた包括的なセキュリティ監査を実施し、その後、2人の開発者が相互にテストと修正コードを作成した。新版では非公開データの権限、SQL/HTML escaping、認証、HTTPキャッシュを強化したが、一部の再現テストは公開が延期されており、外部から脆弱性の範囲を完全かつ独立に検証することはまだできない。

D-Kuru · CC BY-SA 3.0 at · Image source
zh-Hant

オープンソースのデータ公開ツールDatasetteは、1.0a39と安定版ブランチの0.65.4をリリースし、公開ネットワークへのデプロイにおける権限、SQL構築、HTML出力、認証、キャッシュの問題を集中的に修正した。最もリスクが高いのは、同一インスタンスで公開テーブルと非公開テーブルを同時に提供し、認証プラグインでアクセスを制限している構成だ。メンテナーは、このような環境を直ちにアップグレードするよう推奨している。

今回のリリースは、注目すべきAIセキュリティエンジニアリングの事例でもある。外部の研究者がまずAI支援による脆弱性レポートを提出し、その後Simon WillisonとAlex GarciaがClaude Fable 5.1、GPT-5.6 Sol、GPT-6 Astraを使って、類似する欠陥を繰り返し探索した。修正プロセスではモデルの出力をそのまま採用せず、2人が役割を分担し、一方が問題を再現する自動テストを作成し、もう一方が修正を実装した。これにより、各問題は複数のエージェントに加え、少なくとも2人の人間によるレビューを受けた。メンテナーによると、プロジェクトがcoding agentによる包括的なセキュリティ監査を全面的に採用したのは今回が初めてで、今後は日常の開発プロセスにも組み込む予定だという。

1.0a39の変更内容から、エージェントが発見したのは単一の脆弱性ではないことが分かる。新版では、大文字と小文字を区別しないSQLiteのテーブル名、全文検索インデックステーブル、中間リレーションテーブル、外部キー候補API、schema表示、主キー解析のすべてで`view-table`権限が適用されるようになった。また、`sqlite_stat1`から`sqlite_stat4`までの閲覧はデフォルトで禁止された。さらに、信頼できないschemaのカラム名に対するSQL identifierおよびHTML escapingを修正し、HTTP/HTTPSであることが検証されたURLのみをリンクとしてレンダリングするようにしたほか、権限を制限されたactorによるAPI tokenの作成も阻止した。非公開およびパーソナライズされた動的レスポンスには`Cache-Control: private, no-store`を送信し、匿名レスポンスはCookieとAuthorizationに応じて区別することで、共有キャッシュを介したユーザー間のデータ漏洩を防止する。

ただし、プロジェクトは管理者が先にアップグレードを完了できるよう、一部のテストを当面非公開としており、攻撃の詳細もまだ開示していない。そのため現時点では、各問題が悪用可能となる条件や深刻度を判断することは難しい。この点は、モデルによる監査が探索範囲の拡大には適している一方で、脅威モデリング、人間によるコードレビュー、回帰テスト、責任ある開示プロセスの代替にはならないことも示している。

出典

  1. Datasette 1.0a39 and 0.65.4 security releases
  2. Datasette 1.0a39 and 0.65.4 security releases
  3. Datasette changelog — 1.0a39