gitlab-secret_detection 0.11.1 → 0.39.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1072 @@
1
+ # rule-set version: 0.21.2
2
+ # Rules are auto-generated. See https://gitlab.com/gitlab-org/security-products/secret-detection/secret-detection-rules for instructions on updating the rules.
3
+ [[rules]]
4
+ id = 'AdafruitIOKey'
5
+ regex = '\baio_[A-Za-z]{4}[0-9]{2}[0-9A-Za-z]{22}\b'
6
+ description = 'Adafruit IO Key'
7
+ title = 'Adafruit IO Key'
8
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
9
+ tags = ['gitlab_blocking']
10
+ keywords = ['aio_']
11
+
12
+ [[rules]]
13
+ id = 'Adobe Client Secret'
14
+ regex = '\b(p8e-)[a-zA-Z0-9]{32}\b'
15
+ description = "An Adobe client secret was detected. Adobe client secrets are used to connect to various API or webhook event based\nservices. Depending on which type of service was defined for a project, a malicious actor with access to the secret can\nuse it to gain access to various APIs or events that may contain sensitive information."
16
+ title = 'Adobe client secret'
17
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nRemediation steps depend on which type of client secret was leaked, please see the following\ntypes of remediation steps below and use the one that applies to the secret that was detected.\n\nOAuth (Server-to-Server):\n\n- Sign in to your account at <https://developer.adobe.com/console>\n- Select the project or \"All projects\" to find the project that is impacted\n- On the left-hand side, under \"Credentials\", select \"OAuth Server-to-Server\"\n- Under \"Client Secret\" select \"Retrieve client secret\"\n- After the table of secrets is visible, below the table, select \"Add new client secret\"\n- After the new secret has been created, find the leaked token value and select the trash icon to remove it\n- Copy the secret value and update all services with the new client secret\n\nOAuth Web App (Event based project):\n\n- Sign in to your account at <https://developer.adobe.com/console>\n- Select the project or select \"All projects\" to find the project that is impacted\n- On the left-hand side, under \"Credentials\", select \"OAuth Web App\".\n- Select \"Retrieve client secret\"\n- Verify this is the leaked secret\n- If this project is configured for events, copy all event details before removing it. You can do this by finding the\n event listed on the right hand side and selecting on it. You should be brought to a dashboard that shows its details\n such as event delivery methods, providers, subscribed events, and connected Credentials.\n- To remove the event, select \"...\" in the event, which is on the right hand side of the project page, above\n \"Connect another service\".\n - Select \"remove\"\n - When prompted, type in the project name and select \"Delete Events Registration\"\n- In the top right-hand corner, select \"Delete credential\"\n - When prompted, type in the project name and select \"Delete Credential\"\n- Re-add the event with the same details as before\n - When prompted to add back the Credentials, be sure to use \"User Authentication\" OAuth\n - Select \"Web App\" for OAuth 2.0 authentication and authorization\n- After the event has been re-added, under \"Credentials\" on left hand side, select \"OAuth Web App\"\n- Select \"Retrieve client secret\"\n- Copy the secret value and update all services with the new client secret\n\nOAuth Web App (API Service based project):\n\n- Sign in to your account at <https://developer.adobe.com/console>\n- Select the project or select \"All projects\" to find the project that is impacted\n- On the left-hand side, under \"Credentials\", select \"OAuth Web App\"\n- Select \"Retrieve client secret\"\n- If this project is configured for API, select the trash icon \"Remove\" to remove the connected product and service.\n - When prompted, enter the project name and select \"Remove API\"\n- In the top right-hand corner, select \"Delete credential\"\n - When prompted, type in the project name and select \"Delete Credential\"\n- Re-add the API with the same details as before\n - Select \"Web App\" for OAuth 2.0 authentication and authorization\n- After the service has been re-added, on the left-hand side under \"Credentials\", select \"OAuth Web App\"\n- Select \"Retrieve client secret\"\n- Copy the secret value and update all services with the new client secret"
18
+ tags = ['gitlab_blocking']
19
+ keywords = ['p8e-']
20
+
21
+ [[rules]]
22
+ id = 'AivenServicePassword'
23
+ regex = '\bAVNS_[0-9A-Za-z_-]{15,123}\b'
24
+ description = 'Aiven Service Password'
25
+ title = 'Aiven Service Password'
26
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
27
+ tags = ['gitlab_blocking']
28
+ keywords = ['AVNS_']
29
+
30
+ [[rules]]
31
+ id = 'AmazonOAuthClientID'
32
+ regex = '\bamzn1\.application-oa2-client\.[a-fA-F0-9]{32}\b'
33
+ description = "An Amazon OAuth Client ID was detected. This credential is part of Amazon's Login with Amazon service\nand is used for OAuth 2.0 authentication flows to allow users to sign in using their Amazon\ncredentials. The Client ID is typically paired with a Client Secret for secure authentication. A\nmalicious actor with access to these credentials could potentially impersonate your application,\nredirect users to malicious sites, or access customer profile data that users have consented to share."
34
+ title = 'AmazonOAuthClientID'
35
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab\ndocumentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo rotate your Amazon OAuth Client ID credentials:\n\n1. Log in to the Amazon Developer Console at <https://developer.amazon.com>\n2. Navigate to Apps & Services > My Apps, or go directly to the Login with Amazon console at\n <https://developer.amazon.com/loginwithamazon/console/site/lwa/overview.html>\n3. Locate the security profile associated with your compromised Client ID from the Security Profile\n Management table\n4. Click on the security profile name, then select \"Web Settings\" from the management options\n5. Click the \"Rotate Secret\" button to generate a new Client Secret (the Client ID remains the same)\n6. Update all applications, services, and configurations that use this Client ID with the new Client\n Secret\n7. Test your applications to ensure they can successfully authenticate with the new credentials\n8. The old Client Secret will expire automatically after 7 days, providing a grace period for\n updates\n\nFor detailed information on managing Amazon OAuth credentials and Login with Amazon security profiles,\nplease see the\n[Login with Amazon Documentation](https://developer.amazon.com/docs/login-with-amazon/documentation-overview.html)."
36
+ tags = ['gitlab_blocking']
37
+ keywords = ['amzn1.application-oa2-client']
38
+
39
+ [[rules]]
40
+ id = 'anthropic_key'
41
+ regex = '\bsk-ant-[a-z]{3}\d{2}-[0-9A-Za-z_-]{94}[0-9A-Za-z_]\b'
42
+ description = "An Anthropic API key was detected. Anthropic keys are used to access generative AI services. Malicious\nactors could use these keys to build up excessive charges to your account."
43
+ title = 'Anthropic API key'
44
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo remediate a leaked Anthropic key, you should delete it from the list of API keys for your organization.\n\n- Sign in to your [Anthropic account](https://console.anthropic.com/)\n- Go to \"API settings\" by selecting your profile icon and then selecting \"API Keys\" or through the Settings tab\n- Identify the leaked API key and select the meatball menu (three horizontal dots) next to the key you want to delete\n- Select \"Delete API Key\"\n - Note: Deleting an API key is a permanent action and cannot be undone\n- Generate a new key by selecting \"Create Key\" and give it a descriptive name\n\nFor more information, please see Anthropic's website: <https://support.anthropic.com/en/articles/8384961-what-should-i-do-if-i-suspect-my-api-key-has-been-compromised>."
45
+ tags = ['gitlab_blocking', 'client_side_sd']
46
+ keywords = ['sk-ant-']
47
+
48
+ [[rules]]
49
+ id = 'AsanaPersonalAccessTokenV2'
50
+ regex = '\b2\/[0-9]{16}\/[0-9]{16}:[0-9a-f]{32}\b'
51
+ description = "An Asana personal access token was identified. Personal access tokens allow programmatic access to the Asana API. a\nmalicious actor who got access to this access token could execute functionality with the same permissions as that user."
52
+ title = 'Asana personal access token'
53
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke the detected Asana personal access token:\n\n- Sign in to your developer account and access <https://app.asana.com/0/my-apps>\n- Find the token under the \"Personal access tokens\" section of the \"My apps\" page\n- Select \"View details\"\n- Select \"Delete\" in the \"Token details\" dialog\n\nFor more information see [Asana's developer documentation on personal access tokens](https://developers.asana.com/docs/personal-access-token)."
54
+ tags = ['gitlab_blocking']
55
+ keywords = ['2/']
56
+
57
+ [[rules]]
58
+ id = 'AsanaPersonalAccessTokenV1'
59
+ regex = '\b1\/[0-9]{14,16}:[0-9a-f]{32}\b'
60
+ description = "An Asana personal access token was identified. Personal access tokens allow programmatic access to the Asana API. A\nmalicious actor who got access to this access token could execute functionality with the same permissions as that user."
61
+ title = 'Asana personal access token'
62
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
63
+ tags = ['gitlab_blocking']
64
+ keywords = ['1/']
65
+
66
+ [[rules]]
67
+ id = 'AtlassianUserApiToken'
68
+ regex = '\bATATT3xFfGF0[0-9A-Za-z_-]{171}=[0-9A-F]{8}\b'
69
+ description = "An Atlassian User API token was detected. User tokens can be used in scripts or other processes to perform basic\nauthentication with Jira Cloud applications or Confluence Cloud. You should treat API tokens as securely as any other\npassword. A malicious actor with access to this token can compromise any repository or Atlassian service this user has\naccess to."
70
+ title = 'Atlassian user API token'
71
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke an Atlassian User API token:\n\n- Sign in to <https://id.atlassian.com/manage-profile/security/api-tokens>.\n- Select \"Revoke\" next to the API token that you want to revoke.\n\nPlease see [Atlassians help page](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/)\nfor more information on managing API tokens for your Atlassian account."
72
+ tags = ['gitlab_blocking']
73
+ keywords = ['ATATT3xFfGF0']
74
+
75
+ [[rules]]
76
+ id = 'AtlassianApiKey'
77
+ regex = '\bATCTT3xFfGN0[0-9A-Za-z_-]{171}=[0-9A-F]{8}\b'
78
+ description = "An Atlassian Admin API Key or Bitbucket Repository Access Token was identified. These API keys allow you to manage your\norganization through the Atlassian Admin APIs.\n\n- For Admin API Keys a malicious actor can take over the entire organization's Atlassian products and services using\n this key.\n- For Bitbucket Repository Access Tokens, a malicious actor can gain the privileges assigned to the repository token\n which could be full access to a repository or just read access to certain aspects of the workspace."
79
+ title = 'Atlassian admin API key / Bitbucket repository access token'
80
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke an Atlassian Repository Token:\n\n- At <https://bitbucket.org>, go to the repository the access token was created for\n- On the sidebar, select \"Repository Settings\"\n- On the sidebar, under Security, select \"Access tokens\"\n- Find the access token and select \"Revoke\", then confirm that you want to revoke the token\n\nFor more information on revoking and creating Atlassian Bitbucket Repository Tokens, please see their [documentation](https://support.atlassian.com/bitbucket-cloud/docs/create-a-repository-access-token/).\n\nTo revoke an Atlassian Admin API key:\n\n- Go to <https://admin.atlassian.com>\n- Select your organization if you have more than one\n- Select \"Settings > API keys\"\n- Select \"Revoke\" next to the API key\n\nFor more information on revoking and creating Atlassian Admin API Keys, please see their [documentation](https://support.atlassian.com/organization-administration/docs/manage-an-organization-with-the-admin-apis/)."
81
+ tags = ['gitlab_blocking']
82
+ keywords = ['ATCTT3xFfGN0']
83
+
84
+ [[rules]]
85
+ id = 'AWS'
86
+ regex = '\b(?:AKIA|ASIA|A3T[A-Z0-9])[2-7A-Z]{16}\b'
87
+ description = "An AWS Access Key ID was detected. AWS Access Key IDs come in different types: long-term IAM user access keys\n(starting with AKIA), temporary STS credentials (starting with ASIA), or AWS STS service bearer tokens. These\ncredentials are paired with Secret Access Keys to authenticate programmatic requests to AWS services. A\nmalicious actor with access to both the Access Key ID and its associated Secret Access Key can access AWS\nresources with the permissions granted to that credential, potentially leading to data breaches, resource\nmanipulation, or unauthorized charges."
88
+ title = 'AWS Access Key ID'
89
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab\ndocumentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\n- **For Long-term IAM Access Keys (AKIA/A3T prefix)**:\n\nTo delete a long-term IAM access key:\n\n1. Log in to the AWS Management Console at <https://console.aws.amazon.com>\n2. Navigate to the IAM service by searching for \"IAM\" in the search bar or accessing it directly at\n <https://console.aws.amazon.com/iam>\n3. In the left navigation pane, select \"Users\" and locate the IAM user associated with the compromised key\n4. Select the username to view the user details page\n5. Navigate to the \"Security credentials\" tab\n6. In the \"Access keys\" section, find the key that matches the leaked Access Key ID\n7. Select \"Actions\" dropdown next to the key\n8. Select \"Deactivate\" to immediately disable the key, then select \"Delete\" to permanently remove it\n9. Generate a new access key pair if needed by selecting \"Create access key\"\n10. Update all applications, scripts, and systems that were using the compromised credentials with the new key\n11. Verify the old key is no longer active by checking the \"Access keys\" section shows the key as deleted\n\n- **For Temporary STS Credentials (ASIA prefix)**:\n\nTemporary credentials cannot be manually deleted but will expire automatically. To mitigate exposure:\n\n1. Log in to the AWS Management Console at <https://console.aws.amazon.com>\n2. Navigate to the IAM service at <https://console.aws.amazon.com/iam>\n3. Identify the IAM role or user that generated the temporary credentials by reviewing AWS CloudTrail logs\n4. If the credentials were generated via AssumeRole, consider attaching a deny policy to the role to prevent\n further access until credentials expire\n5. Review and reduce the session duration policy on the role to minimize exposure window for future sessions\n6. Monitor CloudTrail logs for any unauthorized activity during the credential validity period\n7. For immediate revocation, you can revoke active sessions by attaching an inline policy to the role with\n a condition that denies access for sessions created before the current time\n8. Update the trust policy or role permissions if the compromise indicates a broader security issue\n\n- **For All Access Key Types**:\n\nAfter remediation:\n\n1. Review AWS CloudTrail logs to identify any unauthorized activity that occurred using the compromised\n credentials at <https://console.aws.amazon.com/cloudtrail>\n2. Check for any unauthorized resource creation, modification, or data access\n3. Implement AWS CloudWatch alarms to detect unusual API activity patterns\n4. Consider enabling Amazon GuardDuty for continuous threat detection\n5. Review and update IAM policies to follow the principle of least privilege\n\nFor information on how to manage and revoke access keys for AWS, please see their\n[official documentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)\nand\n[STS temporary credentials documentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)."
90
+ tags = ['aws', 'revocation_type', 'gitlab_blocking']
91
+ keywords = ['AKIA', 'ASIA', 'A3T']
92
+
93
+ [[rules]]
94
+ id = 'AWSBedrockKey'
95
+ regex = '\bABSK[A-Za-z0-9+/]{70,150}={0,2}'
96
+ description = "An AWS Bedrock Key was detected. AWS Bedrock Keys are usually paired along with their secret key values. A malicious\nactor with access to this token can access AWS services with the same permissions as the user which generated the key,\nprovided they have access to both values."
97
+ title = 'AWS Bedrock Key'
98
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo delete an AWS Bedrock key:\n\n1. Sign in to the AWS Management Console and open the [Amazon Bedrock console](https://console.aws.amazon.com/bedrock/).\n1. In the left navigation pane, select **API keys.**\n1. In the **API keys for Amazon Bedrock** section, choose a key.\n1. Choose **Actions**.\n1. Select **Delete**.\n\nFor information on how to manage and revoke bedrock keys for AWS please see their [documentation](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys-revoke.html)."
99
+ tags = ['gitlab_blocking']
100
+ keywords = ['ABSK']
101
+
102
+ [[rules]]
103
+ id = 'AWSBedrockShortLivedKey'
104
+ regex = '\bbedrock-api-key-[A-Za-z0-9+/]{100,}={0,2}\b'
105
+ description = "An AWS Bedrock Short Lived Key was detected. These are temporary credentials generated to access Amazon\nBedrock, AWS's managed service for foundation models and generative AI applications. Short-lived keys are\ntypically issued through AWS Security Token Service (STS) and include an access key ID, secret access key,\nand session token. A malicious actor with access to these credentials could invoke Bedrock models, access\ncustom models, or retrieve sensitive data within the permissions scope until the credentials expire."
106
+ title = 'AWS Bedrock Short Lived Key'
107
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab\ndocumentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nShort-lived credentials cannot be manually revoked but will expire automatically based on their session\nduration. To mitigate exposure:\n\n1. Log in to the AWS Management Console at <https://console.aws.amazon.com>\n2. Navigate to AWS CloudTrail at <https://console.aws.amazon.com/cloudtrail> to identify the IAM entity\n (user or role) that generated the temporary credentials\n3. Review the CloudTrail event history for AssumeRole or GetSessionToken API calls that match the timeframe\n of credential creation\n4. Navigate to the IAM service at <https://console.aws.amazon.com/iam> and locate the source IAM role or\n user that generated the credentials\n5. For immediate mitigation, attach an inline deny policy to the IAM role or user to revoke active sessions\n by adding a condition that denies access for sessions created before the current time using the\n `aws:TokenIssueTime` condition key\n6. Review and reduce the maximum session duration on the IAM role to minimize future exposure windows by\n editing the role's \"Maximum session duration\" setting (minimum 1 hour, maximum 12 hours)\n7. Navigate to Amazon Bedrock at <https://console.aws.amazon.com/bedrock> and review recent API activity\n in the Bedrock service logs to identify any unauthorized model invocations or data access\n8. Monitor AWS CloudTrail logs continuously during the credential validity period for suspicious Bedrock\n API calls such as InvokeModel, InvokeModelWithResponseStream, or GetFoundationModelAvailability\n9. If unauthorized access is confirmed, review and update IAM policies following the principle of least\n privilege to restrict Bedrock permissions to only required models and actions\n10. Consider implementing AWS CloudWatch alarms to detect unusual Bedrock API usage patterns\n11. Enable Amazon GuardDuty if not already active for continuous threat detection across AWS services\n12. Update applications or systems that were using the compromised credentials once new credentials are\n generated through proper authentication flows\n\nFor detailed information on managing temporary credentials and Amazon Bedrock security, please see the\n[AWS STS documentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)\nand\n[Amazon Bedrock security documentation](https://docs.aws.amazon.com/bedrock/latest/userguide/security.html)."
108
+ tags = ['gitlab_blocking']
109
+ keywords = ['bedrock-api-key-']
110
+
111
+ [[rules]]
112
+ id = 'AWSSessionToken'
113
+ regex = '\b(?:FwoGZXIvYXdzE|IQoJb3JpZ2luX2VjE|FQoDYXdzE)[A-Za-z0-9+/]{180,1000}={0,2}'
114
+ description = "An AWS Session Token is a temporary security credential that is part of AWS Security Token Service (STS)\ntemporary credentials. These tokens are used alongside temporary access key IDs and secret access keys to\nauthenticate requests to AWS services. While session tokens expire automatically, a malicious actor with\naccess to valid temporary credentials can access AWS resources with the same permissions as the assumed role\nor federated user until the token expires, potentially lasting from minutes to several hours."
115
+ title = 'AWS Session Token'
116
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab\ndocumentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke your AWS Session Token:\n\n1. Log in to the AWS Management Console at <https://console.aws.amazon.com/>\n2. Navigate to the IAM service dashboard\n3. Identify the source of the temporary credentials:\n - For assumed roles: Go to \"Roles\" and locate the role that was assumed\n - For federated users: Check the identity provider configuration\n - For temporary credentials from GetSessionToken: Review the IAM user that generated them\n4. Revoke active sessions:\n - For roles: Select the role, go to \"Revoke sessions\" tab, and click \"Revoke active sessions\"\n - For IAM users: Go to \"Users\", select the user, \"Security credentials\" tab, and revoke sessions\n5. Update or remove any applications or scripts that were using the compromised temporary credentials\n6. Verify the session is no longer active by checking AWS CloudTrail logs for any API calls made with the\n compromised credentials after revocation\n7. Review and update the permissions or trust policies of the role or user to prevent future unauthorized\n access\n\nFor detailed information on managing temporary security credentials and revoking sessions, please see the\n[AWS IAM documentation on temporary credentials](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)\nand [revoking IAM role sessions](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html)."
117
+ tags = ['gitlab_blocking']
118
+ keywords = ['FwoGZXIvYXdzE', 'IQoJb3JpZ2luX2VjE', 'FQoDYXdzE']
119
+
120
+ [[rules]]
121
+ id = 'AzureEntraClientSecret'
122
+ regex = "[\\x60=\"' :>\\],\\t.()\\\\?|]{1,10}([0-9A-Za-z.\\-_~]{3}8Q~[0-9A-Za-z\\-_.~]{34})(?:\\\\['\"rn]|['\"\\x60; \\s]|<\\/|$)"
123
+ description = "An Azure Entra (previously Active Directory) Client Secret is a confidential credential used\nby applications to authenticate with Microsoft Azure services and APIs. This secret is paired\nwith a Client ID to enable application-level access to Azure resources and Microsoft Graph APIs.\nA malicious actor with access to this client secret could impersonate the application, access\nprotected resources, and perform actions with the same permissions granted to the\napplication registration."
124
+ title = 'Azure Entra Client Secret'
125
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab\ndocumentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo rotate your Azure Entra Client Secret:\n\n1. Log in to the [Azure Portal](https://portal.azure.com)\n2. Navigate to \"Microsoft Entra ID\" (formerly Azure Active Directory)\n3. Select \"App registrations\" from the left navigation menu\n4. Find and select the application registration associated with the compromised client secret\n5. Go to \"Certificates & secrets\" in the application settings\n6. In the \"Client secrets\" section, create a new client secret before deleting the old one\n7. Update all applications, configuration files, and key vaults that reference the old client secret\n8. Delete the compromised client secret from the \"Client secrets\" section\n9. Test your applications to ensure they are functioning with the new client secret\n\nFor detailed information on managing Azure Entra Client Secrets, please see the\n[Microsoft Entra application registration documentation](https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app)."
126
+ tags = ['gitlab_blocking']
127
+ keywords = ['8Q~']
128
+
129
+ [[rules]]
130
+ id = 'AzureAPIManagementGatewayKey'
131
+ regex = 'GatewayKey [A-Za-z0-9_-]{3,64}&[0-9]{12}&[A-Za-z0-9+\/]{60,90}=='
132
+ description = "An Azure API Management Gateway Key was detected. These keys provide access to APIs\npublished through Azure API Management services and are tied to specific subscriptions and products. A\nmalicious actor with access to this key can consume APIs within the configured rate limits and access\npolicies, potentially leading to unauthorized data access, service abuse, or unexpected charges."
133
+ title = 'Azure API Management Gateway Key'
134
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab\ndocumentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo regenerate your Azure API Management Gateway Key:\n\n1. Log in to the [Azure Portal](https://portal.azure.com)\n2. Navigate to your API Management service instance\n3. In the left menu, select \"Subscriptions\" under the \"APIs\" section\n4. Locate the compromised subscription by matching the key prefix or subscription name\n5. Click on the subscription name to open its details\n6. In the subscription details, click \"Regenerate primary key\" or \"Regenerate secondary key\"\n (regenerate the compromised key)\n7. Update all applications and clients that use this subscription key with the new key value\n8. Monitor API usage logs to verify the old key is no longer being used\n9. Consider temporarily disabling the subscription if immediate key rotation isn't possible\n\nFor detailed information on managing Azure API Management subscriptions and keys, please see the\n[Azure API Management documentation](https://docs.microsoft.com/en-us/azure/api-management/api-management-subscriptions)."
135
+ tags = ['gitlab_blocking']
136
+ keywords = ['GatewayKey']
137
+
138
+ [[rules]]
139
+ id = 'AzureAppConfigConnectionString'
140
+ regex = '\.azconfig\.io;Id=[A-Za-z0-9+\/=:_-]{8,100};Secret=([A-Za-z0-9+\/~=]{32,88})'
141
+ description = "An Azure App Configuration Connection String was detected. This connection string provides access to an Azure\nApp Configuration store, which contains application settings and feature flags. A malicious actor with access to\nthis connection string could read sensitive configuration data, modify application settings, or manipulate\nfeature flags, potentially compromising application functionality and security."
142
+ title = 'Azure App Config Connection String'
143
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab\ndocumentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo rotate your Azure App Configuration Connection String:\n\n1. Log in to the [Azure Portal](https://portal.azure.com)\n2. Navigate to \"Azure App Configuration\" from the left-hand menu or search for it in the search bar\n3. Select the specific App Configuration store that contains the compromised connection string\n4. In the left-hand menu, select \"Access keys\" under the \"Settings\" section\n5. Identify the compromised key (Primary or Secondary) and select \"Regenerate\" next to the appropriate key\n6. Copy the new connection string and update all applications, services, and configuration files that use this\n connection string\n7. Test your applications to ensure they can successfully connect using the new connection string\n8. Once verified, consider regenerating the other key as well for complete security\n\nFor detailed information on managing Azure App Configuration access keys, please see the\n[Azure App Configuration documentation](https://docs.microsoft.com/en-us/azure/azure-app-configuration/howto-disable-access-key-authentication)."
144
+ tags = ['gitlab_blocking']
145
+ keywords = ['.azconfig.io;Id=']
146
+
147
+ [[rules]]
148
+ id = 'AzureCommServicesConnectionString'
149
+ regex = '\.azure\.com\/;accesskey=([A-Za-z0-9+\/]{80,140}={0,2})'
150
+ description = "An Azure Communication Services connection string was detected. This connection string provides access to Azure\nCommunication Services resources including SMS, email, chat, voice calling, and video calling capabilities. A\nmalicious actor with access to this connection string could send unauthorized communications, access conversation\ndata, make unauthorized calls, or incur charges on your Azure account."
151
+ title = 'Azure Communication Services Connection String'
152
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab\ndocumentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo rotate your Azure Communication Services Connection String:\n\n1. Log in to the [Azure Portal](https://portal.azure.com)\n2. Navigate to your Communication Services resource by searching for \"Communication Services\" in the top search bar\n3. Select your specific Communication Services resource from the list\n4. In the left navigation menu, select \"Keys\" under the \"Settings\" section\n5. Click \"Regenerate\" for either the Primary or Secondary key (regenerate the compromised key first)\n6. Copy the new connection string and update all applications, configuration files, and environment variables that\n use this credential\n7. Test your applications to ensure they can successfully connect with the new connection string\n8. After confirming everything works, regenerate the other key for complete security\n\nFor detailed information on managing Azure Communication Services Connection Strings, please see the\n[Azure Communication Services Keys documentation](https://docs.microsoft.com/en-us/azure/communication-services/quickstarts/create-communication-resource?tabs=windows&pivots=platform-azp#access-your-connection-strings-and-service-endpoints)."
153
+ tags = ['gitlab_blocking']
154
+ keywords = ['.azure.com/;accesskey=']
155
+
156
+ [[rules]]
157
+ id = 'AzureFunctionsAPIKeyViaURL'
158
+ regex = '\.azurewebsites\.net\/api\/.{3,64}?code=([a-zA-Z0-9\/+_-]{54}==|[a-zA-Z0-9%\/+_-]{54,84}%3[dD]%3[dD])'
159
+ description = "An Azure Functions API Key (also called a function key or host key) is a secret token used to authenticate\nrequests to Azure Functions endpoints. These keys provide access to invoke specific functions or all\nfunctions within a function app. A malicious actor with access to this key could execute your serverless\nfunctions, potentially triggering unauthorized operations, accessing connected resources, or incurring\nsignificant Azure costs through excessive invocations."
160
+ title = 'Azure Functions API Key'
161
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab\ndocumentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo rotate your Azure Functions API Key:\n\n1. Log in to the [Azure Portal](https://portal.azure.com)\n2. Navigate to your Function App by searching for \"Function App\" or selecting it from your resources\n3. Select the specific Function App that contains the compromised key\n4. In the left menu, under \"Functions\", select \"App keys\" for host keys or select the individual function\n and then \"Function Keys\" for function-specific keys\n5. Identify the compromised key by name or value, select the three dots menu next to it, and choose \"Delete\"\n6. Create a new key by selecting \"New function key\" or \"New host key\", provide a name, and save it\n7. Update all applications, scripts, and services that call your Azure Functions with the new key value\n8. Test your applications to verify they can successfully invoke the functions with the new key\n9. Monitor Azure Function logs to ensure no unauthorized access attempts occur with the old key\n\nFor detailed information on managing Azure Functions API Keys, please see the\n[Azure Functions security documentation](https://learn.microsoft.com/en-us/azure/azure-functions/security-concepts)."
162
+ tags = ['gitlab_blocking']
163
+ keywords = ['.azurewebsites.net/api/']
164
+
165
+ [[rules]]
166
+ id = 'AzureLogicAppSAS'
167
+ regex = '\.(?:azure|windows)\.net\/.{0,64}\?.{0,128}sig=([a-zA-Z0-9%]{43,73}%3[dD])'
168
+ description = "An Azure Logic App Shared Access Signature (SAS) was detected. This credential provides delegated access to\ntrigger Azure Logic App workflows through HTTP requests without requiring Azure AD authentication. A malicious\nactor with access to this SAS URL could trigger automated workflows, potentially causing unwanted data processing,\nintegration with other services, or execution of business processes."
169
+ title = 'Azure Logic App Shared Access Signature'
170
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab\ndocumentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo rotate your Azure Logic App Shared Access Signature:\n\n1. Log in to the [Azure Portal](https://portal.azure.com)\n2. Navigate to your Logic App by searching for \"Logic Apps\" or finding it in your resources\n3. Select the specific Logic App that contains the compromised SAS token\n4. In the Logic App menu, select \"Logic app designer\" to view the workflow\n5. Locate the HTTP trigger or connector that generated the compromised SAS URL\n6. Click on the trigger/connector to expand its settings\n7. Select \"Regenerate URL\" or disable the trigger entirely if no longer needed\n8. Copy the new SAS URL if regenerated\n9. Update all external applications, webhooks, or services that use the old SAS URL\n10. Test the new URL to verify it works correctly\n11. Monitor Logic App run history to ensure no unauthorized triggers occur\n\nFor detailed information on managing Azure Logic App Shared Access Signature, please see the\n[Azure Logic Apps documentation](https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-securing-a-logic-app#access-to-request-based-triggers)."
171
+ tags = ['gitlab_blocking']
172
+ keywords = ['azure.net', 'windows.net']
173
+
174
+ [[rules]]
175
+ id = 'AzureSignalRAccessKey'
176
+ regex = '\.signalr\.net;AccessKey=([a-zA-Z0-9\/+]{43}[=]?)'
177
+ description = "An Azure SignalR Access Key was detected. Azure SignalR Access Keys are authentication credentials\nthat provide access to Azure SignalR Service, a real-time messaging service that enables web\napplications with real-time communication capabilities. A malicious actor with access to this key\ncan authenticate to the SignalR service, send messages to connected clients, manage connection\ngroups, and potentially disrupt real-time communication or access sensitive messaging data within\nyour applications."
178
+ title = 'Azure SignalR Access Key'
179
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab\ndocumentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo regenerate your Azure SignalR Access Key:\n\n1. Sign in to the [Azure portal](https://portal.azure.com/)\n2. Navigate to your Azure SignalR Service resource\n3. In the left navigation menu, select **Keys** under the **Settings** section\n4. Select either **Regenerate Primary Key** or **Regenerate Secondary Key** (regenerate the\n compromised key first, then the other key after applications are updated)\n5. Copy the newly generated connection string displayed after regeneration\n6. Update all application configurations, environment variables, and Azure Key Vault secrets that\n use the old connection string with the new connection string\n7. Restart all applications and services that use the Azure SignalR Service to ensure they pick up\n the new connection string\n8. Verify successful connections by monitoring your applications and checking the Azure SignalR\n Service metrics and logs in the Azure portal\n\nFor detailed information on managing Azure SignalR Access Keys, please see the\n[Rotate access keys for Azure SignalR Service](https://learn.microsoft.com/en-us/azure/azure-signalr/signalr-howto-key-rotation)."
180
+ tags = ['gitlab_blocking']
181
+ keywords = ['signalr.net']
182
+
183
+ [[rules]]
184
+ id = 'CDSCanadaNotifyAPIKey'
185
+ regex = 'ApiKey-v1 gcntfy-[a-zA-Z0-9_\-]{1,64}-[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}-[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}'
186
+ description = "A Canada Digital Service Notify API Key provides programmatic access to GC Notify, the Government of\nCanada's official notification service for sending emails and text messages to citizens and users.\nThis credential allows applications to automatically send notifications through the GC Notify platform,\nwhich is used for government communications including appointment reminders, application status updates,\nand authentication codes. A malicious actor with access to this API key could send unauthorized\nemails and text messages through government channels, potentially damaging public trust or conducting\nphishing attacks using official government branding."
187
+ title = 'CDSCanadaNotifyAPIKey'
188
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab\ndocumentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke your Canada Digital Service Notify API Key:\n\n1. Sign in to GC Notify at <https://notification.canada.ca/sign-in>\n2. Go to the API integration page from the main dashboard\n3. Select \"API keys\" from the available options\n4. Locate the compromised API key in the list and select \"Revoke\" for that specific key\n5. Create a new API key by selecting \"Create an API key\" and configure it with appropriate permissions\n6. Update all applications, scripts, and systems that use the old API key with the new credentials\n7. Verify the change was successful by testing a notification through the API or checking the\n dashboard for recent activity\n\nFor detailed information on managing Canada Digital Service Notify API Key, please see the\n[Official API Keys Documentation](https://documentation.notification.canada.ca/en/keys.html)."
189
+ tags = ['gitlab_blocking']
190
+ keywords = ['ApiKey-v1']
191
+
192
+ [[rules]]
193
+ id = 'ContentfulPersonalAccessToken'
194
+ regex = '\bCFPAT-([a-zA-Z0-9_\-]){43}\b'
195
+ description = "A Contentful personal access token was identified. Personal access tokens are tied to the user who requests them and\ncarry the same permissions, including access to organizations, spaces, and content."
196
+ title = 'Contentful personal access token'
197
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke a personal access token:\n\n- Sign in and visit your account profile: <https://app.contentful.com/account/profile/user>\n- Select the \"CMA tokens\" tab in the top menu\n- Identify the token that was detected\n- Select \"Revoke\" in the right hand column\n- Select \"Revoke\" when prompted\n\nFor more information, please see the developer [documentation on personal access tokens](https://www.contentful.com/help/token-management/personal-access-tokens)."
198
+ tags = ['gitlab_blocking']
199
+ keywords = ['CFPAT-']
200
+
201
+ [[rules]]
202
+ id = 'DockerPersonalAccessToken'
203
+ regex = '\bdckr_pat_[0-9A-Za-z_]{27}\b'
204
+ description = 'Docker Personal Access Token'
205
+ title = 'Docker Personal Access Token'
206
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
207
+ tags = ['gitlab_blocking']
208
+ keywords = ['dckr_pat_']
209
+
210
+ [[rules]]
211
+ id = 'Doppler API token'
212
+ regex = '\bdp\.pt\.[0-9A-Za-z]{40,44}\b'
213
+ description = 'Doppler personal access token was detected.'
214
+ title = 'Doppler API token'
215
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke the Doppler personal access token:\n\n- Open and sign in to <https://dashboard.doppler.com/>\n- Select \"Tokens\" on the right-hand side menu\n- Select the \"Personal\" tab\n- Find the personal token and select \"Roll\" in the Action column\n- After the \"Roll Personal Token\" dialog is displayed select \"Roll\"\n- Copy the new token's value\n\nFor more information please see their documentation: <https://docs.doppler.com/docs/start>"
216
+ tags = ['gitlab_blocking']
217
+ keywords = ['dp.pt.']
218
+
219
+ [[rules]]
220
+ id = 'Doppler Service token'
221
+ regex = '\bdp\.st\.[0-9A-Za-z]{40,44}\b'
222
+ description = 'Doppler service token was detected.'
223
+ title = 'Doppler Service token'
224
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
225
+ tags = ['gitlab_blocking']
226
+ keywords = ['dp.st.']
227
+
228
+ [[rules]]
229
+ id = 'Dropbox short lived API token'
230
+ regex = '\bsl\.[0-9A-Za-z_-]{136,200}\b'
231
+ description = "A Dropbox short lived API token was detected. These tokens were deprecated in 2021,\nsee <https://dropbox.tech/developers/migrating-app-permissions-and-access-tokens#introducing-scoped-apps> for more\ndetails."
232
+ title = 'Dropbox short lived API token'
233
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
234
+ tags = ['gitlab_blocking']
235
+ keywords = ['sl.']
236
+
237
+ [[rules]]
238
+ id = 'DropboxAppAccessToken'
239
+ regex = '\bsl\.B_[a-zA-Z0-9_-]{138}\b'
240
+ description = "A Dropbox application access token was detected. These tokens are primarily used for testing before switching to a\nproper OAuth authorization flow. Application access tokens allow programmatic access to the Dropbox API. The application\ncan be restricted to an App folder or the full Dropbox account. Additionally, individual scopes can be set under the\npermissions tab, further restricting access. A malicious actor with access to this token can execute functionality only\nto which the permissions were configured. This can lead to sensitive files being accessed or modified."
241
+ title = 'Dropbox application access token'
242
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo regenerate a new application access token:\n\n- Open <https://www.dropbox.com/developers/apps/> and sign in to your Dropbox account\n- Find the application which the token was detected in\n- Under the settings tab, scroll down to the \"Generated access token\" section\n- Select \"Generate\" to generate a new access token.\n\nFor more information, please see their documentation: <https://developers.dropbox.com/oauth-guide#implementing-oauth>"
243
+ tags = ['gitlab_blocking']
244
+ keywords = ['sl.']
245
+
246
+ [[rules]]
247
+ id = 'DynatracePlatformToken'
248
+ regex = '\bdt0s[0-9]{2}\.[A-Z0-9]{8}\.[A-Z0-9]{64}\b'
249
+ description = "A Dynatrace Platform token or OAuth client secret was identified.\n\n- Platform tokens are long-living access tokens for interaction with Dynatrace platform services. They can be created\n by regular users to consume the services and data inside of Dynatrace by using the API in the bounds of their user\n permissions.\n- OAuth client secret tokens are tokens for interacting with the API using an OAuth client authorization flow. They can\n be configured with various permission levels and scopes.\n\nA full list of token types and their prefixes are [documented here](https://docs.dynatrace.com/docs/manage/identity-access-management/access-tokens-and-oauth-clients/access-tokens#token-format-prefixes).\n\nA malicious actor with access to any of these tokens can access and potentially modify application telemetry and cloud\nservice infrastructure information."
250
+ title = 'Dynatrace platform token / OAuth client secret'
251
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nFor more information on managing platform access tokens, please see [Dynatrace's platform token documentation](https://docs.dynatrace.com/docs/manage/identity-access-management/access-tokens-and-oauth-clients/platform-tokens#my-platform-tokens)\n\nFor more information on managing OAuth client secrets, please see [Dynatrace's OAuth clients documentation](https://docs.dynatrace.com/docs/manage/identity-access-management/access-tokens-and-oauth-clients/oauth-clients)"
252
+ tags = ['gitlab_blocking']
253
+ keywords = ['dt0s']
254
+
255
+ [[rules]]
256
+ id = 'FigmaPersonalAccessToken'
257
+ regex = '\bfigd_[0-9A-Za-z_-]{40}\b'
258
+ description = 'Figma Personal Access Token'
259
+ title = 'Figma Personal Access Token'
260
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
261
+ tags = ['gitlab_blocking']
262
+ keywords = ['figd_']
263
+
264
+ [[rules]]
265
+ id = 'FlutterwaveProdPublicKey'
266
+ regex = '\bFLWPUBK-[0-9A-Ha-h]{32}-X\b'
267
+ description = "A Flutterwave public key was identified. This key is used in \"public\" scenarios, such as in front-end JavaScript code\n(for example Flutterwave Inline). A malicious actor with access to this key cannot do anything with it."
268
+ title = 'Flutterwave production public key'
269
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo rotate your key:\n\n- Sign in and go to <https://app.flutterwave.com/dashboard/home>\n- Select \"Settings\" on the left-hand menu\n- Select \"API Keys\" under \"Developers\" on the left-hand menu\n- Ensure \"Test mode\" is NOT activated\n- Select \"Generate secret key\" to rotate the public, secret, and encryption key\n\nFor more information, please see the [Flutterwave documentation on authentication](https://developer.flutterwave.com/docs/authentication)."
270
+ tags = ['gitlab_blocking']
271
+ keywords = ['FLWPUBK-']
272
+
273
+ [[rules]]
274
+ id = 'FlutterwaveProdSecretKey'
275
+ regex = '\bFLWSECK-[0-9A-Ha-h]{32}-X\b'
276
+ description = "A Flutterwave secret key was identified. Secret keys have the highest level of privileges and can authorize any action\non your account. A malicious actor with access to this key can gain access to transaction and user information."
277
+ title = 'Flutterwave production secret key'
278
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo rotate your key:\n\n- Sign in and go to <https://app.flutterwave.com/dashboard/home>\n- Select \"Settings\" on the left-hand menu\n- Select \"API Keys\" under \"Developers\" on the left-hand menu\n- Ensure \"Test mode\" is NOT activated\n- Select \"Generate secret key\" to rotate the public, secret, and encryption key\n\nFor more information, please see the [Flutterwave documentation on authentication](https://developer.flutterwave.com/docs/authentication)."
279
+ tags = ['gitlab_blocking']
280
+ keywords = ['FLWSECK-']
281
+
282
+ [[rules]]
283
+ id = 'FlutterwaveProdEncryptedKey'
284
+ regex = '\bFLWSECK[a-h0-9]{12}\b'
285
+ description = "A Flutterwave encryption key was identified. This key is only used with the [direct charge endpoint](https://developer.flutterwave.com/docs/direct-card-charge).\nThis key is used to encrypt payloads of card details prior to sending. More information can be found in\n[Flutterwave's encryption guide](https://developer.flutterwave.com/docs/encryption). A malicious\nactor with access to this key can potentially decrypt transactions which can include credit card information."
286
+ title = 'Flutterwave production encrypted key'
287
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo rotate your key:\n\n- Sign in and go to <https://app.flutterwave.com/dashboard/home>\n- Select \"Settings\" on the left-hand menu\n- Select \"API Keys\" under \"Developers\" on the left-hand menu\n- Ensure \"Test mode\" is NOT activated\n- Select \"Generate secret key\" to rotate the public, secret, and encryption key\n\nFor more information, please see the [Flutterwave documentation on authentication](https://developer.flutterwave.com/docs/authentication)."
288
+ tags = ['gitlab_blocking']
289
+ keywords = ['FLWSECK']
290
+
291
+ [[rules]]
292
+ id = 'GCP OAuth client secret'
293
+ regex = 'GOCSPX-[a-zA-Z0-9_-]{28}'
294
+ description = "A GCP OAuth client secret was identified. Client secret are used when allowing users to Sign in to your application.\nDepending on the scopes requested, a malicious actor with access to the secret can impersonate the service to access\nusers information."
295
+ title = 'GCP OAuth client secret'
296
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke the OAuth client secret:\n\n- Sign in to your GCP account and go to <https://console.cloud.google.com/apis/credentials>\n- Under the \"Name\" column of \"OAuth 2.0 Client IDs\" table, select the name of the client of the identified key\n- Under the \"Client secrets\" section, you must first add a new secret, select \"Add Secret\"\n- For the identified key, select \"Disable\"\n- When prompted, select \"Disable\" in the \"Disable this secret?\" dialog\n- You may now select the trash icon to delete the disabled key\n\nFor more information, please see [Googles authentication documentation on setting up OAuth 2.0](https://support.google.com/cloud/answer/6158849?hl=en)"
297
+ tags = ['gitlab_partner_token', 'revocation_type', 'gitlab_blocking']
298
+ keywords = ['GOCSPX-']
299
+
300
+ [[rules]]
301
+ id = 'Google (GCP) Service-account'
302
+ regex = '\"private_key\":\s*\"-{5}BEGIN PRIVATE KEY-{5}[\s\S]*?",'
303
+ description = "A GCP service account was identified. Service accounts can be assigned a wide range of permissions or access.\nA malicious actor with access to the service account can potentially compromise the entire GCP account or have limited\naccess to resources, depending on the access granted."
304
+ title = 'Google (GCP) service account'
305
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke the GCP Service account:\n\n- Sign in to your GCP account and go to <https://console.cloud.google.com/iam-admin/serviceaccounts>\n- Select the correct project from the list (if given a choice)\n- Find the key ID and the associated service account in the \"Service accounts\" table\n- Select the kebab menu (vertical ellipsis) for the identified key and select \"Manage keys\"\n- Select the trash icon next to the identified key\n\nFor more information, please see [Googles documentation on creating service account keys](https://cloud.google.com/iam/docs/keys-create-delete)."
306
+ tags = ['gitlab_partner_token', 'revocation_type', 'gitlab_blocking']
307
+ keywords = ['"private_key":', 'BEGIN PRIVATE KEY']
308
+
309
+ [[rules]]
310
+ id = 'GCPVertexExpressModeKey'
311
+ regex = '\bAQ\.Ab8R[a-zA-Z0-9_-]{46}\b'
312
+ description = "A GCP Vertex Express Mode Key is an API key used to authenticate requests to Google Cloud's Vertex AI\nplatform in Express Mode. This credential provides access to Vertex AI services including machine learning\nmodel deployment, predictions, and data processing. A malicious actor with this key could consume expensive\ncomputational resources, access sensitive ML models, exfiltrate training data, or manipulate AI workloads."
313
+ title = 'GCP Vertex Express Mode Key'
314
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab\ndocumentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke your GCP Vertex Express Mode Key:\n\n1. Log in to the [Google Cloud Console](https://console.cloud.google.com/)\n2. Navigate to \"APIs & Services\" > \"Credentials\" from the main navigation menu\n3. Locate the compromised API key in the list of credentials by matching the key prefix or creation date\n4. Click on the key name to view details, then select \"Delete\" or \"Regenerate Key\" as appropriate\n5. Update all applications, notebooks, and services that reference this key with the new credential\n6. Verify the old key no longer works by attempting an API call and confirming authentication failure\n7. Review Cloud Logging for any unauthorized usage during the exposure period\n\nFor detailed information on managing GCP API keys and Vertex AI security, please see the\n[Managing API Keys documentation](https://cloud.google.com/docs/authentication/api-keys) and\n[Vertex AI Security Best Practices](https://cloud.google.com/vertex-ai/docs/general/security-best-practices)."
315
+ tags = ['gitlab_blocking']
316
+ keywords = ['AQ.Ab8R']
317
+
318
+ [[rules]]
319
+ id = 'Github Personal Access Token'
320
+ regex = 'ghp_[0-9a-zA-Z]{36}'
321
+ description = "A GitHub personal access token (classic) was identified. Personal access tokens can be used to access GitHub services\nas the user who created them. In most cases these tokens are given read-write access to all repositories. A malicious\nactor with access to this token can execute functionality on behalf of the user with the given permissions of the token."
322
+ title = 'GitHub personal access token (classic)'
323
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo regenerate a personal access token:\n\n- Sign in to your GitHub account and access <https://github.com/settings/tokens>\n- Find the token that was identified and select the name\n- Select \"Regenerate token\" at the top of the page\n\nAlternatively, you could select \"Delete this token\" at the bottom of the page and create a new one. Be sure to note\nthe scopes and permissions set before doing this action.\n\nFor more information, please see [GitHubs documentation on personal access tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)."
324
+ tags = ['gitlab_blocking']
325
+ keywords = ['ghp_']
326
+
327
+ [[rules]]
328
+ id = 'Github OAuth Access Token'
329
+ regex = 'gho_[0-9a-zA-Z]{36}'
330
+ description = "A GitHub OAuth Access Token was identified. Unlike a traditional OAuth token, user access tokens do not use scopes.\nInstead, it uses fine-grained permissions. A user access token only has permissions that both the user and the app have.\nIf a malicious actor gains access to the token and the app was granted permission to write the contents of a\nrepository, but the user can only read the contents, then the user access token can only read the contents."
331
+ title = 'GitHub OAuth Access Token'
332
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nFor more information, please see [GitHubs documentation to revoke an OAuth access tokens](https://docs.github.com/en/rest/apps/oauth-applications?apiVersion=2022-11-28#delete-an-app-token).\n\nAlso note, GitHub Apps are preferred over OAuth apps, please see [GitHubs documentation for more details](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/differences-between-github-apps-and-oauth-apps)."
333
+ tags = ['gitlab_blocking']
334
+ keywords = ['gho_']
335
+
336
+ [[rules]]
337
+ id = 'Github App Token'
338
+ regex = '(ghu|ghs)_[0-9a-zA-Z]{36}'
339
+ description = 'GitHub App Token'
340
+ title = 'GitHub app token'
341
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
342
+ tags = ['gitlab_blocking']
343
+ keywords = ['ghu_', 'ghs_']
344
+
345
+ [[rules]]
346
+ id = 'Github Refresh Token'
347
+ regex = 'ghr_[0-9a-zA-Z]{76}'
348
+ description = 'GitHub Refresh Token'
349
+ title = 'GitHub refresh token'
350
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
351
+ tags = ['gitlab_blocking']
352
+ keywords = ['ghr_']
353
+
354
+ [[rules]]
355
+ id = 'GithubFineGrainedPersonalAccessToken'
356
+ regex = '\bgithub_pat_[0-9A-Za-z]{22}_[0-9A-Za-z]{59}\b'
357
+ description = "A GitHub fine-grained personal access token was identified. Personal access tokens can be used to access GitHub services\nas the user who created them. These tokens can be given access to public repositories, a single repository or all\nrepositories. A malicious actor with access to this token can execute functionality on behalf of the user with the given\npermissions of the token."
358
+ title = 'GitHub fine-grained personal access token'
359
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo regenerate a personal access token:\n\n- Sign in to your GitHub account and access <https://github.com/settings/tokens>\n- Under the \"Personal access tokens\" menu in the right hand side, select \"Fine-grained tokens\"\n- Find the token that was identified and select its name in the list\n- Select \"Regenerate token\" at the top of the page\n\nAlternatively, you could select \"Delete this token\" at the bottom of the page and create a new one. Be sure to note\nthe scopes and permissions set before doing this action.\n\nFor more information, please see [GitHubs documentation on personal access tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)."
360
+ tags = ['gitlab_blocking']
361
+ keywords = ['github_pat_']
362
+
363
+ [[rules]]
364
+ id = 'GithubAppInstallationToken'
365
+ regex = '\bv1\.[0-9A-Fa-f]{40}\b'
366
+ description = 'GitHub App Installation Token'
367
+ title = 'GitHub App Installation Token'
368
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
369
+ tags = ['gitlab_blocking']
370
+ keywords = ['v1.']
371
+
372
+ [[rules]]
373
+ id = 'gitlab_personal_access_token'
374
+ regex = '\b(glpat-[0-9a-zA-Z_\-]{20})(?:[[:punct:]]|[[:space:]]|[[:blank:]]|$)'
375
+ description = "A GitLab personal access token was identified. Personal access tokens can be used to access GitLab services\nas the user who created them. In most cases these tokens are given read-write access to all repositories. A malicious\nactor with access to this token can execute functionality on behalf of the user with the given permissions of the token."
376
+ title = 'GitLab personal access token'
377
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo regenerate a personal access token:\n\n- Sign in to your GitLab account and access: <https://gitlab.com/-/profile/preferences>\n- In the \"User settings\" left-hand side menu, select \"Access tokens\"\n- Find the access token that was identified in the \"Active personal access tokens\" table\n- Note the permissions that were assigned to this token\n- Select the trash icon in the \"Action\" column of the token\n- When prompted, select \"Revoke\""
378
+ tags = ['gitlab', 'revocation_type', 'gitlab_blocking', 'client_side_sd']
379
+ keywords = ['glpat']
380
+
381
+ [[rules]]
382
+ id = 'gitlab_personal_access_token_routable'
383
+ regex = '\bglpat-[0-9a-zA-Z_-]{27,300}\.[0-9a-z]{2}[0-9a-z]{7}\b'
384
+ description = 'GitLab Personal Access Token (routable)'
385
+ title = 'GitLab Personal Access Token (routable)'
386
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
387
+ tags = ['gitlab', 'revocation_type', 'gitlab_blocking', 'client_side_sd']
388
+ keywords = ['glpat-']
389
+
390
+ [[rules]]
391
+ id = 'gitlab_personal_access_token_routable_versioned'
392
+ regex = '\bglpat-[0-9a-zA-Z_-]{27,300}\.[0-9a-z]{2}\.[0-9a-z]{2}[0-9a-z]{7}\b'
393
+ description = 'GitLab Personal Access Token (routable)'
394
+ title = 'GitLab Personal Access Token (routable)'
395
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
396
+ tags = ['gitlab', 'revocation_type', 'gitlab_blocking', 'client_side_sd']
397
+ keywords = ['glpat-']
398
+
399
+ [[rules]]
400
+ id = 'gitlab_pipeline_trigger_token'
401
+ regex = '\b(glptt-[0-9a-zA-Z_\-]{40})(?:[[:punct:]]|[[:space:]]|[[:blank:]]|$)'
402
+ description = "A GitLab pipeline trigger token was identified. Pipeline trigger tokens can be used to execute pipelines for a branch\nor tag of a project. The token impersonates a user's project access and permissions. A malicious actor with access to\nthis token can execute pipelines with custom variables, potentially being able to compromise the repository."
403
+ title = 'GitLab pipeline trigger token'
404
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke a pipeline trigger token:\n\n- Sign in to your GitLab account and visit the project that created the pipeline trigger token\n- In the left-hand menu, select \"Settings\"\n- Under the \"Settings\" options, select \"CI/CD\"\n- Under the \"Pipeline trigger tokens\" section find the identified token\n- Select the trash icon in the \"Actions\" column of the \"Active pipeline trigger tokens\" table\n- When prompted, select \"Revoke trigger\"\n\nFor more information, please see [GitLabs documentation on pipeline trigger tokens](https://docs.gitlab.com/ee/ci/triggers/index.html#create-a-pipeline-trigger-token)."
405
+ tags = ['gitlab', 'gitlab_blocking', 'client_side_sd']
406
+ keywords = ['glptt']
407
+
408
+ [[rules]]
409
+ id = 'gitlab_runner_registration_token'
410
+ regex = '\b(GR1348941[0-9a-zA-Z_\-]{20})(?:[[:punct:]]|[[:space:]]|[[:blank:]]|$)'
411
+ description = "A deprecated GitLab runner registration token was identified. These tokens allow users to register a runner with the\nselected project. A malicious actor with access to this token can add a custom runner to the pipeline and possibly\ncompromise the repository if the runner was used."
412
+ title = 'GitLab runner registration token'
413
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo rotate a runner registration token:\n\n- Sign in to your GitLab account and visit the project that created the runner registration token\n- In the left-hand menu, select \"Settings\"\n- Under the \"Settings\" options, select \"CI/CD\"\n- Under the \"Runners\" section, select the kebab menu (vertical ellipsis) next to the \"New project runner\"\n- Select \"Reset registration token\" from the dropdown list\n- When prompted select \"Reset token\" in the \"Reset registration token\" dialog\n\nFor more information, please see [GitLabs documentation on using runner authentication tokens instead](https://docs.gitlab.com/runner/register/#register-with-a-runner-authentication-token)."
414
+ tags = ['gitlab', 'gitlab_blocking']
415
+ keywords = ['GR1348941']
416
+
417
+ [[rules]]
418
+ id = 'gitlab_runner_auth_token'
419
+ regex = '\b(glrt-[0-9a-zA-Z_\-]{20})(?:[[:punct:]]|[[:space:]]|[[:blank:]]|$)'
420
+ description = "A GitLab runner authentication token was identified. These tokens allow users to register or authenticate as a runner\nwith the selected project. A malicious actor with access to this token can add a custom runner to the pipeline and\npossibly compromise the repository if the runner was used."
421
+ title = 'GitLab runner authentication token'
422
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke a runner authentication token, the runner needs to be removed and re-created\n\n- Sign in to your GitLab account and visit the project that created the runner registration token\n- In the left-hand menu, select \"Settings\"\n- Under the \"Settings\" options, select \"CI/CD\"\n- Under the \"Runners\" section, find the runner with the identified token, (you can check the runner `config.toml` if you\n are unsure)\n- Select \"Remove runner\"\n- When prompted, select \"Remove\"\n\nFor more information, please see [GitLabs documentation on registering runners](https://docs.gitlab.com/runner/register/)."
423
+ tags = ['gitlab', 'gitlab_blocking', 'client_side_sd']
424
+ keywords = ['glrt']
425
+
426
+ [[rules]]
427
+ id = 'gitlab_runner_auth_token_routable'
428
+ regex = '\bglrt-[0-9a-zA-Z_-]{27,300}\.[0-9a-z]{2}\.[0-9a-z]{2}[0-9a-z]{7}\b'
429
+ description = "A routable GitLab runner authentication token was identified. These tokens allow users to register or authenticate as\na runner with the selected project. A malicious actor with access to this token can add a custom runner to the pipeline\nand possibly compromise the repository if the runner was used."
430
+ title = 'GitLab runner authentication token (routable)'
431
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke a runner authentication token, the runner needs to be removed and re-created\n\n- Sign in to your GitLab account and visit the project that created the runner registration token\n- In the left-hand menu, select \"Settings\"\n- Under the \"Settings\" options, select \"CI/CD\"\n- Under the \"Runners\" section, find the runner with the identified token, (you can check the runner `config.toml` if you\n are unsure)\n- Select \"Remove runner\"\n- When prompted, select \"Remove\"\n\nFor more information, please see [GitLabs documentation on registering runners](https://docs.gitlab.com/runner/register/)."
432
+ tags = ['gitlab', 'gitlab_blocking', 'client_side_sd']
433
+ keywords = ['glrt-']
434
+
435
+ [[rules]]
436
+ id = 'gitlab_oauth_app_secret'
437
+ regex = '\b(gloas-[0-9a-zA-Z_\-]{64})(?:[[:punct:]]|[[:space:]]|[[:blank:]]|$)'
438
+ description = "A GitLab OAuth application secret was identified. OAuth secrets are used when allowing users to sign in to your\napplication. Depending on the scopes assigned, a malicious actor could impersonate the service to access their\nrepositories or data."
439
+ title = 'GitLab OAuth application secret'
440
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo regenerate an OAuth secret:\n\n- Sign in to your GitLab account and access: <https://gitlab.com/-/profile/preferences>\n- In the \"User settings\" left-hand side menu, select \"Applications\"\n- Find the application that uses the identified token and select the name link in the \"Name\" column\n- Select \"Renew secret\" in the application details page\n- When prompted, select \"Renew secret\"\n\nFor more information, please see [GitLabs documentation on configuring an OAuth 2.0 provider](https://docs.gitlab.com/ee/integration/oauth_provider.html)"
441
+ tags = ['gitlab', 'gitlab_blocking', 'client_side_sd']
442
+ keywords = ['gloas']
443
+
444
+ [[rules]]
445
+ id = 'gitlab_feed_token_v2'
446
+ regex = '\b(glft-[0-9a-zA-Z_\-]{20})(?:[[:punct:]]|[[:space:]]|[[:blank:]]|$)'
447
+ description = "A GitLab feed token was identified. Your feed token authenticates you when your RSS reader loads a personalized RSS feed\nor when your calendar application loads a personalized calendar. It is visible in those feed URLs. It cannot be used to\naccess any other data. A malicious actor with access to this token can read your personalized RSS feed and issue RSS\nfeeds to your calendar feed as if they were you."
448
+ title = 'GitLab feed token v2'
449
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo regenerate a feed token:\n\n- Sign in to your GitLab account and access: <https://gitlab.com/-/profile/preferences>\n- In the \"User settings\" left-hand side menu, select \"Access tokens\"\n- Under the \"Feed token\" section, select the \"reset this token\" link\n- When prompted select \"OK\"\n\nFor more information, please see [GitLabs documentation on feed tokens](https://docs.gitlab.com/ee/security/tokens/#feed-token)."
450
+ tags = ['gitlab', 'gitlab_blocking', 'client_side_sd']
451
+ keywords = ['glft']
452
+
453
+ [[rules]]
454
+ id = 'gitlab_kubernetes_agent_token'
455
+ regex = '\b(glagent-[0-9a-zA-Z_\-]{50})(?:[[:punct:]]|[[:space:]]|[[:blank:]]|$)'
456
+ description = "A GitLab Agent for Kubernetes token was identified. The Kubernetes access token is used to authenticate the GitLab agent\nwith a Kubernetes cluster. A malicious actor with access to this token can access source code in the agent's\nconfiguration project, access source code in any public project on the GitLab instance, or even, under very specific\nconditions, obtain a Kubernetes manifest."
457
+ title = 'GitLab Kubernetes agent token'
458
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nFor more information please see [GitLabs documentation on rotating the Kubernetes agent token](https://docs.gitlab.com/ee/user/clusters/agent/work_with_agent.html#reset-the-agent-token)."
459
+ tags = ['gitlab', 'gitlab_blocking', 'client_side_sd']
460
+ keywords = ['glagent']
461
+
462
+ [[rules]]
463
+ id = 'gitlab_incoming_email_token'
464
+ regex = '\b(glimt-[0-9a-zA-Z_\-]{25})(?:[[:punct:]]|[[:space:]]|[[:blank:]]|$)'
465
+ description = "A GitLab incoming email token was identified. Your incoming email token authenticates you when you create a new issue\nby email, and is included in your personal project-specific email addresses. It cannot be used to access any other data.\nA malicious actor with access to this token can create issues as if they were you."
466
+ title = 'GitLab incoming email token'
467
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo regenerate a feed token:\n\n- Sign in to your GitLab account and access: <https://gitlab.com/-/profile/preferences>\n- In the \"User settings\" left-hand side menu, select \"Access tokens\"\n- Under the \"Incoming email token\" section, select the \"reset this token\" link\n- When prompted select \"OK\"\n\nFor more information, please see [GitLabs documentation on feed tokens](https://docs.gitlab.com/ee/security/tokens/#feed-token)."
468
+ tags = ['gitlab', 'gitlab_blocking', 'client_side_sd']
469
+ keywords = ['glimt']
470
+
471
+ [[rules]]
472
+ id = 'GrafanaCloudAccessPolicyToken'
473
+ regex = '\bglc_eyJvIjoi[0-9A-Za-z]{120,140}\b'
474
+ description = "A Grafana cloud access policy token was identified. Cloud access policy tokens are used for managing the stacks in\nGrafana. Any tokens defined in the Grafana Administration settings are limited to that Grafana's stack. Depending on the\nassigned scope, a malicious actor with access to this token can read or write metrics, logs, traces, alerts, rules, and\naccess policies."
475
+ title = 'Grafana cloud access policy token'
476
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke an access policy token:\n\n- Sign in to your Grafana instance and select \"Administration\" on the left-hand menu\n- Under \"User and access\" select \"Cloud access policies\"\n- Find the token that was identified and select the trash icon.\n\nFor more information, please see [Grafana's documentation on cloud access policies](https://grafana.com/docs/grafana-cloud/account-management/authentication-and-permissions/access-policies/)."
477
+ tags = ['gitlab_blocking']
478
+ keywords = ['glc_eyJvIjoi']
479
+
480
+ [[rules]]
481
+ id = 'GrafanaServiceAccountToken'
482
+ regex = '\bglsa_[a-zA-Z0-9]{32}_[0-9a-f]{8}\b'
483
+ description = "A Grafana service account token was identified. A service account token is a generated random string that acts as an\nalternative to a password when authenticating with Grafana's HTTP API. When you create a service account, you can\nassociate one or more access tokens with it. You can use service access tokens the same way as API keys, for example to\naccess Grafana HTTP API programmatically. A malicious actor with access to this token can call the API with the\npermissions of the service account."
484
+ title = 'Grafana service account token'
485
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke a service account token:\n\n- Sign in to your Grafana instance and select \"Administration\" on the left-hand menu\n- Under \"User and access\" select \"Service accounts\"\n- Find the service account that uses the identified service account token\n- Select the service account name in the \"Account\" column of the service accounts table\n- Under the \"Tokens\" section of the service account, select the \"X\" to reveal the \"Delete\" option\n- Select \"Delete\"\n\nFor more information, please see [Grafana's documentation on service accounts](https://grafana.com/docs/grafana-cloud/account-management/authentication-and-permissions/service-accounts/)."
486
+ tags = ['gitlab_blocking']
487
+ keywords = ['glsa_']
488
+
489
+ [[rules]]
490
+ id = 'Hashicorp Terraform user/org API token'
491
+ regex = "['\\\"][a-zA-Z0-9]{14}\\.atlasv1\\.[a-zA-Z0-9-_=]{60,70}['\\\"]"
492
+ description = "A HashiCorp Terraform API token was identified. API tokens can be used to access the HCP Terraform API. A malicious\nactor with access to this token can perform all actions the user account is entitled to."
493
+ title = 'HashiCorp Terraform API token'
494
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke an API token:\n\n- Sign in to the Terraform HCP console and access <https://app.terraform.io/app/settings/tokens>\n- Find the token that was identified\n- Select the trash icon on the right hand side of the token\n- When prompted, select \"Confirm\" in the \"Deleting token ...\" dialog\n\nFor more information, please see [Terraform's documentation on API tokens](https://app.terraform.io/app/settings/tokens)."
495
+ tags = ['gitlab_blocking']
496
+ keywords = ['.atlasv1.']
497
+
498
+ [[rules]]
499
+ id = 'Hashicorp Vault batch token'
500
+ regex = 'b\.AAAAAQ[0-9a-zA-Z_-]{156}'
501
+ description = "A HashiCorp Vault batch token was identified. Batch tokens are used when hundereds to thousands of systems need to\naccess Vault but generating unique tokens would not scale. These tokens are usually short lived and bound to a\nspecific vault policy. A malicious actor with access to this token can impersonate a service and would have the same\npermission levels as the policy that the batch token is created for."
502
+ title = 'HashiCorp Vault batch token'
503
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nBatch tokens cannot be revoked so you should use very short \"time to live\" values when creating batch tokens.\n\nFor more information, please see [Vault's documentation on batch tokens](https://developer.hashicorp.com/vault/tutorials/tokens/batch-tokens)."
504
+ tags = ['gitlab_blocking']
505
+ keywords = ['b.AAAAAQ']
506
+
507
+ [[rules]]
508
+ id = 'HashicorpVaultServiceToken'
509
+ regex = '\bhvs\.(?:[a-zA-Z0-9]{24}|CAES[a-zA-Z0-9_-]{80,130})\b'
510
+ description = "A HashiCorp Vault Service Token is an authentication credential used to access HashiCorp Vault, a secrets\nmanagement platform. This token grants access to secrets, encryption keys, and other sensitive data stored in\nVault based on the policies attached to it. A malicious actor with access to this token could read, modify, or\ndelete secrets, potentially compromising entire infrastructure environments and any systems that rely on Vault\nfor credential management."
511
+ title = 'HashiCorp Vault Service Token'
512
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab\ndocumentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke your HashiCorp Vault Service Token:\n\n1. Log in to your Vault instance at `https://your-vault-address:8200/ui` or use the Vault CLI\n2. Navigate to the \"Access\" section and select \"Auth Methods\" to identify the authentication method used\n3. Use the Vault CLI command `vault token lookup <token>` to identify the compromised token and its accessor\n4. Revoke the token immediately using `vault token revoke <token>` or `vault token revoke -accessor <accessor>`\n5. Generate a new token with appropriate policies using `vault token create -policy=<policy-name>` and update\n all applications and services that were using the compromised token\n6. Verify the revocation by attempting to use the old token, which should return an authentication error, and\n audit Vault logs at `/sys/audit` to review any unauthorized access during the exposure period\n\nFor detailed information on managing HashiCorp Vault Service Tokens, please see the\n[Vault Tokens documentation](https://developer.hashicorp.com/vault/docs/concepts/tokens)."
513
+ tags = ['gitlab_blocking']
514
+ keywords = ['hvs.']
515
+
516
+ [[rules]]
517
+ id = 'Heroku API Key'
518
+ regex = '\bHRKU-[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\b'
519
+ description = "A Heroku API key or application authorization token was identified. API keys and authorization tokens can be used to\nperform API calls on behalf of a user or account. A malicious actor with access to these tokens can access the Heroku\nAPI platform and all deployed applications."
520
+ title = 'Heroku API key or application authorization token'
521
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo regenerate an API key for the identified user:\n\n- Sign in to your account and visit <https://dashboard.heroku.com/account>\n- Under the \"API Key\" section, select \"Regenerate API Key\"\n- When prompted, select \"Regenerate API Key\" in the \"Regenerate API Key\" dialog\n\nTo regenerate an application authorization token:\n\n- Sign in to your account and visit <https://dashboard.heroku.com/account/applications>\n- Under the \"Authorizations\" section, find the registered authorization that contains the identified token\n- Select the pencil icon\n- Select \"Regenerate token\"\n\nFor more information on API keys, see [their FAQ on generating API keys](https://help.heroku.com/PBGP6IDE/how-should-i-generate-an-api-key-that-allows-me-to-use-the-heroku-platform-api).\n\nHeroku does not have any documentation on application authorization tokens."
522
+ tags = ['gitlab_blocking']
523
+ keywords = ['HRKU-']
524
+
525
+ [[rules]]
526
+ id = 'HighnoteTestSecretKey'
527
+ regex = '\bsk_test_[0-9A-Za-z_]{63,98}\b'
528
+ description = 'Highnote Test Secret Key'
529
+ title = 'Highnote Test Secret Key'
530
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
531
+ tags = ['gitlab_blocking']
532
+ keywords = ['sk_test_']
533
+
534
+ [[rules]]
535
+ id = 'HighnoteLiveSecretKey'
536
+ regex = '\bsk_live_[0-9A-Za-z_]{63,98}\b'
537
+ description = 'Highnote Live Secret Key'
538
+ title = 'Highnote Live Secret Key'
539
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
540
+ tags = ['gitlab_blocking']
541
+ keywords = ['sk_live_']
542
+
543
+ [[rules]]
544
+ id = 'Hubspot API token'
545
+ regex = '\bpat-[a-z]{2}[0-9]-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b'
546
+ description = "A HubSpot private app API token was identified. Private apps allow you to use HubSpot's APIs to access specific data\nfrom your HubSpot account and can be restricted by setting specific scopes. A malicious actor with access to this token\ncan call API endpoints with the same levels as those set in the scope of the application. This could be anywhere from\nonly reading marketing campaigns to accessing user and account information and sending emails."
547
+ title = 'HubSpot private app API token'
548
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo rotate a private app API token:\n\n- Sign in to your HubSpot account at <https://app.hubspot.com/>\n- In the left-hand menu, hover over the database icon and select \"Integrations\"\n- Find the private app that has the identified token and select its name\n- Select the \"Auth\" tab in the top of the page\n- In the \"Access token\" section of the page, select \"Rotate\"\n- Select \"Rotate and expire this token now\" when prompted\n- Select \"Rotate now\" in the \"Rotate access token now?\" dialog\n\nFor more information, please see [HubSpot's documentation on private apps](https://developers.hubspot.com/beta-docs/guides/apps/private-apps/overview)"
549
+ tags = ['gitlab_blocking']
550
+ keywords = ['pat-']
551
+
552
+ [[rules]]
553
+ id = 'HuggingFaceUserAccessToken'
554
+ regex = '\bhf_[A-Za-z]{34}\b'
555
+ description = 'Hugging Face User Access Token'
556
+ title = 'Hugging Face User Access Token'
557
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
558
+ tags = ['gitlab_blocking']
559
+ keywords = ['hf_']
560
+
561
+ [[rules]]
562
+ id = 'Intercom API token'
563
+ regex = '\bdG9rO(?:[0-9A-Za-z]{55}\b|[0-9A-Za-z]{54}=|[0-9A-Za-z]{53}==)'
564
+ description = "An Intercom API Token was detected. These tokens provide direct API access to your Intercom workspace and can\nbe either personal access tokens or app-level access tokens. A malicious actor with access to this token could\nread customer conversations, access user data, send messages, modify workspace settings, and perform other\nactions based on the token's permission scope."
565
+ title = 'Intercom API Token'
566
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab\ndocumentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke your Intercom API Token:\n\n1. Log in to your [Intercom workspace](https://app.intercom.com/)\n2. Navigate to Settings by clicking the gear icon in the bottom-left corner\n3. Select \"Developers\" from the settings menu, then choose \"Developer Hub\"\n4. Click on \"Your Apps\" and select the app associated with the compromised token\n5. In the \"Authentication\" section, locate the access token that was compromised\n6. Click \"Revoke\" next to the compromised token to immediately invalidate it\n7. Generate a new access token by clicking \"Create access token\" or \"New access token\"\n8. Update all applications, services, and integrations with the new token\n9. Test API calls to verify the new token works correctly and the old token is invalid\n\nFor detailed information on managing Intercom API tokens, please see the\n[Intercom API Authentication Documentation](https://developers.intercom.com/docs/build-an-integration/learn-more/authentication/)."
567
+ tags = ['gitlab_blocking']
568
+ keywords = ['dG9rO']
569
+
570
+ [[rules]]
571
+ id = 'ArtifactoryApiKey'
572
+ regex = '\bAKCp[0-9A-Za-z/+]{69}\b'
573
+ description = "An Artifactory API Key was identified. An Artifactory API Key enable actions like deploying artifacts,\nmanaging repositories, configuring permissions, and retrieving artifacts from JFrog Artifactory repositories.\nIf leaked, a malicious actor could use it to exfiltrate sensitive proprietary code, inject malicious packages into\nthe build pipeline, or delete critical artifacts that could disrupt an organization's software delivery capabilities."
574
+ title = 'Artifactory API Key'
575
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
576
+ tags = ['gitlab_blocking']
577
+ keywords = ['AKCp']
578
+
579
+ [[rules]]
580
+ id = 'ArtifactoryIdentityToken'
581
+ regex = '\bcmVmd[0-9A-Za-z]{59}\b'
582
+ description = "An Artifactory Identity Token was identified.\nAn Artifactory Identity Token allows authentication to access repositories, download artifacts, upload artifacts,\nand execute privileged operations within JFrog Artifactory based on the token's assigned permissions. If leaked,\na malicious actor could use this token to steal proprietary code, inject compromised dependencies into the software\nsupply chain, or potentially gain unauthorized access to connected CI/CD systems that rely on Artifactory for builds."
583
+ title = 'Artifactory Identity Token'
584
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
585
+ tags = ['gitlab_blocking']
586
+ keywords = ['cmVmd']
587
+
588
+ [[rules]]
589
+ id = 'KubernetesServiceAccToken'
590
+ regex = 'eyJ[A-Za-z0-9_-]{20,200}\.eyJ[A-Za-z0-9_-]{80,800}(?:c3lzdGVtOnNlcnZpY2VhY2NvdW50|N5c3RlbTpzZXJ2aWNlYWNjb3VudD|zeXN0ZW06c2VydmljZWFjY291bnQ)[A-Za-z0-9_-]{10,400}\.[A-Za-z0-9_-]{20,800}'
591
+ description = "A Kubernetes Service Account Token is a credential used by pods and services to authenticate with the\nKubernetes API server. This token grants access to cluster resources based on the permissions assigned to the\nservice account through Role-Based Access Control (RBAC). A malicious actor with access to this token could\nperform any actions permitted by the service account, including accessing sensitive data, deploying malicious\nworkloads, modifying cluster resources, or escalating privileges within the cluster."
592
+ title = 'Kubernetes Service Account Token'
593
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab\ndocumentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke your Kubernetes Service Account Token:\n\n1. Access your Kubernetes cluster using kubectl or the Kubernetes Dashboard\n2. Identify the compromised service account by name and namespace\n3. Delete the compromised service account to immediately invalidate all associated tokens:\n `kubectl delete serviceaccount <service-account-name> -n <namespace>`\n4. Recreate the service account with the same name (this generates a new UID and invalidates old tokens):\n `kubectl create serviceaccount <service-account-name> -n <namespace>`\n5. Reapply any RBAC roles and role bindings that were associated with the service account\n6. Restart all pods using this service account to mount the new token:\n `kubectl rollout restart deployment/<deployment-name> -n <namespace>`\n7. Verify pods are running successfully and can authenticate to the API server by checking pod logs\n8. If using long-lived token Secrets (legacy method), delete the Secret containing the compromised token:\n `kubectl delete secret <secret-name> -n <namespace>`\n\nFor detailed information on managing Kubernetes Service Account Tokens, please see the official\n[Service Accounts documentation](https://kubernetes.io/docs/concepts/security/service-accounts/) and\n[Configure Service Accounts for Pods](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/)."
594
+ tags = ['gitlab_blocking']
595
+ keywords = ['c3lzdGVtOnNlcnZpY2VhY2NvdW50', 'N5c3RlbTpzZXJ2aWNlYWNjb3VudD', 'zeXN0ZW06c2VydmljZWFjY291bnQ']
596
+
597
+ [[rules]]
598
+ id = 'LangChainAPIKey'
599
+ regex = 'lsv2_(?:pt|sk)_[a-f0-9]{32}_[a-f0-9]{10}\b'
600
+ description = "A LangChain API Key (also known as a LangSmith API Key) provides authentication to LangSmith, which is\nLangChain's observability and evaluation platform for LLM applications. These keys enable access to tracing,\nmonitoring, evaluation tools, and usage analytics for applications built with LangChain. A malicious actor with\naccess to this key could view sensitive trace data, access evaluation datasets, monitor application usage and\nperformance metrics, and potentially incur costs on your account through API usage."
601
+ title = 'LangChain API Key'
602
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab\ndocumentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke your LangChain API Key:\n\n1. Log in to the LangSmith platform at <https://smith.langchain.com>\n2. Navigate to the Settings page by clicking on your profile menu in the top right corner and selecting \"Settings\"\n3. Scroll down to the \"API Keys\" section\n4. Locate the compromised API key in the list (you may identify it by creation date, last used date, or key name)\n5. Click on the delete or revoke option next to the compromised key to remove it\n6. Create a new API key by clicking \"Create API Key\" and selecting the appropriate key type (Service Key or\n Personal Access Token)\n7. Update all applications and systems that use this credential by replacing the old `LANGSMITH_API_KEY` or\n `LANGCHAIN_API_KEY` environment variable with the new key\n8. Verify the change was successful by confirming that your applications can still authenticate and traces are\n being logged to LangSmith\n\nFor detailed information on managing LangChain API Keys, please see the\n[official LangSmith documentation](https://docs.smith.langchain.com/administration/how_to_guides/organization_management/create_account_api_key)."
603
+ tags = ['gitlab_blocking']
604
+ keywords = ['lsv2']
605
+
606
+ [[rules]]
607
+ id = 'Linear API token'
608
+ regex = '\blin_api_[a-zA-Z0-9]{40}\b'
609
+ description = "A Linear API token was identified. Personal API tokens can be used to access Linear's GraphQL API. A malicious actor\nwith access to this token can read or write issues, projects and teams to Linear and any systems the account has been\nintegrated with."
610
+ title = 'Linear API token'
611
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke a Linear API token:\n\n- Sign in to your account at <https://linear.app/>\n- Select your organization in the top left corner and select \"Preferences\"\n- In the left-hand menu, select \"API\" under \"My Account\"\n- Find the identified API key in the \"Personal API Keys\" section of the page\n- Select \"Revoke\" next to the identified key\n- When prompted, select \"Revoke\" in the \"Revoke access?\" dialog\n\nFor more information, please see [Linear's documentation on using personal API keys](https://developers.linear.app/docs/graphql/working-with-the-graphql-api#personal-api-keys)."
612
+ tags = ['gitlab_blocking']
613
+ keywords = ['lin_api_']
614
+
615
+ [[rules]]
616
+ id = 'Mailchimp API key'
617
+ regex = "(?i:mailchimp)[a-zA-Z0-9_ .\\-,]{0,25}(?:=|>|:=|\\|\\|:|<=|=>|:).{0,5}['\\\"]([a-f0-9]{32}-us20)['\\\"]"
618
+ description = "A Mailchimp API key was identified. API keys can be used send emails, create and send marketing campaigns, access\ncustomer lists and email addresses. A malicious actor with access to this key can perform any API request to Mailchimp\nwithout restriction."
619
+ title = 'Mailchimp API key'
620
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke an API key:\n\n- Sign in to your Mailchimp account at <https://login.mailchimp.com/>\n- Select your profile icon then select Profile\n- Select the Extras dropdown list then choose \"API keys\"\n- Find the identified key and select \"Revoke\"\n- When prompted, type \"REVOKE\" to confirm and select \"Revoke\" in the \"Revoke API Key\" dialog\n\nFor more information, please see [Mailchimp's documentation on API key security](https://mailchimp.com/help/about-api-keys/#api+key+security)."
621
+ tags = ['gitlab_blocking']
622
+ keywords = ['mailchimp']
623
+
624
+ [[rules]]
625
+ id = 'Mailgun private API token'
626
+ regex = "(?i:mailgun)[a-zA-Z0-9_ .\\-,]{0,25}(?:=|>|:=|\\|\\|:|<=|=>|:).{0,5}['\\\"](key-[a-f0-9]{32})['\\\"]"
627
+ description = "A Mailgun private API token was identified. This key allows you to perform read, write, and delete operations through\nvarious API endpoints and for any of your sending domains. A malicious actor with access to this key can perform any API\nrequest to Mailgun without restriction."
628
+ title = 'Mailgun private API token'
629
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo rotate a private API token:\n\n- Sign in to your Mailgun account and access the dashboard at <https://app.mailgun.com/>\n- On the top right-hand side, select your account profile and then select \"API Security\"\n- Find the identified key and select the trash icon\n - If you cannot select the trash icon, you must first generate a new key by selecting \"Add new key\"\n- When prompted, select \"Delete\" in the \"Delete API Key\" dialog\n\nFor more information, please see [Mailgun's documentation on API keys](https://documentation.mailgun.com/docs/mailgun/user-manual/get-started/#primary-account-api-key)."
630
+ tags = ['gitlab_blocking']
631
+ keywords = ['mailgun']
632
+
633
+ [[rules]]
634
+ id = 'Mailgun webhook signing key'
635
+ regex = "(?i:mailgun)[a-zA-Z0-9_ .\\-,]{0,25}(?:=|>|:=|\\|\\|:|<=|=>|:).{0,5}['\\\"]([a-h0-9]{32}-[a-h0-9]{8}-[a-h0-9]{8})['\\\"]"
636
+ description = "A Mailgun webhook signing key was identified. This key is used by Mailgun to sign all incoming webhook message payloads.\nA malicious actor with access to this key can potentially sign fake webhook events and send it to your service to pass\nvalidation and be processed."
637
+ title = 'Mailgun webhook signing key'
638
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo rotate your HTTP webhook signing key:\n\n- Sign in to your Mailgun account and access the dashboard at <https://app.mailgun.com/>\n- On the top right-hand side, select your account profile and select \"API Security\"\n- In the \"HTTP webhook signing key\" section, select the rotate arrow icon in the right hand side\n- When prompted, select \"Reset Key\" in the \"Reset HTTP webhook signing key\" dialog\n\nFor more information, please see [Mailgun's documentation on webhooks](https://documentation.mailgun.com/docs/mailgun/user-manual/tracking-messages/#securing-webhooks)."
639
+ tags = ['gitlab_blocking']
640
+ keywords = ['mailgun']
641
+
642
+ [[rules]]
643
+ id = 'MaxMind License Key'
644
+ regex = '\b([a-zA-Z0-9]{6}_[a-zA-Z0-9]{29}_mmk)\b'
645
+ description = 'MaxMind License Key'
646
+ title = 'MaxMind License Key'
647
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
648
+ tags = ['gitlab_blocking']
649
+ keywords = ['_mmk']
650
+
651
+ [[rules]]
652
+ id = 'New Relic user API Key'
653
+ regex = '\bNRAK-[0-9A-Z]{27}\b'
654
+ description = "A New Relic user API key was identified. User keys are used for querying data and managing configurations (Alerts,\nSynthetics, dashboards, etc.). A malicious actor with access to this key can execute API requests as the user who\ncreated it."
655
+ title = 'New Relic user API key'
656
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nFor more information, please see [New Relic's documentation on rotating API keys](https://docs.newrelic.com/docs/apis/intro-apis/new-relic-api-keys/#rotate-keys)."
657
+ tags = ['gitlab_blocking']
658
+ keywords = ['NRAK-']
659
+
660
+ [[rules]]
661
+ id = 'New Relic user API ID'
662
+ regex = "(?i:newrelic)[a-zA-Z0-9_ .\\-,]{0,25}(?:=|>|:=|\\|\\|:|<=|=>|:).{0,5}['\\\"]([a-zA-Z0-9]{64})['\\\"]"
663
+ description = 'New Relic user API ID'
664
+ title = 'New Relic user API ID'
665
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nFor more information, please see [New Relic's documentation on rotating API keys](https://docs.newrelic.com/docs/apis/intro-apis/new-relic-api-keys/#rotate-keys)."
666
+ tags = ['gitlab_blocking']
667
+ keywords = ['newrelic']
668
+
669
+ [[rules]]
670
+ id = 'npm access token'
671
+ regex = "['\\\"](npm_[a-zA-Z0-9]{36})['\\\"]"
672
+ description = "An npm access token was identified. Access tokens can either be classic or granular, both of which allow customization\nof permissions. Depending on the permissions, a malicious actor with access to this token can read packages and package\ninformation, or create new packages and publish them under the account that created them."
673
+ title = 'npm access token'
674
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke an access token from the UI:\n\n- Sign in to your npm account at <https://www.npmjs.com/login>\n- In the top right corner, select your profile picture and then select \"Access Tokens\"\n- Find the token that was identified and select \"x\" in the \"Delete\" column\n- When prompted, select \"OK\" in the dialog\n\nFor more information, please see [npm's documentation on revoking access tokens](https://docs.npmjs.com/revoking-access-tokens)."
675
+ tags = ['gitlab_blocking']
676
+ keywords = ['npm_']
677
+
678
+ [[rules]]
679
+ id = 'OktaAPITokenHeader'
680
+ regex = '\bSSWS (00[A-Za-z0-9_-]{40})\b'
681
+ description = "An Okta API Token is a credential used to authenticate API requests to an Okta organization. This token provides\nprogrammatic access to Okta's management APIs, allowing operations such as user management, group administration,\nand configuration changes. A malicious actor with access to this token could read sensitive user data, modify\nsecurity policies, create backdoor accounts, or disrupt authentication services for the entire organization."
682
+ title = 'Okta API Token'
683
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab\ndocumentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke your Okta API Token:\n\n- Log in to your Okta Admin Console at `https://[your-domain].okta.com/admin`\n- Navigate to **Security** > **API** from the main menu\n- Select the **Tokens** tab to view all API tokens\n- Locate the compromised token by its name, creation date, or last used timestamp\n- Click the **Revoke** button next to the compromised token and confirm the revocation\n- Generate a new API token if needed and update all applications or scripts that use this credential\n- Review API access logs under **Reports** > **System Log** to identify any unauthorized activity\n\nFor detailed information on managing Okta API Tokens, please see the\n[Okta API Token Management Documentation](https://developer.okta.com/docs/guides/create-an-api-token/main/)."
684
+ tags = ['gitlab_blocking']
685
+ keywords = ['SSWS 00']
686
+
687
+ [[rules]]
688
+ id = 'Onfido Live API Token'
689
+ regex = '\bapi_live(?:_[a-z]{2})?\.[_a-zA-Z0-9]{11}\.[-_a-zA-Z0-9]{32}\b'
690
+ description = 'Onfido Live API Token'
691
+ title = 'Onfido Live API Token'
692
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
693
+ tags = ['gitlab_blocking']
694
+ keywords = ['api_live']
695
+
696
+ [[rules]]
697
+ id = 'OpenAiProjectKey'
698
+ regex = '\bsk-proj-[a-zA-Z0-9_-]{40,190}\b'
699
+ description = "An OpenAI project API key was identified. A project key can be used for programmatic access to OpenAI's API. A malicious\nactor with access to this key can execute functionality on behalf of the user who created the key."
700
+ title = 'OpenAI project key'
701
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke Open AI project API key:\n\n- Sign in to your OpenAI account and visit <https://platform.openai.com/settings/>\n- On the left-hand side menu, select \"API Keys\" under \"Project\"\n- Find the key that was identified, and select the red trash icon on the right-hand side.\n- When prompted, select \"Revoke key\" in the \"Revoke secret key\" dialog\n\nFor more information, please see [OpenAI's documentation on project API keys](https://platform.openai.com/docs/api-reference/project-api-keys)."
702
+ tags = ['gitlab_blocking']
703
+ keywords = ['sk-proj-']
704
+
705
+ [[rules]]
706
+ id = 'OpenAiServiceAccountKey'
707
+ regex = '\bsk-svcacct-[a-zA-Z0-9_-]{40,190}\b'
708
+ description = "An OpenAI service account key was identified. A service account key can be used for programmatic access to OpenAI's API.\nA malicious actor with access to this key can execute functionality on behalf of the user who created the key."
709
+ title = 'OpenAI service account key'
710
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\n- Sign in to your OpenAI account and visit <https://platform.openai.com/settings/>\n- On the left-hand side menu, select \"API Keys\" under \"Organization\"\n- Find the key that was identified, and select the red trash icon on the right-hand side.\n- When prompted, select \"Revoke key\" in the \"Revoke secret key\" dialog\n\nFor more information, please see [OpenAI's documentation on project service accounts](https://platform.openai.com/docs/api-reference/project-service-accounts)."
711
+ tags = ['gitlab_blocking']
712
+ keywords = ['sk-svcacct-']
713
+
714
+ [[rules]]
715
+ id = 'OpenAiServiceAdminKey'
716
+ regex = '\bsk-admin-[a-zA-Z0-9_-]{124}'
717
+ description = "An OpenAI admin key was identified. Admin keys are for programmatic administration of your account. Admin keys grant\naccess to endpoints detailed in the [API Reference for Organizations](https://platform.openai.com/docs/api-reference/administration).\nA malicious actor with access to this key can take over the administration of the organization."
718
+ title = 'OpenAI admin key'
719
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke an OpenAI admin key:\n\n- Sign in to your OpenAI account and visit <https://platform.openai.com/settings/>\n- On the left-hand side menu, select \"Admin Keys\" under \"Organization\"\n- Find the key that was identified, and select the red trash icon in the right-hand side\n- When prompted, select \"Revoke key\" in the \"Revoke secret key\" dialog\n\nFor more information, please see [OpenAI's documentation on administration](https://platform.openai.com/docs/api-reference/administration)."
720
+ tags = ['gitlab_blocking']
721
+ keywords = ['sk-admin-']
722
+
723
+ [[rules]]
724
+ id = 'Planetscale password'
725
+ regex = '\bpscale_pw_[a-zA-Z0-9]{43}\b'
726
+ description = "A PlanetScale password was identified. PlanetScale passwords are used to connect to database instances. A malicious\nactor with access to this password can access PlanetScale managed databases."
727
+ title = 'PlanetScale password'
728
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nFor more information, please see [PlanetScale's documentation on database connection strings](https://planetscale.com/docs/concepts/connection-strings)."
729
+ tags = ['gitlab_blocking']
730
+ keywords = ['pscale_pw_']
731
+
732
+ [[rules]]
733
+ id = 'Planetscale API token'
734
+ regex = '\bpscale_tkn_[a-zA-Z0-9\-_]{43}\b'
735
+ description = "A PlanetScale API service token was identified. Service tokens are created and assigned permissions depending on the\nallowed scope. A malicious actor with access to the service token is granted the same permissions that were assigned to\nthis service token."
736
+ title = 'PlanetScale API token'
737
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke a service token:\n\n- Sign in to your PlanetScale account and access <https://app.planetscale.com/>.\n- From the menu on the left-hand side, select \"Settings\"\n- Under \"Settings\", select \"Service tokens\"\n- Find the identified security token and select its name\n- Take note of its organization access, permissions and scope\n- Select \"Delete service token\" in the top right corner\n- When prompted, select \"Delete\" in the \"Delete service token\" dialog\n\nFor more information, please see [PlanetScale's documentation on service tokens](https://planetscale.com/docs/concepts/service-tokens)."
738
+ tags = ['gitlab_blocking']
739
+ keywords = ['pscale_tkn_']
740
+
741
+ [[rules]]
742
+ id = 'PlanetscaleAppSecret'
743
+ regex = '\bpscale_app_secret_[0-9A-Za-z_-]{43}\b'
744
+ description = "A PlanetScale App secret was identified. App secrets are used when allowing users to sign in to your application.\nDepending on the scopes assigned, a malicious actor with access to this secret can impersonate the service to access\nusers details."
745
+ title = 'PlanetScale App secret'
746
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo regenerate an OAuth secret:\n\n- Sign in to your PlanetScale account and access <https://app.planetscale.com/>.\n- From the menu on the left-hand side, select \"Settings\"\n- Under \"Settings\", select \"OAuth applications\"\n- Find the application that uses the identified token and select its name\n- Take note of the OAuth application's permissions and scope\n- Select \"Generate secret\"\n\nFor more information, please see [PlanetScale's documentation on OAuth applications](https://planetscale.com/docs/concepts/planetscale-api-oauth-applications#oauth-applications)."
747
+ tags = ['gitlab_blocking']
748
+ keywords = ['pscale_app_secret_']
749
+
750
+ [[rules]]
751
+ id = 'PlanetscaleOAuthSecret'
752
+ regex = '\bpscale_oauth_[0-9A-Za-z]{32,64}\b'
753
+ description = 'PlanetScale OAuth secret'
754
+ title = 'PlanetScale OAuth secret'
755
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
756
+ tags = ['gitlab_blocking']
757
+ keywords = ['pscale_oauth_']
758
+
759
+ [[rules]]
760
+ id = 'PostHogPersonalAPIkey'
761
+ regex = '\bphx_[0-9A-Za-z]{43}\b'
762
+ description = 'A PostHog Personal API key was identified. API keys can enable full access to your account.'
763
+ title = 'Posthog Personal API key'
764
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke an API Key, sign in to your PostHog account and access your\n[Personal API keys](https://us.posthog.com/settings/user-api-keys).\n\nFor more information, please see [PostHog's API Overview documentation](https://posthog.com/docs/api)."
765
+ tags = ['gitlab_blocking']
766
+ keywords = ['phx_']
767
+
768
+ [[rules]]
769
+ id = 'Postman API token'
770
+ regex = '\bPMAK-[a-f0-9]{24}-[a-f0-9]{34}\b'
771
+ description = "A Postman API token was identified. An API key provides access to any Postman data the account has permissions to.\nA malicious actor with access to this token can access all data stored in the Postman service that the user who created\nthe API key has access to."
772
+ title = 'Postman API token'
773
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo regenerate an API token:\n\n- Sign in to your Postman account at <https://www.postman.com/>\n- Select the profile picture in the top right-hand side, and select \"Settings\"\n- Select \"API keys\" in the left-hand menu\n- Find the key that was identified, and select the ellipsis next to the status column in the \"API keys\" section\n- Select \"Regenerate\"\n- When prompted, select \"Regenerate API Key\" in the \"Regenerate API key\" dialog\n\nFor more information, please see [Postman's documentation on API keys](https://learning.postman.com/docs/developer/postman-api/authentication/)."
774
+ tags = ['gitlab_blocking']
775
+ keywords = ['PMAK-']
776
+
777
+ [[rules]]
778
+ id = 'PostmanCollectionAccessKey'
779
+ regex = '\bPMAT-[A-Z0-9]{26}\b'
780
+ description = "A Postman collection access key was identified. Collection access keys allow read-only access to a single collection.\nA malicious actor with access to this token can read all data stored in the collection this key is associated with."
781
+ title = 'Postman collection access key'
782
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo delete a collection access key:\n\n- Sign in to your Postman account at <https://www.postman.com/>\n- Select the profile picture in the top right-hand side, and select \"Settings\"\n- Select \"API keys\" in the left-hand menu\n- Find the key that was identified in the \"Collection access keys\" section\n- Select \"Delete\"\n\nFor more information, please see [Postman's documentation on generating collection access keys](https://learning.postman.com/docs/developer/postman-api/authentication/#generate-a-collection-access-key)."
783
+ tags = ['gitlab_blocking']
784
+ keywords = ['PMAT-']
785
+
786
+ [[rules]]
787
+ id = 'PyPI upload token'
788
+ regex = 'pypi-AgEIcHlwaS5vcmc[A-Za-z0-9-_]{50,1000}'
789
+ description = "A PyPi upload token was identified. Upload tokens are used for uploading packages for publishing Python packages.\nA malicious actor with access to this token can upload potentially malicious artifacts."
790
+ title = 'PyPi upload token'
791
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nIt is strongly recommended to switch to OIDC Connect instead of using PyPi upload tokens.\nPlease see [PyPi's documentation on trusted publishers](https://docs.pypi.org/trusted-publishers/).\n\nTo delete a PyPi upload token:\n\n- Sign in to your PyPi account and visit <https://pypi.org/manage/account/>\n- Scroll down to the \"API tokens\" section\n- Find the identified token and select the \"Options\" dropdown list\n- Select \"Remove token\"\n- When prompted, enter your password and select \"Remove API Token\"\n\nFor more information, please see [PyPi's documentation on upload tokens](https://pypi.org/help/#apitoken)."
792
+ tags = ['pypi', 'revocation_type', 'gitlab_blocking']
793
+ keywords = ['pypi-AgEIcHlwaS5vcmc']
794
+
795
+ [[rules]]
796
+ id = 'Rubygem API token'
797
+ regex = 'rubygems_[a-f0-9]{48}'
798
+ description = "A RubyGems API token was identified. RubyGems tokens are used for accessing the API or publishing packages. RubyGems\ntokens can be created with specific permissions or scopes. Depending on the permissions and scope, a malicious actor\nwith access to this token can add or remove packages, add or remove owners, or view the dashboard."
799
+ title = 'RubyGems API token'
800
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke the API token:\n\n- Sign in to your RubyGems account and access <https://rubygems.org/settings/edit>\n- Scroll down to and select \"API Keys\" or go to <https://rubygems.org/profile/api_keys>\n- Find the identified token and select \"Delete\"\n- When prompted, select \"OK\" in the dialog.\n\nFor more information, please see the [RubyGems documentation on API tokens](https://guides.rubygems.org/api-key-scopes/)."
801
+ tags = ['gitlab_blocking']
802
+ keywords = ['rubygems_']
803
+
804
+ [[rules]]
805
+ id = 'Segment Public API token'
806
+ regex = 'sgp_[a-zA-Z0-9]{64}'
807
+ description = "A Segment Public API token was identified. The Segment Public API is used to manage your Segment workspaces and its\nresources. Two types of tokens match this pattern, a workspace owner token and a limited role token. In general these\ntokens allow callers of the API to perform read, write, and delete operations. A malicious actor with access to a\nworkspace owner token can access all workspace data. A limited role token can access the data it was granted access to\non creation."
808
+ title = 'Segment public API token'
809
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo rotate a Public API token:\n\n- Sign in to your Segment account and access your workspace from <https://app.segment.com/>\n- From the left-hand menu, select \"Settings\" and go to \"Workspace settings\"\n- Select the \"Access Management\" tab in the \"Workspace settings\" page\n- Select the \"Tokens\" tab under \"Access Management\"\n- Find the key that was identified, and select it\n- In the right hand side, select \"Edit token\" in the \"Token Permissions\" section\n- Select \"Remove token\" in the top right corner\n- When prompted, select \"Remove Token\" in the dialog\n\nFor more information, please see [Segment's documentation on their public API](https://segment.com/docs/api/public-api/)."
810
+ tags = ['gitlab_blocking']
811
+ keywords = ['sgp_']
812
+
813
+ [[rules]]
814
+ id = 'Sendgrid API token'
815
+ regex = 'SG\.[a-zA-Z0-9_\-\.]{66}'
816
+ description = 'SendGrid API token'
817
+ title = 'SendGrid API token'
818
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
819
+ tags = ['gitlab_blocking']
820
+ keywords = ['SG.']
821
+
822
+ [[rules]]
823
+ id = 'Sendinblue API token'
824
+ regex = '\bxkeysib-[a-f0-9]{64}-[a-zA-Z0-9]{16}\b'
825
+ description = 'Brevo API token'
826
+ title = 'Brevo API token'
827
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
828
+ tags = ['gitlab_blocking']
829
+ keywords = ['xkeysib-']
830
+
831
+ [[rules]]
832
+ id = 'Sendinblue SMTP token'
833
+ regex = '\bxsmtpsib-[a-f0-9]{64}-[a-zA-Z0-9]{16}\b'
834
+ description = 'Brevo SMTP token'
835
+ title = 'Brevo SMTP token'
836
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
837
+ tags = ['gitlab_blocking']
838
+ keywords = ['xsmtpsib-']
839
+
840
+ [[rules]]
841
+ id = 'Shippo API token'
842
+ regex = '\bshippo_live_[a-f0-9]{40}\b'
843
+ description = "A live Shippo API token was identified. API tokens can be used to access the Shippo API which is used for shipping services.\nA malicious actor with access to this token can access billing and order information and modify shipping data."
844
+ title = 'Shippo API token'
845
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke an API token:\n\n- Sign in to your Shippo account and access <https://apps.goshippo.com/>\n- In the top right-hand side, select the \"gear\" icon to go to the \"Settings\" page\n- Scroll down in the left hand menu to \"Advanced\" and select \"API\"\n- Under the \"Token\" section, select \"Manage your token\"\n- Find the identified token and select the trash icon\n- When prompted, select \"Yes, remove token\" in the \"Manage Your Tokens\" dialog\n\nFor more information, please see [Shippo's documentation on API keys](https://portal.goshippo.com/api-config/api)."
846
+ tags = ['gitlab_blocking']
847
+ keywords = ['shippo_live_']
848
+
849
+ [[rules]]
850
+ id = 'Shopify shared secret'
851
+ regex = 'shpss_[a-fA-F0-9]{32}'
852
+ description = 'Shopify shared secret'
853
+ title = 'Shopify shared secret'
854
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
855
+ tags = ['gitlab_blocking']
856
+ keywords = ['shpss_']
857
+
858
+ [[rules]]
859
+ id = 'Shopify access token'
860
+ regex = 'shpat_[a-fA-F0-9]{32}'
861
+ description = "A Shopify personal access token was identified. Access tokens can be given\nrestricted scopes or be given full access to all store data. A malicious actor who gained\naccess to this token could be able to read or modify store data."
862
+ title = 'Shopify personal access token'
863
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nAccess tokens cannot be revoked, you must uninstall and reinstall the application.\n\nPlease see [Shopify's documentation for more details](https://shopify.dev/docs/apps/build/authentication-authorization/access-tokens/generate-app-access-tokens-admin#rotating-api-credentials-for-admin-created-apps)."
864
+ tags = ['gitlab_blocking']
865
+ keywords = ['shpat_']
866
+
867
+ [[rules]]
868
+ id = 'Shopify custom app access token'
869
+ regex = 'shpca_[a-fA-F0-9]{32}'
870
+ description = 'Shopify custom app access token'
871
+ title = 'Shopify custom app access token'
872
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
873
+ tags = ['gitlab_blocking']
874
+ keywords = ['shpca_']
875
+
876
+ [[rules]]
877
+ id = 'Shopify private app access token'
878
+ regex = 'shppa_[a-fA-F0-9]{32}'
879
+ description = 'Shopify private app access token'
880
+ title = 'Shopify private app access token'
881
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
882
+ tags = ['gitlab_blocking']
883
+ keywords = ['shppa_']
884
+
885
+ [[rules]]
886
+ id = 'ShopifyPartnerAPIToken'
887
+ regex = '\bprtapi_[a-f0-9]{32}\b'
888
+ description = "A Shopify partner API token was identified. Partner API tokens can be restricted to only allowing access to the\nfollowing:\n\n- View financials: This permission is required to access Transaction resources. These resources represent all of the\n transactions that impact your Partner earnings.\n- Manage apps: This permission is required to access App resources, including all app-related events such as installs,\n uninstalls, and charges. This resource represents all of the public and private apps managed by your organization.\n- Manage themes: This permission is required to access the Theme resource. This resource represents all of the Shopify\n themes managed by your organization.\n- Manage jobs: This permission is required to access Conversation and Job resources. These resources represent Experts\n Marketplace conversations and jobs owned by your organization.\n\nA malicious actor with access to this token can access one or more of these functions."
889
+ title = 'Shopify Partner API token'
890
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo rotate your Shopify partner API token:\n\n- Sign in to your Shopify partner account and access <https://partners.shopify.com/>\n- In the left-hand menu, select \"Settings\"\n- Scroll down to \"Partner API clients\" and select \"Manage Partner API clients\"\n- Select the client that uses the identified token\n- Select \"Generate secondary token\"\n- Select the trash icon next to the identified token\n- When prompted, select \"Delete token\" in the \"Delete access token?\" dialog\n\nPlease see [Shopify's documentation for more details](https://shopify.dev/docs/api/partner#authentication)."
891
+ tags = ['gitlab_blocking']
892
+ keywords = ['prtapi_']
893
+
894
+ [[rules]]
895
+ id = 'Slack token'
896
+ regex = 'xox[baprs]-([0-9a-zA-Z]{10,48})'
897
+ description = "A Slack bot user OAuth token was identified. A Slack app's capabilities and permissions are governed by the scopes it\nrequests. A full list of permissions can be found [in Slack's scopes documentation](https://api.slack.com/scopes).\nA malicious actor with access to this token can execute functionality that was assigned to it."
898
+ title = 'Slack bot user OAuth token'
899
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke a Slack bot user OAuth token (Note: This requires all users to re-authorize your application):\n\n- Sign in to Slack and access <https://api.slack.com/apps>\n- Find the application with the identified token and select the name\n- In the left-hand menu, select \"OAuth & Permissions\"\n- Scroll down to \"Revoke All OAuth Tokens\" and select \"Revoke tokens\"\n- When prompted, select \"Yes, I'm sure\" in the \"Are you sure?\" dialog\n- After some time, scroll back up to the \"OAuth Tokens\" section and select \"Reinstall to XXX\", where XXX is your\n workspace name\n\nFor more information, please see [Slack's documentation on OAuth](https://api.slack.com/authentication/oauth-v2)"
900
+ tags = ['gitlab_blocking']
901
+ keywords = ['xoxb', 'xoxa', 'xoxp', 'xoxr', 'xoxs']
902
+
903
+ [[rules]]
904
+ id = 'SlackAppLevelToken'
905
+ regex = '\bxapp-1-[A-Z0-9]{11}-[0-9]{13}-[a-f0-9]{64}\b'
906
+ description = "A Slack app level token was identified. App level tokens are for use with Slack apps but only with specific APIs, which\nare related to the app across all organizations where the app is installed. Three scope levels can be assigned:\n\n- connections:write: Route your app's interactions and event payloads over WebSockets\n- authorizations:read: View information about your app's authorizations on installed teams\n- app_configurations:write: Configure your application\n\nA malicious actor with access to this token is granted one or more of the above permissions to access the API with for\na specific application."
907
+ title = 'Slack app level token'
908
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke a Slack app level token:\n\n- Sign in to Slack and access <https://api.slack.com/apps>\n- Find the application with the identified token and select the name\n- In the left-hand menu, select \"Basic Information\"\n- Scroll down to the \"App-Level Tokens\" section and select the token name of the identified token\n- In the token dialog, select \"Revoke\"\n- When prompted, select \"Yes, I'm sure\" in the \"Are you sure?\" dialog"
909
+ tags = ['gitlab_blocking']
910
+ keywords = ['xapp-1-']
911
+
912
+ [[rules]]
913
+ id = 'SlackAppConfigurationToken'
914
+ regex = '\bxoxe\.xoxp-1-[A-Za-z0-9]{166}\b'
915
+ description = "A Slack app configuration token was identified. Configuration tokens are per-workspace tokens used with App Manifest\nAPIs to create and configure your apps. A malicious actor with access to this token can take over configuration of all\napplications of the user who created it, however these tokens are rotated every 12 hours and give a malicious actor a\nlimited opportunity to use it."
916
+ title = 'Slack app configuration token'
917
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke a Slack app configuration token:\n\n- Sign in to Slack and access <https://api.slack.com/apps>\n- Find the token in the \"Access Token\" column in the \"Your App Configuration Tokens\" table and select the trash icon in\n the \"Delete\" column\n- When prompted, select \"Revoke Token\" in the \"Revoke this token?\" dialog\n\nFor more information, please see [Slack's documentation on managing configuration tokens](https://api.slack.com/reference/manifests#config-tokens)."
918
+ tags = ['gitlab_blocking']
919
+ keywords = ['xoxe.xoxp-1-']
920
+
921
+ [[rules]]
922
+ id = 'SlackAppConfigurationRefreshToken'
923
+ regex = '\bxoxe-1-[A-Za-z0-9]{147}\b'
924
+ description = "A Slack app configuration refresh token was identified. Configuration tokens are per-workspace tokens used with App\nManifest APIs to create and configure your apps. A malicious actor with access to this token can take over configuration\nof all applications of the user who created it. Refresh tokens are more dangerous than configuration tokens as they can\nbe used to create new configuration tokens, allowing a malicious actor perpetual access to all applications."
925
+ title = 'Slack app configuration refresh token'
926
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke a Slack app configuration refresh token:\n\n- Sign in to Slack and access <https://api.slack.com/apps>\n- Find the token in the \"Refresh Token\" column in the \"Your App Configuration Tokens\" table and select the trash icon\n in the \"Delete\" column\n- When prompted, select \"Revoke Token\" from the \"Revoke this token?\" dialog\n\nFor more information, please see [Slack's documentation on managing configuration tokens](https://api.slack.com/reference/manifests#config-tokens)."
927
+ tags = ['gitlab_blocking']
928
+ keywords = ['xoxe-1-']
929
+
930
+ [[rules]]
931
+ id = 'SonarQubeUserToken'
932
+ regex = '\bsqu_[0-9a-f]{40}\b'
933
+ description = 'SonarQube User Token'
934
+ title = 'SonarQube User Token'
935
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
936
+ tags = ['gitlab_blocking']
937
+ keywords = ['squ_']
938
+
939
+ [[rules]]
940
+ id = 'SonarQubeGlobalAnalysisToken'
941
+ regex = '\bsqa_[0-9a-f]{40}\b'
942
+ description = 'SonarQube Global Analysis Token'
943
+ title = 'SonarQube Global Analysis Token'
944
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
945
+ tags = ['gitlab_blocking']
946
+ keywords = ['sqa_']
947
+
948
+ [[rules]]
949
+ id = 'SonarQubeProjectAnalysisToken'
950
+ regex = '\bsqp_[0-9a-f]{40}\b'
951
+ description = 'SonarQube Project Analysis Token'
952
+ title = 'SonarQube Project Analysis Token'
953
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
954
+ tags = ['gitlab_blocking']
955
+ keywords = ['sqp_']
956
+
957
+ [[rules]]
958
+ id = 'SplunkAuthToken'
959
+ regex = 'eyJraWQiOiJzcGx1bmsuc2VjcmV0[A-Za-z0-9_-]{20,180}\.[A-Za-z0-9_-]{20,600}\.[A-Za-z0-9_-]{20,200}\b'
960
+ description = "A Splunk Authentication Token is a credential used to authenticate API requests and integrate external\napplications with Splunk Enterprise or Splunk Cloud Platform. This token provides programmatic access to\nSplunk's search, indexing, and administrative capabilities. A malicious actor with access to this token\ncould query sensitive data, modify configurations, or disrupt monitoring operations depending on the\nassociated user's permissions."
961
+ title = 'Splunk Authentication Token'
962
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab\ndocumentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke your Splunk Authentication Token:\n\n1. Log in to your Splunk instance at `https://your-splunk-instance:8000` (Splunk Enterprise) or your\n Splunk Cloud Platform URL\n2. Navigate to **Settings** > **Tokens** (or **Settings** > **Users and Authentication** > **Tokens**)\n3. Locate the compromised token in the token list by checking the token description, creation date,\n or last used timestamp\n4. Click **Delete** next to the compromised token and confirm the deletion\n5. Generate a new authentication token by clicking **New Token**, providing a description, and setting\n appropriate permissions\n6. Update all applications, scripts, and integrations that were using the old token with the new token\n value\n7. Verify connectivity by testing API requests with the new token and monitoring audit logs for successful\n authentication events\n\nFor detailed information on managing Splunk Authentication Tokens, please see the\n[Splunk documentation on securing Splunk Enterprise](https://docs.splunk.com/Documentation/Splunk/latest/Security/Setupauthenticationwithtokens)\nand\n[token management](https://docs.splunk.com/Documentation/Splunk/latest/Security/UseAuthTokens)."
963
+ tags = ['gitlab_blocking']
964
+ keywords = ['eyJraWQiOiJzcGx1bmsuc2VjcmV0']
965
+
966
+ [[rules]]
967
+ id = 'StripeLiveSecretKey'
968
+ regex = '\bsk_live_[A-Za-z0-9]{99}\b'
969
+ description = "A Stripe live secret key was identified. Live secret keys authenticate requests on your server when in\nlive mode. By default, you can use this key to perform any API request without restriction. A malicious actor who gained\naccess to this key could gain read/write access to all data in Stripe for this account."
970
+ title = 'Stripe live secret key'
971
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo rotate your Stripe live secret key:\n\n- Sign in to your Stripe account and access <https://dashboard.stripe.com/apikeys>\n- Ensure \"Test mode\" is disabled\n- In the \"Standard keys\" section, find the key that was identified and select the ellipsis in the right-hand side\n- Select \"Roll key...\"\n- In the \"Roll API key\" dialog, select an expiration date, for example \"now\"\n- Select \"Roll API Key\"\n\nFor more information, please see [Stripe's documentation on rotating API keys](https://docs.stripe.com/keys#rolling-keys)."
972
+ tags = ['gitlab_blocking']
973
+ keywords = ['sk_live_']
974
+
975
+ [[rules]]
976
+ id = 'StripeLiveRestrictedKey'
977
+ regex = '\brk_live_[A-Za-z0-9]{99}\b'
978
+ description = "A Stripe live restricted key was identified. Restricted keys offer greater security by only allowing read or write\naccess to specific API resources. A malicious actor with access to this key is limited by the scope defined for the key."
979
+ title = 'Stripe live restricted key'
980
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo rotate your Stripe live restricted key:\n\n- Sign in to your Stripe account and access <https://dashboard.stripe.com/apikeys>\n- Ensure \"Test mode\" is disabled\n- In the \"Restricted keys\" section, find the key that was identified and select the ellipsis in the right-hand side\n- Select \"Roll key...\"\n- In the \"Roll API key\" dialog, select an expiration date, for example \"now\"\n- Select \"Roll API Key\"\n\nFor more information, please see [Stripe's documentation on rotating API keys](https://docs.stripe.com/keys#rolling-keys)."
981
+ tags = ['gitlab_blocking']
982
+ keywords = ['rk_live_']
983
+
984
+ [[rules]]
985
+ id = 'StripeLiveShortSecretKey'
986
+ regex = '\bsk_live_[A-Za-z0-9]{24}\b'
987
+ description = "A Stripe live secret key was identified. Live secret keys authenticate requests on your server when in\nlive mode. By default, you can use this key to perform any API request without restriction. A malicious actor who gained\naccess to this key could gain read/write access to all data in Stripe for this account."
988
+ title = 'Stripe live secret key'
989
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo rotate your Stripe live secret key:\n\n- Sign in to your Stripe account and access <https://dashboard.stripe.com/apikeys>\n- Ensure \"Test mode\" is disabled\n- In the \"Standard keys\" section, find the key that was identified and select the ellipsis in the right-hand side\n- Select \"Roll key...\"\n- In the \"Roll API key\" dialog, select an expiration date, for example \"now\"\n- Select \"Roll API Key\"\n\nFor more information, please see [Stripe's documentation on rotating API keys](https://docs.stripe.com/keys#rolling-keys)."
990
+ tags = ['gitlab_blocking']
991
+ keywords = ['sk_live_']
992
+
993
+ [[rules]]
994
+ id = 'TailscalePersonalAuthKey'
995
+ regex = '\btskey-auth-[A-Za-z0-9]{12}CNTRL-[A-Za-z0-9]{32,33}\b'
996
+ description = "A Tailscale personal authentication key was identified. Pre-authentication keys (called auth keys) let you register new\nnodes without needing to sign in using a web browser. An auth key authenticates a device as the user who generated the\nkey. A malicious actor with access to this key can register nodes under the account that owns it."
997
+ title = 'Tailscale personal authentication key'
998
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke a Tailscale auth key:\n\n- Sign in to your Tailscale account and go to <https://login.tailscale.com/admin/settings/general>\n- On the \"Settings\" page in the left-hand menu select \"Keys\" under \"Personal Settings\"\n- Find the key that was identified in the \"Auth keys\" section and select the \"Revoke...\" text next to the \"Type\" column\n- When prompted, select \"Revoke key\" in the \"Revoke\" dialog\n\nFor more information, please see [Tailscale's documentation on personal auth keys](https://tailscale.com/kb/1085/auth-keys)."
999
+ tags = ['gitlab_blocking']
1000
+ keywords = ['tskey-auth-']
1001
+
1002
+ [[rules]]
1003
+ id = 'TailscaleApiAccessToken'
1004
+ regex = '\btskey-api-[A-Za-z0-9]{12}CNTRL-[A-Za-z0-9]{32,33}\b'
1005
+ description = "A Tailscale API access token was identified. API access tokens give full access to the Tailscaled API. A malicious actor\nwith access to this token can gain full access to the Tailscale networks."
1006
+ title = 'Tailscale API access token'
1007
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke a Tailscale API access token:\n\n- Sign in to your Tailscale account and go to <https://login.tailscale.com/admin/settings/general>\n- On the \"Settings\" page in the left-hand menu select \"Keys\" under \"Personal Settings\"\n- Find the key that was identified in the \"API access tokens\" section and select the \"Revoke...\" text next to the \"Type\"\n column\n- When prompted, select \"Revoke key\" in the \"Revoke\" dialog\n\nFor more information, please see [Tailscale's documentation on their API](https://tailscale.com/kb/1101/api)"
1008
+ tags = ['gitlab_blocking']
1009
+ keywords = ['tskey-api-']
1010
+
1011
+ [[rules]]
1012
+ id = 'TailscaleOauthClientSecret'
1013
+ regex = '\btskey-client-[a-zA-Z0-9]{17}-[a-zA-Z0-9]{30,36}\b'
1014
+ description = "A Tailscale OAuth client secret was identified. OAuth clients provide a framework for\ndelegated and scoped access to the Tailscale API. An OAuth client creates access tokens for scoped API\naccess. More details on [scopes can be found in Tailscale's documentation](https://tailscale.com/kb/1215/oauth-clients?q=OAuth#scopes).\nA malicious actor with access to this secret can access the API with the privileges the client was given."
1015
+ title = 'Tailscale OAuth client secret'
1016
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet).\n\nTo revoke a Tailscale OAuth client secret:\n\n- Sign in to your Tailscale account and go to <https://login.tailscale.com/admin/settings/general>\n- On the \"Settings\" page in the left-hand menu select \"OAuth clients\"\n- Find the key that was identified and select the \"Revoke...\" text next to the \"Scopes\" column\n- When prompted, select \"Revoke OAuth client\" in the \"Revoke\" dialog\n\nFor more information, please see [Tailscale's documentation on OAuth clients](https://tailscale.com/kb/1215/oauth-clients)."
1017
+ tags = ['gitlab_blocking']
1018
+ keywords = ['tskey-client-']
1019
+
1020
+ [[rules]]
1021
+ id = 'TencentCloudSecretID'
1022
+ regex = '\bAKID[0-9A-Za-z]{32}\b'
1023
+ description = 'Tencent Cloud Secret ID'
1024
+ title = 'Tencent Cloud Secret ID'
1025
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
1026
+ tags = ['gitlab_blocking']
1027
+ keywords = ['AKID']
1028
+
1029
+ [[rules]]
1030
+ id = 'Twilio API Key'
1031
+ regex = '\bSK[0-9a-fA-F]{32}\b'
1032
+ description = 'Twilio API Key'
1033
+ title = 'Twilio API key'
1034
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
1035
+ tags = ['gitlab_blocking']
1036
+ keywords = ['SK']
1037
+
1038
+ [[rules]]
1039
+ id = 'Twilio Account SID'
1040
+ regex = '\bAC[0-9a-f]{32}\b'
1041
+ description = 'Twilio Account SID'
1042
+ title = 'Twilio Account SID'
1043
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
1044
+ tags = ['gitlab_blocking']
1045
+ keywords = ['AC']
1046
+
1047
+ [[rules]]
1048
+ id = 'VolcengineAccessKeyID'
1049
+ regex = '\bAKLT[0-9A-Za-z]{30,44}\b'
1050
+ description = 'Volcengine Access Key ID'
1051
+ title = 'Volcengine Access Key ID'
1052
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
1053
+ tags = ['gitlab_blocking']
1054
+ keywords = ['AKLT']
1055
+
1056
+ [[rules]]
1057
+ id = 'WakaTimeAPIKey'
1058
+ regex = '\bwaka_[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}\b'
1059
+ description = 'WakaTime API Key'
1060
+ title = 'WakaTime API Key'
1061
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
1062
+ tags = ['gitlab_blocking']
1063
+ keywords = ['waka_']
1064
+
1065
+ [[rules]]
1066
+ id = 'Yandex.Cloud API Key'
1067
+ regex = '\bAQVN[0123wxyz][0-9A-Za-z_-]{35}\b'
1068
+ description = 'Yandex.Cloud API Key'
1069
+ title = 'Yandex.Cloud API Key'
1070
+ remediation = "For general guidance on handling security incidents with regards to leaked keys, please see the GitLab documentation on\n[Credential exposure to the internet](https://docs.gitlab.com/ee/security/responding_to_security_incidents.html#credential-exposure-to-public-internet)."
1071
+ tags = ['gitlab_blocking']
1072
+ keywords = ['AQVN']