検査項目
すべての案件で同じ項目を使います(版 2026.11-1)。結果は「合格・不合格・対象外・未検証」の4つで示し、未検証を合格に見せません。土台は OWASP ASVS 5.0 のレベル1で、AI 製アプリに多い不備を足しています。
秘密鍵・パスワードがコードに入っていないか セキュリティ・SEC-SECRETS
API キーやパスワードがリポジトリに残っていると、コードを見た人が使えてしまいます。
ASVS: V13 設定(秘密情報の管理)
.env などの設定ファイルをコミットしていないか セキュリティ・SEC-ENV-COMMITTED
.env は秘密の値を入れる場所です。リポジトリに入れると漏えいと同じです。
ASVS: V13 設定
使っているライブラリに既知の脆弱性がないか セキュリティ・SEC-DEPS
CVE は公開済みの脆弱性の番号です。古い版のライブラリには既知の穴があります。
ASVS: V15 安全なコーディングと構成(依存関係)
危ない書き方(SQL の組み立て・eval など)がないか セキュリティ・SEC-SAST
静的解析で、攻撃に使われやすい典型的な書き方を探します。
ASVS: V1 エンコーディングとサニタイズ
Supabase のテーブルに行の権限(RLS)が付いているか セキュリティ・SEC-SUPABASE-RLS
RLS は「その人が読める行だけ返す」仕組みです。付いていないと、誰でも全員のデータを読めます。
ASVS: V8 認可
強い権限の鍵(service_role)を画面側に渡していないか セキュリティ・SEC-SUPABASE-SERVICE-KEY
service_role は RLS を無視できる管理用の鍵です。ブラウザやアプリに入れると全データが読み書きできます。
ASVS: V8 認可
Firebase のルールが誰でも読み書きできる設定になっていないか セキュリティ・SEC-FIREBASE-RULES
Firestore・Storage のルールが if true だと、ログインしていない人も読み書きできます。
ASVS: V8 認可
AI の API キーを画面側に置いていないか セキュリティ・SEC-LLM-KEY-CLIENT
OpenAI・Anthropic などの鍵をブラウザやアプリに置くと、誰でも抜き出して使えます(請求はあなたに来ます)。
ASVS: V13 設定
API の入口に、ログインの確認がない所はないか(疑い) セキュリティ・SEC-AUTHZ
ログインや持ち主の確認をしていない API は、他人のデータに触れる入口になります。自動の検査なので「疑い」です。
ASVS: V8 認可
README にセットアップの手順があるか 保守しやすさ・MNT-README
買い手が自分の環境で動かせるかは、まず README で決まります。
必要な環境変数の一覧(.env.example)があるか 保守しやすさ・MNT-ENV-EXAMPLE
どの環境変数を入れれば動くかが分からないと、移管後に動かせません。
ライブラリの版を固定するファイル(ロックファイル)があるか 保守しやすさ・MNT-LOCKFILE
ロックファイルがないと、同じコードでも入るライブラリの版が変わり、動かなくなることがあります。
自動テストがあるか 保守しやすさ・MNT-TESTS
テストがあると、買い手が手を入れたときに壊れていないかを確かめられます。
ビルド・起動の方法が決まっているか(scripts・Dockerfile など) 移管しやすさ・TRF-SETUP
起動の手順がコードに書いてあると、移管の作業が短くなります。
接続先の URL を直書きしていないか 移管しやすさ・TRF-HARDCODED
Supabase・Firebase などの接続先がコードに直書きだと、移管先の環境に差し替えるたびに書き換えが要ります。
使っている外部サービスを把握できたか 移管しやすさ・TRF-STACK
ホスティング・DB・認証・課金のサービスごとに、移管の手順が違います。
売却に差し支えるライセンス(GPL・AGPL など)のライブラリがないか 移管しやすさ・TRF-OSS-LICENSE
一部のライセンスは、組み込んだアプリのコード公開を求めます。売却や買収後の運用に影響します。
売上・ダウンロードを連携で検証しているか 検証済みの数字・MET-VERIFIED
自己申告の数字は割り引いて見られます。連携すると「売上検証済み」のバッジが付きます。
自動検査であり、安全を保証するものではありません。