All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sonar.plugins.secrets.configuration.google-api.yaml Maven / Gradle / Ivy

provider:
  metadata:
    name: Google Workspace
    category: Cloud Collaboration
    message: Make sure this Google API Key is either secured or revoked, changed, and removed from the code.
  detection:
    pre:
      reject:
        paths:
          - "**/GoogleService-Info.plist"
          - "**/google-services.json"
          - "**/google-services.*.json"
      include:
        content:
          - "AIza"
    post:
      patternNot:
        - "(\\w)\\1{5}"
        - "(?i)(s|ex)ample"
  rules:
    - id: google-api-keys
      rspecKey: S6334
      metadata:
        name: Google API Keys
      detection:
        matching:
          pattern: "\\b(AIza[0-9A-Za-z_\\-]{35})\\b"
          context:
            matchEach:
              # This regex aims to roughly trim out secrets related to these platforms
              - matchNot:
                  patternAround:
                    pattern: "(?i)firebase|maps\\.googleapis\\.com"
                    maxCharDistance: 250
              - matchNot:
                  patternAround:
                    pattern: "(?i)firebase_url"
                    maxLineDistance: 100
                # This regex aims to trim out secrets assigned to variables containing these names.
              - matchNot:
                  patternAround:
                    pattern: "(?i)\
                      com\\.google\\.android\\.(?:maps\\.v2|geo)\\.API_KEY\
                      |google[_\\W]?maps?|maps?[_\\W]?(?:api[_\\W]?)?key\
                      |https://www\\.google\\.com/maps/embed/v1/place\
                      "
                    maxCharDistance: 100
      examples:
        - text: |
            # Noncompliant code example
            props.set("google-api-key", "AIzaf4Six4MjGwxvkarrf1LPUaCdyNSjzsyIoRI")
          containsSecret: true
          match: AIzaf4Six4MjGwxvkarrf1LPUaCdyNSjzsyIoRI

        - text: |
            # Compliant solution
            props.set("google-api-key", System.getenv("GOOGLE_API_KEY"))
          containsSecret: false

        - text: |
            
            
          containsSecret: false

        - text: |
            # Multiple false positives
            "google_maps_and_places_api_key": "AIzaSyAJN-eCsoSpVO9ckb1TRy4edZLgiTQPlLS",

            # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            const GOOGLE_MAPS_API_KEY = 'AIzahiaFcxjkE6qUn3twHXxjnSOKbCvb6PocyAS';

            # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            export const GOOGLE_MAP_API_KEY = 'AIzabKq1uhRsku-SR2ST0gVuyEANVSbMdesdkTB'

            # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            export const defaultGoogleMapProviderSettings: GoogleMapProviderSettings = {
              gmApiKey: 'AIzaSyDowE5TTg8Nc2Iw398xwbQxzjd7kaGPcxS',
              gmDefaultMapType: GoogleMapType.roadmap
            };

            # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            google.charts.load('current', {
                packages: ['line', 'corechart', 'geochart'],
                mapsApiKey: 'AIzaSyD-MaWoWkM77rQ2BYZSFk-MePe90tjSnXu'
            });

            # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            mapKey="AIzaSyjHGRhXdz_WJOd_ExAnB3tThCLj_e9gUds"
          containsSecret: false

        - text: |
            

            
          fileName: AndroidManifest.xml
          containsSecret: false

        - text: |
            ...
            "api_key": [
              {
                "current_key": "AIzaZ3Tdlm9iyHRIJ8goVTqCFQxuSaFBG3dZDvk"
              }
            ],
            ...
          fileName: google-services.json
          containsSecret: false

        - text: |
            # Google Maps API keys are not secret
            link="https://maps.googleapis.com/maps/api/"
            # This Is more than 250 charactersXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            props.set("google-api-key", "AIzaf4Six4MjGwxvkarrf1LPUaCdyNSjzsyIoRI")
          containsSecret: true
          match: AIzaf4Six4MjGwxvkarrf1LPUaCdyNSjzsyIoRI

        - text: |
            # Google Maps API keys are not secret
            
          containsSecret: false

        - text: |
            android:value="AIzaSyCis4NzxMw1aJyvUIrjGILjPkSdxrRfof4"
          containsSecret: true
          match: AIzaSyCis4NzxMw1aJyvUIrjGILjPkSdxrRfof4
        - text: |
            android:value="AIzaSyCis4NzxMw1aJyvUIrjGfof4",
            // extra characters before
            android:value="KatitioAIzaSyCis4NzxMw1aJyvUIrjGILjPkSdxrRfof4",
            // extra characters after
            android:value="AIzaSyCis4NzxMw1aJyvUIrjGfof4abc"
          containsSecret: false
        - text: |
            // placeholders
            android:value="AIzaSyCe9XJjn78vch---EXAMPLE---SQFBe20s"
            android:value="AIzaSyHqGowa85aImLDP7-sd7gcGlgKnuxxxxxx"
            android:value="AIza00000000000000000000000000000000000"
          containsSecret: false
        - text: |
            const (
              firebaseAPIKey = "AIzaSyCis4NzxMw1aJyvUIrjGILjPkSdxrRfof4"
              tokenURL       = "https://securetoken.googleapis.com/v1/token?key=" + firebaseAPIKey

              EnvVarCQAPIKey = "CQ_API_KEY"
            )
          containsSecret: false
        - text: |
            "project_info": {
              "firebase_url": "https://xx-zzzzz.firebaseio.com"
            },
            # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            "client": [
              {
                "api_key": [
                  {
                    "current_key": "AIzaf4Six4MjGwxvkarrf1LPUaCdyNSjzsyIoRI"
                  }
                ],
          containsSecret: false




© 2015 - 2025 Weber Informatics LLC | Privacy Policy