Agent Skills by ALSEL
Anthropic ClaudeEC・マーケティング⭐ リポ 0品質スコア 50/100

cairo-vulnerability-scanner

Cairo/StarkNetスマートコントラクトを対象に、felt252の算術オーバーフロー、L1-L2メッセージングの問題、アドレス変換の不具合、シグネチャリプレイなど6種類の重大な脆弱性をスキャンします。StarkNetプロジェクトのセキュリティ監査を行う際に使用してください。

description の原文を見る

Scans Cairo/StarkNet smart contracts for 6 critical vulnerabilities including felt252 arithmetic overflow, L1-L2 messaging issues, address conversion problems, and signature replay. Use when auditing StarkNet projects.

SKILL.md 本文

Cairo/StarkNet 脆弱性スキャナー

1. 目的

StarkNet 上の Cairo スマートコントラクトをシステマティックにスキャンして、算術、クロスレイヤーメッセージング、暗号操作に関連するプラットフォーム固有のセキュリティ脆弱性を検出します。このスキルは Cairo/StarkNet エコシステムに固有の 6 つの重大な脆弱性パターンを検出します。

2. このスキルを使用する場面

  • StarkNet スマートコントラクト (Cairo) を監査する場合
  • L1-L2 ブリッジ実装をレビューする場合
  • StarkNet アプリケーション起動前のセキュリティ評価
  • クロスレイヤーメッセージハンドリングを検証する場合
  • 署名検証ロジックをレビューする場合
  • L1 ハンドラー関数を評価する場合

3. プラットフォーム検出

ファイル拡張子とインジケーター

  • Cairo ファイル: .cairo

言語/フレームワークマーカー

// Cairo コントラクトインジケーター
#[contract]
mod MyContract {
    use starknet::ContractAddress;

    #[storage]
    struct Storage {
        balance: LegacyMap<ContractAddress, felt252>,
    }

    #[external(v0)]
    fn transfer(ref self: ContractState, to: ContractAddress, amount: felt252) {
        // Contract logic
    }

    #[l1_handler]
    fn handle_deposit(ref self: ContractState, from_address: felt252, amount: u256) {
        // L1 message handler
    }
}

// 一般的なパターン
felt252, u128, u256
ContractAddress, EthAddress
#[external(v0)], #[l1_handler], #[constructor]
get_caller_address(), get_contract_address()
send_message_to_l1_syscall

プロジェクト構成

  • src/contract.cairo - メインコントラクト実装
  • src/lib.cairo - ライブラリモジュール
  • tests/ - コントラクトテスト
  • Scarb.toml - Cairo プロジェクト設定

ツールサポート

  • Caracal: Trail of Bits 製 Cairo 静的解析ツール
  • インストール: pip install caracal
  • 使用方法: caracal detect src/
  • cairo-test: ビルトインテストフレームワーク
  • Starknet Foundry: テストと開発ツールキット

4. このスキルの仕組み

呼び出されると、以下の処理を実行します:

  1. コードベースをスキャン して Cairo ファイルを検索
  2. 各コントラクトを分析 して 6 つの脆弱性パターンをチェック
  3. ファイル参照と深刻度とともに結果を報告
  4. 特定された各問題の修正案を提供
  5. L1-L2 インタラクションをチェック してメッセージング脆弱性を検出

5. 出力例

脆弱性が見つかった場合、次のようなレポートが得られます:

=== CAIRO/STARKNET VULNERABILITY SCAN RESULTS ===

6. 脆弱性パターン (6 パターン)

Cairo/Starknet に固有の 6 つの重大な脆弱性パターンをチェックします。検出パターン、コード例、軽減策、テスト戦略の詳細については、VULNERABILITY_PATTERNS.md を参照してください。

パターン概要:

  1. チェックされない算術演算 ⚠️ 重大 - felt252 の整数オーバーフロー/アンダーフロー
  2. ストレージ衝突 ⚠️ 重大 - ストレージ変数ハッシュの競合
  3. アクセス制御の欠落 ⚠️ 重大 - 機密関数での呼び出し元検証がない
  4. 不適切な Felt252 境界検証 ⚠️ 高 - felt252 範囲を検証していない
  5. 検証されていないコントラクトアドレス ⚠️ 高 - 信頼できないコントラクトアドレスを使用
  6. 呼び出し元検証の欠落 ⚠️ 重大 - get_caller_address() チェックがない

完全な脆弱性パターン、コード例については VULNERABILITY_PATTERNS.md を参照してください。

7. スキャン手順

ステップ 1: プラットフォーム識別

  1. Cairo 言語と StarkNet フレームワークを検証
  2. Cairo バージョンを確認 (Cairo 1.0+ vs レガシー Cairo 0)
  3. コントラクトファイルを特定 (src/*.cairo)
  4. L1-L2 ブリッジコントラクトを識別 (該当する場合)

ステップ 2: 算術安全スイープ

# felt252 の算術使用を検索
rg "felt252" src/ | rg "[-+*/]"

# balance/amount ストレージで felt252 を使用している箇所を検索
rg "felt252" src/ | rg "balance|amount|total|supply"

# u128, u256 を推奨

ステップ 3: L1 ハンドラー分析

#[l1_handler] 関数について:

  • from_address パラメーターを検証
  • アドレス != ゼロをチェック
  • 適切なアクセス制御がある
  • 監視用のイベントを出力

ステップ 4: 署名検証レビュー

署名ベースの関数について:

  • ノンス追跡を含む
  • 使用後にノンスがインクリメント
  • ドメインセパレーターにチェーン ID とコントラクトアドレスを含む
  • 署名をリプレイできない

ステップ 5: L1-L2 ブリッジ監査

コントラクトがブリッジ機能を含む場合:

  • L1 がアドレス < STARKNET_FIELD_PRIME を検証
  • L1 がメッセージキャンセルを実装
  • L2 がハンドラーで from_address を検証
  • 対称的なアクセス制御 L1 ↔ L2
  • 完全なラウンドトリップフローをテスト

ステップ 6: Caracal による静的解析

# Caracal デテクターを実行
caracal detect src/

# 特定のデテクター
caracal detect src/ --detectors unchecked-felt252-arithmetic
caracal detect src/ --detectors unchecked-l1-handler-from
caracal detect src/ --detectors missing-nonce-validation

8. レポート形式

結果テンプレート

## [CRITICAL] L1 ハンドラーでの from_address 未検証

**場所**: `src/bridge.cairo:145-155` (handle_deposit 関数)

**説明**:
`handle_deposit` L1 ハンドラー関数は `from_address` パラメーターを検証しません。任意の L1 コントラクトがこの関数にメッセージを送信でき、意図した L1 ブリッジアクセス制御を回避して任意のユーザーのためにトークンをミントできます。

**脆弱性コード**:
```rust
// bridge.cairo, line 145
#[l1_handler]
fn handle_deposit(
    ref self: ContractState,
    from_address: felt252,  // 検証されていない!
    user: ContractAddress,
    amount: u256
) {
    let current_balance = self.balances.read(user);
    self.balances.write(user, current_balance + amount);
}

攻撃シナリオ:

  1. 攻撃者が悪意のある L1 コントラクトをデプロイ
  2. 悪意のあるコントラクトが starknetCore.sendMessageToL2(l2Contract, selector, [attacker_address, 1000000]) を呼び出し
  3. L2 ハンドラーが送信者をチェックせずにメッセージを処理
  4. 攻撃者が資金をデポジットしないで 1,000,000 トークンを受け取る
  5. プロトコルが無限ミント脆弱性に遭遇

推奨: from_address を認可された L1 ブリッジに対して検証:

#[l1_handler]
fn handle_deposit(
    ref self: ContractState,
    from_address: felt252,
    user: ContractAddress,
    amount: u256
) {
    // L1 送信者を検証
    let authorized_l1_bridge = self.l1_bridge_address.read();
    assert(from_address == authorized_l1_bridge, 'Unauthorized L1 sender');

    let current_balance = self.balances.read(user);
    self.balances.write(user, current_balance + amount);
}

参考資料:

  • building-secure-contracts/not-so-smart-contracts/cairo/unchecked_l1_handler_from
  • Caracal デテクター: unchecked-l1-handler-from

---

## 9. 優先度ガイドライン

### 重大 (即座の修正が必要)
- L1 ハンドラーで from_address が未検証 (無限ミント)
- L1-L2 アドレス変換の問題 (ゼロアドレスへの送金)

### 高 (デプロイ前に修正)
- Felt252 算術オーバーフロー/アンダーフロー (残高操作)
- 署名リプレイ保護の欠落 (リプレイ攻撃)
- L1-L2 メッセージ失敗でキャンセルなし (資金のロック)

### 中 (監査で対応)
- L1-L2 インタラクションの過度な制約 (資金が閉じ込められる)

---

## 10. テスト推奨事項

### ユニットテスト
```rust
#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_felt252_overflow() {
        // 算術エッジケースをテスト
    }

    #[test]
    #[should_panic]
    fn test_unauthorized_l1_handler() {
        // 間違った from_address は失敗する必要がある
    }

    #[test]
    fn test_signature_replay_protection() {
        // 同じ署名を 2 回使用すると失敗する必要がある
    }
}

統合テスト (L1 を含む)

// L1-L2 完全フローをテスト
#[test]
fn test_deposit_withdraw_roundtrip() {
    // 1. L1 でデポジット
    // 2. L2 処理を待つ
    // 3. L2 残高を検証
    // 4. L1 に引き出す
    // 5. L1 残高が復元されたことを検証
}

Caracal CI インテグレーション

# .github/workflows/security.yml
- name: Run Caracal
  run: |
    pip install caracal
    caracal detect src/ --fail-on high,critical

11. 追加リソース


12. クイックリファレンスチェックリスト

Cairo/StarkNet 監査を完了する前に:

算術安全性 (高):

  • balance/amount に felt252 を使用していない (u128/u256 を使用)
  • OR felt252 算術に明示的な境界チェックがある
  • オーバーフロー/アンダーフロー シナリオがテストされている

L1 ハンドラーセキュリティ (重大):

  • すべての #[l1_handler] 関数が from_address を検証
  • from_address が格納された L1 コントラクトアドレスと比較
  • 代替 L1 コントラクトをデプロイしてバイパスできない

L1-L2 メッセージング (高):

  • L1 ブリッジがアドレス < STARKNET_FIELD_PRIME を検証
  • L1 ブリッジがメッセージキャンセルを実装
  • L2 ハンドラーが from_address をチェック
  • 対称的な検証ルール L1 ↔ L2
  • 完全なラウンドトリップフローがテストされている

署名セキュリティ (高):

  • 署名にノンス追跡が含まれている
  • 各使用後にノンスがインクリメント
  • ドメインセパレーターにチェーン ID とコントラクトアドレスを含む
  • 署名リプレイがテストされ、防止されている
  • クロスチェーン リプレイが防止されている

ツール使用:

  • Caracal スキャンが完了し、重大な結果がない
  • ユニットテストがすべての脆弱性シナリオをカバー
  • 統合テストが L1-L2 フローを検証
  • メインネット前にテストネットデプロイを実施

ライセンス: CC-BY-SA-4.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
trailofbits
リポジトリ
trailofbits/skills
ライセンス
CC-BY-SA-4.0
最終更新
不明

Source: https://github.com/trailofbits/skills / ライセンス: CC-BY-SA-4.0

関連スキル

Anthropic ClaudeEC・マーケティング⭐ リポ 6,400

seo-maps

ローカルSEO向けのマップインテリジェンス機能です。ジオグリッドのランク追跡、APIを通じたGBPプロフィール監査、Google・Tripadvisor・Trustpilotなど複数プラットフォームのレビュー分析、Google・Bing・Apple・OSM間のNAP(名前・住所・電話番号)検証、競合他社の半径マッピング、APIデータからのLocalBusinessスキーマ生成が可能です。3段階の機能レベルで対応でき、無料版(Overpass + Geoapify)、DataForSEO(フル機能)、DataForSEO + Google(最大カバレッジ)から選択できます。「maps」「geo-grid」「rank tracking」「GBP audit」「review velocity」「competitor radius」「maps analysis」「local rank tracking」「Share of Local Voice」「SoLV」などのキーワードで利用できます。

by AgriciDaniel
Anthropic ClaudeEC・マーケティング⭐ リポ 6,400

seo-content-brief

セクションごとの文字数、競合スコアリング、キーワード密度ガイダンス、ページタイプテンプレートを含む競争力のあるSEOコンテンツブリーフを生成します。新規ページのブリーフと既存ページの改善ブリーフの両方に対応しています。ユーザーが「コンテンツブリーフ」「ブリーフを作成」「コンテンツアウトライン」「ブログブリーフ」「サービスページブリーフ」「ブリーフ〜」「ライティングブリーフ」「コンテンツプラン」「アウトライン〜」などと言った場合に使用します。

by AgriciDaniel
ALSEL独自Anthropic ClaudeEC・マーケティング

rakuten-seo

楽天市場の商品名・キャッチコピーをSEO最適化するスキル。「楽天SEO」「商品名最適化」「楽天の商品名」「キャッチコピー」「楽天のタイトル」「商品名を直して」「楽天検索対策」など、楽天市場の商品名やキャッチコピーの作成・改善・チェックに関するリクエストで必ずこのスキルを使う。既存の商品名の改善も、ゼロからの作成も対応。あらゆるジャンル(食品・ファッション・化粧品・家電・サプリ・インテリア・ベビー・ペット・業務用など)に対応。 【ALSEL独自スキル】株式会社ALSEL が、19年・5,000社超の EC 支援で得たノウハウをもとに開発したオリジナルスキルです。

by 株式会社ALSEL
ALSEL独自Anthropic ClaudeEC・マーケティング

amazon-seo-jp

Amazon.co.jp商品ページのSEO分析・最適化・自動採点スキル v2.0。 COSMO/Rufus/A10アルゴリズムに基づく採点。セラーセントラル出品レポート(.xlsm)を入力すると、 商品タイトル・箇条書き・検索キーワード・商品説明文を100点満点で採点し、 4項目すべての改善案を日本語で出力する。 トリガー: 「Amazon SEO」「商品ページ採点」「Amazon最適化」 「リスティング改善」「Amazon商品名」「箇条書き改善」 「COSMO対応」「Rufus最適化」「Amazon タイトル」 【ALSEL独自スキル】株式会社ALSEL が、19年・5,000社超の EC 支援で得たノウハウをもとに開発したオリジナルスキルです。

by 株式会社ALSEL
ALSEL独自Anthropic ClaudeEC・マーケティング

rakuten-bulk-control-csv

楽天RMSの一括登録/一括除外/一括更新用CSV(コントロールカラム,商品管理番号 の2列フォーマット)を作成するスキル。商品DL CSV・商品管理画面のコピペ・Excel・PDFなどから商品管理番号を抽出し、Shift-JIS+LF改行で出力する。「一括除外リスト作って」「楽天の除外CSV」「コントロールカラムnで」「2800円以下の商品をdで」「在庫0の商品を一括削除」「商品管理番号抜いてshift-jsで」「このフォーマットで」など、楽天RMSの商品一括処理用CSVを作るタスクで必ずこのスキルを使う。コントロールカラム値(n=新規/d=削除/u=更新)と抽出条件(全件・価格・在庫・販売状態など)をユーザー指示に応じて柔軟に切り替える。 【ALSEL独自スキル】株式会社ALSEL が、19年・5,000社超の EC 支援で得たノウハウをもとに開発したオリジナルスキルです。

by 株式会社ALSEL
ALSEL独自Anthropic ClaudeEC・マーケティング

amazon-a-plus-content-brief

Amazon A+コンテンツの構成・モジュール選定・画像指示・比較表・FAQを設計するスキル。「A+コンテンツ作って」「Aプラス構成」「ブランドストーリー」「比較表つきA+」「A+モジュール選定」「Amazonのページに画像入れたい」「A+のヘッダー画像」「A+コンテンツマネージャー」など、Amazon A+コンテンツの企画・設計・改善のリクエストで必ずこのスキルを使う。ベーシック17モジュール/Premium追加機能/画像サイズ規定/文字数目安/審査リジェクト要因を踏まえて、デザイナーに渡せるブリーフ形式で出力。あらゆるジャンル(家電・コスメ・食品・アパレル・日用品・ベビー・ペット等)に対応。※ブランドストア(マルチページ)の設計は別スキル `amazon-brand-store-planner`、タイトル・bullet改善は `amazon-title-bullet-rewriter-jp`、メイン画像のチェックは `amazon-main-image-checker`。 【ALSEL独自スキル】株式会社ALSEL が、19年・5,000社超の EC 支援で得たノウハウをもとに開発したオリジナルスキルです。

by 株式会社ALSEL
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: trailofbits · trailofbits/skills · ライセンス: CC-BY-SA-4.0