コンテンツにスキップ

カスタム SAST・IaC ルールを追加する

これらのカスタムルールを使用すると、コードベース内の特定のリスク、特に自社の環境に特有のリスクをAikidoにスキャンさせることができます。これにより、より汎用的なSASTやIaCルールでは見落とされる可能性のある脆弱性を検出できます。

Step 1: repositories checksページに移動します。

Step 2: SASTセクションで「Create Custom Rule」をクリックします。

カスタムセキュリティ・コンプライアンスルールを作成するオプションがあるリポジトリチェックダッシュボード

Step 3: ルールについて以下の詳細を入力します。

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

Step 4: ルールの設定に問題がなければ、「Save」をクリックしてAikidoのSASTチェックに追加します。カスタムルールが有効化され、以降のスキャンで自動的に適用されます。

  • 全体として、Opengrepルール内のlanguage属性が常に優先されます。これは、すべての言語・ファイルに一括で適用する必要があるカスタムルールを実装したい場合に役立ちます。
  • IaCルールを作成したい場合は、languageをyaml/terraform/…などに設定することで実現できます。
  • SAST Rule: 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 Rule: 危険な可能性のある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= "...", ...}
    }