ShipExit

検査項目

すべての案件で同じ項目を使います(版 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

自己申告の数字は割り引いて見られます。連携すると「売上検証済み」のバッジが付きます。

自動検査であり、安全を保証するものではありません。