From 2b4081384e17686a150f09c7d8203db62e8f0a5f Mon Sep 17 00:00:00 2001 From: Roman Babenko Date: Tue, 28 Nov 2023 14:03:51 +0200 Subject: [PATCH] Strict rules for github classic token --- .mypy.ini | 3 + credsweeper/common/constants.py | 1 + .../file_handler/data_content_provider.py | 4 +- credsweeper/filters/__init__.py | 1 + credsweeper/filters/value_github_check.py | 43 ++ .../filters/value_structured_token_check.py | 4 +- credsweeper/rules/config.yaml | 21 +- requirements.txt | 1 + setup.py | 1 + tests/__init__.py | 10 +- tests/data/depth_3.json | 708 ++++++++---------- tests/data/doc.json | 326 ++++---- tests/data/ml_threshold_0.json | 192 +++-- tests/data/output.json | 498 ++++++------ ..._token.py => test_github_classic_token.py} | 6 +- tests/rules/test_github_fine_granted_token.py | 18 + tests/rules/test_github_token.py | 20 - tests/samples/github_classic_token | 4 + tests/samples/github_fine_granted_token | 2 + tests/samples/github_personal_token | 4 - tests/samples/github_token | 1 - tests/samples/sample.docx | Bin 5624 -> 5701 bytes tests/samples/sample.pdf | Bin 23165 -> 30733 bytes tests/test_main.py | 8 +- 24 files changed, 900 insertions(+), 976 deletions(-) create mode 100644 credsweeper/filters/value_github_check.py rename tests/rules/{test_github_personal_access_token.py => test_github_classic_token.py} (61%) create mode 100644 tests/rules/test_github_fine_granted_token.py delete mode 100644 tests/rules/test_github_token.py create mode 100644 tests/samples/github_classic_token create mode 100644 tests/samples/github_fine_granted_token delete mode 100644 tests/samples/github_personal_token delete mode 100644 tests/samples/github_token diff --git a/.mypy.ini b/.mypy.ini index cf4fd1082..1946e5b90 100644 --- a/.mypy.ini +++ b/.mypy.ini @@ -48,3 +48,6 @@ ignore_missing_imports = True [mypy-docx.*] ignore_missing_imports = True + +[mypy-base62.*] +ignore_missing_imports = True diff --git a/credsweeper/common/constants.py b/credsweeper/common/constants.py index c60147ef5..edc4ea900 100644 --- a/credsweeper/common/constants.py +++ b/credsweeper/common/constants.py @@ -132,6 +132,7 @@ class DiffRowType(Enum): UTF_8 = "utf_8" UTF_16 = "utf_16" LATIN_1 = "latin_1" +ASCII = "ascii" DEFAULT_ENCODING = UTF_8 diff --git a/credsweeper/file_handler/data_content_provider.py b/credsweeper/file_handler/data_content_provider.py index 22cedebec..581352d47 100644 --- a/credsweeper/file_handler/data_content_provider.py +++ b/credsweeper/file_handler/data_content_provider.py @@ -8,7 +8,7 @@ import yaml from bs4 import BeautifulSoup, Tag, XMLParsedAsHTMLWarning -from credsweeper.common.constants import DEFAULT_ENCODING +from credsweeper.common.constants import DEFAULT_ENCODING, ASCII from credsweeper.file_handler.analysis_target import AnalysisTarget from credsweeper.file_handler.content_provider import ContentProvider from credsweeper.utils import Util @@ -343,7 +343,7 @@ def represent_as_encoded(self) -> bool: return False try: self.decoded = base64.b64decode( # - self.data.decode(encoding="ascii", errors="strict"). # + self.data.decode(encoding=ASCII, errors="strict"). # translate(str.maketrans("", "", string.whitespace)), # validate=True) # except Exception as exc: diff --git a/credsweeper/filters/__init__.py b/credsweeper/filters/__init__.py index f4ca409af..f5b7f5896 100644 --- a/credsweeper/filters/__init__.py +++ b/credsweeper/filters/__init__.py @@ -16,6 +16,7 @@ from credsweeper.filters.value_entropy_base64_check import ValueEntropyBase64Check from credsweeper.filters.value_file_path_check import ValueFilePathCheck from credsweeper.filters.value_first_word_check import ValueFirstWordCheck +from credsweeper.filters.value_github_check import ValueGitHubCheck from credsweeper.filters.value_grafana_check import ValueGrafanaCheck from credsweeper.filters.value_ip_check import ValueIPCheck from credsweeper.filters.value_json_web_token_check import ValueJsonWebTokenCheck diff --git a/credsweeper/filters/value_github_check.py b/credsweeper/filters/value_github_check.py new file mode 100644 index 000000000..4c22e4dd9 --- /dev/null +++ b/credsweeper/filters/value_github_check.py @@ -0,0 +1,43 @@ +import binascii +import contextlib + +import base62 + +from credsweeper.common.constants import ASCII +from credsweeper.config import Config +from credsweeper.credentials import LineData +from credsweeper.file_handler.analysis_target import AnalysisTarget +from credsweeper.filters import Filter + + +class ValueGitHubCheck(Filter): + """GitHub Classic Token validation""" + + def __init__(self, config: Config = None) -> None: + pass + + def run(self, line_data: LineData, target: AnalysisTarget) -> bool: + """Run filter checks on received token which might be structured. + + Args: + line_data: credential candidate data + target: multiline target from which line data was obtained + + Return: + True, when need to filter candidate and False if left + + """ + # https://github.blog/2021-04-05-behind-githubs-new-authentication-token-formats/ + if not line_data.value: + return True + with contextlib.suppress(Exception): + if line_data.value.startswith("gh") and '_' == line_data.value[3]: + token = line_data.value[4:-6] + data = token.encode(ASCII, errors="strict") + crc32sum = binascii.crc32(data) + base62_crc32 = line_data.value[-6:] + sign_b = base62.decodebytes(base62_crc32) + crc32sign = int.from_bytes(sign_b, "big") + if crc32sign == crc32sum: + return False + return True diff --git a/credsweeper/filters/value_structured_token_check.py b/credsweeper/filters/value_structured_token_check.py index 697368b94..e2ee64f56 100644 --- a/credsweeper/filters/value_structured_token_check.py +++ b/credsweeper/filters/value_structured_token_check.py @@ -2,7 +2,7 @@ import binascii import contextlib -from credsweeper.common.constants import LATIN_1 +from credsweeper.common.constants import LATIN_1, ASCII from credsweeper.config import Config from credsweeper.credentials import LineData from credsweeper.file_handler.analysis_target import AnalysisTarget @@ -47,7 +47,7 @@ def run(self, line_data: LineData, target: AnalysisTarget) -> bool: def check_crc32_struct(value: str) -> bool: """Returns False if value is valid for bitbucket app password structure 'payload:crc32'""" crc32 = int(value[28:], 16) - data = value[:28].encode("ascii") + data = value[:28].encode(ASCII) if crc32 == binascii.crc32(data): return False return True diff --git a/credsweeper/rules/config.yaml b/credsweeper/rules/config.yaml index 5d15c3dae..6a81b1832 100644 --- a/credsweeper/rules/config.yaml +++ b/credsweeper/rules/config.yaml @@ -527,26 +527,21 @@ - pypi- min_line_len: 155 -- name: Github Token +- name: Github Classic Token severity: high type: pattern values: - - (^|[^.0-9A-Za-z_/+-])(?P(ghr|gho|ghu|ghs)_[\w]{36,255}) - filter_type: GeneralPattern - required_substrings: - - gh - min_line_len: 40 - -- name: Github Personal Access Token - severity: high - type: pattern - values: - - (^|[^.0-9A-Za-z_/+-])(?Pghp_[\w]{36,255}) - filter_type: GeneralPattern + - (^|[^.0-9A-Za-z_/+-])(?Pgh[pousr]_[0-9A-Za-z_]{36,255}) + filter_type: + - ValueGitHubCheck validations: - GithubTokenValidation required_substrings: - ghp_ + - gho_ + - ghu_ + - ghs_ + - ghr_ min_line_len: 40 - name: Github Fine-granted Token diff --git a/requirements.txt b/requirements.txt index 285bf7b74..28076aabe 100644 --- a/requirements.txt +++ b/requirements.txt @@ -19,6 +19,7 @@ pdfminer.six==20221105 password-strength==0.0.3.post2 python-dateutil==2.8.2 pyjks==20.0.0 +pybase62==1.0.0 # ML requirements numpy==1.24.4 diff --git a/setup.py b/setup.py index 73aadf4f8..59742ce97 100644 --- a/setup.py +++ b/setup.py @@ -27,6 +27,7 @@ "onnxruntime", # "python-dateutil", # "pyjks", # + "pybase62", # ] setuptools.setup( diff --git a/tests/__init__.py b/tests/__init__.py index a4935e8e3..f4855ce15 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -4,17 +4,17 @@ SAMPLES_FILES_COUNT: int = 120 # credentials count after scan -SAMPLES_CRED_COUNT: int = 373 -SAMPLES_CRED_LINE_COUNT: int = 385 +SAMPLES_CRED_COUNT: int = 372 +SAMPLES_CRED_LINE_COUNT: int = 384 # credentials count after post-processing -SAMPLES_POST_CRED_COUNT: int = 287 +SAMPLES_POST_CRED_COUNT: int = 286 # with option --doc -SAMPLES_IN_DOC = 428 +SAMPLES_IN_DOC = 427 # archived credentials that are not found without --depth -SAMPLES_IN_DEEP_1 = SAMPLES_POST_CRED_COUNT + 24 +SAMPLES_IN_DEEP_1 = SAMPLES_POST_CRED_COUNT + 23 SAMPLES_IN_DEEP_2 = SAMPLES_IN_DEEP_1 + 16 SAMPLES_IN_DEEP_3 = SAMPLES_IN_DEEP_2 + 3 diff --git a/tests/data/depth_3.json b/tests/data/depth_3.json index 722421019..94dc72bbe 100644 --- a/tests/data/depth_3.json +++ b/tests/data/depth_3.json @@ -2,7 +2,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9843968152999878, + "ml_probability": 0.9844, "rule": "API", "severity": "medium", "line_data_list": [ @@ -74,7 +74,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9950045347213745, + "ml_probability": 0.995, "rule": "Auth", "severity": "medium", "line_data_list": [ @@ -143,30 +143,6 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "AWS Client ID", - "severity": "high", - "line_data_list": [ - { - "line": "\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123\", \"AwsAccessKey2\": \"AKIAGIREOGIAWSKEY555\",", - "line_num": 2, - "path": "tests/samples/aws_multi.groovy", - "info": "tests/samples/aws_multi.groovy|RAW", - "value": "AKIAGIREOGIAWSKEY555", - "value_start": 58, - "value_end": 78, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.3086949695628425, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -206,6 +182,30 @@ } ] }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "AWS Client ID", + "severity": "high", + "line_data_list": [ + { + "line": "\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123\", \"AwsAccessKey2\": \"AKIAGIREOGIAWSKEY555\",", + "line_num": 2, + "path": "tests/samples/aws_multi.groovy", + "info": "tests/samples/aws_multi.groovy|RAW", + "value": "AKIAGIREOGIAWSKEY555", + "value_start": 58, + "value_end": 78, + "variable": null, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 3.3086949695628425, + "valid": false + } + } + ] + }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -249,8 +249,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Key", - "severity": "medium", + "rule": "AWS MWS Key", + "severity": "high", "line_data_list": [ { "line": "AWS_MWS_KEY = \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\"", @@ -260,7 +260,7 @@ "value": "amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6", "value_start": 15, "value_end": 60, - "variable": "AWS_MWS_KEY", + "variable": null, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.0426135166748205, @@ -273,8 +273,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "AWS MWS Key", - "severity": "high", + "rule": "Key", + "severity": "medium", "line_data_list": [ { "line": "AWS_MWS_KEY = \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\"", @@ -284,7 +284,7 @@ "value": "amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6", "value_start": 15, "value_end": 60, - "variable": null, + "variable": "AWS_MWS_KEY", "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.0426135166748205, @@ -321,8 +321,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "JSON Web Token", - "severity": "medium", + "rule": "Azure Access Token", + "severity": "high", "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", @@ -345,8 +345,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Azure Access Token", - "severity": "high", + "rule": "JSON Web Token", + "severity": "medium", "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", @@ -392,7 +392,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9998317360877991, + "ml_probability": 0.99983, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -536,7 +536,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9980424642562866, + "ml_probability": 0.99804, "rule": "Certificate", "severity": "medium", "line_data_list": [ @@ -632,7 +632,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9227905869483948, + "ml_probability": 0.92279, "rule": "Credential", "severity": "medium", "line_data_list": [ @@ -704,7 +704,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -728,7 +728,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -752,7 +752,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -776,7 +776,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -800,7 +800,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -824,7 +824,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -848,7 +848,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -872,7 +872,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -896,7 +896,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -920,7 +920,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -944,7 +944,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -968,7 +968,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -992,7 +992,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1016,7 +1016,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1040,7 +1040,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1064,7 +1064,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1088,7 +1088,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1112,7 +1112,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1136,7 +1136,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1160,7 +1160,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1184,7 +1184,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1208,7 +1208,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1232,7 +1232,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1256,7 +1256,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1280,7 +1280,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1304,7 +1304,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1328,7 +1328,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1352,7 +1352,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1376,7 +1376,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1400,7 +1400,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1424,7 +1424,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1448,7 +1448,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1472,7 +1472,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1496,7 +1496,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1520,7 +1520,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1544,7 +1544,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1568,7 +1568,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1592,7 +1592,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1616,7 +1616,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1640,7 +1640,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1664,7 +1664,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1688,7 +1688,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1736,7 +1736,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1760,7 +1760,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1784,7 +1784,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1808,7 +1808,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1832,7 +1832,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1856,7 +1856,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1880,7 +1880,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1904,7 +1904,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1928,7 +1928,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1952,7 +1952,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1976,7 +1976,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2000,7 +2000,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2024,7 +2024,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2048,7 +2048,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2072,7 +2072,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2096,7 +2096,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2120,7 +2120,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2144,7 +2144,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2168,7 +2168,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2192,7 +2192,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2216,7 +2216,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2240,7 +2240,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2264,7 +2264,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2288,7 +2288,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2312,7 +2312,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2336,7 +2336,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2360,7 +2360,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2384,7 +2384,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2408,7 +2408,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2480,7 +2480,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2576,7 +2576,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7439818978309631, + "ml_probability": 0.74398, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2600,7 +2600,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8098903894424438, + "ml_probability": 0.80989, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2624,7 +2624,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8098903894424438, + "ml_probability": 0.80989, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2648,7 +2648,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8098903894424438, + "ml_probability": 0.80989, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2672,7 +2672,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8098903894424438, + "ml_probability": 0.80989, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2696,7 +2696,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7150920629501343, + "ml_probability": 0.71509, "rule": "Token", "severity": "medium", "line_data_list": [ @@ -2720,7 +2720,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7150920629501343, + "ml_probability": 0.71509, "rule": "Token", "severity": "medium", "line_data_list": [ @@ -2744,7 +2744,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9140323400497437, + "ml_probability": 0.91403, "rule": "Key", "severity": "medium", "line_data_list": [ @@ -2768,7 +2768,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9140323400497437, + "ml_probability": 0.91403, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -2792,7 +2792,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9095643162727356, + "ml_probability": 0.90956, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -2816,7 +2816,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9095643162727356, + "ml_probability": 0.90956, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -2840,7 +2840,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7150920629501343, + "ml_probability": 0.71509, "rule": "Token", "severity": "medium", "line_data_list": [ @@ -2864,7 +2864,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8278610706329346, + "ml_probability": 0.82786, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -2888,7 +2888,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9095643162727356, + "ml_probability": 0.90956, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -2912,7 +2912,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9095643162727356, + "ml_probability": 0.90956, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -2936,7 +2936,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7150920629501343, + "ml_probability": 0.71509, "rule": "Token", "severity": "medium", "line_data_list": [ @@ -2960,7 +2960,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7329676747322083, + "ml_probability": 0.73297, "rule": "API", "severity": "medium", "line_data_list": [ @@ -2984,7 +2984,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7329676747322083, + "ml_probability": 0.73297, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -3008,7 +3008,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9581242799758911, + "ml_probability": 0.95812, "rule": "Key", "severity": "medium", "line_data_list": [ @@ -3032,7 +3032,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9581242799758911, + "ml_probability": 0.95812, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -3056,7 +3056,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7150920629501343, + "ml_probability": 0.71509, "rule": "Token", "severity": "medium", "line_data_list": [ @@ -3200,7 +3200,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7439818978309631, + "ml_probability": 0.74398, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3248,7 +3248,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7404671311378479, + "ml_probability": 0.74047, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3320,7 +3320,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7439818978309631, + "ml_probability": 0.74398, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3392,7 +3392,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7439818978309631, + "ml_probability": 0.74398, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3464,7 +3464,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7439818978309631, + "ml_probability": 0.74398, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3512,7 +3512,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7404671311378479, + "ml_probability": 0.74047, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3560,7 +3560,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7439818978309631, + "ml_probability": 0.74398, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3584,7 +3584,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8615446090698242, + "ml_probability": 0.86154, "rule": "Key", "severity": "medium", "line_data_list": [ @@ -3608,7 +3608,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8615446090698242, + "ml_probability": 0.86154, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -3704,7 +3704,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7404671311378479, + "ml_probability": 0.74047, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3728,7 +3728,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8098903894424438, + "ml_probability": 0.80989, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3944,7 +3944,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8098903894424438, + "ml_probability": 0.80989, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3968,7 +3968,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8098903894424438, + "ml_probability": 0.80989, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3992,7 +3992,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8098903894424438, + "ml_probability": 0.80989, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -4016,7 +4016,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7273938655853271, + "ml_probability": 0.72739, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -4424,7 +4424,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7404671311378479, + "ml_probability": 0.74047, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -4472,7 +4472,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7404671311378479, + "ml_probability": 0.74047, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -4520,7 +4520,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7439818978309631, + "ml_probability": 0.74398, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -4568,7 +4568,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7404671311378479, + "ml_probability": 0.74047, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -4664,7 +4664,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7439818978309631, + "ml_probability": 0.74398, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -4688,7 +4688,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7439818978309631, + "ml_probability": 0.74398, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -4736,7 +4736,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7439818978309631, + "ml_probability": 0.74398, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -4904,9 +4904,9 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9268860220909119, - "rule": "Token", - "severity": "medium", + "ml_probability": 0.92689, + "rule": "Github Old Token", + "severity": "high", "line_data_list": [ { "line": "\\ngit_token = \"gireogicracklecrackle1231567190113413981\"\\n\\n", @@ -4916,7 +4916,7 @@ "value": "gireogicracklecrackle1231567190113413981", "value_start": 15, "value_end": 55, - "variable": "\\ngit_token", + "variable": null, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.97402442086502, @@ -4928,9 +4928,9 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9268860220909119, - "rule": "Github Old Token", - "severity": "high", + "ml_probability": 0.92689, + "rule": "Token", + "severity": "medium", "line_data_list": [ { "line": "\\ngit_token = \"gireogicracklecrackle1231567190113413981\"\\n\\n", @@ -4940,7 +4940,7 @@ "value": "gireogicracklecrackle1231567190113413981", "value_start": 15, "value_end": 55, - "variable": null, + "variable": "\\ngit_token", "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.97402442086502, @@ -4953,8 +4953,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Token", - "severity": "medium", + "rule": "Facebook Access Token", + "severity": "high", "line_data_list": [ { "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF\"", @@ -4964,7 +4964,7 @@ "value": "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", "value_start": 28, "value_end": 70, - "variable": "GI_REO_GI_FACEBOOK_TOKEN", + "variable": null, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.766968315481371, @@ -4977,8 +4977,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Facebook Access Token", - "severity": "high", + "rule": "Token", + "severity": "medium", "line_data_list": [ { "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF\"", @@ -4988,7 +4988,7 @@ "value": "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", "value_start": 28, "value_end": 70, - "variable": null, + "variable": "GI_REO_GI_FACEBOOK_TOKEN", "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.766968315481371, @@ -5047,48 +5047,24 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9992144107818604, - "rule": "Token", - "severity": "medium", - "line_data_list": [ - { - "line": "git_token = \"gireogicracklecrackle1231567190113416781\"", - "line_num": 1, - "path": "tests/samples/github_key.groovy", - "info": "tests/samples/github_key.groovy|RAW", - "value": "gireogicracklecrackle1231567190113416781", - "value_start": 13, - "value_end": 53, - "variable": "git_token", - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.992896608419107, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9992144107818604, - "rule": "Github Old Token", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Github Classic Token", "severity": "high", "line_data_list": [ { - "line": "git_token = \"gireogicracklecrackle1231567190113416781\"", - "line_num": 1, - "path": "tests/samples/github_key.groovy", - "info": "tests/samples/github_key.groovy|RAW", - "value": "gireogicracklecrackle1231567190113416781", - "value_start": 13, - "value_end": 53, + "line": "ghp_00000000000000000000000000000004WZ4EQ", + "line_num": 2, + "path": "tests/samples/github_classic_token", + "info": "tests/samples/github_classic_token|RAW", + "value": "ghp_00000000000000000000000000000004WZ4EQ", + "value_start": 0, + "value_end": 41, "variable": null, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.992896608419107, - "valid": true + "iterator": "BASE64_CHARS", + "entropy": 1.4322437698226884, + "valid": false } } ] @@ -5101,17 +5077,17 @@ "severity": "high", "line_data_list": [ { - "line": "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", + "line": "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", "line_num": 2, - "path": "tests/samples/github_personal_token", - "info": "tests/samples/github_personal_token|RAW", - "value": "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", + "path": "tests/samples/github_fine_granted_token", + "info": "tests/samples/github_fine_granted_token|RAW", + "value": "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", "value_start": 0, "value_end": 93, "variable": null, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.2218326882810935, + "entropy": 5.255374790203285, "valid": true } } @@ -5119,23 +5095,23 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Github Personal Access Token", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.99921, + "rule": "Github Old Token", "severity": "high", "line_data_list": [ { - "line": "ghp_3Wf1ikDwUMP1I9Vz3z2qZ1Ge2uCLN230RKuq", - "line_num": 4, - "path": "tests/samples/github_personal_token", - "info": "tests/samples/github_personal_token|RAW", - "value": "ghp_3Wf1ikDwUMP1I9Vz3z2qZ1Ge2uCLN230RKuq", - "value_start": 0, - "value_end": 40, + "line": "git_token = \"gireogicracklecrackle1231567190113416781\"", + "line_num": 1, + "path": "tests/samples/github_key.groovy", + "info": "tests/samples/github_key.groovy|RAW", + "value": "gireogicracklecrackle1231567190113416781", + "value_start": 13, + "value_end": 53, "variable": null, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.682263329852917, + "iterator": "BASE36_CHARS", + "entropy": 3.992896608419107, "valid": true } } @@ -5143,23 +5119,23 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Github Token", - "severity": "high", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.99921, + "rule": "Token", + "severity": "medium", "line_data_list": [ { - "line": "ghr_Ku7ikDwqZ1Ge2u3Wf1UM3z2CLN230RP1I9Vz", + "line": "git_token = \"gireogicracklecrackle1231567190113416781\"", "line_num": 1, - "path": "tests/samples/github_token", - "info": "tests/samples/github_token|RAW", - "value": "ghr_Ku7ikDwqZ1Ge2u3Wf1UM3z2CLN230RP1I9Vz", - "value_start": 0, - "value_end": 40, - "variable": null, + "path": "tests/samples/github_key.groovy", + "info": "tests/samples/github_key.groovy|RAW", + "value": "gireogicracklecrackle1231567190113416781", + "value_start": 13, + "value_end": 53, + "variable": "git_token", "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.732263329852917, + "iterator": "BASE36_CHARS", + "entropy": 3.992896608419107, "valid": true } } @@ -5400,8 +5376,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Key", - "severity": "medium", + "rule": "Google OAuth Access Token", + "severity": "high", "line_data_list": [ { "line": "google_oauth_key = \"ya29.gi_reo_gi_crackle_ln22\"", @@ -5411,7 +5387,7 @@ "value": "ya29.gi_reo_gi_crackle_ln22", "value_start": 20, "value_end": 47, - "variable": "google_oauth_key", + "variable": null, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.1797273164975133, @@ -5424,8 +5400,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Google OAuth Access Token", - "severity": "high", + "rule": "Key", + "severity": "medium", "line_data_list": [ { "line": "google_oauth_key = \"ya29.gi_reo_gi_crackle_ln22\"", @@ -5435,7 +5411,7 @@ "value": "ya29.gi_reo_gi_crackle_ln22", "value_start": 20, "value_end": 47, - "variable": null, + "variable": "google_oauth_key", "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.1797273164975133, @@ -5496,8 +5472,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "JSON Web Token", - "severity": "medium", + "rule": "Grafana Provisioned API Key", + "severity": "high", "line_data_list": [ { "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", @@ -5520,8 +5496,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Grafana Provisioned API Key", - "severity": "high", + "rule": "JSON Web Token", + "severity": "medium", "line_data_list": [ { "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", @@ -5735,7 +5711,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9270606637001038, + "ml_probability": 0.92706, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -5807,7 +5783,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9986809492111206, + "ml_probability": 0.99868, "rule": "JSON Web Token", "severity": "medium", "line_data_list": [ @@ -5831,7 +5807,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9932214021682739, + "ml_probability": 0.99322, "rule": "Key", "severity": "medium", "line_data_list": [ @@ -5855,7 +5831,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9979934692382812, + "ml_probability": 0.99799, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -5879,7 +5855,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9980103373527527, + "ml_probability": 0.99801, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -5903,7 +5879,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9979350566864014, + "ml_probability": 0.99794, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -5927,7 +5903,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9835053086280823, + "ml_probability": 0.98351, "rule": "Key", "severity": "medium", "line_data_list": [ @@ -5951,7 +5927,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9439688920974731, + "ml_probability": 0.94397, "rule": "API", "severity": "medium", "line_data_list": [ @@ -5975,7 +5951,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9439688920974731, + "ml_probability": 0.94397, "rule": "Key", "severity": "medium", "line_data_list": [ @@ -6110,7 +6086,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9180336594581604, + "ml_probability": 0.91803, "rule": "Token", "severity": "medium", "line_data_list": [ @@ -6197,7 +6173,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9180336594581604, + "ml_probability": 0.91803, "rule": "Token", "severity": "medium", "line_data_list": [ @@ -6221,7 +6197,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9950023293495178, + "ml_probability": 0.995, "rule": "Nonce", "severity": "medium", "line_data_list": [ @@ -6270,8 +6246,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Password", - "severity": "medium", + "rule": "AWS Client ID", + "severity": "high", "line_data_list": [ { "line": "securelogin?user=admin,password=AKIAAPH9BLMHUAJIE6SN", @@ -6281,7 +6257,7 @@ "value": "AKIAAPH9BLMHUAJIE6SN", "value_start": 32, "value_end": 52, - "variable": "admin,password", + "variable": null, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.721928094887362, @@ -6294,8 +6270,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "AWS Client ID", - "severity": "high", + "rule": "Password", + "severity": "medium", "line_data_list": [ { "line": "securelogin?user=admin,password=AKIAAPH9BLMHUAJIE6SN", @@ -6305,7 +6281,7 @@ "value": "AKIAAPH9BLMHUAJIE6SN", "value_start": 32, "value_end": 52, - "variable": null, + "variable": "admin,password", "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.721928094887362, @@ -6317,7 +6293,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8421579599380493, + "ml_probability": 0.84216, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -6341,7 +6317,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9988007545471191, + "ml_probability": 0.9988, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -6365,7 +6341,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9988007545471191, + "ml_probability": 0.9988, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -6389,7 +6365,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9975466728210449, + "ml_probability": 0.99755, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -6413,7 +6389,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9270606637001038, + "ml_probability": 0.92706, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -6437,7 +6413,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9270606637001038, + "ml_probability": 0.92706, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -6461,7 +6437,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9205427169799805, + "ml_probability": 0.92054, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -6485,7 +6461,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8471446633338928, + "ml_probability": 0.84714, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -6509,7 +6485,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9316403865814209, + "ml_probability": 0.93164, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -6533,7 +6509,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9100453853607178, + "ml_probability": 0.91005, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -6742,7 +6718,7 @@ "line": "-----BEGIN RSA PRIVATE KEY-----", "line_num": 1, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 0, "value_end": 31, @@ -6754,17 +6730,17 @@ } }, { - "line": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", + "line": "MIICjdsnc34fdsjkgfdjvnkjcnvenr8vjsdjvsjhdfkshkehr34hr98whfuskhdfjhqllladhsjd", "line_num": 2, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", - "value": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", + "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", + "value": "MIICjdsnc34fdsjkgfdjvnkjcnvenr8vjsdjvsjhdfkshkehr34hr98whfuskhdfjhqllladhsjd", "value_start": 0, "value_end": 76, "variable": null, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 5.388924717191689, + "iterator": "BASE36_CHARS", + "entropy": 3.880801520359916, "valid": true } }, @@ -6772,7 +6748,7 @@ "line": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "line_num": 3, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", "value": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "value_start": 0, "value_end": 76, @@ -6787,7 +6763,7 @@ "line": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "line_num": 4, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", "value": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "value_start": 0, "value_end": 76, @@ -6802,7 +6778,7 @@ "line": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "line_num": 5, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", "value": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "value_start": 0, "value_end": 76, @@ -6817,7 +6793,7 @@ "line": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "line_num": 6, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", "value": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "value_start": 0, "value_end": 76, @@ -6832,7 +6808,7 @@ "line": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "line_num": 7, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", "value": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "value_start": 0, "value_end": 76, @@ -6847,7 +6823,7 @@ "line": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "line_num": 8, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", "value": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "value_start": 0, "value_end": 76, @@ -6862,7 +6838,7 @@ "line": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "line_num": 9, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", "value": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "value_start": 0, "value_end": 76, @@ -6877,7 +6853,7 @@ "line": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "line_num": 10, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", "value": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "value_start": 0, "value_end": 76, @@ -6892,7 +6868,7 @@ "line": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "line_num": 11, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", "value": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "value_start": 0, "value_end": 76, @@ -6907,7 +6883,7 @@ "line": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "line_num": 12, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", "value": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "value_start": 0, "value_end": 52, @@ -6922,7 +6898,7 @@ "line": "-----END RSA PRIVATE KEY-----", "line_num": 13, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", "value": "-----END RSA PRIVATE KEY-----", "value_start": 0, "value_end": 29, @@ -6946,7 +6922,7 @@ "line": "-----BEGIN RSA PRIVATE KEY-----", "line_num": 1, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "-----BEGIN RSA PRIVATE KEY-----", "value_start": 0, "value_end": 31, @@ -6958,17 +6934,17 @@ } }, { - "line": "MIICjdsnc34fdsjkgfdjvnkjcnvenr8vjsdjvsjhdfkshkehr34hr98whfuskhdfjhqllladhsjd", + "line": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "line_num": 2, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", - "value": "MIICjdsnc34fdsjkgfdjvnkjcnvenr8vjsdjvsjhdfkshkehr34hr98whfuskhdfjhqllladhsjd", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", + "value": "MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp", "value_start": 0, "value_end": 76, "variable": null, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.880801520359916, + "iterator": "BASE64_CHARS", + "entropy": 5.388924717191689, "valid": true } }, @@ -6976,7 +6952,7 @@ "line": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "line_num": 3, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5", "value_start": 0, "value_end": 76, @@ -6991,7 +6967,7 @@ "line": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "line_num": 4, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh", "value_start": 0, "value_end": 76, @@ -7006,7 +6982,7 @@ "line": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "line_num": 5, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2", "value_start": 0, "value_end": 76, @@ -7021,7 +6997,7 @@ "line": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "line_num": 6, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX", "value_start": 0, "value_end": 76, @@ -7036,7 +7012,7 @@ "line": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "line_num": 7, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il", "value_start": 0, "value_end": 76, @@ -7051,7 +7027,7 @@ "line": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "line_num": 8, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF", "value_start": 0, "value_end": 76, @@ -7066,7 +7042,7 @@ "line": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "line_num": 9, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k", "value_start": 0, "value_end": 76, @@ -7081,7 +7057,7 @@ "line": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "line_num": 10, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl", "value_start": 0, "value_end": 76, @@ -7096,7 +7072,7 @@ "line": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "line_num": 11, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ", "value_start": 0, "value_end": 76, @@ -7111,7 +7087,7 @@ "line": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "line_num": 12, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=", "value_start": 0, "value_end": 52, @@ -7126,7 +7102,7 @@ "line": "-----END RSA PRIVATE KEY-----", "line_num": 13, "path": "tests/samples/pem_key.apk", - "info": "tests/samples/pem_key.apk|ZIP|3.zip|ZIP|2.zip|ZIP|2|RAW", + "info": "tests/samples/pem_key.apk|ZIP|cred/pem_key.zip|ZIP|key.pem|RAW", "value": "-----END RSA PRIVATE KEY-----", "value_start": 0, "value_end": 29, @@ -7802,7 +7778,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9975466728210449, + "ml_probability": 0.99755, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -7850,7 +7826,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.989031195640564, + "ml_probability": 0.98903, "rule": "Salt", "severity": "medium", "line_data_list": [ @@ -7874,7 +7850,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8243017196655273, + "ml_probability": 0.8243, "rule": "Salt", "severity": "medium", "line_data_list": [ @@ -7898,7 +7874,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8432453870773315, + "ml_probability": 0.84325, "rule": "Salt", "severity": "medium", "line_data_list": [ @@ -7922,7 +7898,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6660635471343994, + "ml_probability": 0.66606, "rule": "Salt", "severity": "medium", "line_data_list": [ @@ -7946,7 +7922,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9294037818908691, + "ml_probability": 0.9294, "rule": "Salt", "severity": "medium", "line_data_list": [ @@ -7970,7 +7946,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9441174268722534, + "ml_probability": 0.94412, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -7995,22 +7971,22 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Github Token", + "rule": "Github Classic Token", "severity": "high", "line_data_list": [ { - "line": "ghr_Ku7ikDwqD1Ge2u3Wf1UM3z2SLN230RP1I8Wf", - "line_num": 2, + "line": "{http://schemas.openxmlformats.org/wordprocessingml/2006/main}t : ghs_00000000000000000000000000000004WZ4EQ", + "line_num": 1, "path": "tests/samples/sample.docx", - "info": "tests/samples/sample.docx|DOCX", - "value": "ghr_Ku7ikDwqD1Ge2u3Wf1UM3z2SLN230RP1I8Wf", - "value_start": 0, - "value_end": 40, + "info": "tests/samples/sample.docx|ZIP|word/document.xml|XML", + "value": "ghs_00000000000000000000000000000004WZ4EQ", + "value_start": 66, + "value_end": 107, "variable": null, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.632263329852917, - "valid": true + "entropy": 1.4322437698226884, + "valid": false } } ] @@ -8018,7 +7994,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9441174268722534, + "ml_probability": 0.94412, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -8043,22 +8019,22 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Github Token", + "rule": "AWS Client ID", "severity": "high", "line_data_list": [ { - "line": "ghr_Ku7ikDwqD1Ge2u3Wf1UM3z2SLN230RP1I8Wf", - "line_num": 2, - "path": "tests/samples/sample.docx.gz", - "info": "tests/samples/sample.docx.gz|GZIP|tests/samples/sample.docx|DOCX", - "value": "ghr_Ku7ikDwqD1Ge2u3Wf1UM3z2SLN230RP1I8Wf", - "value_start": 0, - "value_end": 40, + "line": "AwsAccessKey:AKIAGIREOGIAWSKEY123", + "line_num": 1, + "path": "tests/samples/sample.pdf", + "info": "tests/samples/sample.pdf|PDF:1|ENCODED|RAW", + "value": "AKIAGIREOGIAWSKEY123", + "value_start": 13, + "value_end": 33, "variable": null, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.632263329852917, - "valid": true + "entropy": 3.5464393446710156, + "valid": false } } ] @@ -8066,7 +8042,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9686563611030579, + "ml_probability": 0.96866, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -8091,45 +8067,21 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "AWS Client ID", - "severity": "high", - "line_data_list": [ - { - "line": "AwsAccessKey:AKIAGIREOGIAWSKEY123", - "line_num": 1, - "path": "tests/samples/sample.pdf", - "info": "tests/samples/sample.pdf|PDF:1|ENCODED|RAW", - "value": "AKIAGIREOGIAWSKEY123", - "value_start": 13, - "value_end": 33, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.5464393446710156, - "valid": false - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Github Token", + "rule": "Github Classic Token", "severity": "high", "line_data_list": [ { - "line": "ghr_Ku7ikDwqD1Ge2u3Wf1UM3z2CLN230RP1I8Vd", + "line": "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", "line_num": 1, "path": "tests/samples/sample.pdf", "info": "tests/samples/sample.pdf|PDF:1|RAW", - "value": "ghr_Ku7ikDwqD1Ge2u3Wf1UM3z2CLN230RP1I8Vd", + "value": "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", "value_start": 0, "value_end": 40, "variable": null, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.732263329852917, + "entropy": 4.838879892515178, "valid": true } } @@ -8138,7 +8090,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9947718381881714, + "ml_probability": 0.99477, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -8162,7 +8114,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9953110218048096, + "ml_probability": 0.99531, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -8498,7 +8450,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9886894226074219, + "ml_probability": 0.98869, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -8546,7 +8498,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8164089322090149, + "ml_probability": 0.81641, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -8570,7 +8522,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7404199838638306, + "ml_probability": 0.74042, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -8594,7 +8546,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9355837106704712, + "ml_probability": 0.93558, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -8618,7 +8570,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7731337547302246, + "ml_probability": 0.77313, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -8642,7 +8594,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9327406287193298, + "ml_probability": 0.93274, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -8666,7 +8618,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8785241842269897, + "ml_probability": 0.87852, "rule": "Token", "severity": "medium", "line_data_list": [ @@ -8690,7 +8642,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7795972228050232, + "ml_probability": 0.7796, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -8882,7 +8834,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9970759153366089, + "ml_probability": 0.99708, "rule": "Token", "severity": "medium", "line_data_list": [ @@ -8930,7 +8882,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.996720552444458, + "ml_probability": 0.99672, "rule": "URL Credentials", "severity": "high", "line_data_list": [ @@ -8954,7 +8906,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9524834156036377, + "ml_probability": 0.95248, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -8978,7 +8930,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9524834156036377, + "ml_probability": 0.95248, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -8999,4 +8951,4 @@ } ] } -] \ No newline at end of file +] diff --git a/tests/data/doc.json b/tests/data/doc.json index 4bbe4f1bf..f65fcd7ef 100644 --- a/tests/data/doc.json +++ b/tests/data/doc.json @@ -51,8 +51,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "SECRET_PAIR", - "severity": "medium", + "rule": "AWS Client ID", + "severity": "high", "line_data_list": [ { "line": "\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123\",", @@ -62,7 +62,7 @@ "value": "AKIAGIREOGIAWSKEY123", "value_start": 17, "value_end": 37, - "variable": "Key", + "variable": null, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, @@ -75,8 +75,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "AWS Client ID", - "severity": "high", + "rule": "SECRET_PAIR", + "severity": "medium", "line_data_list": [ { "line": "\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123\",", @@ -86,7 +86,7 @@ "value": "AKIAGIREOGIAWSKEY123", "value_start": 17, "value_end": 37, - "variable": null, + "variable": "Key", "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, @@ -99,8 +99,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "SECRET_PAIR", - "severity": "medium", + "rule": "AWS Client ID", + "severity": "high", "line_data_list": [ { "line": "\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123\", \"AwsAccessKey2\": \"AKIAGIREOGIAWSKEY555\",", @@ -110,7 +110,7 @@ "value": "AKIAGIREOGIAWSKEY123", "value_start": 17, "value_end": 37, - "variable": "Key", + "variable": null, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, @@ -123,7 +123,7 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "AWS Client ID", + "rule": "AWS Multi", "severity": "high", "line_data_list": [ { @@ -140,28 +140,19 @@ "entropy": 3.5464393446710156, "valid": false } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "AWS Client ID", - "severity": "high", - "line_data_list": [ + }, { - "line": "\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123\", \"AwsAccessKey2\": \"AKIAGIREOGIAWSKEY555\",", - "line_num": 2, + "line": "\"AwsSecretKey\":\"CrackleGiReoGi123CrackleGiReoGi123AWSkey\"", + "line_num": 4, "path": "tests/samples/aws_multi.groovy", "info": "tests/samples/aws_multi.groovy|RAW", - "value": "AKIAGIREOGIAWSKEY555", - "value_start": 58, - "value_end": 78, + "value": "CrackleGiReoGi123CrackleGiReoGi123AWSkey", + "value_start": 16, + "value_end": 56, "variable": null, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.3086949695628425, + "entropy": 4.012814895472355, "valid": false } } @@ -171,8 +162,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "AWS Multi", - "severity": "high", + "rule": "SECRET_PAIR", + "severity": "medium", "line_data_list": [ { "line": "\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123\", \"AwsAccessKey2\": \"AKIAGIREOGIAWSKEY555\",", @@ -182,25 +173,34 @@ "value": "AKIAGIREOGIAWSKEY123", "value_start": 17, "value_end": 37, - "variable": null, + "variable": "Key", "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 3.5464393446710156, "valid": false } - }, + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "AWS Client ID", + "severity": "high", + "line_data_list": [ { - "line": "\"AwsSecretKey\":\"CrackleGiReoGi123CrackleGiReoGi123AWSkey\"", - "line_num": 4, + "line": "\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123\", \"AwsAccessKey2\": \"AKIAGIREOGIAWSKEY555\",", + "line_num": 2, "path": "tests/samples/aws_multi.groovy", "info": "tests/samples/aws_multi.groovy|RAW", - "value": "CrackleGiReoGi123CrackleGiReoGi123AWSkey", - "value_start": 16, - "value_end": 56, + "value": "AKIAGIREOGIAWSKEY555", + "value_start": 58, + "value_end": 78, "variable": null, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.012814895472355, + "entropy": 3.3086949695628425, "valid": false } } @@ -273,8 +273,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "SECRET_PAIR", - "severity": "medium", + "rule": "AWS MWS Key", + "severity": "high", "line_data_list": [ { "line": "AWS_MWS_KEY = \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\"", @@ -284,7 +284,7 @@ "value": "amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6", "value_start": 15, "value_end": 60, - "variable": "KEY", + "variable": null, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.0426135166748205, @@ -297,8 +297,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "AWS MWS Key", - "severity": "high", + "rule": "SECRET_PAIR", + "severity": "medium", "line_data_list": [ { "line": "AWS_MWS_KEY = \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\"", @@ -308,7 +308,7 @@ "value": "amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6", "value_start": 15, "value_end": 60, - "variable": null, + "variable": "KEY", "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.0426135166748205, @@ -345,8 +345,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "JSON Web Token", - "severity": "medium", + "rule": "Azure Access Token", + "severity": "high", "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", @@ -369,8 +369,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Azure Access Token", - "severity": "high", + "rule": "JSON Web Token", + "severity": "medium", "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", @@ -3278,13 +3278,13 @@ "line_num": 47, "path": "tests/samples/doc_id_pair_passwd_pair", "info": "tests/samples/doc_id_pair_passwd_pair|RAW", - "value": "ihqSb1Gg", - "value_start": 25, - "value_end": 33, - "variable": "Password", + "value": "as:master", + "value_start": 6, + "value_end": 15, + "variable": "Login", "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.0, + "entropy": 2.373266667948722, "valid": false } }, @@ -3293,13 +3293,13 @@ "line_num": 47, "path": "tests/samples/doc_id_pair_passwd_pair", "info": "tests/samples/doc_id_pair_passwd_pair|RAW", - "value": "as:master", - "value_start": 6, - "value_end": 15, - "variable": "Login", + "value": "ihqSb1Gg", + "value_start": 25, + "value_end": 33, + "variable": "Password", "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.373266667948722, + "entropy": 3.0, "valid": false } } @@ -4679,13 +4679,13 @@ "line_num": 78, "path": "tests/samples/doc_id_pair_passwd_pair", "info": "tests/samples/doc_id_pair_passwd_pair|RAW", - "value": "ihqSb1Gg", - "value_start": 20, + "value": "Name:master,PW:ihqSb1Gg", + "value_start": 5, "value_end": 28, - "variable": "PW", + "variable": "Wifi", "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.0, + "entropy": 3.6726625704843596, "valid": false } }, @@ -4694,13 +4694,13 @@ "line_num": 78, "path": "tests/samples/doc_id_pair_passwd_pair", "info": "tests/samples/doc_id_pair_passwd_pair|RAW", - "value": "Name:master,PW:ihqSb1Gg", - "value_start": 5, + "value": "ihqSb1Gg", + "value_start": 20, "value_end": 28, - "variable": "Wifi", + "variable": "PW", "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.6726625704843596, + "entropy": 3.0, "valid": false } } @@ -5784,7 +5784,7 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "ID_PAIR_PASSWD_PAIR", + "rule": "ID_PASSWD_PAIR", "severity": "medium", "line_data_list": [ { @@ -5792,16 +5792,25 @@ "line_num": 5, "path": "tests/samples/doc_id_passwd_pair", "info": "tests/samples/doc_id_passwd_pair|RAW", - "value": "master", - "value_start": 6, - "value_end": 12, - "variable": "PW", + "value": "IhqSb1Gg", + "value_start": 13, + "value_end": 21, + "variable": "ID:PW", "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 2.584962500721156, + "entropy": 3.0, "valid": false } - }, + } + ] + }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "ID_PAIR_PASSWD_PAIR", + "severity": "medium", + "line_data_list": [ { "line": "ID:PW=master:IhqSb1Gg", "line_num": 5, @@ -5816,28 +5825,19 @@ "entropy": 3.938262501362184, "valid": false } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "ID_PASSWD_PAIR", - "severity": "medium", - "line_data_list": [ + }, { "line": "ID:PW=master:IhqSb1Gg", "line_num": 5, "path": "tests/samples/doc_id_passwd_pair", "info": "tests/samples/doc_id_passwd_pair|RAW", - "value": "IhqSb1Gg", - "value_start": 13, - "value_end": 21, - "variable": "ID:PW", + "value": "master", + "value_start": 6, + "value_end": 12, + "variable": "PW", "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 3.0, + "entropy": 2.584962500721156, "valid": false } } @@ -9723,8 +9723,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "SECRET_PAIR", - "severity": "medium", + "rule": "Facebook Access Token", + "severity": "high", "line_data_list": [ { "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF\"", @@ -9734,7 +9734,7 @@ "value": "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", "value_start": 28, "value_end": 70, - "variable": "TOKEN", + "variable": null, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.766968315481371, @@ -9747,8 +9747,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Facebook Access Token", - "severity": "high", + "rule": "SECRET_PAIR", + "severity": "medium", "line_data_list": [ { "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF\"", @@ -9758,7 +9758,7 @@ "value": "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", "value_start": 28, "value_end": 70, - "variable": null, + "variable": "TOKEN", "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.766968315481371, @@ -9819,46 +9819,22 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "SECRET_PAIR", - "severity": "medium", - "line_data_list": [ - { - "line": "git_token = \"gireogicracklecrackle1231567190113416781\"", - "line_num": 1, - "path": "tests/samples/github_key.groovy", - "info": "tests/samples/github_key.groovy|RAW", - "value": "gireogicracklecrackle1231567190113416781", - "value_start": 13, - "value_end": 53, - "variable": "token", - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.992896608419107, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Github Old Token", + "rule": "Github Classic Token", "severity": "high", "line_data_list": [ { - "line": "git_token = \"gireogicracklecrackle1231567190113416781\"", - "line_num": 1, - "path": "tests/samples/github_key.groovy", - "info": "tests/samples/github_key.groovy|RAW", - "value": "gireogicracklecrackle1231567190113416781", - "value_start": 13, - "value_end": 53, + "line": "ghp_00000000000000000000000000000004WZ4EQ", + "line_num": 2, + "path": "tests/samples/github_classic_token", + "info": "tests/samples/github_classic_token|RAW", + "value": "ghp_00000000000000000000000000000004WZ4EQ", + "value_start": 0, + "value_end": 41, "variable": null, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.992896608419107, - "valid": true + "iterator": "BASE64_CHARS", + "entropy": 1.4322437698226884, + "valid": false } } ] @@ -9871,17 +9847,17 @@ "severity": "high", "line_data_list": [ { - "line": "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", + "line": "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", "line_num": 2, - "path": "tests/samples/github_personal_token", - "info": "tests/samples/github_personal_token|RAW", - "value": "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", + "path": "tests/samples/github_fine_granted_token", + "info": "tests/samples/github_fine_granted_token|RAW", + "value": "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", "value_start": 0, "value_end": 93, "variable": null, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.2218326882810935, + "entropy": 5.255374790203285, "valid": true } } @@ -9891,21 +9867,21 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Github Personal Access Token", + "rule": "Github Old Token", "severity": "high", "line_data_list": [ { - "line": "ghp_3Wf1ikDwUMP1I9Vz3z2qZ1Ge2uCLN230RKuq", - "line_num": 4, - "path": "tests/samples/github_personal_token", - "info": "tests/samples/github_personal_token|RAW", - "value": "ghp_3Wf1ikDwUMP1I9Vz3z2qZ1Ge2uCLN230RKuq", - "value_start": 0, - "value_end": 40, + "line": "git_token = \"gireogicracklecrackle1231567190113416781\"", + "line_num": 1, + "path": "tests/samples/github_key.groovy", + "info": "tests/samples/github_key.groovy|RAW", + "value": "gireogicracklecrackle1231567190113416781", + "value_start": 13, + "value_end": 53, "variable": null, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.682263329852917, + "iterator": "BASE36_CHARS", + "entropy": 3.992896608419107, "valid": true } } @@ -9915,21 +9891,21 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Github Token", - "severity": "high", + "rule": "SECRET_PAIR", + "severity": "medium", "line_data_list": [ { - "line": "ghr_Ku7ikDwqZ1Ge2u3Wf1UM3z2CLN230RP1I9Vz", + "line": "git_token = \"gireogicracklecrackle1231567190113416781\"", "line_num": 1, - "path": "tests/samples/github_token", - "info": "tests/samples/github_token|RAW", - "value": "ghr_Ku7ikDwqZ1Ge2u3Wf1UM3z2CLN230RP1I9Vz", - "value_start": 0, - "value_end": 40, - "variable": null, + "path": "tests/samples/github_key.groovy", + "info": "tests/samples/github_key.groovy|RAW", + "value": "gireogicracklecrackle1231567190113416781", + "value_start": 13, + "value_end": 53, + "variable": "token", "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.732263329852917, + "iterator": "BASE36_CHARS", + "entropy": 3.992896608419107, "valid": true } } @@ -10146,8 +10122,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "SECRET_PAIR", - "severity": "medium", + "rule": "Google OAuth Access Token", + "severity": "high", "line_data_list": [ { "line": "google_oauth_key = \"ya29.gi_reo_gi_crackle_ln22\"", @@ -10157,7 +10133,7 @@ "value": "ya29.gi_reo_gi_crackle_ln22", "value_start": 20, "value_end": 47, - "variable": "key", + "variable": null, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.1797273164975133, @@ -10170,8 +10146,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Google OAuth Access Token", - "severity": "high", + "rule": "SECRET_PAIR", + "severity": "medium", "line_data_list": [ { "line": "google_oauth_key = \"ya29.gi_reo_gi_crackle_ln22\"", @@ -10181,7 +10157,7 @@ "value": "ya29.gi_reo_gi_crackle_ln22", "value_start": 20, "value_end": 47, - "variable": null, + "variable": "key", "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.1797273164975133, @@ -10242,8 +10218,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "JSON Web Token", - "severity": "medium", + "rule": "Grafana Provisioned API Key", + "severity": "high", "line_data_list": [ { "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", @@ -10266,8 +10242,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Grafana Provisioned API Key", - "severity": "high", + "rule": "JSON Web Token", + "severity": "medium", "line_data_list": [ { "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", @@ -10409,7 +10385,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9986809492111206, + "ml_probability": 0.99868, "rule": "JSON Web Token", "severity": "medium", "line_data_list": [ @@ -11169,22 +11145,22 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Github Token", + "rule": "Github Classic Token", "severity": "high", "line_data_list": [ { - "line": "ghr_Ku7ikDwqD1Ge2u3Wf1UM3z2SLN230RP1I8Wf", + "line": "ghs_00000000000000000000000000000004WZ4EQ", "line_num": 2, "path": "tests/samples/sample.docx", "info": "tests/samples/sample.docx|DOCX", - "value": "ghr_Ku7ikDwqD1Ge2u3Wf1UM3z2SLN230RP1I8Wf", + "value": "ghs_00000000000000000000000000000004WZ4EQ", "value_start": 0, - "value_end": 40, + "value_end": 41, "variable": null, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.632263329852917, - "valid": true + "entropy": 1.4322437698226884, + "valid": false } } ] @@ -11217,21 +11193,21 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Github Token", + "rule": "Github Classic Token", "severity": "high", "line_data_list": [ { - "line": "ghr_Ku7ikDwqD1Ge2u3Wf1UM3z2CLN230RP1I8Vd", + "line": "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", "line_num": 3, "path": "tests/samples/sample.pdf", "info": "tests/samples/sample.pdf|PDF", - "value": "ghr_Ku7ikDwqD1Ge2u3Wf1UM3z2CLN230RP1I8Vd", + "value": "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", "value_start": 0, "value_end": 40, "variable": null, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 4.732263329852917, + "entropy": 4.838879892515178, "valid": true } } @@ -11861,4 +11837,4 @@ } ] } -] \ No newline at end of file +] diff --git a/tests/data/ml_threshold_0.json b/tests/data/ml_threshold_0.json index 825170b9f..876710c01 100644 --- a/tests/data/ml_threshold_0.json +++ b/tests/data/ml_threshold_0.json @@ -143,30 +143,6 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "AWS Client ID", - "severity": "high", - "line_data_list": [ - { - "line": "\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123\", \"AwsAccessKey2\": \"AKIAGIREOGIAWSKEY555\",", - "line_num": 2, - "path": "tests/samples/aws_multi.groovy", - "info": "", - "value": "AKIAGIREOGIAWSKEY555", - "value_start": 58, - "value_end": 78, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.3086949695628425, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -206,6 +182,30 @@ } ] }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "AWS Client ID", + "severity": "high", + "line_data_list": [ + { + "line": "\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123\", \"AwsAccessKey2\": \"AKIAGIREOGIAWSKEY555\",", + "line_num": 2, + "path": "tests/samples/aws_multi.groovy", + "info": "", + "value": "AKIAGIREOGIAWSKEY555", + "value_start": 58, + "value_end": 78, + "variable": null, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 3.3086949695628425, + "valid": false + } + } + ] + }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -249,8 +249,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Key", - "severity": "medium", + "rule": "AWS MWS Key", + "severity": "high", "line_data_list": [ { "line": "AWS_MWS_KEY = \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\"", @@ -260,7 +260,7 @@ "value": "amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6", "value_start": 15, "value_end": 60, - "variable": "AWS_MWS_KEY", + "variable": null, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.0426135166748205, @@ -273,8 +273,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "AWS MWS Key", - "severity": "high", + "rule": "Key", + "severity": "medium", "line_data_list": [ { "line": "AWS_MWS_KEY = \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\"", @@ -284,7 +284,7 @@ "value": "amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6", "value_start": 15, "value_end": 60, - "variable": null, + "variable": "AWS_MWS_KEY", "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.0426135166748205, @@ -321,8 +321,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "JSON Web Token", - "severity": "medium", + "rule": "Azure Access Token", + "severity": "high", "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", @@ -345,8 +345,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Azure Access Token", - "severity": "high", + "rule": "JSON Web Token", + "severity": "medium", "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", @@ -6801,8 +6801,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Token", - "severity": "medium", + "rule": "Facebook Access Token", + "severity": "high", "line_data_list": [ { "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF\"", @@ -6812,7 +6812,7 @@ "value": "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", "value_start": 28, "value_end": 70, - "variable": "GI_REO_GI_FACEBOOK_TOKEN", + "variable": null, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.766968315481371, @@ -6825,8 +6825,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Facebook Access Token", - "severity": "high", + "rule": "Token", + "severity": "medium", "line_data_list": [ { "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF\"", @@ -6836,7 +6836,7 @@ "value": "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", "value_start": 28, "value_end": 70, - "variable": null, + "variable": "GI_REO_GI_FACEBOOK_TOKEN", "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.766968315481371, @@ -6897,46 +6897,22 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Token", - "severity": "medium", - "line_data_list": [ - { - "line": "git_token = \"gireogicracklecrackle1231567190113416781\"", - "line_num": 1, - "path": "tests/samples/github_key.groovy", - "info": "", - "value": "gireogicracklecrackle1231567190113416781", - "value_start": 13, - "value_end": 53, - "variable": "git_token", - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.992896608419107, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Github Old Token", + "rule": "Github Classic Token", "severity": "high", "line_data_list": [ { - "line": "git_token = \"gireogicracklecrackle1231567190113416781\"", - "line_num": 1, - "path": "tests/samples/github_key.groovy", + "line": "ghp_00000000000000000000000000000004WZ4EQ", + "line_num": 2, + "path": "tests/samples/github_classic_token", "info": "", - "value": "gireogicracklecrackle1231567190113416781", - "value_start": 13, - "value_end": 53, + "value": "ghp_00000000000000000000000000000004WZ4EQ", + "value_start": 0, + "value_end": 41, "variable": null, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.992896608419107, - "valid": true + "iterator": "BASE64_CHARS", + "entropy": 1.4322437698226884, + "valid": false } } ] @@ -6949,17 +6925,17 @@ "severity": "high", "line_data_list": [ { - "line": "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", + "line": "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", "line_num": 2, - "path": "tests/samples/github_personal_token", + "path": "tests/samples/github_fine_granted_token", "info": "", - "value": "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", + "value": "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", "value_start": 0, "value_end": 93, "variable": null, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.2218326882810935, + "entropy": 5.255374790203285, "valid": true } } @@ -6969,21 +6945,21 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Github Personal Access Token", + "rule": "Github Old Token", "severity": "high", "line_data_list": [ { - "line": "ghp_3Wf1ikDwUMP1I9Vz3z2qZ1Ge2uCLN230RKuq", - "line_num": 4, - "path": "tests/samples/github_personal_token", + "line": "git_token = \"gireogicracklecrackle1231567190113416781\"", + "line_num": 1, + "path": "tests/samples/github_key.groovy", "info": "", - "value": "ghp_3Wf1ikDwUMP1I9Vz3z2qZ1Ge2uCLN230RKuq", - "value_start": 0, - "value_end": 40, + "value": "gireogicracklecrackle1231567190113416781", + "value_start": 13, + "value_end": 53, "variable": null, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.682263329852917, + "iterator": "BASE36_CHARS", + "entropy": 3.992896608419107, "valid": true } } @@ -6993,21 +6969,21 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Github Token", - "severity": "high", + "rule": "Token", + "severity": "medium", "line_data_list": [ { - "line": "ghr_Ku7ikDwqZ1Ge2u3Wf1UM3z2CLN230RP1I9Vz", + "line": "git_token = \"gireogicracklecrackle1231567190113416781\"", "line_num": 1, - "path": "tests/samples/github_token", + "path": "tests/samples/github_key.groovy", "info": "", - "value": "ghr_Ku7ikDwqZ1Ge2u3Wf1UM3z2CLN230RP1I9Vz", - "value_start": 0, - "value_end": 40, - "variable": null, + "value": "gireogicracklecrackle1231567190113416781", + "value_start": 13, + "value_end": 53, + "variable": "git_token", "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.732263329852917, + "iterator": "BASE36_CHARS", + "entropy": 3.992896608419107, "valid": true } } @@ -7248,8 +7224,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Key", - "severity": "medium", + "rule": "Google OAuth Access Token", + "severity": "high", "line_data_list": [ { "line": "google_oauth_key = \"ya29.gi_reo_gi_crackle_ln22\"", @@ -7259,7 +7235,7 @@ "value": "ya29.gi_reo_gi_crackle_ln22", "value_start": 20, "value_end": 47, - "variable": "google_oauth_key", + "variable": null, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.1797273164975133, @@ -7272,8 +7248,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Google OAuth Access Token", - "severity": "high", + "rule": "Key", + "severity": "medium", "line_data_list": [ { "line": "google_oauth_key = \"ya29.gi_reo_gi_crackle_ln22\"", @@ -7283,7 +7259,7 @@ "value": "ya29.gi_reo_gi_crackle_ln22", "value_start": 20, "value_end": 47, - "variable": null, + "variable": "google_oauth_key", "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.1797273164975133, @@ -7344,8 +7320,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "JSON Web Token", - "severity": "medium", + "rule": "Grafana Provisioned API Key", + "severity": "high", "line_data_list": [ { "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", @@ -7368,8 +7344,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Grafana Provisioned API Key", - "severity": "high", + "rule": "JSON Web Token", + "severity": "medium", "line_data_list": [ { "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", @@ -9131,4 +9107,4 @@ } ] } -] \ No newline at end of file +] diff --git a/tests/data/output.json b/tests/data/output.json index 9f244580a..e54711c0c 100644 --- a/tests/data/output.json +++ b/tests/data/output.json @@ -2,7 +2,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9843968152999878, + "ml_probability": 0.9844, "rule": "API", "severity": "medium", "line_data_list": [ @@ -74,7 +74,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9950045347213745, + "ml_probability": 0.995, "rule": "Auth", "severity": "medium", "line_data_list": [ @@ -143,30 +143,6 @@ } ] }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "AWS Client ID", - "severity": "high", - "line_data_list": [ - { - "line": "\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123\", \"AwsAccessKey2\": \"AKIAGIREOGIAWSKEY555\",", - "line_num": 2, - "path": "tests/samples/aws_multi.groovy", - "info": "", - "value": "AKIAGIREOGIAWSKEY555", - "value_start": 58, - "value_end": 78, - "variable": null, - "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 3.3086949695628425, - "valid": false - } - } - ] - }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -206,6 +182,30 @@ } ] }, + { + "api_validation": "NOT_AVAILABLE", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "AWS Client ID", + "severity": "high", + "line_data_list": [ + { + "line": "\"AwsAccessKey\": \"AKIAGIREOGIAWSKEY123\", \"AwsAccessKey2\": \"AKIAGIREOGIAWSKEY555\",", + "line_num": 2, + "path": "tests/samples/aws_multi.groovy", + "info": "", + "value": "AKIAGIREOGIAWSKEY555", + "value_start": 58, + "value_end": 78, + "variable": null, + "entropy_validation": { + "iterator": "BASE64_CHARS", + "entropy": 3.3086949695628425, + "valid": false + } + } + ] + }, { "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", @@ -249,8 +249,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Key", - "severity": "medium", + "rule": "AWS MWS Key", + "severity": "high", "line_data_list": [ { "line": "AWS_MWS_KEY = \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\"", @@ -260,7 +260,7 @@ "value": "amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6", "value_start": 15, "value_end": 60, - "variable": "AWS_MWS_KEY", + "variable": null, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.0426135166748205, @@ -273,8 +273,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "AWS MWS Key", - "severity": "high", + "rule": "Key", + "severity": "medium", "line_data_list": [ { "line": "AWS_MWS_KEY = \"amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6\"", @@ -284,7 +284,7 @@ "value": "amzn.mws.c1dg4haz-6xd6-4gqi-vna2-ed3whf71x9k6", "value_start": 15, "value_end": 60, - "variable": null, + "variable": "AWS_MWS_KEY", "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 4.0426135166748205, @@ -321,8 +321,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "JSON Web Token", - "severity": "medium", + "rule": "Azure Access Token", + "severity": "high", "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", @@ -345,8 +345,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Azure Access Token", - "severity": "high", + "rule": "JSON Web Token", + "severity": "medium", "line_data_list": [ { "line": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiJlZjFkYTlkNC1mZjc3LTRjM2UtYTAwNS04NDBjM2Y4MzA3NDUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTUyMjIyOS8iLCJpYXQiOjE1MzcyMzMxMDYsIm5iZiI6MTUzNzIzMzEwNiwiZXhwIjoxNTM3MjM3MDA2LCJhY3IiOiIxIiwiYWlvIjoiQVhRQWkvOElBQUFBRm0rRS9RVEcrZ0ZuVnhMaldkdzhLKzYxQUdyU091TU1GNmViYU1qN1hPM0libUQzZkdtck95RCtOdlp5R24yVmFUL2tES1h3NE1JaHJnR1ZxNkJuOHdMWG9UMUxrSVorRnpRVmtKUFBMUU9WNEtjWHFTbENWUERTL0RpQ0RnRTIyMlRJbU12V05hRU1hVU9Uc0lHdlRRPT0iLCJhbXIiOlsid2lhIl0sImFwcGlkIjoiNzVkYmU3N2YtMTBhMy00ZTU5LTg1ZmQtOGMxMjc1NDRmMTdjIiwiYXBwaWRhY3IiOiIwIiwiZW1haWwiOiJBYmVMaUBtaWNyb3NvZnQuY29tIiwiZmFtaWx5X25hbWUiOiJMaW5jb2xuIiwiZ2l2ZW5fbmFtZSI6IkFiZSAoTVNGVCkiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMjIyNDcvIiwiaXBhZGRyIjoiMjIyLjIyMi4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJvaWQiOiIwMjIyM2I2Yi1hYTFkLTQyZDQtOWVjMC0xYjJiYjkxOTQ0MzgiLCJyaCI6IkkiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJsM19yb0lTUVUyMjJiVUxTOXlpMmswWHBxcE9pTXo1SDNaQUNvMUdlWEEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6ImFiZWxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJGVnNHeFlYSTMwLVR1aWt1dVVvRkFBIiwidmVyIjoiMS4wIn0.D3H6pMUtQnoJAGq6AHd", @@ -512,7 +512,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9980424642562866, + "ml_probability": 0.99804, "rule": "Certificate", "severity": "medium", "line_data_list": [ @@ -536,7 +536,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9227905869483948, + "ml_probability": 0.92279, "rule": "Credential", "severity": "medium", "line_data_list": [ @@ -608,7 +608,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -632,7 +632,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -656,7 +656,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -680,7 +680,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -704,7 +704,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -728,7 +728,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -752,7 +752,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -776,7 +776,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -800,7 +800,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -824,7 +824,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -848,7 +848,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -872,7 +872,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -896,7 +896,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -920,7 +920,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -944,7 +944,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -968,7 +968,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -992,7 +992,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1016,7 +1016,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1040,7 +1040,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1064,7 +1064,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1088,7 +1088,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1112,7 +1112,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1136,7 +1136,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1160,7 +1160,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1184,7 +1184,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1208,7 +1208,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1232,7 +1232,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1256,7 +1256,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1280,7 +1280,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1304,7 +1304,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1328,7 +1328,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1352,7 +1352,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1376,7 +1376,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1400,7 +1400,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1424,7 +1424,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1448,7 +1448,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1472,7 +1472,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1496,7 +1496,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1520,7 +1520,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1544,7 +1544,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1568,7 +1568,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1592,7 +1592,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1640,7 +1640,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1664,7 +1664,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1688,7 +1688,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1712,7 +1712,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1736,7 +1736,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1760,7 +1760,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1784,7 +1784,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1808,7 +1808,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1832,7 +1832,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1856,7 +1856,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1880,7 +1880,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1904,7 +1904,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1928,7 +1928,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1952,7 +1952,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -1976,7 +1976,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2000,7 +2000,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2024,7 +2024,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2048,7 +2048,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2072,7 +2072,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2096,7 +2096,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2120,7 +2120,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2144,7 +2144,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2168,7 +2168,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2192,7 +2192,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8281654715538025, + "ml_probability": 0.82817, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2216,7 +2216,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2240,7 +2240,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2264,7 +2264,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6591864824295044, + "ml_probability": 0.65919, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2288,7 +2288,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2312,7 +2312,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2384,7 +2384,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6477803587913513, + "ml_probability": 0.64778, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2480,7 +2480,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7439818978309631, + "ml_probability": 0.74398, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2504,7 +2504,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8098903894424438, + "ml_probability": 0.80989, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2528,7 +2528,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8098903894424438, + "ml_probability": 0.80989, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2552,7 +2552,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8098903894424438, + "ml_probability": 0.80989, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2576,7 +2576,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8098903894424438, + "ml_probability": 0.80989, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -2600,7 +2600,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7150920629501343, + "ml_probability": 0.71509, "rule": "Token", "severity": "medium", "line_data_list": [ @@ -2624,7 +2624,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7150920629501343, + "ml_probability": 0.71509, "rule": "Token", "severity": "medium", "line_data_list": [ @@ -2648,7 +2648,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9140323400497437, + "ml_probability": 0.91403, "rule": "Key", "severity": "medium", "line_data_list": [ @@ -2672,7 +2672,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9140323400497437, + "ml_probability": 0.91403, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -2696,7 +2696,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9095643162727356, + "ml_probability": 0.90956, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -2720,7 +2720,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9095643162727356, + "ml_probability": 0.90956, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -2744,7 +2744,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7150920629501343, + "ml_probability": 0.71509, "rule": "Token", "severity": "medium", "line_data_list": [ @@ -2768,7 +2768,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8278610706329346, + "ml_probability": 0.82786, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -2792,7 +2792,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9095643162727356, + "ml_probability": 0.90956, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -2816,7 +2816,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9095643162727356, + "ml_probability": 0.90956, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -2840,7 +2840,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7150920629501343, + "ml_probability": 0.71509, "rule": "Token", "severity": "medium", "line_data_list": [ @@ -2864,7 +2864,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7329676747322083, + "ml_probability": 0.73297, "rule": "API", "severity": "medium", "line_data_list": [ @@ -2888,7 +2888,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7329676747322083, + "ml_probability": 0.73297, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -2912,7 +2912,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9581242799758911, + "ml_probability": 0.95812, "rule": "Key", "severity": "medium", "line_data_list": [ @@ -2936,7 +2936,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9581242799758911, + "ml_probability": 0.95812, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -2960,7 +2960,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7150920629501343, + "ml_probability": 0.71509, "rule": "Token", "severity": "medium", "line_data_list": [ @@ -3104,7 +3104,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7439818978309631, + "ml_probability": 0.74398, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3152,7 +3152,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7404671311378479, + "ml_probability": 0.74047, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3224,7 +3224,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7439818978309631, + "ml_probability": 0.74398, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3296,7 +3296,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7439818978309631, + "ml_probability": 0.74398, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3368,7 +3368,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7439818978309631, + "ml_probability": 0.74398, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3416,7 +3416,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7404671311378479, + "ml_probability": 0.74047, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3464,7 +3464,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7439818978309631, + "ml_probability": 0.74398, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3488,7 +3488,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8615446090698242, + "ml_probability": 0.86154, "rule": "Key", "severity": "medium", "line_data_list": [ @@ -3512,7 +3512,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8615446090698242, + "ml_probability": 0.86154, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -3608,7 +3608,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7404671311378479, + "ml_probability": 0.74047, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3632,7 +3632,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8098903894424438, + "ml_probability": 0.80989, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3848,7 +3848,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8098903894424438, + "ml_probability": 0.80989, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3872,7 +3872,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8098903894424438, + "ml_probability": 0.80989, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3896,7 +3896,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8098903894424438, + "ml_probability": 0.80989, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -3920,7 +3920,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7273938655853271, + "ml_probability": 0.72739, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -4328,7 +4328,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7404671311378479, + "ml_probability": 0.74047, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -4376,7 +4376,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7404671311378479, + "ml_probability": 0.74047, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -4424,7 +4424,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7439818978309631, + "ml_probability": 0.74398, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -4472,7 +4472,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7404671311378479, + "ml_probability": 0.74047, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -4568,7 +4568,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7439818978309631, + "ml_probability": 0.74398, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -4592,7 +4592,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7439818978309631, + "ml_probability": 0.74398, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -4640,7 +4640,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.7439818978309631, + "ml_probability": 0.74398, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -4809,8 +4809,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Token", - "severity": "medium", + "rule": "Facebook Access Token", + "severity": "high", "line_data_list": [ { "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF\"", @@ -4820,7 +4820,7 @@ "value": "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", "value_start": 28, "value_end": 70, - "variable": "GI_REO_GI_FACEBOOK_TOKEN", + "variable": null, "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.766968315481371, @@ -4833,8 +4833,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Facebook Access Token", - "severity": "high", + "rule": "Token", + "severity": "medium", "line_data_list": [ { "line": "GI_REO_GI_FACEBOOK_TOKEN = \"EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF\"", @@ -4844,7 +4844,7 @@ "value": "EAACEdEose0cBAlGy7KeQ5Yna9Coup39tiYdoQ4jHF", "value_start": 28, "value_end": 70, - "variable": null, + "variable": "GI_REO_GI_FACEBOOK_TOKEN", "entropy_validation": { "iterator": "BASE64_CHARS", "entropy": 4.766968315481371, @@ -4903,48 +4903,24 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9992144107818604, - "rule": "Token", - "severity": "medium", - "line_data_list": [ - { - "line": "git_token = \"gireogicracklecrackle1231567190113416781\"", - "line_num": 1, - "path": "tests/samples/github_key.groovy", - "info": "", - "value": "gireogicracklecrackle1231567190113416781", - "value_start": 13, - "value_end": 53, - "variable": "git_token", - "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.992896608419107, - "valid": true - } - } - ] - }, - { - "api_validation": "NOT_AVAILABLE", - "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9992144107818604, - "rule": "Github Old Token", + "ml_validation": "NOT_AVAILABLE", + "ml_probability": null, + "rule": "Github Classic Token", "severity": "high", "line_data_list": [ { - "line": "git_token = \"gireogicracklecrackle1231567190113416781\"", - "line_num": 1, - "path": "tests/samples/github_key.groovy", + "line": "ghp_00000000000000000000000000000004WZ4EQ", + "line_num": 2, + "path": "tests/samples/github_classic_token", "info": "", - "value": "gireogicracklecrackle1231567190113416781", - "value_start": 13, - "value_end": 53, + "value": "ghp_00000000000000000000000000000004WZ4EQ", + "value_start": 0, + "value_end": 41, "variable": null, "entropy_validation": { - "iterator": "BASE36_CHARS", - "entropy": 3.992896608419107, - "valid": true + "iterator": "BASE64_CHARS", + "entropy": 1.4322437698226884, + "valid": false } } ] @@ -4957,17 +4933,17 @@ "severity": "high", "line_data_list": [ { - "line": "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", + "line": "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", "line_num": 2, - "path": "tests/samples/github_personal_token", + "path": "tests/samples/github_fine_granted_token", "info": "", - "value": "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", + "value": "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", "value_start": 0, "value_end": 93, "variable": null, "entropy_validation": { "iterator": "BASE64_CHARS", - "entropy": 5.2218326882810935, + "entropy": 5.255374790203285, "valid": true } } @@ -4975,23 +4951,23 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Github Personal Access Token", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.99921, + "rule": "Github Old Token", "severity": "high", "line_data_list": [ { - "line": "ghp_3Wf1ikDwUMP1I9Vz3z2qZ1Ge2uCLN230RKuq", - "line_num": 4, - "path": "tests/samples/github_personal_token", + "line": "git_token = \"gireogicracklecrackle1231567190113416781\"", + "line_num": 1, + "path": "tests/samples/github_key.groovy", "info": "", - "value": "ghp_3Wf1ikDwUMP1I9Vz3z2qZ1Ge2uCLN230RKuq", - "value_start": 0, - "value_end": 40, + "value": "gireogicracklecrackle1231567190113416781", + "value_start": 13, + "value_end": 53, "variable": null, "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.682263329852917, + "iterator": "BASE36_CHARS", + "entropy": 3.992896608419107, "valid": true } } @@ -4999,23 +4975,23 @@ }, { "api_validation": "NOT_AVAILABLE", - "ml_validation": "NOT_AVAILABLE", - "ml_probability": null, - "rule": "Github Token", - "severity": "high", + "ml_validation": "VALIDATED_KEY", + "ml_probability": 0.99921, + "rule": "Token", + "severity": "medium", "line_data_list": [ { - "line": "ghr_Ku7ikDwqZ1Ge2u3Wf1UM3z2CLN230RP1I9Vz", + "line": "git_token = \"gireogicracklecrackle1231567190113416781\"", "line_num": 1, - "path": "tests/samples/github_token", + "path": "tests/samples/github_key.groovy", "info": "", - "value": "ghr_Ku7ikDwqZ1Ge2u3Wf1UM3z2CLN230RP1I9Vz", - "value_start": 0, - "value_end": 40, - "variable": null, + "value": "gireogicracklecrackle1231567190113416781", + "value_start": 13, + "value_end": 53, + "variable": "git_token", "entropy_validation": { - "iterator": "BASE64_CHARS", - "entropy": 4.732263329852917, + "iterator": "BASE36_CHARS", + "entropy": 3.992896608419107, "valid": true } } @@ -5256,8 +5232,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Key", - "severity": "medium", + "rule": "Google OAuth Access Token", + "severity": "high", "line_data_list": [ { "line": "google_oauth_key = \"ya29.gi_reo_gi_crackle_ln22\"", @@ -5267,7 +5243,7 @@ "value": "ya29.gi_reo_gi_crackle_ln22", "value_start": 20, "value_end": 47, - "variable": "google_oauth_key", + "variable": null, "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.1797273164975133, @@ -5280,8 +5256,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Google OAuth Access Token", - "severity": "high", + "rule": "Key", + "severity": "medium", "line_data_list": [ { "line": "google_oauth_key = \"ya29.gi_reo_gi_crackle_ln22\"", @@ -5291,7 +5267,7 @@ "value": "ya29.gi_reo_gi_crackle_ln22", "value_start": 20, "value_end": 47, - "variable": null, + "variable": "google_oauth_key", "entropy_validation": { "iterator": "BASE36_CHARS", "entropy": 3.1797273164975133, @@ -5352,8 +5328,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "JSON Web Token", - "severity": "medium", + "rule": "Grafana Provisioned API Key", + "severity": "high", "line_data_list": [ { "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", @@ -5376,8 +5352,8 @@ "api_validation": "NOT_AVAILABLE", "ml_validation": "NOT_AVAILABLE", "ml_probability": null, - "rule": "Grafana Provisioned API Key", - "severity": "high", + "rule": "JSON Web Token", + "severity": "medium", "line_data_list": [ { "line": "grafana = 'eyJrIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm4iOiJ4eHh4IiwiaWQiOjIwNDM2MH0='", @@ -5591,7 +5567,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9270606637001038, + "ml_probability": 0.92706, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -5663,7 +5639,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9986809492111206, + "ml_probability": 0.99868, "rule": "JSON Web Token", "severity": "medium", "line_data_list": [ @@ -5687,7 +5663,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9932214021682739, + "ml_probability": 0.99322, "rule": "Key", "severity": "medium", "line_data_list": [ @@ -5711,7 +5687,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9979934692382812, + "ml_probability": 0.99799, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -5735,7 +5711,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9980103373527527, + "ml_probability": 0.99801, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -5759,7 +5735,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9979350566864014, + "ml_probability": 0.99794, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -5783,7 +5759,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9835053086280823, + "ml_probability": 0.98351, "rule": "Key", "severity": "medium", "line_data_list": [ @@ -5918,7 +5894,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9180336594581604, + "ml_probability": 0.91803, "rule": "Token", "severity": "medium", "line_data_list": [ @@ -6005,7 +5981,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9180336594581604, + "ml_probability": 0.91803, "rule": "Token", "severity": "medium", "line_data_list": [ @@ -6029,7 +6005,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9950023293495178, + "ml_probability": 0.995, "rule": "Nonce", "severity": "medium", "line_data_list": [ @@ -6077,7 +6053,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8421579599380493, + "ml_probability": 0.84216, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -6101,7 +6077,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9988007545471191, + "ml_probability": 0.9988, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -6125,7 +6101,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9988007545471191, + "ml_probability": 0.9988, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -6149,7 +6125,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9975466728210449, + "ml_probability": 0.99755, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -6173,7 +6149,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9270606637001038, + "ml_probability": 0.92706, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -6197,7 +6173,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9270606637001038, + "ml_probability": 0.92706, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -6221,7 +6197,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9205427169799805, + "ml_probability": 0.92054, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -6446,7 +6422,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9975466728210449, + "ml_probability": 0.99755, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -6494,7 +6470,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.989031195640564, + "ml_probability": 0.98903, "rule": "Salt", "severity": "medium", "line_data_list": [ @@ -6518,7 +6494,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8243017196655273, + "ml_probability": 0.8243, "rule": "Salt", "severity": "medium", "line_data_list": [ @@ -6542,7 +6518,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.8432453870773315, + "ml_probability": 0.84325, "rule": "Salt", "severity": "medium", "line_data_list": [ @@ -6566,7 +6542,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.6660635471343994, + "ml_probability": 0.66606, "rule": "Salt", "severity": "medium", "line_data_list": [ @@ -6590,7 +6566,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9294037818908691, + "ml_probability": 0.9294, "rule": "Salt", "severity": "medium", "line_data_list": [ @@ -6614,7 +6590,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9953110218048096, + "ml_probability": 0.99531, "rule": "Secret", "severity": "medium", "line_data_list": [ @@ -6950,7 +6926,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9970759153366089, + "ml_probability": 0.99708, "rule": "Token", "severity": "medium", "line_data_list": [ @@ -6998,7 +6974,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.996720552444458, + "ml_probability": 0.99672, "rule": "URL Credentials", "severity": "high", "line_data_list": [ @@ -7022,7 +6998,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9524834156036377, + "ml_probability": 0.95248, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -7046,7 +7022,7 @@ { "api_validation": "NOT_AVAILABLE", "ml_validation": "VALIDATED_KEY", - "ml_probability": 0.9524834156036377, + "ml_probability": 0.95248, "rule": "Password", "severity": "medium", "line_data_list": [ @@ -7067,4 +7043,4 @@ } ] } -] \ No newline at end of file +] diff --git a/tests/rules/test_github_personal_access_token.py b/tests/rules/test_github_classic_token.py similarity index 61% rename from tests/rules/test_github_personal_access_token.py rename to tests/rules/test_github_classic_token.py index f37fe3d57..9fce179b3 100644 --- a/tests/rules/test_github_personal_access_token.py +++ b/tests/rules/test_github_classic_token.py @@ -5,14 +5,14 @@ from .common import BaseTestRule -class TestGithubPersonalAccessToken(BaseTestRule): +class TestClassicToken(BaseTestRule): @pytest.fixture(params=[ # - ["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"] # + ["ghu_00000000000000000000000000000004WZ4EQ"] # ]) def lines(self, request) -> List[str]: return request.param @pytest.fixture def rule_name(self) -> str: - return "Github Personal Access Token" + return "Github Classic Token" diff --git a/tests/rules/test_github_fine_granted_token.py b/tests/rules/test_github_fine_granted_token.py new file mode 100644 index 000000000..38209c117 --- /dev/null +++ b/tests/rules/test_github_fine_granted_token.py @@ -0,0 +1,18 @@ +from typing import List + +import pytest + +from .common import BaseTestRule + + +class TestGithubFineGrantedToken(BaseTestRule): + + @pytest.fixture(params=[ + ["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Q"], # + ]) + def lines(self, request) -> List[str]: + return request.param + + @pytest.fixture + def rule_name(self) -> str: + return "Github Fine-granted Token" diff --git a/tests/rules/test_github_token.py b/tests/rules/test_github_token.py deleted file mode 100644 index b5eaf71e1..000000000 --- a/tests/rules/test_github_token.py +++ /dev/null @@ -1,20 +0,0 @@ -from typing import List - -import pytest - -from .common import BaseTestRule - - -class TestGithubToken(BaseTestRule): - - @pytest.fixture(params=[ - ["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"], # - ["ghu_yK9Kliqr8NDDnCmMAcxFJ6mwIguP5Z0tad19"], # - ["ghr_1B4a2e77838347a7E420ce178F2E7c6912E169246c34E1ccbF66C46812d16D5B1A9Dc86A1498"] # - ]) - def lines(self, request) -> List[str]: - return request.param - - @pytest.fixture - def rule_name(self) -> str: - return "Github Token" diff --git a/tests/samples/github_classic_token b/tests/samples/github_classic_token new file mode 100644 index 000000000..d613bb350 --- /dev/null +++ b/tests/samples/github_classic_token @@ -0,0 +1,4 @@ +# Classic +ghp_00000000000000000000000000000004WZ4EQ +# random +ghp_1010110010001010101001010101010101011001 diff --git a/tests/samples/github_fine_granted_token b/tests/samples/github_fine_granted_token new file mode 100644 index 000000000..99065e96e --- /dev/null +++ b/tests/samples/github_fine_granted_token @@ -0,0 +1,2 @@ +# Fine-granted token +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 diff --git a/tests/samples/github_personal_token b/tests/samples/github_personal_token deleted file mode 100644 index 5bf9905f4..000000000 --- a/tests/samples/github_personal_token +++ /dev/null @@ -1,4 +0,0 @@ -# Fine-granted token -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 -# Classic -ghp_3Wf1ikDwUMP1I9Vz3z2qZ1Ge2uCLN230RKuq diff --git a/tests/samples/github_token b/tests/samples/github_token deleted file mode 100644 index 315dac312..000000000 --- a/tests/samples/github_token +++ /dev/null @@ -1 +0,0 @@ -ghr_Ku7ikDwqZ1Ge2u3Wf1UM3z2CLN230RP1I9Vz diff --git a/tests/samples/sample.docx b/tests/samples/sample.docx index a8762b33fb29ad7d60316108fde06157592d096b..4c3593c6b0e93686ee5ef0feb65f25816bb9b2fe 100644 GIT binary patch delta 2504 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 delta 2392 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 diff --git a/tests/samples/sample.pdf b/tests/samples/sample.pdf index d4a1c8acf0f181ad61c608a23a6c63c306518440..71f12f60e6c22eb614933c665b81b52655480335 100644 GIT binary patch delta 21924 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 None: cred_sweeper = CredSweeper(depth=33) cred_sweeper.run(content_provider=content_provider) found_credentials = cred_sweeper.credential_manager.get_credentials() - self.assertEqual(3, len(found_credentials)) - self.assertSetEqual({"AWS Client ID", "Password", "Github Token"}, set(i.rule_name for i in found_credentials)) - self.assertSetEqual({"Xdj@jcN834b", "AKIAGIREOGIAWSKEY123", "ghr_Ku7ikDwqD1Ge2u3Wf1UM3z2CLN230RP1I8Vd"}, + self.assertSetEqual({"AWS Client ID", "Password", "Github Classic Token"}, + set(i.rule_name for i in found_credentials)) + self.assertSetEqual({"Xdj@jcN834b", "AKIAGIREOGIAWSKEY123", "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"}, set(i.line_data_list[0].value for i in found_credentials)) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @@ -571,7 +571,7 @@ def test_docx_p(self) -> None: found_credentials = cred_sweeper.credential_manager.get_credentials() self.assertEqual(2, len(found_credentials)) self.assertEqual("WeR15tr0n6", found_credentials[0].line_data_list[0].value) - self.assertEqual("ghr_Ku7ikDwqD1Ge2u3Wf1UM3z2SLN230RP1I8Wf", found_credentials[1].line_data_list[0].value) + self.assertEqual("ghs_00000000000000000000000000000004WZ4EQ", found_credentials[1].line_data_list[0].value) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #