🧠 Lagune の専門知識は、特定の分野に絞った、言語に依存しないセキュリティの知識モジュールです。必要なときだけ読み込まれ、デフォルトで読み込まれることはありません。専門知識はコマンドではありません。プロジェクトのカタログとは、そのプロジェクトが使う専門知識の集まりで、プロジェクトの カテゴリ に属する組み込みの専門知識と、プロジェクト独自の専門知識からなります。detect フェーズと verify フェーズは実行中にこれらを参照します。また、いつでも自分で直接読み込むこともできます。
- 概要
- 仕組み
アクセス制御
許可された範囲のことだけを閲覧・操作できるようにし、リンクや ID を書き換えるだけで他人のデータや管理者専用の操作に届いてしまうことを防ぎます。
npx lagune read catalog access-controlAPI エンドポイント
アプリが外部に公開している入り口をチェックし、見知らぬ相手からのリクエストで非公開のデータを引き出されたり、本来できないはずの操作を実行されたりしないようにします。
npx lagune read catalog api-endpointブラウザー
訪問者のブラウザーで動く部分を守り、攻撃者がコードを注入してログイン情報を盗んだり、ユーザーが見る画面やクリックを乗っ取ったりできないようにします。
npx lagune read catalog browserC / C++
攻撃者にプログラムをクラッシュさせたり、サーバー上で任意のコードを実行させたりしかねない、低レベルなメモリの誤りを見つけます。
npx lagune read catalog c-cppコンテナー
アプリのパッケージ化とデプロイの方法を見直し、侵入されても被害をその中に封じ込め、マシン全体を攻撃者に明け渡さないようにします。
npx lagune read catalog container認証情報エンドポイント
ログイン、新規登録、パスワードリセットの流れを守り、攻撃者がパスワードを推測したり、アカウントを乗っ取ったり、他人のパスワードをリセットしたりできないようにします。
npx lagune read catalog credential-endpoint暗号
機密データを正しく暗号化し、パスワードやトークン、個人情報が漏えいしても読み取られないようにします。
npx lagune read catalog cryptoCSV
エクスポートするスプレッドシートを堅牢化し、ダウンロードしたファイルを開いた人のコンピューターで有害なコマンドがひそかに実行されるおそれを大きく減らします。
npx lagune read catalog csv.NET
攻撃者にサーバー上で任意のコードを実行させかねない、.NET アプリ特有のセキュリティ上の落とし穴を扱います。
npx lagune read catalog dotnetフェデレーション
"Google や Microsoft などでサインイン"する仕組みを堅牢化し、攻撃者がユーザーになりすましたり、他人のアカウントに入り込んだりするのを大幅に難しくします。
npx lagune read catalog federationGo
Go アプリ特有のセキュリティ上の落とし穴、特に実際のトラフィック下で表面化する微妙なバグを扱います。
npx lagune read catalog goHTTP リクエスト
Web リクエストごとに届くデータを検査し、隠れた入力や悪意のある入力でアプリが誤った動作をしないようにします。
npx lagune read catalog http-requestインフラストラクチャ
Dockerfile、Terraform、CI ワークフローなど、アプリをビルド・デプロイするファイルを見直し、1 つの甘い設定で環境全体がさらされないようにします。
npx lagune read catalog infraインタープリター
ユーザーの入力がコマンドとして実行されるのを防ぎ、フォームの入力欄やアップロードを通じて攻撃者の命令がサーバーで実行されないようにします。
npx lagune read catalog interpreterJava
攻撃者にサーバー上で任意のコードを実行させかねない、Java アプリ特有のセキュリティ上の落とし穴を扱います。
npx lagune read catalog javaJavaScript
信頼できないコードの実行から、読むべきでないファイルの読み取りまで、JavaScript と Node アプリ特有のセキュリティ上の落とし穴を扱います。
npx lagune read catalog javascriptLLM
AI モデルを使った機能を守り、巧妙な言い回しのメッセージにだまされて AI がデータを漏らしたり、接続されたツールを悪用したりしないようにします。
npx lagune read catalog llmネットワーク
アプリがほかのサービスとどう通信しているかをチェックし、だまされて攻撃者の管理下にあるものを取得したり信頼したりしないようにします。
npx lagune read catalog networkパス
攻撃者がサーバー上のファイルを渡り歩くのを防ぎ、ファイル名を操作して非公開のファイルを読んだり、重要なファイルを上書きしたりできないようにします。
npx lagune read catalog path決済
購入手続きと請求を堅牢化し、価格の改ざん、支払いの回避、課金の再実行を大幅に難しくします。
npx lagune read catalog paymentPHP
攻撃者に任意のコードを実行されたり、ログインを回避されたりしかねない、PHP アプリ特有のセキュリティ上の落とし穴を扱います。
npx lagune read catalog phpPython
Python アプリ特有のセキュリティ上の落とし穴、特に攻撃者のコードを実行しかねない、信頼できないデータの読み込みを扱います。
npx lagune read catalog python正規表現
テキストのチェックを堅牢化して効率を保ち、悪意のある入力で負荷をかけてアプリを固まらせることを大幅に難しくします。
npx lagune read catalog regexRuby
Ruby アプリ特有のセキュリティ上の落とし穴、特に攻撃者のコードを実行しかねない、信頼できないデータの読み込みを扱います。
npx lagune read catalog rubyRust
Rust アプリ特有のセキュリティ上の落とし穴、特にメモリを破壊したりプログラムをクラッシュさせたりしかねない unsafe なコードを扱います。
npx lagune read catalog rustシークレット
パスワード、API キー、トークンをソースコードに含めないようにし、共有したリポジトリや流出したビルドから攻撃者の手に渡らないようにします。
npx lagune read catalog secretsサーバーレス
クラウド関数とその権限を見直し、1 つの関数が悪用されて本来よりはるかに広い範囲に手が届かないようにします。
npx lagune read catalog serverlessSQL
アプリとデータベースのやり取りを守り、細工された入力によって、本来触れるはずのないデータを読まれたり、変更・削除されたりしないようにします。
npx lagune read catalog sqlSupabase
Supabase のバックエンドを厳重に保護し、データベースのルールが確実に機能し、シークレットキーが外部に公開されないようにします。
npx lagune read catalog supabase通信
通信を堅牢化して暗号化された接続でデータをやり取りし、ユーザーとアプリの間で盗み見られたり改ざんされたりすることを大幅に難しくします。
npx lagune read catalog transportアップロード
ファイルのアップロードを堅牢化し、偽装したファイルでコードを実行したり、データを上書きしたり、ストレージを埋め尽くしたりすることを大幅に難しくします。
npx lagune read catalog uploadXML
アプリによる XML データの読み込みを堅牢化し、細工されたファイルでサーバーのファイルが漏えいしたり、アプリが停止したりするおそれを大きく減らします。
npx lagune read catalog xml自分で実行する
専門知識を直接使うには、エージェントに read catalog <name> で読み込むよう頼み、同じプロンプトにタスクを書きます。すると、その知識が依頼した内容に生かされます。どんなプロンプトでも使え、Lagune のフローと関係のないプロンプトでも構いません。
たとえば、Python で安全な RegExp のコレクションを生成する、自由形式のプロンプトを直接書く場合:
`npx lagune read catalog regex` で regex の専門知識を読み込んでから、@src/utils/regex.py にメールアドレスとユーザー名を検証する正規表現のコレクションを作成してください。
この場合、決定論的なフックで各 RegExp に ReDoS の危険がないかをテストし、安全なものだけを残して、次のような結果を生成します:
import re
EMAIL = re.compile(r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$")
USERNAME = re.compile(r"^[a-zA-Z0-9_]{3,20}$")
def is_email(value: str) -> bool:
return EMAIL.match(value) is not None
def is_username(value: str) -> bool:
return USERNAME.match(value) is not None
devina.io/redos-checker で、パターンを自分でテストできます。
組み込みの専門知識
組み込みの専門知識は カテゴリ ごとにまとめられています。Lagune に同梱されているのは次のとおりです:
| 専門知識 | カテゴリ | 対象 |
|---|---|---|
regex | owasp | ReDoS:細工された入力で処理が爆発的に重くなるパターン。 |
network | owasp | SSRF とリダイレクト:ユーザーが指定する取得先やリダイレクト先。 |
interpreter | owasp, lovable | コードインジェクション:eval、動的な include、名前によるディスパッチ。 |
sql | owasp | リレーショナルデータベース:インジェクション、ORM の生クエリ呼び出し、権限、データベースエンジンから到達できる範囲。 |
path | owasp | ファイルシステムのパス:パストラバーサル、ヌルバイト、NTFS のストリーム、不正なファイルの配置。 |
upload | owasp | ファイルアップロード:種類とシグネチャ、悪意のある内容、保存先、制限。 |
access-control | owasp, lovable | 認証・認可・セッション:IDOR、マスアサインメント、テナント、セッション。 |
credential-endpoint | owasp, lovable | 推測攻撃とボット:総当たり攻撃、パスワードスプレー、リスト型攻撃、スロットリング。 |
federation | owasp | トークンの信頼性:OAuth/OIDC、SAML、JWT の検証、QR ログイン。 |
http-request | owasp | リクエストの出所:CSRF、CORS の設定ミス、偽装されたクライアント IP。 |
transport | owasp | 通信経路のセキュリティ:TLS の設定、HTTPS と平文通信、HSTS、証明書ピンニング。 |
crypto | owasp, lovable | 保存データの暗号化:脆弱なアルゴリズムや独自アルゴリズム、CSPRNG、鍵管理。 |
secrets | owasp, lovable | ハードコードされた認証情報:ソースコードに直接書かれたキー、トークン、パスワード。 |
api-endpoint | owasp | REST 以外の API:GraphQL、gRPC、WebSocket の認可、DoS、スキーマ。 |
payment | owasp, lovable | 決済フロー:サーバー側での決済ゲートウェイの検証、署名付きコールバック、冪等性。 |
xml | owasp | XML の解析:XXE、外部エンティティ、Billion Laughs 型のエンティティ展開。 |
csv | owasp | 数式インジェクション:=/+/-/@ で始まるスプレッドシートのセル。 |
container | owasp, infra | コンテナーの設定:root での実行、ケーパビリティ、ソケットのマウント、イメージの堅牢化。 |
infra | infra | Infrastructure as Code:Terraform、Dockerfile、GitHub Actions。 |
serverless | owasp, infra, lovable | FaaS の関数:最小権限の IAM、イベント入力、コンテキスト、シークレット。 |
llm | ai, lovable | AI/LLM のリスク:プロンプトインジェクション、AI に与える権限、RAG、MCP、出力。 |
supabase | lovable | Supabase のバックエンド:デフォルトで無効な RLS、AI が誤って生成したポリシー、キーの仕組み。 |
browser | javascript, lovable | クライアント側のリスク:XSS、CSP、フレームへの埋め込み、ストレージなど。 |
javascript | javascript | 言語レベルのリスク:RCE、プロトタイプ汚染など。 |
python | python | 言語レベルのリスク:pickle による RCE、クラス汚染、-O など。 |
rust | rust | unsafe の健全性:safe な呼び出し元から生じる UB、transmute、オーバーフロー。 |
java | java | デシリアライズとモバイルコード:readObject のチェーン、オブジェクトの乗っ取り。 |
ruby | ruby | デシリアライズと open:Marshal や YAML によるオブジェクトの復元、パイプの特殊な挙動。 |
php | php | 型の相互変換と unserialize:マジックハッシュ、POP チェーン。 |
go | go | typed nil とデータ競合:nil != nil、メモリを共有する goroutine。 |
c-cpp | c-cpp | フォーマット文字列:printf(user_input)、%n による任意アドレスへの書き込み。 |
dotnet | dotnet | プラットフォームレベルのリスク:BinaryFormatter による RCE、@Html.Raw、列挙型の検証漏れ。 |
組み込みの知識のほとんどは OWASP をもとにまとめたものです。各専門知識と、その元になった OWASP の正式な攻撃ページや Cheat Sheet ページとの対応の全体は、OWASP の出典 を参照してください。一部の技術スタック固有のモジュールは、OWASP ではなくベンダー自身のガイダンスをもとにしています。たとえば supabase は、Supabase のドキュメントと CVE-2025-48757 に基づいています。
独自の専門知識
組み込みの専門知識は、知識ファイルを 1 つとインデックスの行を 1 つ追加するだけで増やせ、新しいコマンドは必要ありません。独自の専門知識も同じ方法で、/lagune-specialize を使って追加できます。記事やトピックを指定すると、それをもとに新しい専門知識をまとめてプロジェクトに加えます。ファイルは .lagune/catalog/ の下に置かれ、そのエントリは .lagune/configs.json に記録されます。独自の専門知識はカテゴリにかかわらず常にカタログに含まれ、組み込みと同じ名前のものは、組み込みのほうより優先されます。
detect フェーズや verify フェーズは、ある専門知識が扱う状況に出会うと、read catalog <name> でその専門知識を自ら読み込みます。これはフェーズの一部として自動的に行われるため、手作業で読み込む必要はありません。
使える専門知識を調べる
ターミナルでプロジェクトのカタログを一覧表示すると、専門知識が 1 行に 1 つずつ、タグと一緒に表示されます:
npx lagune read catalog
# regex: Regular Expression [required]
# network: Requests, Webhook, URL Fetch, Socket, IMDS, Redirect
# interpreter: Evaluator, Sink, Shell, Dynamic Execution
# ...
[required] の付いた専門知識は、作業の内容にかかわらず常に適用されます。一覧にどの組み込みの専門知識が含まれるかは、プロジェクトの カテゴリ によって決まります。
すべてのチェックをデフォルトで実行するのではなく、プロジェクトの実態に合った知識だけを取り込みます。
よくある質問
特定の分野に絞った、言語に依存しないセキュリティの知識モジュールです。必要なときだけ読み込まれ、デフォルトで読み込まれることはありません。エージェントのスキルとは違い、コマンドではありません。
プロジェクトが使う専門知識の集まりで、プロジェクトのカテゴリに属する組み込みの専門知識と、プロジェクト独自の専門知識からなります。カテゴリが記録されていない間は、OWASP だけを使います。
いいえ。プロジェクトの実態に合わせて、必要なときだけ読み込まれます。
タスクと同じプロンプトで、エージェントに npx lagune read catalog <name> を実行するよう依頼してください。
