日本語

カスタム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= "...", ...}
               }