OPEN SOURCE
DETECTION ENGINE
Trace.
AIは書ける。
Traceは[読める]。
AI が書いたコード特有の失敗パターンを検出するオープンソースの静的解析ツール。
ハルシネーション。認証情報。無視された例外。サニタイズ不全。
Traceは、AIが書いたコードをこう読む。
47行の FastAPI ファイルに対するライブスキャン。検出エンジンは6言語24パターンで動作する。各問題に重要度、行番号、一行の説明を付与する。
本番コードの半分を、いまAIが書いている。
しかし、それを守るツールは人間のバグのために作られた。迷い、確認し、typoを残す人間のためのもの。AIは自信満々に書く。その自信こそが攻撃面だ。
AI生成コードに脆弱性が含まれる割合Veracode
AIコードに脆弱性を発見した組織の割合CSA
2025年にコミットされたAI書記コードの割合SonarSource
事故は、すでに起きている。
この3ヶ月の事件を3つ。機密扱いではない、特殊でもない。ありふれた AI 補助開発での、ありふれた大事故。
150万件のAPIキーが露出。
創業者は一行もコードを書いていなかった。AIがSupabaseのデータベースをpublic read/write権限で構築し、誰もそれを確認しないまま本番へ公開した。
メンテナアカウント経由のサプライチェーン攻撃。
改ざんされたパッケージは検知までに45万回ダウンロードされた。影響は数時間で下流のアプリに波及した。
Slopsquattingは340パッケージに到達。
大規模言語モデルがハルシネーションしがちな名前に合わせて、攻撃者がタイポスクワットを仕込んでいる。オートコンプリートひとつで任意コードが実行される距離にある。
静かに終わるのは、あなたのサービスかもしれない。
有名な事件ではない。YC のスタートアップでもない。ここに書かれているのは、AIが書いたコードをそのまま出荷した個人開発者に、実際に起きていることだ。
6週間の週末を使って作ったプロダクトに、もうユーザーはいない。
— Trace は、commit する前に SQL インジェクションを検出する。
お金は戻ってくる。でも「ちゃんとした開発者」という評判は、もう戻らない。
— Trace は、ライブキーを含む commit を、拒否する。
ユーザー全員のパスワードが、流出した。信用は、ゼロに戻った。
— Trace は、初日にそのimport を止める。存在しない npm パッケージは、存在しない。
6言語、24パターン。
v0.7.0はPython、JavaScript、TypeScript、Go、Rust、Rubyの6言語で24の検出パターンを提供する。すべてオープンソース。AIがコードを壊す方法のうち、人間がやりがちでない方向だけを捕らえる。
npmやPyPIに存在しないパッケージのimport
存在しないメソッドを自信満々に呼ぶ
APIキー、トークン、接続文字列
anyの乱用、genericsの無効化
空のcatch、無視されたPromise
SQLインジェクション、XSS、コマンド実行
構文は通るが絶対に落ちないテスト
AIが幻覚した可能性のある不審なimportパス
戻り値のerrorを _ で明示的に破棄
fmt.Sprintfや文字列連結で組み立てたSQL
GoソースコードのAPIキー・トークン・認証情報
実行時にパニックする過剰な.unwrap()使用
安全性保証を迂回するunsafeブロック
実行時パニックするtodo!()/unimplemented!()
Result<T, E>を使うべき箇所のpanic!()
Strong Parameters未使用のActiveRecord一括代入
SQLクエリ内の文字列補間
例外を黙って無視するrescueブロック
動的入力でのeval/send呼び出し
async 呼び出しを await なしで代入。値は Promise であって解決済みの結果ではない
Math.random() や random.random() をセキュリティ目的に使用
eval()、new Function()、exec() に変数を渡している。コード注入の攻撃経路
非テストコードに http://localhost や http://127.0.0.1 がハードコード
os.environ["X"] や process.env.X をフォールバックなしで直接代入
AIがコードを書く。それをTraceが読む。
プロンプトを選ぶと、AI生成コードが表示される。そのコードをサーバー側のTraceが解析する。人間が見逃す脆弱性を検出する。
使い方。
Trace の使い方は3通り。手間の少ない順に並べてある。あなたがコードを書く場所に合うものを選べばいい。
METHOD 01 · ブラウザ
インストールなし。登録なし。
tracecheck.dev を開く。
コードを貼って、Check を押す。
だいたい 400ms で結果が出る。
METHOD 02 · コマンドライン
Node.js が必要です。
$ npx trace-core your-file.pynpx は Node.js に含まれている。まだ入れていなければ、nodejs.org から取得できる。
METHOD 03 · CI に組み込む
問題のある commit を止める。
# .github/workflows/check.yml
name: Trace
on: [push, pull_request]
jobs:
trace:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npx trace-core src/GitHub Actions の他、GitLab / Bitbucket / Jenkins でも同じように動く。検出があれば workflow は exit 1 で終わる。
6言語、24パターン。
言語固有のパターンで完全にカバー。さらに多くの言語を追加予定。
Coming soon: Java · PHP · Dart
3つの入口。
CIや pre-commit hook に。npm経由。
$ npx trace-core your-file.py