メインコンテンツまでスキップ

これは何ですか?

SPECA は、書かれたコードが「仕様どおりに動いているか」を自動で確認するツールです。

従来のコード診断ツールとの違い

静的解析やリンター (eslint など) は「コードの書き方のルール」をチェックします。「変数の型は正しいか」「使っていない変数がないか」といった類です。これらは便利ですが、「仕様で定められた振る舞い」までは検証しません。

SPECA は逆方向から考えます。まず仕様書を読んで「ここでこういう処理が必要」と判定し、実装されているコードと照らし合わせて「ズレ」を探します。コードの見た目ではなく、仕様が要求することを出発点にする点が異なります。

仕様を基点とする発想

たとえば、あるシステムの仕様に「ユーザー認証の後にのみ、機密データへのアクセスを許可する」と書かれていたとします。SPECA は以下の手順で確認します。

  1. 仕様を読んで「これは重要なセキュリティ要件だ」と認識する
  2. コードのどこがこの要件を実装しているかを探す
  3. すべての実行経路で「認証 → データアクセス」の順が守られているか証明してみる
  4. 証明できない部分 (穴) があれば、それを脆弱性の候補として報告する

想定ユーザー

  • セキュリティ監査を担当している: 仕様書とコードを手作業で突き合わせる手間を減らしたい
  • バグバウンティに参加している: 大規模なコードベースから実装の穴を効率よく見つけたい
  • 自分たちの開発品質を確かめたい: 要件どおりに実装されているか定期的に確認したい

次のステップ

仕組みをもう少し詳しく知りたい場合は、「どうやって動く?」へ進んでください。