カスタムSAST & IaCルールを追加する
はじめに
これらのカスタムルールを使用すると、コードベース内の特定のリスク、特にお使いの環境に特に関連するリスクをAikidoにスキャンさせることができます。これにより、より広範なSASTまたはIaCルールでは見落とされる可能性のある脆弱性を検出できます。
ステップバイステップガイド
この機能は、ワークスペースでデフォルトでは有効になっていません。有効にするにはAikidoにお問い合わせください。
ステップ1: リポジトリチェックページに移動します。
ステップ2: SASTセクションの「Create Custom Rule」をクリックします

ステップ3: ルールについて以下の詳細を入力します:
- Opengrepルール: Aikidoが検索するルールを定義します。ヒント: 保存する前に、Opengrep playground を使用してルールの有効性をテストしてください。
- Title: 識別しやすいようにルールに名前を付けます。
- TL;DR: 問題の簡潔な説明を入力します。これはサイドバーに表示されます。
- How to fix it: この問題を修正する最善の方法をチームに伝えます。
- Language: プログラミング言語を指定します。
- Aikido Score: メインフィードでの問題報告の優先度レベルを設定します。

ステップ4: ルールの設定に問題がなければ、「Save」をクリックしてAikidoのSASTチェックに追加します。カスタムルールが有効になり、今後のスキャンで自動的に適用されます。
補足情報
- 全体として、Opengrepルール内のlanguage属性が常に優先されます。これは、すべての言語とファイルに一度に適用する必要があるカスタムルールを実装したい場合に便利です。
- IaCルールを作成したい場合は、言語をyaml/terraform/...に設定することで作成できます。
例
-
SASTルール: JavaScriptで脆弱なMD5ハッシュアルゴリズムが使用されていないかを検索します。
rules: - id: CUSTOM-RULE-XXXX message: It looks like MD5 is used languages: - javascript paths: include - "*.js" severity: WARNING pattern-either: - pattern: $CRYPTO.createHash("md5") - pattern: CryptoJS.MD5(...) -
IaCルール: 危険な可能性のあるLambda関数を検出するためのカスタムルールです。
rules: - id: CUSTOM-RULE-530 languages: - hcl severity: WARNING message: > A Lambda function was found with the "type:monitored" tag, but without a "service" tag. patterns: - pattern: |- resource "aws_lambda_function" $ANYTHING { ... tags = {..., type = "monitored", ...} } - pattern-not: |- resource "aws_lambda_function" $ANYTHING { ... tags = {..., service= "...", ...} }