From 0a9f6d7fcd018cb844530f6f3b360a72e5020ca6 Mon Sep 17 00:00:00 2001 From: yv1ing Date: Sun, 9 Feb 2025 21:27:07 +0800 Subject: [PATCH] Add graphical interface --- README.md | 5 +- app/__init__.py | 48 + app/ui.py | 271 ++++ app/utils.py | 7 + assets/img-01.png | Bin 0 -> 87236 bytes audit/__init__.py | 77 +- audit/prompt.py | 117 +- fortify_rules.json => audit/rules.py | 1984 +++++++++++++------------- logger/__init__.py | 44 +- main.py | 36 +- requirements.txt | Bin 2046 -> 2074 bytes 11 files changed, 1482 insertions(+), 1107 deletions(-) create mode 100644 app/__init__.py create mode 100644 app/ui.py create mode 100644 app/utils.py create mode 100644 assets/img-01.png rename fortify_rules.json => audit/rules.py (92%) diff --git a/README.md b/README.md index 8be48de..9f10b03 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,5 @@ # MollyAudit -LLM-driven automatic code audit tool + +An automated code auditing tool powered by langchain. + +![](assets/img-01.png) diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 0000000..753a2b9 --- /dev/null +++ b/app/__init__.py @@ -0,0 +1,48 @@ +import os +import warnings +from audit import Audit + +warnings.simplefilter('ignore', FutureWarning) + +home_dir = os.path.expanduser("~") +config_file_name = ".mollyaudit" +config_file_path = os.path.join(home_dir, config_file_name) + +GLOBAL_CONFIG = { + "base_url": "https://openai.com/v1", + "api_key": "", + "reasoning_model": "o3-mini-all", + "embedding_model": "text-embedding-3-small" +} + + +def load_config(): + global GLOBAL_CONFIG + + if os.path.exists(config_file_path): + with open(config_file_path, 'r') as file: + for line in file: + line = line.strip() + if line and '=' in line: + key, value = line.split('=', 1) + GLOBAL_CONFIG[key] = value + else: + with open(config_file_path, 'w') as file: + for key, value in GLOBAL_CONFIG.items(): + file.write(f"{key}={value}\n") + + +def update_config(key, value): + global GLOBAL_CONFIG + + GLOBAL_CONFIG[key] = value + with open(config_file_path, 'w') as file: + for k, v in GLOBAL_CONFIG.items(): + file.write(f"{k}={v}\n") + + +def audit_code(base_url, api_key, src_root, language, reasoning_model, embedding_model, process_output_callback, + result_output_callback, event): + audit = Audit(base_url, api_key, reasoning_model, embedding_model, process_output_callback, result_output_callback) + audit.load_source_files(src_root, language) + audit.audit(event) diff --git a/app/ui.py b/app/ui.py new file mode 100644 index 0000000..522bbd0 --- /dev/null +++ b/app/ui.py @@ -0,0 +1,271 @@ +import os +import re +import threading +from threading import Event +from app import audit_code, update_config, GLOBAL_CONFIG +from app.utils import get_now_date +from logger import Logger +from PyQt6.QtGui import QColor, QGuiApplication, QTextCursor +from PyQt6.QtWidgets import ( + QWidget, + QVBoxLayout, + QHBoxLayout, + QLabel, + QLineEdit, + QPushButton, + QFileDialog, + QTextEdit, + QComboBox +) + + +BACKGROUND_COLOR = '#dcdcdc' +ANSI_ESCAPE = re.compile(r'\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])') +ANSI_COLOR_REGEX = re.compile(r'\x1B\[(?:([0-9]+);)?([0-9]+)m') +ANSI_COLOR_MAP = { + '94': QColor(0, 0, 200), + '92': QColor(0, 128, 0), + '93': QColor(255, 127, 0), + '91': QColor(220, 0, 0), + '95': QColor(180, 0, 180) +} + + +def convert_ansi_to_rich_text(text): + segments = [] + pos = 0 + for match in ANSI_COLOR_REGEX.finditer(text): + start, end = match.span() + if start > pos: + segments.append(text[pos:start]) + color_code = match.group(2) + if color_code in ANSI_COLOR_MAP: + color = ANSI_COLOR_MAP[color_code] + html_color = color.name() + segments.append(f'') + else: + segments.append('') + pos = end + segments.append(text[pos:]) + segments.append('') + rich_text = ''.join(segments) + rich_text = ANSI_ESCAPE.sub('', rich_text) + + return rich_text + + +class MainWindow(QWidget): + def __init__(self): + self.event = Event() + self.log = Logger('ui', callback=self.process_output_callback) + super().__init__() + self.init_ui() + + def init_ui(self): + main_layout = QVBoxLayout() + dir_lang_layout = QHBoxLayout() + + # 目录选择 + dir_layout = QHBoxLayout() + self.dir_label = QLabel('项目目录:') + self.dir_input = QLineEdit() + self.dir_button = QPushButton('选择') + self.dir_button.clicked.connect(self.select_directory) + dir_layout.addWidget(self.dir_label) + dir_layout.addWidget(self.dir_input) + dir_layout.addWidget(self.dir_button) + dir_lang_layout.addLayout(dir_layout) + + # 语言选择 + languages = ['c', 'cpp', 'go', 'php', 'jsp', 'java', 'python', 'javascript'] + self.lang_label = QLabel('项目语言:') + self.lang_combobox = QComboBox() + self.lang_combobox.addItems(languages) + dir_lang_layout.addWidget(self.lang_label) + dir_lang_layout.addWidget(self.lang_combobox) + + main_layout.addLayout(dir_lang_layout) + + # 配置信息 + config_layout = QHBoxLayout() + self.base_url_label = QLabel('接口地址:') + self.base_url_input = QLineEdit() + self.api_key_label = QLabel('模型密钥:') + self.api_key_input = QLineEdit() + self.api_key_input.setEchoMode(QLineEdit.EchoMode.Password) + config_layout.addWidget(self.base_url_label) + config_layout.addWidget(self.base_url_input) + config_layout.addWidget(self.api_key_label) + config_layout.addWidget(self.api_key_input) + main_layout.addLayout(config_layout) + + model_layout = QHBoxLayout() + self.reasoning_model_label = QLabel('推理模型:') + self.reasoning_model_input = QLineEdit() + self.embedding_model_label = QLabel('嵌入模型:') + self.embedding_model_input = QLineEdit() + model_layout.addWidget(self.reasoning_model_label) + model_layout.addWidget(self.reasoning_model_input) + model_layout.addWidget(self.embedding_model_label) + model_layout.addWidget(self.embedding_model_input) + main_layout.addLayout(model_layout) + + # 按钮部分 + button_layout = QHBoxLayout() + self.start_button = QPushButton('开始审计') + self.start_button.clicked.connect(self.start_process) + self.stop_button = QPushButton('终止审计') + self.stop_button.clicked.connect(self.stop_process) + self.update_button = QPushButton('更新配置') + self.update_button.clicked.connect(self.update_config) + self.clear_button = QPushButton('清空输出') + self.clear_button.clicked.connect(self.clear_panel) + button_layout.addWidget(self.start_button) + button_layout.addWidget(self.stop_button) + button_layout.addWidget(self.update_button) + button_layout.addWidget(self.clear_button) + main_layout.addLayout(button_layout) + + # 实时输出 + output_layout = QVBoxLayout() + + # 过程输出 + self.process_output_text = QTextEdit() + self.process_output_text.setReadOnly(True) + self.process_output_text.setStyleSheet(f'background-color: {BACKGROUND_COLOR};') + output_layout.addWidget(self.process_output_text) + + # 结果输出 + self.result_output_text = QTextEdit() + self.result_output_text.setReadOnly(True) + self.result_output_text.setStyleSheet(f'background-color: {BACKGROUND_COLOR};') + output_layout.addWidget(self.result_output_text) + + output_layout.setStretch(0, 1) + output_layout.setStretch(1, 2) + main_layout.addLayout(output_layout) + + self.setLayout(main_layout) + self.setWindowTitle('MollyAudit - created by yvling') + screen = QGuiApplication.primaryScreen().geometry() + window_width = 1000 + window_height = 600 + x = (screen.width() - window_width) // 2 + y = (screen.height() - window_height) // 2 + self.setGeometry(x, y, window_width, window_height) + + # 导出结果 + export_button_layout = QHBoxLayout() + self.export_button = QPushButton('导出结果') + self.export_button.clicked.connect(self.export_result) + export_button_layout.addStretch(1) # 添加伸缩项,使按钮靠右 + export_button_layout.addWidget(self.export_button) + main_layout.addLayout(export_button_layout) + + # 加载配置 + self.base_url_input.setText(GLOBAL_CONFIG['base_url']) + self.api_key_input.setText(GLOBAL_CONFIG['api_key']) + self.reasoning_model_input.setText(GLOBAL_CONFIG['reasoning_model']) + self.embedding_model_input.setText(GLOBAL_CONFIG['embedding_model']) + + def closeEvent(self, event): + self.event.set() + + def clear_panel(self): + self.process_output_text.clear() + self.result_output_text.clear() + + def update_config(self): + base_url = self.base_url_input.text() + api_key = self.api_key_input.text() + reasoning_model = self.reasoning_model_input.text() + embedding_model = self.embedding_model_input.text() + + update_config('base_url', base_url) + update_config('api_key', api_key) + update_config('reasoning_model', reasoning_model) + update_config('embedding_model', embedding_model) + + self.log.info('更新配置成功') + + def select_directory(self): + directory = QFileDialog.getExistingDirectory(self, '选择项目目录') + if directory: + self.dir_input.setText(directory) + + def export_result(self): + result_text = self.result_output_text.toPlainText() + if result_text == '': + self.log.warning('当前结果为空') + return + + directory = QFileDialog.getExistingDirectory(self, '选择导出目录') + if directory: + file_name = f'molly-audit-{get_now_date()}.txt' + file_path = os.path.join(directory, file_name).replace('\\', '/') + try: + with open(file_path, 'w', encoding='utf-8') as f: + f.write(result_text) + self.log.info(f'导出结果成功: {file_path}') + except Exception as e: + self.log.error(f'导出结果错误:{str(e)}') + + def process_output_callback(self, content): + rich_text = convert_ansi_to_rich_text(content) + self.process_output_text.append(rich_text) + cursor = self.process_output_text.textCursor() + cursor.movePosition(QTextCursor.MoveOperation.End) + self.process_output_text.setTextCursor(cursor) + self.process_output_text.ensureCursorVisible() + + def result_output_callback(self, content): + self.result_output_text.append(f'{content}\n') + cursor = self.result_output_text.textCursor() + cursor.movePosition(QTextCursor.MoveOperation.End) + self.result_output_text.setTextCursor(cursor) + self.result_output_text.ensureCursorVisible() + + def start_process(self): + selected_dir = self.dir_input.text() + selected_lang = self.lang_combobox.currentText() + base_url = self.base_url_input.text() + api_key = self.api_key_input.text() + reasoning_model = self.reasoning_model_input.text() + embedding_model = self.embedding_model_input.text() + + if not selected_dir or not base_url or not api_key: + self.log.error('请确保项目目录、接口地址和模型密钥等都已填写') + return + + self.log.info('正在加载所需资源') + try: + threading.Thread( + target=audit_code, + args=( + base_url, + api_key, + selected_dir, + selected_lang, + reasoning_model, + embedding_model, + self.process_output_callback, + self.result_output_callback, + self.event + ) + ).start() + except Exception as e: + self.log.error(f'发生异常:{str(e)}') + finally: + if 'OPENAI_API_BASE' in os.environ: + del os.environ['OPENAI_API_BASE'] + if 'OPENAI_API_KEY' in os.environ: + del os.environ['OPENAI_API_KEY'] + + def stop_process(self): + self.event.set() + + if 'OPENAI_API_BASE' in os.environ: + del os.environ['OPENAI_API_BASE'] + if 'OPENAI_API_KEY' in os.environ: + del os.environ['OPENAI_API_KEY'] + self.log.info('已终止代码审计流程') diff --git a/app/utils.py b/app/utils.py new file mode 100644 index 0000000..0a5dd21 --- /dev/null +++ b/app/utils.py @@ -0,0 +1,7 @@ +import datetime + + +def get_now_date(): + now = datetime.datetime.now() + formatted = now.strftime("%Y-%m-%d %H:%M:%S") + return formatted diff --git a/assets/img-01.png b/assets/img-01.png new file mode 100644 index 0000000000000000000000000000000000000000..f877ce3984b05fc3c55479e2087b5c067303e1f4 GIT binary patch literal 87236 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
Xg+^=ff^YC@{ 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 bscW=%ILq|%Oft$h)+Q<<^`TH$`}_X||Kr?g literal 0 HcmV?d00001 diff --git a/audit/__init__.py b/audit/__init__.py index 1bd7556..d189872 100644 --- a/audit/__init__.py +++ b/audit/__init__.py @@ -13,33 +13,41 @@ from langchain.retrievers import ContextualCompressionRetriever from langchain.retrievers.document_compressors import EmbeddingsFilter, DocumentCompressorPipeline from langchain_text_splitters import CharacterTextSplitter +from audit.rules import FROTIFY_RULES from logger import Logger from audit import callback from audit.prompt import SYSTEM_PROMPT from audit.language import LANGUAGE -reasoning_model = 'gpt-4o' -embedding_model = 'text-embedding-3-large' - xml_pattern = r'.*?' class Audit: - def __init__(self, fortify_rules): + def __init__(self, base_url, api_key, reasoning_model, embedding_model, process_output_callback, result_output_callback): self.raw_chain = None self.source_files_list = [] self.max_token = 4096 - self.fortify_rules = fortify_rules + self.reasoning_model = reasoning_model + self.embedding_model = embedding_model + self.fortify_rules = FROTIFY_RULES + self.process_output_callback = process_output_callback + self.result_output_callback = result_output_callback self.chat_history = ChatMessageHistory() self.session_id = uuid.uuid4().hex self.response_callback = callback.CustomCallbackHandler() - self.embedding = OpenAIEmbeddings(model=embedding_model) + self.embedding = OpenAIEmbeddings( + base_url=base_url, + api_key=api_key, + model=embedding_model + ) self.llm = ChatOpenAI( + base_url=base_url, + api_key=api_key, model=reasoning_model, streaming=True, callbacks=[self.response_callback] ) - self.log = Logger('audit') + self.log = Logger('audit', callback=self.process_output_callback) self.splitter = CharacterTextSplitter( chunk_size=300, chunk_overlap=0, @@ -65,12 +73,28 @@ class Audit: ('human', '{input}'), ]) - def audit(self, callback_function): - self.log.info('Start auditing') + def audit(self, event): + if len(self.source_files_list) <= 0: + self.log.error('没有找到源代码文件') + return + + self.log.info('开始代码审计流程') + self.log.info(f'当前推理模型:{self.reasoning_model}') + self.log.info(f'当前嵌入模型:{self.embedding_model}') input_content = '' while True: - result = self.send_message(input_content) + if event.is_set(): + return + + try: + result = self.send_message(input_content) + except Exception as e: + self.log.error(e) + return + + if event.is_set(): + return if xml_match := re.search(xml_pattern, result, re.DOTALL): try: @@ -80,33 +104,36 @@ class Audit: action = root.find('action').text content = root.find('content').text except Exception as e: - self.log.error(f'Illegal output, try to correct') + print(result) + print(e) + self.log.error(f'动作指令不合法,尝试纠正') input_content = 'ILLEGAL OUTPUT' continue if action == 'QUERY STRUCTURE': - self.log.info('Request project structure') + self.log.info('请求查询项目结构') input_content = '\n'.join(x for x in self.source_files_list) continue elif action == 'QUERY SOURCE': - self.log.info(f'Request source code: {content}') + self.log.info(f'请求查询源代码:{content}') input_content = open(content, 'r', encoding='utf-8').read() continue elif action == 'QUERY FORTIFY': - self.log.info(f'Request fortify: {content}') + self.log.info(f'请求查询规则库:{content}') input_content = '\n'.join(x for x in self.fortify_rules if x == content) continue elif action == 'OUTPUT RESULT': - self.log.warning(f'Audit result: \n\n{content}') + self.log.warning('输出代码审计结果') + self.result_output_callback(content) self.store_messages_in_faiss(content) - callback_function(content) # Callback function, used to obtain results externally - input_content = '' + input_content = 'ok' continue elif action == 'FINISH TASK': - self.log.info(content) + self.log.info('代码审计任务已完成') + return else: - self.log.critical(f'Unknown action! {action}') - break + self.log.error(f'动作指令未定义:{action}') + return def send_message(self, input_content): self.response_callback.temp_content = '' @@ -140,20 +167,18 @@ class Audit: text_embedding = self.embedding.embed_query(message) doc_id = str(uuid.uuid4()) self.messages_db.add_embeddings([(doc_id, text_embedding)], metadatas=[{"id": doc_id}]) - self.log.info(f"Audit result stored in messages_db with ID: {doc_id}") + self.log.info(f"代码审计结果已缓存,文档编号:{doc_id}") def load_source_files(self, path, lang): - self.log.info('Loading source files') - if lang in LANGUAGE: suffixes = LANGUAGE[lang] else: - self.log.critical('Language not supported!') + self.log.error('不支持的编程语言') return for root, _, files in os.walk(path): self.source_files_list.extend( - os.path.join(root, file) for file in files if any(file.endswith(suffix) for suffix in suffixes) + os.path.join(root, file).replace('\\', '/') for file in files if any(file.endswith(suffix) for suffix in suffixes) ) - self.log.info(f'Finished loading source files. total files: {len(self.source_files_list)}') + self.log.info(f'源代码文件加载完成,共:{len(self.source_files_list)} 个') diff --git a/audit/prompt.py b/audit/prompt.py index 60bf08c..7a7d98f 100644 --- a/audit/prompt.py +++ b/audit/prompt.py @@ -1,59 +1,76 @@ SYSTEM_PROMPT = """ -You are an intelligent code auditor. I will provide you with a source code. Please strictly follow the following requirements to conduct code audit. -During the audit process, you can refer to Fortify's rule base(Execute Action 3), but it does not have to be completely consistent to determine the existence of a vulnerability. The rule base format provided to you is as follows: +You are a professional code audit security expert, responsible for helping users audit possible vulnerabilities and security issues in source code. +You will perform code audits according to the following process: + +1. Query project structure +You input the action command in the following format, and the user will send you the absolute path of all source files in the project below: + +QUERY STRUCTURE + + + +2. Query the vulnerability detection rule base +You input the action instructions in the following format, and the user will send you the vulnerability detection rule library extracted from Fortify as a reference for your code audit: + +QUERY FORTIFY +The language you want to query, options are: c, cpp, go, php, jsp, java, python, javascript + + +3. Query the source code +You input the action command in the following format, and the user will send you the source code you need below: + +QUERY SOURCE +the absolute path of the file you want to query + + +4. Output code audit results +You input the code audit results in the following format, and the user will send you "ok", then you can proceed to the next step of the audit: + +OUTPUT RESULT +the audit results you want to output + + +5. Finish audit task +When you are sure that all source code files have been audited, you can output the action instructions to end the task in the following format: + +FINISH TASK + + + +All your output can only be one of the five actions mentioned above. Any other form of output is strictly prohibited. + + +Some additional information, which are some specifications when you perform actions: +1. The format of the vulnerability detection rule base provided to you is as follows: { 'language': 'vuln_kingdom': 'vuln_category': } -Before officially starting the audit, it is recommended to query the Fortify rule base as a reference. -All your output must strictly follow the following specifications. It is forbidden to output in any other form (including plain text, Markdown, etc.), and it is forbidden to bring "`" when outputting. -You can choose to perform the following actions: +2. When you output the code audit results, you must use Chinese output and follow the following format: +漏洞类型: +漏洞文件: +相关代码: +修复建议: -1. Query project structure: - -QUERY STRUCTURE - - - -2. Query code files - -QUERY SOURCE -the absolute path of the file you want to query - - -3. Query fortify - -QUERY FORTIFY -The language you want to query, options are: c, cpp, go, php, jsp, java, python, javascript - - -4. Output audit results - -OUTPUT RESULT -the audit results you want to output - - -The output result format is as follows(JSON): -{ - "Vulnerability Type": - "Vulnerability File": - "Vulnerability Code Summary": - "Vulnerability repair suggestions": -} - -5. End the audit task - -FINISH TASK - - - -Important things: -1. When the user sends you "nothing", you need to decide the next step based on the current audit progress; -2. When you make an action to query the project structure, the user will send you the following format (C:\\Users\\yvling\\Desktop\\PHP-Vuln\\src\\index.php), which is a text containing the absolute paths of several source code files. You need to construct the project structure that you can understand based on these contents; -3. When you need to query the content of a code file, please note that you can only query one file at a time. Please follow The above format outputs the absolute path of the file to be queried; -4. After you output the audit results, the user will reply with an empty string. Please make sure that all code files have been audited before ending the audit task; -5. In any case, you must strictly follow the several action formats given above for output. Any content outside the output format is prohibited. Do not try to ask or suggest; -6. When the user prompts "ILLEGAL OUTPUT", it means that your output violates the user's specifications. Please confirm again that all your output must comply with the user's specifications. +Some Mandatory regulations: +1. Output Format: + a. Strictly use the predefined XML tag structure + b. Any Markdown symbols are not allowed + c. No line breaks in the content field +2. Language Standards: + a. Technical terms are kept in their original English + b. Vulnerability descriptions must be in Chinese +3. Interaction restrictions: + a. Any content outside the output process is prohibited + b. Autonomously advance the audit process when receiving "nothing" or "ok" + c. Vulnerabilities must be output immediately +4. Error handling: + a. When receiving the "ILLEGAL OUTPUT" prompt, terminate the current output immediately and recheck the format specification before continuing +5. Priority logic: + a. Entry file > Configuration file > Tool file + b. High-risk vulnerabilities (such as injection and RCE) are handled first + c. If multiple vulnerabilities are found in the same file, they need to be output multiple times + d. For vulnerabilities that may span files, the audit can only begin after the relevant files have been queried as needed """ diff --git a/fortify_rules.json b/audit/rules.py similarity index 92% rename from fortify_rules.json rename to audit/rules.py index 290fff7..d8b3d0a 100644 --- a/fortify_rules.json +++ b/audit/rules.py @@ -1,17 +1,17 @@ -[ +FROTIFY_RULES = [ { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[1].constantValue matches \"(?i)(NONCE_KEY|LOGGED_IN_KEY|AUTH_KEY|SECURE_AUTH_KEY)\"\n and fc.arguments[2] is [Expression e:\n not e.constantValue.null\n and not e.constantValue is [Null:]\n and not e.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[1].constantValue matches \"(?i)(NONCE_KEY|LOGGED_IN_KEY|AUTH_KEY|SECURE_AUTH_KEY)\"\n and fc.arguments[2] is [Expression e:\n not e.constantValue.None\n and not e.constantValue is [None:]\n and not e.constantValue == \"\"\n ]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[1].constantValue matches \"(?i)(NONCE_KEY|LOGGED_IN_KEY|AUTH_KEY|SECURE_AUTH_KEY)\"\n and arguments[2] is [Expression e:\n e.constantValue is [Null:]\n ]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[1].constantValue matches \"(?i)(NONCE_KEY|LOGGED_IN_KEY|AUTH_KEY|SECURE_AUTH_KEY)\"\n and arguments[2] is [Expression e:\n e.constantValue is [None:]\n ]\n " }, { "language": "php", @@ -25,14 +25,14 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Hardcoded Salt", - "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[1].constantValue matches \"(?i)(NONCE_SALT|LOGGED_IN_SALT|AUTH_SALT|SECURE_AUTH_SALT)\"\n and arguments[2] is [Expression e:\n not e.constantValue.null\n and not e.constantValue is [Null:]\n and not e.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[1].constantValue matches \"(?i)(NONCE_SALT|LOGGED_IN_SALT|AUTH_SALT|SECURE_AUTH_SALT)\"\n and arguments[2] is [Expression e:\n not e.constantValue.None\n and not e.constantValue is [None:]\n and not e.constantValue == \"\"\n ]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": "Null Salt", - "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[1].constantValue matches \"(?i)(NONCE_SALT|LOGGED_IN_SALT|AUTH_SALT|SECURE_AUTH_SALT)\"\n and arguments[2] is [Expression e:\n e.constantValue is [Null:]\n ]\n " + "vuln_subcategory": "None Salt", + "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[1].constantValue matches \"(?i)(NONCE_SALT|LOGGED_IN_SALT|AUTH_SALT|SECURE_AUTH_SALT)\"\n and arguments[2] is [Expression e:\n e.constantValue is [None:]\n ]\n " }, { "language": "php", @@ -81,7 +81,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n (constructor or name == \"init^\")\n and enclosingClass.supers contains [Class:\n name == \"androidx.credentials.CreatePasswordRequest\"\n ]\n ]\n and arguments[1] is [Expression:\n constantValue matches \".+\"\n and not constantValue is [Null:]\n ]*\n " + "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n (constructor or name == \"init^\")\n and enclosingClass.supers contains [Class:\n name == \"androidx.credentials.CreatePasswordRequest\"\n ]\n ]\n and arguments[1] is [Expression:\n constantValue matches \".+\"\n and not constantValue is [None:]\n ]*\n " }, { "language": "java", @@ -116,7 +116,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Insecure SSL", "vuln_subcategory": "Overly Broad Certificate Trust", - "predicate": "\n ReturnStatement:\n enclosingFunction is [Function:\n name == \"getAcceptedIssuers\"\n and enclosingClass.directSupers contains [Class:\n name == \"javax.net.ssl.X509TrustManager\"\n ]\n ]\n and expression is [NullLiteral: ]*\n " + "predicate": "\n ReturnStatement:\n enclosingFunction is [Function:\n name == \"getAcceptedIssuers\"\n and enclosingClass.directSupers contains [Class:\n name == \"javax.net.ssl.X509TrustManager\"\n ]\n ]\n and expression is [NoneLiteral: ]*\n " }, { "language": "java", @@ -143,14 +143,14 @@ "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n\n FunctionCall call : call.function is [Function f: f.name matches \"fromParts\" and\n f.enclosingClass.name matches \"android\\.net\\.Uri\"] and\n call.arguments[0].constantValue is [String s: s matches \"(?i)http.*\" ]\n\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n\n FunctionCall call : call.function is [Function f: f.name matches \"fromParts\" and\n f.enclosingClass.name matches \"android\\.net\\.Uri\"] and\n call.arguments[0].constantValue is [String s: s matches \"(?i)http.*\" ]\n\n " }, { @@ -241,7 +241,7 @@ "language": "java", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Fragment Injection", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Class exportedActivity: /* TEMPLATED */\n supers contains [Class:\n name == \"android.preference.PreferenceActivity\"\n ]\n and (\n /* since it must be implemented, it indicates its a pre-KitKat app */\n not functions contains [Function:\n name == \"isValidFragment\"\n ]\n /* function always returns true in at least one path. No whitelisting is applied */\n or functions contains [Function:\n name == \"isValidFragment\"\n and contains [ReturnStatement:\n /* see bug 57773 */\n expression.constantValue is [Boolean: is true]\n or expression is [VariableAccess:\n variable is [Variable:\n uses contains [VariableAccess va:\n enclosingStatement is [AssignmentStatement:\n lhs is [VariableAccess va2: va2 is va]\n and rhs.constantValues contains [Boolean: is true]\n ]\n ]\n ]\n ]\n ]\n ]\n )\n " }, { @@ -256,98 +256,98 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FieldAccess fa: \n \tfa.field.name matches \"(?i)token|pin\"\n \tand not fa.field.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyPassword\"\n \t]\n \tand fa in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === fa.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.null\n \t\tand rhs.constantValue == \"\"\n \t]\n \tand fa.field is [Field f:]*\n and (\n fa.field.type.name == \"java.lang.String\"\n or fa.field.type.name == \"java.lang.StringBuffer\"\n or fa.field.type.name == \"byte\"\n or fa.field.type.name == \"char\"\n or fa.field.type.name == \"kotlin.String\"\n or fa.field.type.name == \"kotlin.ByteArray\"\n or fa.field.type.name == \"kotlin.CharArray\"\n )\n \tand not fa.field.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t] \n " + "predicate": "\n FieldAccess fa: \n \tfa.field.name matches \"(?i)token|pin\"\n \tand not fa.field.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyPassword\"\n \t]\n \tand fa in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === fa.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.None\n \t\tand rhs.constantValue == \"\"\n \t]\n \tand fa.field is [Field f:]*\n and (\n fa.field.type.name == \"java.lang.String\"\n or fa.field.type.name == \"java.lang.StringBuffer\"\n or fa.field.type.name == \"byte\"\n or fa.field.type.name == \"char\"\n or fa.field.type.name == \"kotlin.String\"\n or fa.field.type.name == \"kotlin.ByteArray\"\n or fa.field.type.name == \"kotlin.CharArray\"\n )\n \tand not fa.field.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t] \n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FieldAccess fa: \n \tfa.field.name matches \"(?i)(.*token$|.*pin$)\"\n \tand not fa.field.name matches \"(?i)token|pin\"\n \tand fa in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === fa.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.null\n \t\tand rhs.constantValue == \"\"\n \t]\n \tand fa.field is [Field f:]*\n and (\n fa.field.type.name == \"java.lang.String\"\n or fa.field.type.name == \"java.lang.StringBuffer\"\n or fa.field.type.name == \"byte\"\n or fa.field.type.name == \"char\"\n or fa.field.type.name == \"kotlin.String\"\n or fa.field.type.name == \"kotlin.ByteArray\"\n or fa.field.type.name == \"kotlin.CharArray\"\n )\n \tand not fa.field.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t\tor type == T\"com.fortify.annotations.FortifyPassword\"\n \t]\n " + "predicate": "\n FieldAccess fa: \n \tfa.field.name matches \"(?i)(.*token$|.*pin$)\"\n \tand not fa.field.name matches \"(?i)token|pin\"\n \tand fa in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === fa.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.None\n \t\tand rhs.constantValue == \"\"\n \t]\n \tand fa.field is [Field f:]*\n and (\n fa.field.type.name == \"java.lang.String\"\n or fa.field.type.name == \"java.lang.StringBuffer\"\n or fa.field.type.name == \"byte\"\n or fa.field.type.name == \"char\"\n or fa.field.type.name == \"kotlin.String\"\n or fa.field.type.name == \"kotlin.ByteArray\"\n or fa.field.type.name == \"kotlin.CharArray\"\n )\n \tand not fa.field.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t\tor type == T\"com.fortify.annotations.FortifyPassword\"\n \t]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n VariableAccess va: \n \tva.variable.name matches \"(?i)token|pin\"\n \tand not va.variable.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyPassword\"\n \t]\n \tand va in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === va.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.null\n \t\tand rhs.constantValue == \"\"\n \t]\n \tand va.variable is [Variable v:]*\n and (\n va.variable.type.name == \"java.lang.String\"\n or va.variable.type.name == \"java.lang.StringBuffer\"\n or va.variable.type.name == \"byte\"\n or va.variable.type.name == \"char\"\n or va.variable.type.name == \"kotlin.String\"\n or va.variable.type.name == \"kotlin.ByteArray\"\n or va.variable.type.name == \"kotlin.CharArray\"\n )\n \tand not va.variable.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t]\n " + "predicate": "\n VariableAccess va: \n \tva.variable.name matches \"(?i)token|pin\"\n \tand not va.variable.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyPassword\"\n \t]\n \tand va in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === va.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.None\n \t\tand rhs.constantValue == \"\"\n \t]\n \tand va.variable is [Variable v:]*\n and (\n va.variable.type.name == \"java.lang.String\"\n or va.variable.type.name == \"java.lang.StringBuffer\"\n or va.variable.type.name == \"byte\"\n or va.variable.type.name == \"char\"\n or va.variable.type.name == \"kotlin.String\"\n or va.variable.type.name == \"kotlin.ByteArray\"\n or va.variable.type.name == \"kotlin.CharArray\"\n )\n \tand not va.variable.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n VariableAccess va: \n \tva.variable.name matches \"(?i)(.*token$|.*pin$)\"\n \tand not va.variable.name matches \"(?i)token|pin\"\n \tand va in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === va.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.null\n \t\tand rhs.constantValue == \"\"\n \t]\n \tand va.variable is [Variable v:]*\n and (\n va.variable.type.name == \"java.lang.String\"\n or va.variable.type.name == \"java.lang.StringBuffer\"\n or va.variable.type.name == \"byte\"\n or va.variable.type.name == \"char\"\n or va.variable.type.name == \"kotlin.String\"\n or va.variable.type.name == \"kotlin.ByteArray\"\n or va.variable.type.name == \"kotlin.CharArray\"\n )\n \tand not va.variable.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t\tor type == T\"com.fortify.annotations.FortifyPassword\"\n \t]\n " + "predicate": "\n VariableAccess va: \n \tva.variable.name matches \"(?i)(.*token$|.*pin$)\"\n \tand not va.variable.name matches \"(?i)token|pin\"\n \tand va in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === va.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.None\n \t\tand rhs.constantValue == \"\"\n \t]\n \tand va.variable is [Variable v:]*\n and (\n va.variable.type.name == \"java.lang.String\"\n or va.variable.type.name == \"java.lang.StringBuffer\"\n or va.variable.type.name == \"byte\"\n or va.variable.type.name == \"char\"\n or va.variable.type.name == \"kotlin.String\"\n or va.variable.type.name == \"kotlin.ByteArray\"\n or va.variable.type.name == \"kotlin.CharArray\"\n )\n \tand not va.variable.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t\tor type == T\"com.fortify.annotations.FortifyPassword\"\n \t]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: \n \tfa.field.name matches \"(?i)token|pin\"\n \tand not fa.field.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyPassword\"\n \t]\n \tand not fa.sourceLocation.null\n \tand not fa.field.sourceLocation.null\n \tand fa.sourceLocation.startLine != fa.field.sourceLocation.startLine\n \tand fa in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === fa.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.null\n \t\tand rhs.constantValue is [Null:]\n \t]\n \tand fa.field is [Field f:]*\n and (\n fa.field.type.name == \"java.lang.String\"\n or fa.field.type.name == \"java.lang.StringBuffer\"\n or fa.field.type.name == \"byte\"\n or fa.field.type.name == \"char\"\n or fa.field.type.name == \"kotlin.String\"\n or fa.field.type.name == \"kotlin.ByteArray\"\n or fa.field.type.name == \"kotlin.CharArray\"\n )\n \tand not fa.field.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t] \n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: \n \tfa.field.name matches \"(?i)token|pin\"\n \tand not fa.field.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyPassword\"\n \t]\n \tand not fa.sourceLocation.None\n \tand not fa.field.sourceLocation.None\n \tand fa.sourceLocation.startLine != fa.field.sourceLocation.startLine\n \tand fa in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === fa.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.None\n \t\tand rhs.constantValue is [None:]\n \t]\n \tand fa.field is [Field f:]*\n and (\n fa.field.type.name == \"java.lang.String\"\n or fa.field.type.name == \"java.lang.StringBuffer\"\n or fa.field.type.name == \"byte\"\n or fa.field.type.name == \"char\"\n or fa.field.type.name == \"kotlin.String\"\n or fa.field.type.name == \"kotlin.ByteArray\"\n or fa.field.type.name == \"kotlin.CharArray\"\n )\n \tand not fa.field.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t] \n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: \n \tfa.field.name matches \"(?i)(.*token$|.*pin$)\"\n \tand not fa.field.name matches \"(?i)token|pin\"\n \tand not fa.sourceLocation.null\n \tand not fa.field.sourceLocation.null\n \tand fa.sourceLocation.startLine != fa.field.sourceLocation.startLine\n \tand fa in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === fa.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.null\n \t\tand rhs.constantValue is [Null:]\n \t]\n \tand fa.field is [Field f:]*\n and (\n fa.field.type.name == \"java.lang.String\"\n or fa.field.type.name == \"java.lang.StringBuffer\"\n or fa.field.type.name == \"byte\"\n or fa.field.type.name == \"char\"\n or fa.field.type.name == \"kotlin.String\"\n or fa.field.type.name == \"kotlin.ByteArray\"\n or fa.field.type.name == \"kotlin.CharArray\"\n )\n \tand not fa.field.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t\tor type == T\"com.fortify.annotations.FortifyPassword\"\n \t]\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: \n \tfa.field.name matches \"(?i)(.*token$|.*pin$)\"\n \tand not fa.field.name matches \"(?i)token|pin\"\n \tand not fa.sourceLocation.None\n \tand not fa.field.sourceLocation.None\n \tand fa.sourceLocation.startLine != fa.field.sourceLocation.startLine\n \tand fa in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === fa.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.None\n \t\tand rhs.constantValue is [None:]\n \t]\n \tand fa.field is [Field f:]*\n and (\n fa.field.type.name == \"java.lang.String\"\n or fa.field.type.name == \"java.lang.StringBuffer\"\n or fa.field.type.name == \"byte\"\n or fa.field.type.name == \"char\"\n or fa.field.type.name == \"kotlin.String\"\n or fa.field.type.name == \"kotlin.ByteArray\"\n or fa.field.type.name == \"kotlin.CharArray\"\n )\n \tand not fa.field.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t\tor type == T\"com.fortify.annotations.FortifyPassword\"\n \t]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: \n \tva.variable.name matches \"(?i)token|pin\"\n \tand not va.variable.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyPassword\"\n \t]\n \tand not va.sourceLocation.null\n \tand not va.variable.sourceLocation.null\n \tand va.sourceLocation.startLine != va.variable.sourceLocation.startLine\n \tand va in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === va.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.null\n \t\tand rhs.constantValue is [Null:]\n \t]\n \tand va.variable is [Variable v:]*\n and (\n va.variable.type.name == \"java.lang.String\"\n or va.variable.type.name == \"java.lang.StringBuffer\"\n or va.variable.type.name == \"byte\"\n or va.variable.type.name == \"char\"\n or va.variable.type.name == \"kotlin.String\"\n or va.variable.type.name == \"kotlin.ByteArray\"\n or va.variable.type.name == \"kotlin.CharArray\"\n )\n \tand not va.variable.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t] \n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: \n \tva.variable.name matches \"(?i)token|pin\"\n \tand not va.variable.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyPassword\"\n \t]\n \tand not va.sourceLocation.None\n \tand not va.variable.sourceLocation.None\n \tand va.sourceLocation.startLine != va.variable.sourceLocation.startLine\n \tand va in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === va.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.None\n \t\tand rhs.constantValue is [None:]\n \t]\n \tand va.variable is [Variable v:]*\n and (\n va.variable.type.name == \"java.lang.String\"\n or va.variable.type.name == \"java.lang.StringBuffer\"\n or va.variable.type.name == \"byte\"\n or va.variable.type.name == \"char\"\n or va.variable.type.name == \"kotlin.String\"\n or va.variable.type.name == \"kotlin.ByteArray\"\n or va.variable.type.name == \"kotlin.CharArray\"\n )\n \tand not va.variable.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t] \n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: \n \tva.variable.name matches \"(?i)(.*token$|.*pin$)\"\n \tand not va.variable.name matches \"(?i)token|pin\"\n \tand not va.sourceLocation.null\n \tand not va.variable.sourceLocation.null\n \tand va.sourceLocation.startLine != va.variable.sourceLocation.startLine\n \tand va in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === va.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.null\n \t\tand rhs.constantValue is [Null:]\n \t]\n \tand va.variable is [Variable v:]*\n and (\n va.variable.type.name == \"java.lang.String\"\n or va.variable.type.name == \"java.lang.StringBuffer\"\n or va.variable.type.name == \"byte\"\n or va.variable.type.name == \"char\"\n or va.variable.type.name == \"kotlin.String\"\n or va.variable.type.name == \"kotlin.ByteArray\"\n or va.variable.type.name == \"kotlin.CharArray\"\n )\n and not va.variable.annotations contains [Annotation: \n type == T\"com.fortify.annotations.FortifyNotPassword\"\n or type == T\"com.fortify.annotations.FortifyPassword\"\n ]\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: \n \tva.variable.name matches \"(?i)(.*token$|.*pin$)\"\n \tand not va.variable.name matches \"(?i)token|pin\"\n \tand not va.sourceLocation.None\n \tand not va.variable.sourceLocation.None\n \tand va.sourceLocation.startLine != va.variable.sourceLocation.startLine\n \tand va in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === va.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.None\n \t\tand rhs.constantValue is [None:]\n \t]\n \tand va.variable is [Variable v:]*\n and (\n va.variable.type.name == \"java.lang.String\"\n or va.variable.type.name == \"java.lang.StringBuffer\"\n or va.variable.type.name == \"byte\"\n or va.variable.type.name == \"char\"\n or va.variable.type.name == \"kotlin.String\"\n or va.variable.type.name == \"kotlin.ByteArray\"\n or va.variable.type.name == \"kotlin.CharArray\"\n )\n and not va.variable.annotations contains [Annotation: \n type == T\"com.fortify.annotations.FortifyNotPassword\"\n or type == T\"com.fortify.annotations.FortifyPassword\"\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: \n \tfa.field.name matches \"(?i)token|pin\"\n \tand not fa.field.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyPassword\"\n \t]\n \tand fa in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === fa.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.null\n \t\tand not rhs.constantValue is [Null:]\n \t\tand not rhs.constantValue == \"\"\n \t]\n \tand fa.field is [Field f:]*\n and (\n fa.field.type.name == \"java.lang.String\"\n or fa.field.type.name == \"java.lang.StringBuffer\"\n or fa.field.type.name == \"byte\"\n or fa.field.type.name == \"char\"\n or fa.field.type.name == \"kotlin.String\"\n or fa.field.type.name == \"kotlin.ByteArray\"\n or fa.field.type.name == \"kotlin.CharArray\"\n )\n \tand not fa.field.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t]\n " + "predicate": "\n FieldAccess fa: \n \tfa.field.name matches \"(?i)token|pin\"\n \tand not fa.field.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyPassword\"\n \t]\n \tand fa in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === fa.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.None\n \t\tand not rhs.constantValue is [None:]\n \t\tand not rhs.constantValue == \"\"\n \t]\n \tand fa.field is [Field f:]*\n and (\n fa.field.type.name == \"java.lang.String\"\n or fa.field.type.name == \"java.lang.StringBuffer\"\n or fa.field.type.name == \"byte\"\n or fa.field.type.name == \"char\"\n or fa.field.type.name == \"kotlin.String\"\n or fa.field.type.name == \"kotlin.ByteArray\"\n or fa.field.type.name == \"kotlin.CharArray\"\n )\n \tand not fa.field.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: \n \tfa.field.name matches \"(?i)(.*token$|.*pin$)\"\n \tand not fa.field.name matches \"(?i)token|pin\"\n \tand fa in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === fa.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.null\n \t\tand not rhs.constantValue is [Null:]\n \t\tand not rhs.constantValue == \"\"\n \t]\n \tand fa.field is [Field f:]*\n and (\n fa.field.type.name == \"java.lang.String\"\n or fa.field.type.name == \"java.lang.StringBuffer\"\n or fa.field.type.name == \"byte\"\n or fa.field.type.name == \"char\"\n or fa.field.type.name == \"kotlin.String\"\n or fa.field.type.name == \"kotlin.ByteArray\"\n or fa.field.type.name == \"kotlin.CharArray\"\n ) and not fa.field.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t\tor type == T\"com.fortify.annotations.FortifyPassword\"\n \t]\n " + "predicate": "\n FieldAccess fa: \n \tfa.field.name matches \"(?i)(.*token$|.*pin$)\"\n \tand not fa.field.name matches \"(?i)token|pin\"\n \tand fa in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === fa.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.None\n \t\tand not rhs.constantValue is [None:]\n \t\tand not rhs.constantValue == \"\"\n \t]\n \tand fa.field is [Field f:]*\n and (\n fa.field.type.name == \"java.lang.String\"\n or fa.field.type.name == \"java.lang.StringBuffer\"\n or fa.field.type.name == \"byte\"\n or fa.field.type.name == \"char\"\n or fa.field.type.name == \"kotlin.String\"\n or fa.field.type.name == \"kotlin.ByteArray\"\n or fa.field.type.name == \"kotlin.CharArray\"\n ) and not fa.field.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t\tor type == T\"com.fortify.annotations.FortifyPassword\"\n \t]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: \n \tva.variable.name matches \"(?i)token|pin\"\n \tand not va.variable.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyPassword\"\n \t]\n \tand va in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === va.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.null\n \t\tand not rhs.constantValue is [Null:]\n \t\tand not rhs.constantValue == \"\"\n \t]\n \tand va.variable is [Variable v:]*\n and ( \n va.variable.type.name == \"java.lang.String\"\n or va.variable.type.name == \"java.lang.StringBuffer\"\n or va.variable.type.name == \"byte\"\n or va.variable.type.name == \"char\"\n or va.variable.type.name == \"kotlin.String\"\n or va.variable.type.name == \"kotlin.ByteArray\"\n or va.variable.type.name == \"kotlin.CharArray\"\n ) and not va.variable.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t] \n " + "predicate": "\n VariableAccess va: \n \tva.variable.name matches \"(?i)token|pin\"\n \tand not va.variable.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyPassword\"\n \t]\n \tand va in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === va.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.None\n \t\tand not rhs.constantValue is [None:]\n \t\tand not rhs.constantValue == \"\"\n \t]\n \tand va.variable is [Variable v:]*\n and ( \n va.variable.type.name == \"java.lang.String\"\n or va.variable.type.name == \"java.lang.StringBuffer\"\n or va.variable.type.name == \"byte\"\n or va.variable.type.name == \"char\"\n or va.variable.type.name == \"kotlin.String\"\n or va.variable.type.name == \"kotlin.ByteArray\"\n or va.variable.type.name == \"kotlin.CharArray\"\n ) and not va.variable.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t] \n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: \n \tva.variable.name matches \"(?i)(.*token$|.*pin$)\"\n \tand not va.variable.name matches \"(?i)token|pin\"\n \tand va in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === va.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.null\n \t\tand not rhs.constantValue is [Null:]\n \t\tand not rhs.constantValue == \"\"\n \t]\n \tand va.variable is [Variable v:]*\n \tand (va.variable.type.name == \"java.lang.String\"\n \tor va.variable.type.name == \"java.lang.StringBuffer\"\n \tor va.variable.type.name == \"byte\"\n or va.variable.type.name == \"char\"\n or va.variable.type.name == \"kotlin.String\"\n or va.variable.type.name == \"kotlin.ByteArray\"\n or va.variable.type.name == \"kotlin.CharArray\")\n \tand not va.variable.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t\tor type == T\"com.fortify.annotations.FortifyPassword\"\n \t] \n " + "predicate": "\n VariableAccess va: \n \tva.variable.name matches \"(?i)(.*token$|.*pin$)\"\n \tand not va.variable.name matches \"(?i)token|pin\"\n \tand va in [AssignmentStatement: \n \t\tlhs.location is [Location l: \n \t\t\tl.transitiveBase === va.transitiveBase\n \t\t]\n \t\tand not rhs.constantValue.None\n \t\tand not rhs.constantValue is [None:]\n \t\tand not rhs.constantValue == \"\"\n \t]\n \tand va.variable is [Variable v:]*\n \tand (va.variable.type.name == \"java.lang.String\"\n \tor va.variable.type.name == \"java.lang.StringBuffer\"\n \tor va.variable.type.name == \"byte\"\n or va.variable.type.name == \"char\"\n or va.variable.type.name == \"kotlin.String\"\n or va.variable.type.name == \"kotlin.ByteArray\"\n or va.variable.type.name == \"kotlin.CharArray\")\n \tand not va.variable.annotations contains [Annotation: \n \t\ttype == T\"com.fortify.annotations.FortifyNotPassword\"\n \t\tor type == T\"com.fortify.annotations.FortifyPassword\"\n \t] \n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall call: \n call.function is [Function f: \n f.enclosingClass.supers contains [Class c: c.name == \"java.lang.String\" or c.name == \"kotlin.String\"] \n and (f.name == \"contentEquals\" or f.name matches \"(compareTo|equals)(IgnoreCase)?\")\n ] and ( \n ( \n call.instance is [VariableAccess val: \n val.variable.name matches \"(?i)(.*token$|.*pin$)\"\n and not val.variable.name matches \"(?i)token|pin\"\n and not val.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"\n ]\n ] \n and not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null: ] and\n not call.arguments[0].constantValue == \"\"\n ) or (\n call.arguments[0] is [VariableAccess var: \n var.variable.name matches \"(?i)(.*token$|.*pin$)\"\n and not var.variable.name matches \"(?i)token|pin\"\n and var.variable.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not var.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"\n ]\n ] \n and not call.instance.constantValue.null and\n not call.instance.constantValue is [Null:] and\n not call.instance.constantValue == \"\"\n ) or ( \n call.instance is [FieldAccess fal: \n fal.field.name matches \"(?i)(.*token$|.*pin$)\"\n and not fal.field.name matches \"(?i)token|pin\"\n and not fal.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"\n ]\n ] \n and not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null: ] and\n not call.arguments[0].constantValue == \"\"\n ) or ( \n call.arguments[0] is [FieldAccess far: \n far.field.name matches \"(?i)(.*token$|.*pin$)\" \n and not far.field.name matches \"(?i)token|pin\" \n and far.field.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not far.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"\n ] \n ]\n and not call.instance.constantValue.null and\n not call.instance.constantValue is [Null:] and\n not call.instance.constantValue == \"\"\n )\n )\n " + "predicate": "\n FunctionCall call: \n call.function is [Function f: \n f.enclosingClass.supers contains [Class c: c.name == \"java.lang.String\" or c.name == \"kotlin.String\"] \n and (f.name == \"contentEquals\" or f.name matches \"(compareTo|equals)(IgnoreCase)?\")\n ] and ( \n ( \n call.instance is [VariableAccess val: \n val.variable.name matches \"(?i)(.*token$|.*pin$)\"\n and not val.variable.name matches \"(?i)token|pin\"\n and not val.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"\n ]\n ] \n and not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None: ] and\n not call.arguments[0].constantValue == \"\"\n ) or (\n call.arguments[0] is [VariableAccess var: \n var.variable.name matches \"(?i)(.*token$|.*pin$)\"\n and not var.variable.name matches \"(?i)token|pin\"\n and var.variable.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not var.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"\n ]\n ] \n and not call.instance.constantValue.None and\n not call.instance.constantValue is [None:] and\n not call.instance.constantValue == \"\"\n ) or ( \n call.instance is [FieldAccess fal: \n fal.field.name matches \"(?i)(.*token$|.*pin$)\"\n and not fal.field.name matches \"(?i)token|pin\"\n and not fal.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"\n ]\n ] \n and not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None: ] and\n not call.arguments[0].constantValue == \"\"\n ) or ( \n call.arguments[0] is [FieldAccess far: \n far.field.name matches \"(?i)(.*token$|.*pin$)\" \n and not far.field.name matches \"(?i)token|pin\" \n and far.field.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not far.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"\n ] \n ]\n and not call.instance.constantValue.None and\n not call.instance.constantValue is [None:] and\n not call.instance.constantValue == \"\"\n )\n )\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall call: \n call.function is [Function f: \n f.enclosingClass.supers contains [Class c: c.name == \"java.lang.String\" or c.name == \"kotlin.String\"] \n and (f.name == \"contentEquals\" or f.name matches \"(compareTo|equals)(IgnoreCase)?\")\n ] \n and (\n (\n call.instance is [VariableAccess val:\n val.variable.name matches \"(?i)token|pin\"\n and not val.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"]\n and not val.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"]\n ] \n and not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null: ] and\n not call.arguments[0].constantValue == \"\"\n ) or ( \n call.arguments[0] is [VariableAccess var:\n var.variable.name matches \"(?i)token|pin\" \n and not var.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"]\n and var.variable.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not var.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"]\n ] \n and not call.instance.constantValue.null and\n not call.instance.constantValue is [Null:] and\n not call.instance.constantValue == \"\"\n ) or ( \n call.instance is [FieldAccess fal:\n fal.field.name matches \"(?i)token|pin\" \n and not fal.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"]\n and not fal.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"]\n ] \n and not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null: ] and\n not call.arguments[0].constantValue == \"\"\n ) or ( \n call.arguments[0] is [FieldAccess far:\n far.field.name matches \"(?i)token|pin\"\n and not far.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"] \n and far.field.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not far.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"]\n ] \n and not call.instance.constantValue.null and\n not call.instance.constantValue is [Null:] and\n not call.instance.constantValue == \"\"\n )\n )\n " + "predicate": "\n FunctionCall call: \n call.function is [Function f: \n f.enclosingClass.supers contains [Class c: c.name == \"java.lang.String\" or c.name == \"kotlin.String\"] \n and (f.name == \"contentEquals\" or f.name matches \"(compareTo|equals)(IgnoreCase)?\")\n ] \n and (\n (\n call.instance is [VariableAccess val:\n val.variable.name matches \"(?i)token|pin\"\n and not val.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"]\n and not val.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"]\n ] \n and not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None: ] and\n not call.arguments[0].constantValue == \"\"\n ) or ( \n call.arguments[0] is [VariableAccess var:\n var.variable.name matches \"(?i)token|pin\" \n and not var.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"]\n and var.variable.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not var.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"]\n ] \n and not call.instance.constantValue.None and\n not call.instance.constantValue is [None:] and\n not call.instance.constantValue == \"\"\n ) or ( \n call.instance is [FieldAccess fal:\n fal.field.name matches \"(?i)token|pin\" \n and not fal.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"]\n and not fal.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"]\n ] \n and not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None: ] and\n not call.arguments[0].constantValue == \"\"\n ) or ( \n call.arguments[0] is [FieldAccess far:\n far.field.name matches \"(?i)token|pin\"\n and not far.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"] \n and far.field.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not far.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"]\n ] \n and not call.instance.constantValue.None and\n not call.instance.constantValue is [None:] and\n not call.instance.constantValue == \"\"\n )\n )\n " }, { "language": "java", @@ -381,168 +381,168 @@ "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Field", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FieldAccess fa: field is [Field f: annotations contains\n [Annotation a:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n elements contains [AnnotationElement: key==\"value\" and value is [String s: s matches \"(?i)high\"]]]]\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Field", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FieldAccess fa: field is [Field f: annotations contains\n [Annotation a:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n elements contains [AnnotationElement: key==\"value\" and value is [String s: s matches \"(?i)hot|critical\"]]]]\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Field", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FieldAccess fa: field is [Field f: annotations contains\n [Annotation a:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n (\n elements contains [AnnotationElement :\n key == \"value\" and\n value is [String s: s matches \"(?i)medium\"]\n ]\n or \n elements.length == 0\n )\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Field", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FieldAccess fa: field is [Field f: annotations contains\n [Annotation a:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n elements contains [AnnotationElement: key==\"value\" and value is [String s: s matches \"(?i)info|low\"]]]]\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Method", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.function is\n [Function f: annotations contains\n [Annotation:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n elements contains [AnnotationElement : key == \"value\" and value is [String s: s matches \"(?i)high\"]]]]\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Method", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.function is\n [Function f: annotations contains\n [Annotation:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n elements contains [AnnotationElement : key == \"value\" and value is [String s: s matches \"(?i)hot|critical\"]]]]\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Method", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.function is\n [Function f: annotations contains\n [Annotation:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n (\n elements contains [AnnotationElement :\n key == \"value\" and\n value is [String s: s matches \"(?i)medium\"]\n ]\n or \n elements.length == 0\n )\n ]\n ]\n \n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Method", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.function is\n [Function f: annotations contains\n [Annotation:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n elements contains [AnnotationElement : key == \"value\" and value is [String s: s matches \"(?i)info|low\"]]]]\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Type", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Function f:\n (parameters contains [Variable v: type is\n [Type t: definition is\n [Class c: annotations contains\n [Annotation:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n elements contains [AnnotationElement :\n key == \"value\" and\n value is [String s: s matches \"(?i)info|low\"]]]]]])\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Type", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Function f:\n (returnType is [Type t: definition is\n [Class c: annotations contains\n [Annotation:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n elements contains [AnnotationElement :\n key == \"value\" and\n value is [String s: s matches \"(?i)info|low\"]]]]])\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Type", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Field f: type is [Type t: definition is\n [Class c: annotations contains\n [Annotation:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n elements contains [AnnotationElement :\n key == \"value\" and\n value is [String s: s matches \"(?i)info|low\"]]]]]\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Type", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Variable v: type is [Type t: definition is\n [Class c: annotations contains\n [Annotation:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n elements contains [AnnotationElement :\n key == \"value\" and\n value is [String s: s matches \"(?i)info|low\"]]]]]\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Type", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Function f:\n parameters contains [Variable v: type is\n [Type t: definition is\n [Class c: annotations contains\n [Annotation:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n (\n elements contains [AnnotationElement :\n key == \"value\" and\n value is [String s: s matches \"(?i)medium\"]\n ]\n or \n elements.length == 0\n )\n ]\n ]\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Type", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Function f:\n returnType is [Type t: definition is\n [Class c: annotations contains\n [Annotation:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n (\n elements contains [AnnotationElement :\n key == \"value\" and\n value is [String s: s matches \"(?i)medium\"]\n ]\n or \n elements.length == 0\n )\n ]\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Type", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Field f: type is [Type t: definition is\n [Class c: annotations contains\n [Annotation:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n (\n elements contains [AnnotationElement :\n key == \"value\" and\n value is [String s: s matches \"(?i)medium\"]\n ]\n or \n elements.length == 0\n )\n ]\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Type", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Variable v: type is [Type t: definition is\n [Class c: annotations contains\n [Annotation:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n (\n elements contains [AnnotationElement :\n key == \"value\" and\n value is [String s: s matches \"(?i)medium\"]\n ]\n or \n elements.length == 0\n )\n ]\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Type", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Function f:\n (parameters contains [Variable v: type is\n [Type t: definition is\n [Class c: annotations contains\n [Annotation:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n elements contains [AnnotationElement :\n key == \"value\" and\n value is [String s: s matches \"(?i)high\"]]]]]])\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Type", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Function f:\n (parameters contains [Variable v: type is\n [Type t: definition is\n [Class c: annotations contains\n [Annotation:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n elements contains [AnnotationElement :\n key == \"value\" and\n value is [String s: s matches \"(?i)hot|critical\"]]]]]])\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Type", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Function f:\n (returnType is [Type t: definition is\n [Class c: annotations contains\n [Annotation:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n elements contains [AnnotationElement :\n key == \"value\" and\n value is [String s: s matches \"(?i)high\"]]]]])\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Type", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Function f:\n (returnType is [Type t: definition is\n [Class c: annotations contains\n [Annotation:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n elements contains [AnnotationElement :\n key == \"value\" and\n value is [String s: s matches \"(?i)hot|critical\"]]]]])\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Type", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Field f: type is [Type t: definition is\n [Class c: annotations contains\n [Annotation:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n elements contains [AnnotationElement :\n key == \"value\" and\n value is [String s: s matches \"(?i)high\"]]]]]\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Type", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Field f: type is [Type t: definition is\n [Class c: annotations contains\n [Annotation:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n elements contains [AnnotationElement :\n key == \"value\" and\n value is [String s: s matches \"(?i)hot|critical\"]]]]]\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Type", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Variable v: type is [Type t: definition is\n [Class c: annotations contains\n [Annotation:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n elements contains [AnnotationElement :\n key == \"value\" and\n value is [String s: s matches \"(?i)high\"]]]]]\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Dangerous Type", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Variable v: type is [Type t: definition is\n [Class c: annotations contains\n [Annotation:\n type == T\"com.fortify.annotations.FortifyDangerous\" and\n elements contains [AnnotationElement :\n key == \"value\" and\n value is [String s: s matches \"(?i)hot|critical\"]]]]]\n " }, { @@ -577,99 +577,99 @@ "language": "java", "vuln_kingdom": "Code Quality", "vuln_category": "Obsolete", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FieldAccess fa: field is [Field f: annotations contains\n [Annotation a: type == T\"java.lang.Deprecated\"]]\n " }, { "language": "java", "vuln_kingdom": "Code Quality", "vuln_category": "Obsolete", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.function is\n [Function f: annotations contains\n [Annotation : type == T\"java.lang.Deprecated\"]]\n " }, { "language": "java", "vuln_kingdom": "Code Quality", "vuln_category": "Obsolete", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Function f:\n (returnType is [Type t1: definition is\n [Class c1: annotations contains\n [Annotation: type == T\"java.lang.Deprecated\"]]]) or\n (parameters contains [Variable v: type is\n [Type t2: definition is\n [Class c2: annotations contains\n [Annotation: type == T\"java.lang.Deprecated\"]]]])\n " }, { "language": "java", "vuln_kingdom": "Code Quality", "vuln_category": "Obsolete", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Field f: type is [Type t: definition is\n [Class c: annotations contains\n [Annotation: type == T\"java.lang.Deprecated\"]]]\n " }, { "language": "java", "vuln_kingdom": "Code Quality", "vuln_category": "Obsolete", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Variable v: type is [Type t: definition is\n [Class c: annotations contains\n [Annotation: type == T\"java.lang.Deprecated\"]]]\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FunctionCall call: call.function is [Function f: f.name matches \"(_)?(str|wcs|mbs|lstr)(n|i|ni|case)?cmp(_l|i)?\"] and\n ((call.arguments[1] is [FieldAccess fal: fal.field.name matches \"PUT_REGEX_HERE\" and fal.field.type.name == \"char\"] and\n call.arguments[0].constantValue is [Null:]\n ) or (\n call.arguments[0] is [FieldAccess far: far.field.name matches \"PUT_REGEX_HERE\" and far.field.type.name == \"char\"] and\n call.arguments[1].constantValue is [Null:]\n ) or (\n call.arguments[1] is [VariableAccess val: val.variable.name matches \"PUT_REGEX_HERE\" and val.variable.type.name == \"char\"] and\n call.arguments[0].constantValue is [Null:]\n ) or (\n call.arguments[0] is [VariableAccess var: var.variable.name matches \"PUT_REGEX_HERE\" and var.variable.type.name == \"char\"] and\n call.arguments[1].constantValue is [Null:]\n ))\n " + "vuln_subcategory": "None Password", + "predicate": "\n FunctionCall call: call.function is [Function f: f.name matches \"(_)?(str|wcs|mbs|lstr)(n|i|ni|case)?cmp(_l|i)?\"] and\n ((call.arguments[1] is [FieldAccess fal: fal.field.name matches \"PUT_REGEX_HERE\" and fal.field.type.name == \"char\"] and\n call.arguments[0].constantValue is [None:]\n ) or (\n call.arguments[0] is [FieldAccess far: far.field.name matches \"PUT_REGEX_HERE\" and far.field.type.name == \"char\"] and\n call.arguments[1].constantValue is [None:]\n ) or (\n call.arguments[1] is [VariableAccess val: val.variable.name matches \"PUT_REGEX_HERE\" and val.variable.type.name == \"char\"] and\n call.arguments[0].constantValue is [None:]\n ) or (\n call.arguments[0] is [VariableAccess var: var.variable.name matches \"PUT_REGEX_HERE\" and var.variable.type.name == \"char\"] and\n call.arguments[1].constantValue is [None:]\n ))\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FunctionCall call: call.function is [Function f: f.name matches \"(_)?(str|wcs|mbs|lstr)(n|i|ni|case)?cmp(_l|i)?\"] and\n ((call.arguments[1] is [FieldAccess fal: fal.field.name matches \"PUT_REGEX_HERE\" and fal.field.type.name == \"char\"] and\n call.arguments[0].constantValue is [Null:]\n ) or (\n call.arguments[0] is [FieldAccess far: far.field.name matches \"PUT_REGEX_HERE\" and far.field.type.name == \"char\"] and\n call.arguments[1].constantValue is [Null:]\n ) or (\n call.arguments[1] is [VariableAccess val: val.variable.name matches \"PUT_REGEX_HERE\" and val.variable.type.name == \"char\"] and\n call.arguments[0].constantValue is [Null:]\n ) or (\n call.arguments[0] is [VariableAccess var: var.variable.name matches \"PUT_REGEX_HERE\" and var.variable.type.name == \"char\"] and\n call.arguments[1].constantValue is [Null:]\n ))\n " + "vuln_subcategory": "None Password", + "predicate": "\n FunctionCall call: call.function is [Function f: f.name matches \"(_)?(str|wcs|mbs|lstr)(n|i|ni|case)?cmp(_l|i)?\"] and\n ((call.arguments[1] is [FieldAccess fal: fal.field.name matches \"PUT_REGEX_HERE\" and fal.field.type.name == \"char\"] and\n call.arguments[0].constantValue is [None:]\n ) or (\n call.arguments[0] is [FieldAccess far: far.field.name matches \"PUT_REGEX_HERE\" and far.field.type.name == \"char\"] and\n call.arguments[1].constantValue is [None:]\n ) or (\n call.arguments[1] is [VariableAccess val: val.variable.name matches \"PUT_REGEX_HERE\" and val.variable.type.name == \"char\"] and\n call.arguments[0].constantValue is [None:]\n ) or (\n call.arguments[0] is [VariableAccess var: var.variable.name matches \"PUT_REGEX_HERE\" and var.variable.type.name == \"char\"] and\n call.arguments[1].constantValue is [None:]\n ))\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FunctionCall call: call.function is [Function f: f.name matches \"(_)?(str|wcs|mbs|lstr)(n|i|ni|case)?cmp(_l|i)?\"] and\n ((call.arguments[1] is [FieldAccess fal: fal.field.name matches \"(?i)pass(wd|word)\" and fal.field.type.name == \"char\"] and\n call.arguments[0].constantValue is [Null:]\n ) or (\n call.arguments[0] is [FieldAccess far: far.field.name matches \"(?i)pass(wd|word)\" and far.field.type.name == \"char\"] and\n call.arguments[1].constantValue is [Null:]\n ) or (\n call.arguments[1] is [VariableAccess val: val.variable.name matches \"(?i)pass(wd|word)\" and val.variable.type.name == \"char\"] and\n call.arguments[0].constantValue is [Null:]\n ) or (\n call.arguments[0] is [VariableAccess var: var.variable.name matches \"(?i)pass(wd|word)\" and var.variable.type.name == \"char\"] and\n call.arguments[1].constantValue is [Null:]\n ))\n " + "vuln_subcategory": "None Password", + "predicate": "\n FunctionCall call: call.function is [Function f: f.name matches \"(_)?(str|wcs|mbs|lstr)(n|i|ni|case)?cmp(_l|i)?\"] and\n ((call.arguments[1] is [FieldAccess fal: fal.field.name matches \"(?i)pass(wd|word)\" and fal.field.type.name == \"char\"] and\n call.arguments[0].constantValue is [None:]\n ) or (\n call.arguments[0] is [FieldAccess far: far.field.name matches \"(?i)pass(wd|word)\" and far.field.type.name == \"char\"] and\n call.arguments[1].constantValue is [None:]\n ) or (\n call.arguments[1] is [VariableAccess val: val.variable.name matches \"(?i)pass(wd|word)\" and val.variable.type.name == \"char\"] and\n call.arguments[0].constantValue is [None:]\n ) or (\n call.arguments[0] is [VariableAccess var: var.variable.name matches \"(?i)pass(wd|word)\" and var.variable.type.name == \"char\"] and\n call.arguments[1].constantValue is [None:]\n ))\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " }, { "language": "cpp", @@ -753,84 +753,84 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall call: call.function is [Function f: f.name matches \"(_)?(str|wcs|mbs|lstr)(n|i|ni|case)?cmp(_l|i)?\"] and\n ((call.arguments[1] is [FieldAccess fal: fal.field.name matches \"PUT_REGEX_HERE\" and fal.field.type.name == \"char\"] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null:] and\n not call.arguments[0].constantValue == \"\"\n ) or (\n call.arguments[0] is [FieldAccess far: far.field.name matches \"PUT_REGEX_HERE\" and far.field.type.name == \"char\"] and\n not call.arguments[1].constantValue.null and\n not call.arguments[1].constantValue is [Null:] and\n not call.arguments[1].constantValue == \"\"\n ) or (\n call.arguments[1] is [VariableAccess val: val.variable.name matches \"PUT_REGEX_HERE\" and val.variable.type.name == \"char\"] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null:] and\n not call.arguments[0].constantValue == \"\"\n ) or (\n call.arguments[0] is [VariableAccess var: var.variable.name matches \"PUT_REGEX_HERE\" and var.variable.type.name == \"char\"] and\n not call.arguments[1].constantValue.null and\n not call.arguments[1].constantValue is [Null:] and\n not call.arguments[1].constantValue == \"\"\n ))\n " + "predicate": "\n FunctionCall call: call.function is [Function f: f.name matches \"(_)?(str|wcs|mbs|lstr)(n|i|ni|case)?cmp(_l|i)?\"] and\n ((call.arguments[1] is [FieldAccess fal: fal.field.name matches \"PUT_REGEX_HERE\" and fal.field.type.name == \"char\"] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None:] and\n not call.arguments[0].constantValue == \"\"\n ) or (\n call.arguments[0] is [FieldAccess far: far.field.name matches \"PUT_REGEX_HERE\" and far.field.type.name == \"char\"] and\n not call.arguments[1].constantValue.None and\n not call.arguments[1].constantValue is [None:] and\n not call.arguments[1].constantValue == \"\"\n ) or (\n call.arguments[1] is [VariableAccess val: val.variable.name matches \"PUT_REGEX_HERE\" and val.variable.type.name == \"char\"] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None:] and\n not call.arguments[0].constantValue == \"\"\n ) or (\n call.arguments[0] is [VariableAccess var: var.variable.name matches \"PUT_REGEX_HERE\" and var.variable.type.name == \"char\"] and\n not call.arguments[1].constantValue.None and\n not call.arguments[1].constantValue is [None:] and\n not call.arguments[1].constantValue == \"\"\n ))\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall call: call.function is [Function f: f.name matches \"(_)?(str|wcs|mbs|lstr)(n|i|ni|case)?cmp(_l|i)?\"] and\n ((call.arguments[1] is [FieldAccess fal: fal.field.name matches \"PUT_REGEX_HERE\" and fal.field.type.name == \"char\"] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null:] and\n not call.arguments[0].constantValue == \"\"\n ) or (\n call.arguments[0] is [FieldAccess far: far.field.name matches \"PUT_REGEX_HERE\" and far.field.type.name == \"char\"] and\n not call.arguments[1].constantValue.null and\n not call.arguments[1].constantValue is [Null:] and\n not call.arguments[1].constantValue == \"\"\n ) or (\n call.arguments[1] is [VariableAccess val: val.variable.name matches \"PUT_REGEX_HERE\" and val.variable.type.name == \"char\"] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null:] and\n not call.arguments[0].constantValue == \"\"\n ) or (\n call.arguments[0] is [VariableAccess var: var.variable.name matches \"PUT_REGEX_HERE\" and var.variable.type.name == \"char\"] and\n not call.arguments[1].constantValue.null and\n not call.arguments[1].constantValue is [Null:] and\n not call.arguments[1].constantValue == \"\"\n ))\n " + "predicate": "\n FunctionCall call: call.function is [Function f: f.name matches \"(_)?(str|wcs|mbs|lstr)(n|i|ni|case)?cmp(_l|i)?\"] and\n ((call.arguments[1] is [FieldAccess fal: fal.field.name matches \"PUT_REGEX_HERE\" and fal.field.type.name == \"char\"] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None:] and\n not call.arguments[0].constantValue == \"\"\n ) or (\n call.arguments[0] is [FieldAccess far: far.field.name matches \"PUT_REGEX_HERE\" and far.field.type.name == \"char\"] and\n not call.arguments[1].constantValue.None and\n not call.arguments[1].constantValue is [None:] and\n not call.arguments[1].constantValue == \"\"\n ) or (\n call.arguments[1] is [VariableAccess val: val.variable.name matches \"PUT_REGEX_HERE\" and val.variable.type.name == \"char\"] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None:] and\n not call.arguments[0].constantValue == \"\"\n ) or (\n call.arguments[0] is [VariableAccess var: var.variable.name matches \"PUT_REGEX_HERE\" and var.variable.type.name == \"char\"] and\n not call.arguments[1].constantValue.None and\n not call.arguments[1].constantValue is [None:] and\n not call.arguments[1].constantValue == \"\"\n ))\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall call: call.function is [Function f: f.name matches \"(_)?(str|wcs|mbs|lstr)(n|i|ni|case)?cmp(_l|i)?\"] and\n ((call.arguments[1] is [FieldAccess fal: fal.field.name matches \"(?i)pass(wd|word)\" and fal.field.type.name == \"char\"] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null:] and\n not call.arguments[0].constantValue == \"\"\n ) or (\n call.arguments[0] is [FieldAccess far: far.field.name matches \"(?i)pass(wd|word)\" and far.field.type.name == \"char\"] and\n not call.arguments[1].constantValue.null and\n not call.arguments[1].constantValue is [Null:] and\n not call.arguments[1].constantValue == \"\"\n ) or (\n call.arguments[1] is [VariableAccess val: val.variable.name matches \"(?i)pass(wd|word)\" and val.variable.type.name == \"char\"] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null:] and\n not call.arguments[0].constantValue == \"\"\n ) or (\n call.arguments[0] is [VariableAccess var: var.variable.name matches \"(?i)pass(wd|word)\" and var.variable.type.name == \"char\"] and\n not call.arguments[1].constantValue.null and\n not call.arguments[1].constantValue is [Null:] and\n not call.arguments[1].constantValue == \"\"\n ))\n " + "predicate": "\n FunctionCall call: call.function is [Function f: f.name matches \"(_)?(str|wcs|mbs|lstr)(n|i|ni|case)?cmp(_l|i)?\"] and\n ((call.arguments[1] is [FieldAccess fal: fal.field.name matches \"(?i)pass(wd|word)\" and fal.field.type.name == \"char\"] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None:] and\n not call.arguments[0].constantValue == \"\"\n ) or (\n call.arguments[0] is [FieldAccess far: far.field.name matches \"(?i)pass(wd|word)\" and far.field.type.name == \"char\"] and\n not call.arguments[1].constantValue.None and\n not call.arguments[1].constantValue is [None:] and\n not call.arguments[1].constantValue == \"\"\n ) or (\n call.arguments[1] is [VariableAccess val: val.variable.name matches \"(?i)pass(wd|word)\" and val.variable.type.name == \"char\"] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None:] and\n not call.arguments[0].constantValue == \"\"\n ) or (\n call.arguments[0] is [VariableAccess var: var.variable.name matches \"(?i)pass(wd|word)\" and var.variable.type.name == \"char\"] and\n not call.arguments[1].constantValue.None and\n not call.arguments[1].constantValue is [None:] and\n not call.arguments[1].constantValue == \"\"\n ))\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is [ArrayAccess aa1: aa1.base is\n [VariableAccess val: val.variable.name matches \"PUT_REGEX_HERE\"]\n and aa1.type is T\"char*\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue == 0\n ) or (\n operation.rhs.location is [ArrayAccess aa2: aa2.base is\n [VariableAccess var: var.variable.name matches \"PUT_REGEX_HERE\"]\n and aa2.type == T\"char\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue == 0\n ) or (\n operation.lhs.location is [ArrayAccess aa3: aa3.base is\n [FieldAccess fal: fal.field.name matches \"PUT_REGEX_HERE\"]\n and aa3.type == T\"char\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue == 0\n ) or (\n operation.rhs.location is [ArrayAccess aa4: aa4.base is\n [FieldAccess far: far.field.name matches \"PUT_REGEX_HERE\"]\n and aa4.type == T\"char\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue == 0\n ))\n " + "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is [ArrayAccess aa1: aa1.base is\n [VariableAccess val: val.variable.name matches \"PUT_REGEX_HERE\"]\n and aa1.type is T\"char*\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue == 0\n ) or (\n operation.rhs.location is [ArrayAccess aa2: aa2.base is\n [VariableAccess var: var.variable.name matches \"PUT_REGEX_HERE\"]\n and aa2.type == T\"char\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue == 0\n ) or (\n operation.lhs.location is [ArrayAccess aa3: aa3.base is\n [FieldAccess fal: fal.field.name matches \"PUT_REGEX_HERE\"]\n and aa3.type == T\"char\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue == 0\n ) or (\n operation.rhs.location is [ArrayAccess aa4: aa4.base is\n [FieldAccess far: far.field.name matches \"PUT_REGEX_HERE\"]\n and aa4.type == T\"char\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue == 0\n ))\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is [ArrayAccess aa1: aa1.base is\n [VariableAccess val: val.variable.name matches \"PUT_REGEX_HERE\"]\n and aa1.type is T\"char*\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue == 0\n ) or (\n operation.rhs.location is [ArrayAccess aa2: aa2.base is\n [VariableAccess var: var.variable.name matches \"PUT_REGEX_HERE\"]\n and aa2.type == T\"char\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue == 0\n ) or (\n operation.lhs.location is [ArrayAccess aa3: aa3.base is\n [FieldAccess fal: fal.field.name matches \"PUT_REGEX_HERE\"]\n and aa3.type == T\"char\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue == 0\n ) or (\n operation.rhs.location is [ArrayAccess aa4: aa4.base is\n [FieldAccess far: far.field.name matches \"PUT_REGEX_HERE\"]\n and aa4.type == T\"char\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue == 0\n ))\n " + "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is [ArrayAccess aa1: aa1.base is\n [VariableAccess val: val.variable.name matches \"PUT_REGEX_HERE\"]\n and aa1.type is T\"char*\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue == 0\n ) or (\n operation.rhs.location is [ArrayAccess aa2: aa2.base is\n [VariableAccess var: var.variable.name matches \"PUT_REGEX_HERE\"]\n and aa2.type == T\"char\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue == 0\n ) or (\n operation.lhs.location is [ArrayAccess aa3: aa3.base is\n [FieldAccess fal: fal.field.name matches \"PUT_REGEX_HERE\"]\n and aa3.type == T\"char\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue == 0\n ) or (\n operation.rhs.location is [ArrayAccess aa4: aa4.base is\n [FieldAccess far: far.field.name matches \"PUT_REGEX_HERE\"]\n and aa4.type == T\"char\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue == 0\n ))\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is [ArrayAccess aa1: aa1.base is\n [VariableAccess val: val.variable.name matches \"(?i)pass(wd|word)\"]\n and aa1.type is T\"char*\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue == 0\n ) or (\n operation.rhs.location is [ArrayAccess aa2: aa2.base is\n [VariableAccess var: var.variable.name matches \"(?i)pass(wd|word)\"]\n and aa2.type == T\"char\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue == 0\n ) or (\n operation.lhs.location is [ArrayAccess aa3: aa3.base is\n [FieldAccess fal: fal.field.name matches \"(?i)pass(wd|word)\"]\n and aa3.type == T\"char\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue == 0\n ) or (\n operation.rhs.location is [ArrayAccess aa4: aa4.base is\n [FieldAccess far: far.field.name matches \"(?i)pass(wd|word)\"]\n and aa4.type == T\"char\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue == 0\n ))\n " + "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is [ArrayAccess aa1: aa1.base is\n [VariableAccess val: val.variable.name matches \"(?i)pass(wd|word)\"]\n and aa1.type is T\"char*\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue == 0\n ) or (\n operation.rhs.location is [ArrayAccess aa2: aa2.base is\n [VariableAccess var: var.variable.name matches \"(?i)pass(wd|word)\"]\n and aa2.type == T\"char\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue == 0\n ) or (\n operation.lhs.location is [ArrayAccess aa3: aa3.base is\n [FieldAccess fal: fal.field.name matches \"(?i)pass(wd|word)\"]\n and aa3.type == T\"char\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue == 0\n ) or (\n operation.rhs.location is [ArrayAccess aa4: aa4.base is\n [FieldAccess far: far.field.name matches \"(?i)pass(wd|word)\"]\n and aa4.type == T\"char\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue == 0\n ))\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " }, { "language": "cpp", @@ -857,22 +857,22 @@ "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FunctionCall call: call.function is [Function f: f.name matches \"(_)?(str|wcs|mbs|lstr)(n|i|ni|case)?cmp(_l|i)?\"] and\n ((call.arguments[1] is [FieldAccess fal: fal.field.name matches \"(?i).*pass(wd|word).*\" and not fal.field.name matches \"(?i)pass(wd|word)\" and fal.field.type.name == \"char\"] and\n call.arguments[0].constantValue is [Null:]\n ) or (\n call.arguments[0] is [FieldAccess far: far.field.name matches \"(?i).*pass(wd|word).*\" and not far.field.name matches \"(?i)pass(wd|word)\" and far.field.type.name == \"char\"] and\n call.arguments[1].constantValue is [Null:]\n ) or (\n call.arguments[1] is [VariableAccess val: val.variable.name matches \"(?i).*pass(wd|word).*\" and not val.variable.name matches \"(?i)pass(wd|word)\" and val.variable.type.name == \"char\"] and\n call.arguments[0].constantValue is [Null:]\n ) or (\n call.arguments[0] is [VariableAccess var: var.variable.name matches \"(?i).*pass(wd|word).*\" and not var.variable.name matches \"(?i)pass(wd|word)\" and var.variable.type.name == \"char\"] and\n call.arguments[1].constantValue is [Null:]\n ))\n " + "vuln_subcategory": "None Password", + "predicate": "\n FunctionCall call: call.function is [Function f: f.name matches \"(_)?(str|wcs|mbs|lstr)(n|i|ni|case)?cmp(_l|i)?\"] and\n ((call.arguments[1] is [FieldAccess fal: fal.field.name matches \"(?i).*pass(wd|word).*\" and not fal.field.name matches \"(?i)pass(wd|word)\" and fal.field.type.name == \"char\"] and\n call.arguments[0].constantValue is [None:]\n ) or (\n call.arguments[0] is [FieldAccess far: far.field.name matches \"(?i).*pass(wd|word).*\" and not far.field.name matches \"(?i)pass(wd|word)\" and far.field.type.name == \"char\"] and\n call.arguments[1].constantValue is [None:]\n ) or (\n call.arguments[1] is [VariableAccess val: val.variable.name matches \"(?i).*pass(wd|word).*\" and not val.variable.name matches \"(?i)pass(wd|word)\" and val.variable.type.name == \"char\"] and\n call.arguments[0].constantValue is [None:]\n ) or (\n call.arguments[0] is [VariableAccess var: var.variable.name matches \"(?i).*pass(wd|word).*\" and not var.variable.name matches \"(?i)pass(wd|word)\" and var.variable.type.name == \"char\"] and\n call.arguments[1].constantValue is [None:]\n ))\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " }, { "language": "cpp", @@ -900,97 +900,97 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall call: call.function is [Function f: f.name matches \"(_)?(str|wcs|mbs|lstr)(n|i|ni|case)?cmp(_l|i)?\"] and\n ((call.arguments[1] is [FieldAccess fal: fal.field.name matches \"(?i).*pass(wd|word).*\" and not fal.field.name matches \"(?i)pass(wd|word)\" and fal.field.type.name == \"char\"] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null:] and\n not call.arguments[0].constantValue == \"\"\n ) or (\n call.arguments[0] is [FieldAccess far: far.field.name matches \"(?i).*pass(wd|word).*\" and not far.field.name matches \"(?i)pass(wd|word)\" and far.field.type.name == \"char\"] and\n not call.arguments[1].constantValue.null and\n not call.arguments[1].constantValue is [Null:] and\n not call.arguments[1].constantValue == \"\"\n ) or (\n call.arguments[1] is [VariableAccess val: val.variable.name matches \"(?i).*pass(wd|word).*\" and not val.variable.name matches \"(?i)pass(wd|word)\" and val.variable.type.name == \"char\"] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null:] and\n not call.arguments[0].constantValue == \"\"\n ) or (\n call.arguments[0] is [VariableAccess var: var.variable.name matches \"(?i).*pass(wd|word).*\" and not var.variable.name matches \"(?i)pass(wd|word)\" and var.variable.type.name == \"char\"] and\n not call.arguments[1].constantValue.null and\n not call.arguments[1].constantValue is [Null:] and\n not call.arguments[1].constantValue == \"\"\n ))\n " + "predicate": "\n FunctionCall call: call.function is [Function f: f.name matches \"(_)?(str|wcs|mbs|lstr)(n|i|ni|case)?cmp(_l|i)?\"] and\n ((call.arguments[1] is [FieldAccess fal: fal.field.name matches \"(?i).*pass(wd|word).*\" and not fal.field.name matches \"(?i)pass(wd|word)\" and fal.field.type.name == \"char\"] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None:] and\n not call.arguments[0].constantValue == \"\"\n ) or (\n call.arguments[0] is [FieldAccess far: far.field.name matches \"(?i).*pass(wd|word).*\" and not far.field.name matches \"(?i)pass(wd|word)\" and far.field.type.name == \"char\"] and\n not call.arguments[1].constantValue.None and\n not call.arguments[1].constantValue is [None:] and\n not call.arguments[1].constantValue == \"\"\n ) or (\n call.arguments[1] is [VariableAccess val: val.variable.name matches \"(?i).*pass(wd|word).*\" and not val.variable.name matches \"(?i)pass(wd|word)\" and val.variable.type.name == \"char\"] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None:] and\n not call.arguments[0].constantValue == \"\"\n ) or (\n call.arguments[0] is [VariableAccess var: var.variable.name matches \"(?i).*pass(wd|word).*\" and not var.variable.name matches \"(?i)pass(wd|word)\" and var.variable.type.name == \"char\"] and\n not call.arguments[1].constantValue.None and\n not call.arguments[1].constantValue is [None:] and\n not call.arguments[1].constantValue == \"\"\n ))\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is [ArrayAccess aa1: aa1.base is\n [VariableAccess val: val.variable.name matches\n \"(?i).*pass(wd|word).*\"\n and not val.variable.name matches \"(?i)pass(wd|word)\"]\n and aa1.type == T\"char\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue == 0\n ) or (\n operation.rhs.location is [ArrayAccess aa2: aa2.base is\n [VariableAccess var: var.variable.name matches\n \"(?i).*pass(wd|word).*\"\n and not var.variable.name matches \"(?i)pass(wd|word)\"]\n and aa2.type == T\"char\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue == 0\n ) or (\n operation.lhs.location is [ArrayAccess aa3: aa3.base is\n [FieldAccess fal: fal.field.name matches\n \"(?i).*pass(wd|word).*\"\n and not fal.field.name matches \"(?i)pass(wd|word)\"]\n and aa3.type == T\"char\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue == 0\n ) or (\n operation.rhs.location is [ArrayAccess aa4: aa4.base is\n [FieldAccess far: far.field.name matches\n \"(?i).*pass(wd|word).*\"\n and not far.field.name matches \"(?i)pass(wd|word)\"]\n and aa4.type == T\"char\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue == 0\n ))\n " + "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is [ArrayAccess aa1: aa1.base is\n [VariableAccess val: val.variable.name matches\n \"(?i).*pass(wd|word).*\"\n and not val.variable.name matches \"(?i)pass(wd|word)\"]\n and aa1.type == T\"char\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue == 0\n ) or (\n operation.rhs.location is [ArrayAccess aa2: aa2.base is\n [VariableAccess var: var.variable.name matches\n \"(?i).*pass(wd|word).*\"\n and not var.variable.name matches \"(?i)pass(wd|word)\"]\n and aa2.type == T\"char\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue == 0\n ) or (\n operation.lhs.location is [ArrayAccess aa3: aa3.base is\n [FieldAccess fal: fal.field.name matches\n \"(?i).*pass(wd|word).*\"\n and not fal.field.name matches \"(?i)pass(wd|word)\"]\n and aa3.type == T\"char\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue == 0\n ) or (\n operation.rhs.location is [ArrayAccess aa4: aa4.base is\n [FieldAccess far: far.field.name matches\n \"(?i).*pass(wd|word).*\"\n and not far.field.name matches \"(?i)pass(wd|word)\"]\n and aa4.type == T\"char\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue == 0\n ))\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and fa.field is [Field f:]*\n and fa.field.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue == 0\n ] and va.variable is [Variable v:]*\n and va.variable.type.name == \"char\"\n " }, { "language": "cpp", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Out-of-Bounds Read", - "vuln_subcategory": null, - "predicate": "\n FunctionCall fc: fc.name == \"memchr\" and not fc.arguments[2].constantValue.null\n " + "vuln_subcategory": None, + "predicate": "\n FunctionCall fc: fc.name == \"memchr\" and not fc.arguments[2].constantValue.None\n " }, { "language": "cpp", "vuln_kingdom": "Code Quality", "vuln_category": "Fortify Internal", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: fc.name == \"memchr\" and\n ( ( fc.arguments[0] is [ArrayAccess ac0: base is [VariableAccess va0:\n fc.arguments[2] is [FunctionCall fc0: fc0.name == \"strlen\" and fc0.arguments[0] is [ArrayAccess: base is va0]]]] ) or\n ( fc.arguments[0] is [VariableAccess va1: variable is [Variable var1:\n fc.arguments[2] is [FunctionCall fc1: fc1.name == \"strlen\" and fc1.arguments[0] is [VariableAccess va2: variable is [Variable var2: var2 === var1]]]]] ) or\n ( fc.arguments[0] is [FieldAccess fa1: field is [Field fi1:\n fc.arguments[2] is [FunctionCall fc2: fc2.name == \"strlen\" and fc2.arguments[0] is [FieldAccess fa2: field is [Field fi2: fi2 === fi1]]]]] ))\n " }, { @@ -1005,28 +1005,28 @@ "vuln_kingdom": "Code Quality", "vuln_category": "Poor Style", "vuln_subcategory": "Value Never Read", - "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: (not isIncrDecr) and (lhs.location is [Location l: l.transitiveBase === va.transitiveBase])]\n and not sourceLocation.null\n and not sourceLocation.isMacroExpansion\n and variable is\n [Variable var: not static and not enclosingFunction.null\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.null\n and not va.sourceLocation.null\n and not sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp and not const]*\n " + "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: (not isIncrDecr) and (lhs.location is [Location l: l.transitiveBase === va.transitiveBase])]\n and not sourceLocation.None\n and not sourceLocation.isMacroExpansion\n and variable is\n [Variable var: not static and not enclosingFunction.None\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.None\n and not va.sourceLocation.None\n and not sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp and not const]*\n " }, { "language": "cpp", "vuln_kingdom": "Code Quality", "vuln_category": "Poor Style", "vuln_subcategory": "Value Never Read", - "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: (not isIncrDecr) and (lhs.location is va)]\n and not sourceLocation.null\n and not sourceLocation.isMacroExpansion\n and variable is\n [Variable var: not static and not enclosingFunction.null\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.null\n and not va.sourceLocation.null\n and not sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp and not const]*\n " + "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: (not isIncrDecr) and (lhs.location is va)]\n and not sourceLocation.None\n and not sourceLocation.isMacroExpansion\n and variable is\n [Variable var: not static and not enclosingFunction.None\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.None\n and not va.sourceLocation.None\n and not sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp and not const]*\n " }, { "language": "cpp", "vuln_kingdom": "Code Quality", "vuln_category": "Poor Style", "vuln_subcategory": "Redundant Initialization", - "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: lhs.location is va and rhs.constantValue.null]\n and not sourceLocation.null\n and not sourceLocation.isMacroExpansion\n and variable is\n [Variable: not static and not enclosingFunction.null\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.null\n and not va.sourceLocation.null\n and sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp]*\n " + "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: lhs.location is va and rhs.constantValue.None]\n and not sourceLocation.None\n and not sourceLocation.isMacroExpansion\n and variable is\n [Variable: not static and not enclosingFunction.None\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.None\n and not va.sourceLocation.None\n and sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp]*\n " }, { "language": "cpp", "vuln_kingdom": "Code Quality", "vuln_category": "Poor Style", "vuln_subcategory": "Value Never Read", - "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: lhs.location is va]\n and not sourceLocation.null\n and not sourceLocation.isMacroExpansion\n and variable is\n [Variable: not static and not enclosingFunction.null\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.null\n and not va.sourceLocation.null\n and not sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp]*\n " + "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: lhs.location is va]\n and not sourceLocation.None\n and not sourceLocation.isMacroExpansion\n and variable is\n [Variable: not static and not enclosingFunction.None\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.None\n and not va.sourceLocation.None\n and not sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp]*\n " }, { "language": "cpp", @@ -1040,14 +1040,14 @@ "vuln_kingdom": "Code Quality", "vuln_category": "Type Mismatch", "vuln_subcategory": "Signed to Unsigned", - "predicate": "\n AssignmentStatement: lhs is [Location: type.name matches \"unsigned.*\"]*\n and rhs is [Location l: type.name matches \"char|short|int|long\"\n /* is not a constant value */\n and constantValue.null\n /* not some sort of length, which are usually false positives */\n and not l is [FieldAccess: field.name matches \".*len(gth)?|.*size\" ]\n and not l is [VariableAccess: variable.name matches \".*len(gth)?|.*size\"]\n ]*\n " + "predicate": "\n AssignmentStatement: lhs is [Location: type.name matches \"unsigned.*\"]*\n and rhs is [Location l: type.name matches \"char|short|int|long\"\n /* is not a constant value */\n and constantValue.None\n /* not some sort of length, which are usually false positives */\n and not l is [FieldAccess: field.name matches \".*len(gth)?|.*size\" ]\n and not l is [VariableAccess: variable.name matches \".*len(gth)?|.*size\"]\n ]*\n " }, { "language": "cpp", "vuln_kingdom": "Code Quality", "vuln_category": "Type Mismatch", "vuln_subcategory": "Signed to Unsigned", - "predicate": "\n AssignmentStatement: lhs is [Location: type.name matches \"unsigned.*\"]*\n and rhs is [Location l: type.name matches \"char|short|int|long\"\n /* is not a constant value */\n and constantValue.null\n /* not some sort of length, which are usually false positives */\n and not l.name matches \".*len(gth)?|.*size\"\n /* not a binary value from a synthetic if-else block */\n and not (\n l.constantValues.length == 2\n and l.constantValues contains [Number: == 0]\n and l.constantValues contains [Number: == 1]\n )\n ]*\n " + "predicate": "\n AssignmentStatement: lhs is [Location: type.name matches \"unsigned.*\"]*\n and rhs is [Location l: type.name matches \"char|short|int|long\"\n /* is not a constant value */\n and constantValue.None\n /* not some sort of length, which are usually false positives */\n and not l.name matches \".*len(gth)?|.*size\"\n /* not a binary value from a synthetic if-else block */\n and not (\n l.constantValues.length == 2\n and l.constantValues contains [Number: == 0]\n and l.constantValues contains [Number: == 1]\n )\n ]*\n " }, { "language": "cpp", @@ -1061,35 +1061,35 @@ "vuln_kingdom": "Code Quality", "vuln_category": "Poor Style", "vuln_subcategory": "Redundant Initialization", - "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and rhs.constantValue.null]\n and not sourceLocation.null\n and not sourceLocation.isMacroExpansion\n and variable is\n [Variable var: not static and not enclosingFunction.null\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.null\n and not va.sourceLocation.null\n and sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp and not const]*\n " + "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and rhs.constantValue.None]\n and not sourceLocation.None\n and not sourceLocation.isMacroExpansion\n and variable is\n [Variable var: not static and not enclosingFunction.None\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.None\n and not va.sourceLocation.None\n and sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp and not const]*\n " }, { "language": "cpp", "vuln_kingdom": "Code Quality", "vuln_category": "Poor Style", "vuln_subcategory": "Redundant Initialization", - "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: lhs.location is va and rhs.constantValue.null]\n and not sourceLocation.null\n and not sourceLocation.isMacroExpansion\n and variable is\n [Variable var: not static and not enclosingFunction.null\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.null\n and not va.sourceLocation.null\n and sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp and not const]*\n " + "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: lhs.location is va and rhs.constantValue.None]\n and not sourceLocation.None\n and not sourceLocation.isMacroExpansion\n and variable is\n [Variable var: not static and not enclosingFunction.None\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.None\n and not va.sourceLocation.None\n and sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp and not const]*\n " }, { "language": "cpp", "vuln_kingdom": "Code Quality", "vuln_category": "Poor Style", "vuln_subcategory": "Variable Never Used", - "predicate": "\n Variable v: not enclosingFunction.null and uses.length == 0\n\t\tand not isTemp and not const and not sourceLocation.null and not sourceLocation.isMacroExpansion\n and not (v in v.enclosingFunction.parameters)\n\t\tand is [Variable:]\n " + "predicate": "\n Variable v: not enclosingFunction.None and uses.length == 0\n\t\tand not isTemp and not const and not sourceLocation.None and not sourceLocation.isMacroExpansion\n and not (v in v.enclosingFunction.parameters)\n\t\tand is [Variable:]\n " }, { "language": "cpp", "vuln_kingdom": "Code Quality", "vuln_category": "Code Correctness", "vuln_subcategory": "Function Not Invoked", - "predicate": "\n\t\tOperation: (op matches \"[!=><]=\" or op matches \"[<>]\") and (\n\t\t\t(lhs is [FunctionPointer: ] and (not rhs.constantValue.null))\n\t\t\tor\n\t\t\t((not lhs.constantValue.null) and rhs is [FunctionPointer: ])\n\t\t)\n " + "predicate": "\n\t\tOperation: (op matches \"[!=><]=\" or op matches \"[<>]\") and (\n\t\t\t(lhs is [FunctionPointer: ] and (not rhs.constantValue.None))\n\t\t\tor\n\t\t\t((not lhs.constantValue.None) and rhs is [FunctionPointer: ])\n\t\t)\n " }, { "language": "cpp", "vuln_kingdom": "Code Quality", "vuln_category": "Poor Style", "vuln_subcategory": "Variable Never Used", - "predicate": "\n Variable v: not enclosingFunction.null and uses.length == 0\n\t\tand not isTemp and not sourceLocation.null and not sourceLocation.isMacroExpansion\n and not (v in v.enclosingFunction.parameters)\n\t\tand is [Variable:]\n " + "predicate": "\n Variable v: not enclosingFunction.None and uses.length == 0\n\t\tand not isTemp and not sourceLocation.None and not sourceLocation.isMacroExpansion\n and not (v in v.enclosingFunction.parameters)\n\t\tand is [Variable:]\n " }, { "language": "cpp", @@ -1179,21 +1179,21 @@ "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Signature", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc:\n (function.name == \"getInstance\")\n and fc.function.enclosingClass.supers contains [Class:\n name matches \"java\\.security\\.(AlgorithmParameters|KeyFactory)\"\n ] and arguments[0].constantValue matches \"(?i).*DSA.*\"\n and not arguments[0].constantValue matches \"(?i).*(ECDSA|EdDSA).*\"\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Signature", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc:\n (function.name == \"init^\" or function.constructor)\n and fc.function.enclosingClass.supers contains [Class:\n name matches \"java\\.security\\.(AlgorithmParameters|KeyFactory)\"\n ] and arguments[2].constantValue matches \"(?i).*DSA.*\"\n and not arguments[2].constantValue matches \"(?i).*(ECDSA|EdDSA).*\"\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Signature", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc:\n (function.name matches \"getInstance|init\\^\" or function.constructor)\n and fc.function.enclosingClass.supers contains [Class:\n name matches \"java\\.security\\.(KeyPairGenerator|Signature)\"\n ] and arguments[0].constantValue matches \"(?i).*DSA.*\"\n and not arguments[0].constantValue matches \"(?i).*(ECDSA|EdDSA).*\"\n " }, { @@ -1214,85 +1214,85 @@ "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n not fa.sourceLocation.null and\n not fa.field.sourceLocation.null and\n fa.sourceLocation.startLine != fa.field.sourceLocation.startLine and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue is [Null:]]\n and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n not fa.sourceLocation.None and\n not fa.field.sourceLocation.None and\n fa.sourceLocation.startLine != fa.field.sourceLocation.startLine and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue is [None:]]\n and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: ((fa.field.name matches \"PUT_REGEX_HERE\") or\n (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n not fa.sourceLocation.null and\n not fa.field.sourceLocation.null and\n fa.sourceLocation.startLine != fa.field.sourceLocation.startLine and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue is [Null:]]\n and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: ((fa.field.name matches \"PUT_REGEX_HERE\") or\n (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n not fa.sourceLocation.None and\n not fa.field.sourceLocation.None and\n fa.sourceLocation.startLine != fa.field.sourceLocation.startLine and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue is [None:]]\n and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: ((fa.field.name matches \"(?i)pass(wd|word)\") or\n (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n not fa.sourceLocation.null and\n not fa.field.sourceLocation.null and\n fa.sourceLocation.startLine != fa.field.sourceLocation.startLine and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue is [Null:]]\n and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: ((fa.field.name matches \"(?i)pass(wd|word)\") or\n (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n not fa.sourceLocation.None and\n not fa.field.sourceLocation.None and\n fa.sourceLocation.startLine != fa.field.sourceLocation.startLine and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue is [None:]]\n and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n not va.sourceLocation.null and\n not va.variable.sourceLocation.null and\n va.sourceLocation.startLine != va.variable.sourceLocation.startLine and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue is [Null:]]\n and va.variable is [Variable v:]*\n and ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n not va.sourceLocation.None and\n not va.variable.sourceLocation.None and\n va.sourceLocation.startLine != va.variable.sourceLocation.startLine and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue is [None:]]\n and va.variable is [Variable v:]*\n and ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: ((va.variable.name matches \"PUT_REGEX_HERE\") or\n (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n not va.sourceLocation.null and\n not va.variable.sourceLocation.null and\n va.sourceLocation.startLine != va.variable.sourceLocation.startLine and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue is [Null:]]\n and va.variable is [Variable v:]*\n and ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: ((va.variable.name matches \"PUT_REGEX_HERE\") or\n (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n not va.sourceLocation.None and\n not va.variable.sourceLocation.None and\n va.sourceLocation.startLine != va.variable.sourceLocation.startLine and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue is [None:]]\n and va.variable is [Variable v:]*\n and ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: ((va.variable.name matches \"(?i)pass(wd|word)\") or\n (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n not va.sourceLocation.null and\n not va.variable.sourceLocation.null and\n va.sourceLocation.startLine != va.variable.sourceLocation.startLine and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue is [Null:]]\n and va.variable is [Variable v:]*\n and ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: ((va.variable.name matches \"(?i)pass(wd|word)\") or\n (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n not va.sourceLocation.None and\n not va.variable.sourceLocation.None and\n va.sourceLocation.startLine != va.variable.sourceLocation.startLine and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue is [None:]]\n and va.variable is [Variable v:]*\n and ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue == \"\"]\n and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue == \"\"]\n and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FieldAccess fa: ((fa.field.name matches \"PUT_REGEX_HERE\") or\n (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue == \"\"]\n and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " + "predicate": "\n FieldAccess fa: ((fa.field.name matches \"PUT_REGEX_HERE\") or\n (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue == \"\"]\n and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FieldAccess fa: ((fa.field.name matches \"(?i)pass(wd|word)\") or\n (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue == \"\"]\n and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " + "predicate": "\n FieldAccess fa: ((fa.field.name matches \"(?i)pass(wd|word)\") or\n (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue == \"\"]\n and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue == \"\"]\n and va.variable is [Variable v:]*\n and ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue == \"\"]\n and va.variable is [Variable v:]*\n and ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n VariableAccess va: ((va.variable.name matches \"PUT_REGEX_HERE\") or\n (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue == \"\"]\n and va.variable is [Variable v:]*\n and ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " + "predicate": "\n VariableAccess va: ((va.variable.name matches \"PUT_REGEX_HERE\") or\n (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue == \"\"]\n and va.variable is [Variable v:]*\n and ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n VariableAccess va: ((va.variable.name matches \"(?i)pass(wd|word)\") or\n (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue == \"\"]\n and va.variable is [Variable v:]*\n and ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " + "predicate": "\n VariableAccess va: ((va.variable.name matches \"(?i)pass(wd|word)\") or\n (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue == \"\"]\n and va.variable is [Variable v:]*\n and ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " }, { "language": "java", @@ -1313,105 +1313,105 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and not rhs.constantValue is [Null:] and not rhs.constantValue == \"\"] and\n fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and not rhs.constantValue is [None:] and not rhs.constantValue == \"\"] and\n fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: ((fa.field.name matches \"PUT_REGEX_HERE\") or\n (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and not rhs.constantValue is [Null:] and not rhs.constantValue == \"\"] and\n fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " + "predicate": "\n FieldAccess fa: ((fa.field.name matches \"PUT_REGEX_HERE\") or\n (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and not rhs.constantValue is [None:] and not rhs.constantValue == \"\"] and\n fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: ((fa.field.name matches \"(?i)pass(wd|word)\") or\n (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and not rhs.constantValue is [Null:] and not rhs.constantValue == \"\"] and\n fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " + "predicate": "\n FieldAccess fa: ((fa.field.name matches \"(?i)pass(wd|word)\") or\n (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and not rhs.constantValue is [None:] and not rhs.constantValue == \"\"] and\n fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null and not rhs.constantValue is [Null:] and not rhs.constantValue == \"\"] and\n va.variable is [Variable v:]* and\n ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None and not rhs.constantValue is [None:] and not rhs.constantValue == \"\"] and\n va.variable is [Variable v:]* and\n ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: ((va.variable.name matches \"PUT_REGEX_HERE\") or\n (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null and not rhs.constantValue is [Null:] and not rhs.constantValue == \"\"] and\n va.variable is [Variable v:]* and\n ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " + "predicate": "\n VariableAccess va: ((va.variable.name matches \"PUT_REGEX_HERE\") or\n (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None and not rhs.constantValue is [None:] and not rhs.constantValue == \"\"] and\n va.variable is [Variable v:]* and\n ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: ((va.variable.name matches \"(?i)pass(wd|word)\") or\n (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null and not rhs.constantValue is [Null:] and not rhs.constantValue == \"\"] and\n va.variable is [Variable v:]* and\n ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " + "predicate": "\n VariableAccess va: ((va.variable.name matches \"(?i)pass(wd|word)\") or\n (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None and not rhs.constantValue is [None:] and not rhs.constantValue == \"\"] and\n va.variable is [Variable v:]* and\n ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall call: call.function is [Function f: f.enclosingClass.supers contains\n [Class c: c.name == \"java.lang.String\" or c.name == \"kotlin.String\"] and\n (f.name == \"contentEquals\" or f.name matches \"(compareTo|equals)(IgnoreCase)?\")] and\n ( ( call.instance is [VariableAccess val:\n val.variable.name matches \"PUT_REGEX_HERE\"\n and not (val.variable.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [VariableAccess var:\n var.variable.name matches \"PUT_REGEX_HERE\"\n and var.variable.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (var.variable.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.instance.constantValue.null and\n not call.instance.constantValue is [Null:] and\n not call.instance.constantValue == \"\"\n ) or\n ( call.instance is [FieldAccess fal:\n fal.field.name matches \"PUT_REGEX_HERE\"\n and not (fal.field.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [FieldAccess far:\n far.field.name matches \"PUT_REGEX_HERE\" and\n far.field.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (far.field.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.instance.constantValue.null and\n not call.instance.constantValue is [Null:] and\n not call.instance.constantValue == \"\"\n ))\n " + "predicate": "\n FunctionCall call: call.function is [Function f: f.enclosingClass.supers contains\n [Class c: c.name == \"java.lang.String\" or c.name == \"kotlin.String\"] and\n (f.name == \"contentEquals\" or f.name matches \"(compareTo|equals)(IgnoreCase)?\")] and\n ( ( call.instance is [VariableAccess val:\n val.variable.name matches \"PUT_REGEX_HERE\"\n and not (val.variable.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [VariableAccess var:\n var.variable.name matches \"PUT_REGEX_HERE\"\n and var.variable.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (var.variable.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.instance.constantValue.None and\n not call.instance.constantValue is [None:] and\n not call.instance.constantValue == \"\"\n ) or\n ( call.instance is [FieldAccess fal:\n fal.field.name matches \"PUT_REGEX_HERE\"\n and not (fal.field.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [FieldAccess far:\n far.field.name matches \"PUT_REGEX_HERE\" and\n far.field.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (far.field.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.instance.constantValue.None and\n not call.instance.constantValue is [None:] and\n not call.instance.constantValue == \"\"\n ))\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall call: call.function is [Function f: f.enclosingClass.supers contains\n [Class c: c.name == \"java.lang.String\" or c.name == \"kotlin.String\"] and\n (f.name == \"contentEquals\" or f.name matches \"(compareTo|equals)(IgnoreCase)?\")] and\n ( ( call.instance is [VariableAccess val:\n ((val.variable.name matches \"PUT_REGEX_HERE\") or\n (val.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"]))\n and not (val.variable.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [VariableAccess var:\n ((var.variable.name matches \"PUT_REGEX_HERE\") or\n (var.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"]))\n and var.variable.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (var.variable.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.instance.constantValue.null and\n not call.instance.constantValue is [Null:] and\n not call.instance.constantValue == \"\"\n ) or\n ( call.instance is [FieldAccess fal:\n ((fal.field.name matches \"PUT_REGEX_HERE\") or\n (fal.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"]))\n and not (fal.field.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [FieldAccess far:\n ((far.field.name matches \"PUT_REGEX_HERE\") or\n (far.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n far.field.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (far.field.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.instance.constantValue.null and\n not call.instance.constantValue is [Null:] and\n not call.instance.constantValue == \"\"\n ))\n " + "predicate": "\n FunctionCall call: call.function is [Function f: f.enclosingClass.supers contains\n [Class c: c.name == \"java.lang.String\" or c.name == \"kotlin.String\"] and\n (f.name == \"contentEquals\" or f.name matches \"(compareTo|equals)(IgnoreCase)?\")] and\n ( ( call.instance is [VariableAccess val:\n ((val.variable.name matches \"PUT_REGEX_HERE\") or\n (val.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"]))\n and not (val.variable.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [VariableAccess var:\n ((var.variable.name matches \"PUT_REGEX_HERE\") or\n (var.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"]))\n and var.variable.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (var.variable.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.instance.constantValue.None and\n not call.instance.constantValue is [None:] and\n not call.instance.constantValue == \"\"\n ) or\n ( call.instance is [FieldAccess fal:\n ((fal.field.name matches \"PUT_REGEX_HERE\") or\n (fal.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"]))\n and not (fal.field.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [FieldAccess far:\n ((far.field.name matches \"PUT_REGEX_HERE\") or\n (far.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n far.field.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (far.field.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.instance.constantValue.None and\n not call.instance.constantValue is [None:] and\n not call.instance.constantValue == \"\"\n ))\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall call: call.function is [Function f: f.enclosingClass.supers contains\n [Class c: c.name == \"java.lang.String\" or c.name == \"kotlin.String\"] and\n (f.name == \"contentEquals\" or f.name matches \"(compareTo|equals)(IgnoreCase)?\")] and\n ( ( call.instance is [VariableAccess val:\n ((val.variable.name matches \"(?i)pass(wd|word)\") or\n (val.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"]))\n and not (val.variable.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [VariableAccess var:\n ((var.variable.name matches \"(?i)pass(wd|word)\") or\n (var.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"]))\n and var.variable.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (var.variable.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.instance.constantValue.null and\n not call.instance.constantValue is [Null:] and\n not call.instance.constantValue == \"\"\n ) or\n ( call.instance is [FieldAccess fal:\n ((fal.field.name matches \"(?i)pass(wd|word)\") or\n (fal.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"]))\n and not (fal.field.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [FieldAccess far:\n ((far.field.name matches \"(?i)pass(wd|word)\") or\n (far.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n far.field.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (far.field.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.instance.constantValue.null and\n not call.instance.constantValue is [Null:] and\n not call.instance.constantValue == \"\"\n ))\n " + "predicate": "\n FunctionCall call: call.function is [Function f: f.enclosingClass.supers contains\n [Class c: c.name == \"java.lang.String\" or c.name == \"kotlin.String\"] and\n (f.name == \"contentEquals\" or f.name matches \"(compareTo|equals)(IgnoreCase)?\")] and\n ( ( call.instance is [VariableAccess val:\n ((val.variable.name matches \"(?i)pass(wd|word)\") or\n (val.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"]))\n and not (val.variable.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [VariableAccess var:\n ((var.variable.name matches \"(?i)pass(wd|word)\") or\n (var.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"]))\n and var.variable.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (var.variable.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.instance.constantValue.None and\n not call.instance.constantValue is [None:] and\n not call.instance.constantValue == \"\"\n ) or\n ( call.instance is [FieldAccess fal:\n ((fal.field.name matches \"(?i)pass(wd|word)\") or\n (fal.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"]))\n and not (fal.field.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [FieldAccess far:\n ((far.field.name matches \"(?i)pass(wd|word)\") or\n (far.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyPassword\"])) and\n far.field.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (far.field.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.instance.constantValue.None and\n not call.instance.constantValue is [None:] and\n not call.instance.constantValue == \"\"\n ))\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall: function is [Function: \n (\n name is \"put\" or \n name is \"putIfAbsent\" or \n name is \"merge\" or \n name is \"replace\" \n ) \n and\n enclosingClass.supers contains [Class: \n name == \"java.util.Map\"\n ]\n ] \n and arguments[0] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and (\n (arguments[1] is [Expression:\n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ])\n or\n (arguments[2] is [Expression:\n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ])\n )\n " + "predicate": "\n FunctionCall: function is [Function: \n (\n name is \"put\" or \n name is \"putIfAbsent\" or \n name is \"merge\" or \n name is \"replace\" \n ) \n and\n enclosingClass.supers contains [Class: \n name == \"java.util.Map\"\n ]\n ] \n and arguments[0] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and (\n (arguments[1] is [Expression:\n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ])\n or\n (arguments[2] is [Expression:\n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ])\n )\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall: function is [Function: \n (\n name is \"put\" or \n name is \"putIfAbsent\" or \n name is \"merge\" or \n name is \"replace\" \n ) \n and\n enclosingClass.supers contains [Class: \n name == \"java.util.Map\"\n ]\n ] \n and arguments[0] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and (\n (arguments[1] is [Expression:\n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ])\n or\n (arguments[2] is [Expression:\n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ])\n )\n " + "predicate": "\n FunctionCall: function is [Function: \n (\n name is \"put\" or \n name is \"putIfAbsent\" or \n name is \"merge\" or \n name is \"replace\" \n ) \n and\n enclosingClass.supers contains [Class: \n name == \"java.util.Map\"\n ]\n ] \n and arguments[0] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and (\n (arguments[1] is [Expression:\n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ])\n or\n (arguments[2] is [Expression:\n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ])\n )\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall: function is [Function: \n (\n name is \"put\" or \n name is \"putIfAbsent\" or \n name is \"merge\" or \n name is \"replace\" \n ) \n and\n enclosingClass.supers contains [Class: \n name == \"java.util.Map\"\n ]\n ] \n and arguments[0] is [Expression:\n constantValue matches \"(?i).*pass(wd|word|phrase).*\"\n ]\n and (\n (arguments[1] is [Expression:\n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ])\n or\n (arguments[2] is [Expression:\n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ])\n )\n " + "predicate": "\n FunctionCall: function is [Function: \n (\n name is \"put\" or \n name is \"putIfAbsent\" or \n name is \"merge\" or \n name is \"replace\" \n ) \n and\n enclosingClass.supers contains [Class: \n name == \"java.util.Map\"\n ]\n ] \n and arguments[0] is [Expression:\n constantValue matches \"(?i).*pass(wd|word|phrase).*\"\n ]\n and (\n (arguments[1] is [Expression:\n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ])\n or\n (arguments[2] is [Expression:\n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ])\n )\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall: function is [Function: \n name is \"of\" and\n enclosingClass.supers contains [Class: \n name == \"java.util.Map\"\n ]\n ] \n and \n (\n (\n arguments[0] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and \n arguments[1] is [Expression:\n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[2] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and \n arguments[3] is [Expression:\n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[4] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and \n arguments[5] is [Expression:\n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[6] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and \n arguments[7] is [Expression:\n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[8] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and \n arguments[9] is [Expression:\n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ]\n )\n )\n " + "predicate": "\n FunctionCall: function is [Function: \n name is \"of\" and\n enclosingClass.supers contains [Class: \n name == \"java.util.Map\"\n ]\n ] \n and \n (\n (\n arguments[0] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and \n arguments[1] is [Expression:\n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[2] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and \n arguments[3] is [Expression:\n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[4] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and \n arguments[5] is [Expression:\n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[6] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and \n arguments[7] is [Expression:\n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[8] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and \n arguments[9] is [Expression:\n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ]\n )\n )\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall: function is [Function: \n name is \"of\" and\n enclosingClass.supers contains [Class: \n name == \"java.util.Map\"\n ]\n ] \n and \n (\n (\n arguments[0] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and \n arguments[1] is [Expression:\n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[2] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and \n arguments[3] is [Expression:\n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[4] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and \n arguments[5] is [Expression:\n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[6] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and \n arguments[7] is [Expression:\n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[8] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and \n arguments[9] is [Expression:\n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ]\n )\n )\n " + "predicate": "\n FunctionCall: function is [Function: \n name is \"of\" and\n enclosingClass.supers contains [Class: \n name == \"java.util.Map\"\n ]\n ] \n and \n (\n (\n arguments[0] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and \n arguments[1] is [Expression:\n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[2] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and \n arguments[3] is [Expression:\n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[4] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and \n arguments[5] is [Expression:\n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[6] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and \n arguments[7] is [Expression:\n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[8] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n and \n arguments[9] is [Expression:\n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ]\n )\n )\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall: function is [Function: \n name is \"of\" and\n enclosingClass.supers contains [Class: \n name == \"java.util.Map\"\n ]\n ]\n and \n (\n (\n arguments[0] is [Expression:\n constantValue matches \"(?i).*pass(wd|word|phrase).*\"\n ]\n and \n arguments[1] is [Expression:\n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[2] is [Expression:\n constantValue matches \"(?i).*pass(wd|word|phrase).*\"\n ]\n and \n arguments[3] is [Expression:\n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[4] is [Expression:\n constantValue matches \"(?i).*pass(wd|word|phrase).*\"\n ]\n and \n arguments[5] is [Expression: \n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[6] is [Expression:\n constantValue matches \"(?i).*pass(wd|word|phrase).*\"\n ]\n and \n arguments[7] is [Expression:\n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[8] is [Expression:\n constantValue matches \"(?i).*pass(wd|word|phrase).*\"\n ]\n and \n arguments[9] is [Expression:\n constantValue matches \".+\" and\n not constantValue.null and\n not constantValue is [Null: ] and\n not constantValue == \"\"\n ]\n )\n )\n " + "predicate": "\n FunctionCall: function is [Function: \n name is \"of\" and\n enclosingClass.supers contains [Class: \n name == \"java.util.Map\"\n ]\n ]\n and \n (\n (\n arguments[0] is [Expression:\n constantValue matches \"(?i).*pass(wd|word|phrase).*\"\n ]\n and \n arguments[1] is [Expression:\n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[2] is [Expression:\n constantValue matches \"(?i).*pass(wd|word|phrase).*\"\n ]\n and \n arguments[3] is [Expression:\n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[4] is [Expression:\n constantValue matches \"(?i).*pass(wd|word|phrase).*\"\n ]\n and \n arguments[5] is [Expression: \n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[6] is [Expression:\n constantValue matches \"(?i).*pass(wd|word|phrase).*\"\n ]\n and \n arguments[7] is [Expression:\n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ]\n )\n or\n (\n arguments[8] is [Expression:\n constantValue matches \"(?i).*pass(wd|word|phrase).*\"\n ]\n and \n arguments[9] is [Expression:\n constantValue matches \".+\" and\n not constantValue.None and\n not constantValue is [None: ] and\n not constantValue == \"\"\n ]\n )\n )\n " }, { "language": "java", @@ -1438,330 +1438,330 @@ "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: fc.function is [Function: \n name == \"setProperty\"\n and enclosingClass.supers contains [Class: \n name == \"java.util.Properties\"\n ]\n ]\n and arguments[0] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: fc.function is [Function: \n name == \"setProperty\"\n and enclosingClass.supers contains [Class: \n name == \"java.util.Properties\"\n ]\n ]\n and arguments[0] is [Expression:\n constantValue matches \"PUT_REGEX_HERE\"\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: fc.function is [Function: \n name == \"setProperty\"\n and enclosingClass.supers contains [Class: \n name == \"java.util.Properties\"\n ]\n ]\n and arguments[0] is [Expression:\n constantValue matches \"(?i).*pass(wd|word|phrase).*\"\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n not fa.sourceLocation.null and\n not fa.field.sourceLocation.null and\n fa.sourceLocation.startLine != fa.field.sourceLocation.startLine and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue is [Null:]] and\n fa.field is [Field f:]* and\n (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\") and\n not (fa.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n not fa.sourceLocation.None and\n not fa.field.sourceLocation.None and\n fa.sourceLocation.startLine != fa.field.sourceLocation.startLine and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue is [None:]] and\n fa.field is [Field f:]* and\n (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\") and\n not (fa.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n not va.sourceLocation.null and\n not va.variable.sourceLocation.null and\n va.sourceLocation.startLine != va.variable.sourceLocation.startLine and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue is [Null:]] and\n va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n not va.sourceLocation.None and\n not va.variable.sourceLocation.None and\n va.sourceLocation.startLine != va.variable.sourceLocation.startLine and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue is [None:]] and\n va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: (fa.field.name matches \"(?i)pwd\") and\n not fa.sourceLocation.null and\n not fa.field.sourceLocation.null and\n fa.sourceLocation.startLine != fa.field.sourceLocation.startLine and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue is [Null:]]\n and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or \n fa.field.type.name == \"kotlin.ByteArray\" or \n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\" or type == T\"com.fortify.annotations.FortifyPassword\"])\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: (fa.field.name matches \"(?i)pwd\") and\n not fa.sourceLocation.None and\n not fa.field.sourceLocation.None and\n fa.sourceLocation.startLine != fa.field.sourceLocation.startLine and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue is [None:]]\n and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or \n fa.field.type.name == \"kotlin.ByteArray\" or \n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\" or type == T\"com.fortify.annotations.FortifyPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pwd.*\" and\n not fa.field.name matches \"(?i)pwd\" and\n not fa.sourceLocation.null and\n not fa.field.sourceLocation.null and\n fa.sourceLocation.startLine != fa.field.sourceLocation.startLine and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue is [Null:]] and\n fa.field is [Field f:]* and\n (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or \n fa.field.type.name == \"kotlin.ByteArray\" or \n fa.field.type.name == \"kotlin.CharArray\") and\n not (fa.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pwd.*\" and\n not fa.field.name matches \"(?i)pwd\" and\n not fa.sourceLocation.None and\n not fa.field.sourceLocation.None and\n fa.sourceLocation.startLine != fa.field.sourceLocation.startLine and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue is [None:]] and\n fa.field is [Field f:]* and\n (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or \n fa.field.type.name == \"kotlin.ByteArray\" or \n fa.field.type.name == \"kotlin.CharArray\") and\n not (fa.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: (va.variable.name matches \"(?i)pwd\") and\n not va.sourceLocation.null and\n not va.variable.sourceLocation.null and\n va.sourceLocation.startLine != va.variable.sourceLocation.startLine and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue is [Null:]]\n and va.variable is [Variable v:]*\n and ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or \n va.variable.type.name == \"kotlin.ByteArray\" or \n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\" or type == T\"com.fortify.annotations.FortifyPassword\"])\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: (va.variable.name matches \"(?i)pwd\") and\n not va.sourceLocation.None and\n not va.variable.sourceLocation.None and\n va.sourceLocation.startLine != va.variable.sourceLocation.startLine and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue is [None:]]\n and va.variable is [Variable v:]*\n and ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or \n va.variable.type.name == \"kotlin.ByteArray\" or \n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\" or type == T\"com.fortify.annotations.FortifyPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue == \"\"] and\n fa.field is [Field f:]* and\n (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\") and\n not (fa.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue == \"\"] and\n fa.field is [Field f:]* and\n (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\") and\n not (fa.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue == \"\"] and\n va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue == \"\"] and\n va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FieldAccess fa: (fa.field.name matches \"(?i)pwd\")\n and fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue == \"\"]\n and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or \n fa.field.type.name == \"kotlin.ByteArray\" or \n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\" or type == T\"com.fortify.annotations.FortifyPassword\"])\n " + "predicate": "\n FieldAccess fa: (fa.field.name matches \"(?i)pwd\")\n and fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue == \"\"]\n and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or \n fa.field.type.name == \"kotlin.ByteArray\" or \n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\" or type == T\"com.fortify.annotations.FortifyPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pwd.*\" and\n not fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue == \"\"] and\n fa.field is [Field f:]* and\n (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or \n fa.field.type.name == \"kotlin.ByteArray\" or \n fa.field.type.name == \"kotlin.CharArray\") and\n not (fa.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pwd.*\" and\n not fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue == \"\"] and\n fa.field is [Field f:]* and\n (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or \n fa.field.type.name == \"kotlin.ByteArray\" or \n fa.field.type.name == \"kotlin.CharArray\") and\n not (fa.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n VariableAccess va: (va.variable.name matches \"(?i)pwd\")\n and va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue == \"\"]\n and va.variable is [Variable v:]*\n and ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or \n va.variable.type.name == \"kotlin.ByteArray\" or \n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\" or type == T\"com.fortify.annotations.FortifyPassword\"])\n " + "predicate": "\n VariableAccess va: (va.variable.name matches \"(?i)pwd\")\n and va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue == \"\"]\n and va.variable is [Variable v:]*\n and ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or \n va.variable.type.name == \"kotlin.ByteArray\" or \n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\" or type == T\"com.fortify.annotations.FortifyPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pwd.*\" and\n not va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue == \"\"] and\n va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or \n va.variable.type.name == \"kotlin.ByteArray\" or \n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pwd.*\" and\n not va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue == \"\"] and\n va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or \n va.variable.type.name == \"kotlin.ByteArray\" or \n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and not rhs.constantValue is [Null:] and not rhs.constantValue == \"\" ] and\n fa.field is [Field f:]* and\n (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\") and\n not (fa.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and not rhs.constantValue is [None:] and not rhs.constantValue == \"\" ] and\n fa.field is [Field f:]* and\n (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\") and\n not (fa.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null and not rhs.constantValue is [Null:] and not rhs.constantValue == \"\"] and\n va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None and not rhs.constantValue is [None:] and not rhs.constantValue == \"\"] and\n va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall call: call.function is [Function f: f.enclosingClass.supers contains\n [Class c: c.name == \"java.lang.String\" or c.name == \"kotlin.String\"] and\n (f.name == \"contentEquals\" or f.name matches \"(compareTo|equals)(IgnoreCase)?\")] and\n ( ( call.instance is [VariableAccess val: val.variable.name matches \"(?i).*pass(wd|word).*\"\n and not val.variable.name matches \"(?i)pass(wd|word)\"\n and not (val.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [VariableAccess var: var.variable.name matches \"(?i).*pass(wd|word).*\"\n and not var.variable.name matches \"(?i)pass(wd|word)\"\n and var.variable.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (var.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.instance.constantValue.null and\n not call.instance.constantValue is [Null:] and\n not call.instance.constantValue == \"\"\n ) or\n ( call.instance is [FieldAccess fal: fal.field.name matches \"(?i).*pass(wd|word).*\" and\n not fal.field.name matches \"(?i)pass(wd|word)\"\n and not (fal.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [FieldAccess far: far.field.name matches \"(?i).*pass(wd|word).*\" and\n not far.field.name matches \"(?i)pass(wd|word)\" and\n far.field.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (far.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.instance.constantValue.null and\n not call.instance.constantValue is [Null:] and\n not call.instance.constantValue == \"\"\n ))\n " + "predicate": "\n FunctionCall call: call.function is [Function f: f.enclosingClass.supers contains\n [Class c: c.name == \"java.lang.String\" or c.name == \"kotlin.String\"] and\n (f.name == \"contentEquals\" or f.name matches \"(compareTo|equals)(IgnoreCase)?\")] and\n ( ( call.instance is [VariableAccess val: val.variable.name matches \"(?i).*pass(wd|word).*\"\n and not val.variable.name matches \"(?i)pass(wd|word)\"\n and not (val.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [VariableAccess var: var.variable.name matches \"(?i).*pass(wd|word).*\"\n and not var.variable.name matches \"(?i)pass(wd|word)\"\n and var.variable.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (var.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.instance.constantValue.None and\n not call.instance.constantValue is [None:] and\n not call.instance.constantValue == \"\"\n ) or\n ( call.instance is [FieldAccess fal: fal.field.name matches \"(?i).*pass(wd|word).*\" and\n not fal.field.name matches \"(?i)pass(wd|word)\"\n and not (fal.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [FieldAccess far: far.field.name matches \"(?i).*pass(wd|word).*\" and\n not far.field.name matches \"(?i)pass(wd|word)\" and\n far.field.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (far.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.instance.constantValue.None and\n not call.instance.constantValue is [None:] and\n not call.instance.constantValue == \"\"\n ))\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: (fa.field.name matches \"(?i)pwd\")\n and fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and not rhs.constantValue is [Null:] and not rhs.constantValue == \"\"] and\n fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or \n fa.field.type.name == \"kotlin.ByteArray\" or \n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\" or type == T\"com.fortify.annotations.FortifyPassword\"])\n " + "predicate": "\n FieldAccess fa: (fa.field.name matches \"(?i)pwd\")\n and fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and not rhs.constantValue is [None:] and not rhs.constantValue == \"\"] and\n fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or \n fa.field.type.name == \"kotlin.ByteArray\" or \n fa.field.type.name == \"kotlin.CharArray\")\n and not (fa.field.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\" or type == T\"com.fortify.annotations.FortifyPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pwd.*\" and\n not fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and not rhs.constantValue is [Null:] and not rhs.constantValue == \"\" ] and\n fa.field is [Field f:]* and\n (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or \n fa.field.type.name == \"kotlin.ByteArray\" or \n fa.field.type.name == \"kotlin.CharArray\") and\n not (fa.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pwd.*\" and\n not fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and not rhs.constantValue is [None:] and not rhs.constantValue == \"\" ] and\n fa.field is [Field f:]* and\n (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"byte\" or\n fa.field.type.name == \"char\" or\n fa.field.type.name == \"kotlin.String\" or \n fa.field.type.name == \"kotlin.ByteArray\" or \n fa.field.type.name == \"kotlin.CharArray\") and\n not (fa.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: (va.variable.name matches \"(?i)pwd\")\n and va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null and not rhs.constantValue is [Null:] and not rhs.constantValue == \"\"] and\n va.variable is [Variable v:]* and\n ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or \n va.variable.type.name == \"kotlin.ByteArray\" or \n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\" or type == T\"com.fortify.annotations.FortifyPassword\"])\n " + "predicate": "\n VariableAccess va: (va.variable.name matches \"(?i)pwd\")\n and va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None and not rhs.constantValue is [None:] and not rhs.constantValue == \"\"] and\n va.variable is [Variable v:]* and\n ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or\n va.variable.type.name == \"kotlin.String\" or \n va.variable.type.name == \"kotlin.ByteArray\" or \n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\" or type == T\"com.fortify.annotations.FortifyPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pwd.*\" and\n not va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null and not rhs.constantValue is [Null:] and not rhs.constantValue == \"\"] and\n va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or \n va.variable.type.name == \"kotlin.String\" or \n va.variable.type.name == \"kotlin.ByteArray\" or \n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pwd.*\" and\n not va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None and not rhs.constantValue is [None:] and not rhs.constantValue == \"\"] and\n va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"byte\" or\n va.variable.type.name == \"char\" or \n va.variable.type.name == \"kotlin.String\" or \n va.variable.type.name == \"kotlin.ByteArray\" or \n va.variable.type.name == \"kotlin.CharArray\")\n and not (va.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyNotPassword\" or\n type == T\"com.fortify.annotations.FortifyPassword\"])\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall call: call.function is [Function f: f.enclosingClass.supers contains\n [Class c: c.name == \"java.lang.String\" or c.name == \"kotlin.String\"] and\n (f.name == \"contentEquals\" or f.name matches \"(compareTo|equals)(IgnoreCase)?\")] and\n ( ( call.instance is [VariableAccess val: val.variable.name matches \"(?i).*pwd.*\"\n and not val.variable.name matches \"(?i)pwd\"\n and not (val.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [VariableAccess var: var.variable.name matches \"(?i).*pwd.*\"\n and not var.variable.name matches \"(?i)pwd\"\n and var.variable.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (var.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.instance.constantValue.null and\n not call.instance.constantValue is [Null:] and\n not call.instance.constantValue == \"\"\n ) or\n ( call.instance is [FieldAccess fal: fal.field.name matches \"(?i).*pwd.*\" and\n not fal.field.name matches \"(?i)pwd\"\n and not (fal.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [FieldAccess far: far.field.name matches \"(?i).*pwd.*\" and\n not far.field.name matches \"(?i)pwd\" and\n far.field.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (far.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.instance.constantValue.null and\n not call.instance.constantValue is [Null:] and\n not call.instance.constantValue == \"\"\n ))\n " + "predicate": "\n FunctionCall call: call.function is [Function f: f.enclosingClass.supers contains\n [Class c: c.name == \"java.lang.String\" or c.name == \"kotlin.String\"] and\n (f.name == \"contentEquals\" or f.name matches \"(compareTo|equals)(IgnoreCase)?\")] and\n ( ( call.instance is [VariableAccess val: val.variable.name matches \"(?i).*pwd.*\"\n and not val.variable.name matches \"(?i)pwd\"\n and not (val.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [VariableAccess var: var.variable.name matches \"(?i).*pwd.*\"\n and not var.variable.name matches \"(?i)pwd\"\n and var.variable.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (var.variable.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.instance.constantValue.None and\n not call.instance.constantValue is [None:] and\n not call.instance.constantValue == \"\"\n ) or\n ( call.instance is [FieldAccess fal: fal.field.name matches \"(?i).*pwd.*\" and\n not fal.field.name matches \"(?i)pwd\"\n and not (fal.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [FieldAccess far: far.field.name matches \"(?i).*pwd.*\" and\n not far.field.name matches \"(?i)pwd\" and\n far.field.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (far.field.annotations contains [Annotation:\n type == T\"com.fortify.annotations.FortifyPassword\" or\n type == T\"com.fortify.annotations.FortifyNotPassword\"])] and\n not call.instance.constantValue.None and\n not call.instance.constantValue is [None:] and\n not call.instance.constantValue == \"\"\n ))\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall call: call.function is [Function f: f.enclosingClass.supers contains\n [Class c: c.name == \"java.lang.String\" or c.name == \"kotlin.String\"] and\n (f.name == \"contentEquals\" or f.name matches \"(compareTo|equals)(IgnoreCase)?\")] and\n ( ( call.instance is [VariableAccess val:\n (val.variable.name matches \"(?i)pwd\")\n and not (val.variable.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"\n or type == T\"com.fortify.annotations.FortifyPassword\"])] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [VariableAccess var:\n (var.variable.name matches \"(?i)pwd\")\n and var.variable.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (var.variable.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"\n or type == T\"com.fortify.annotations.FortifyPassword\"])] and\n not call.instance.constantValue.null and\n not call.instance.constantValue is [Null:] and\n not call.instance.constantValue == \"\"\n ) or\n ( call.instance is [FieldAccess fal:\n (fal.field.name matches \"(?i)pwd\")\n and not (fal.field.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"\n or type == T\"com.fortify.annotations.FortifyPassword\"])] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [FieldAccess far:\n (far.field.name matches \"(?i)pwd\")\n and far.field.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (far.field.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"\n or type == T\"com.fortify.annotations.FortifyPassword\"])] and\n not call.instance.constantValue.null and\n not call.instance.constantValue is [Null:] and\n not call.instance.constantValue == \"\"\n ))\n " + "predicate": "\n FunctionCall call: call.function is [Function f: f.enclosingClass.supers contains\n [Class c: c.name == \"java.lang.String\" or c.name == \"kotlin.String\"] and\n (f.name == \"contentEquals\" or f.name matches \"(compareTo|equals)(IgnoreCase)?\")] and\n ( ( call.instance is [VariableAccess val:\n (val.variable.name matches \"(?i)pwd\")\n and not (val.variable.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"\n or type == T\"com.fortify.annotations.FortifyPassword\"])] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [VariableAccess var:\n (var.variable.name matches \"(?i)pwd\")\n and var.variable.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (var.variable.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"\n or type == T\"com.fortify.annotations.FortifyPassword\"])] and\n not call.instance.constantValue.None and\n not call.instance.constantValue is [None:] and\n not call.instance.constantValue == \"\"\n ) or\n ( call.instance is [FieldAccess fal:\n (fal.field.name matches \"(?i)pwd\")\n and not (fal.field.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"\n or type == T\"com.fortify.annotations.FortifyPassword\"])] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None: ] and\n not call.arguments[0].constantValue == \"\"\n ) or\n ( call.arguments[0] is [FieldAccess far:\n (far.field.name matches \"(?i)pwd\")\n and far.field.type.definition.supers contains [Class: name == \"java.lang.CharSequence\" or name == \"kotlin.CharSequence\"]\n and not (far.field.annotations contains\n [Annotation: type == T\"com.fortify.annotations.FortifyNotPassword\"\n or type == T\"com.fortify.annotations.FortifyPassword\"])] and\n not call.instance.constantValue.None and\n not call.instance.constantValue is [None:] and\n not call.instance.constantValue == \"\"\n ))\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\"\n and not fa.sourceLocation.null\n and not fa.field.sourceLocation.null\n and fa.sourceLocation.startLine != fa.field.sourceLocation.startLine\n and fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.null and rhs.constantValue is [Null:]] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]\n ]\n ]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\"\n and not fa.sourceLocation.None\n and not fa.field.sourceLocation.None\n and fa.sourceLocation.startLine != fa.field.sourceLocation.startLine\n and fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.None and rhs.constantValue is [None:]] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\"\n and not fa.sourceLocation.null\n and not fa.field.sourceLocation.null\n and fa.sourceLocation.startLine != fa.field.sourceLocation.startLine\n and fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.null and rhs.constantValue is [Null:]] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]\n ]\n ]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\"\n and not fa.sourceLocation.None\n and not fa.field.sourceLocation.None\n and fa.sourceLocation.startLine != fa.field.sourceLocation.startLine\n and fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.None and rhs.constantValue is [None:]] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n and not fa.sourceLocation.null\n and not fa.field.sourceLocation.null\n and fa.sourceLocation.startLine != fa.field.sourceLocation.startLine\n and fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.null and rhs.constantValue is [Null:]] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]\n ]\n ]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n and not fa.sourceLocation.None\n and not fa.field.sourceLocation.None\n and fa.sourceLocation.startLine != fa.field.sourceLocation.startLine\n and fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.None and rhs.constantValue is [None:]] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\"\n and not va.sourceLocation.null\n and not va.variable.sourceLocation.null\n and va.sourceLocation.startLine != va.variable.sourceLocation.startLine\n and va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.null and rhs.constantValue is [Null:]] and va.variable is [Variable v:]*\n and\n ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] is va and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n /* Exclude the case where key is passed to a func and then assigned to val*/\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)val(ue)?\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall redisFc: redisFc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\"\n and not va.sourceLocation.None\n and not va.variable.sourceLocation.None\n and va.sourceLocation.startLine != va.variable.sourceLocation.startLine\n and va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.None and rhs.constantValue is [None:]] and va.variable is [Variable v:]*\n and\n ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] is va and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n /* Exclude the case where key is passed to a func and then assigned to val*/\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)val(ue)?\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall redisFc: redisFc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\"\n and not va.sourceLocation.null\n and not va.variable.sourceLocation.null\n and va.sourceLocation.startLine != va.variable.sourceLocation.startLine\n and va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.null and rhs.constantValue is [Null:]] and va.variable is [Variable v:]*\n and\n ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] is va and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n /* Exclude the case where key is passed to a func and then assigned to val*/\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)val(ue)?\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall redisFc: redisFc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\"\n and not va.sourceLocation.None\n and not va.variable.sourceLocation.None\n and va.sourceLocation.startLine != va.variable.sourceLocation.startLine\n and va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.None and rhs.constantValue is [None:]] and va.variable is [Variable v:]*\n and\n ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] is va and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n /* Exclude the case where key is passed to a func and then assigned to val*/\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)val(ue)?\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall redisFc: redisFc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n and not va.sourceLocation.null\n and not va.variable.sourceLocation.null\n and va.sourceLocation.startLine != va.variable.sourceLocation.startLine\n and va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.null and rhs.constantValue is [Null:]] and va.variable is [Variable v:]*\n and\n ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] is va and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n /* Exclude the case where key is passed to a func and then assigned to val*/\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)val(ue)?\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall redisFc: redisFc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n and not va.sourceLocation.None\n and not va.variable.sourceLocation.None\n and va.sourceLocation.startLine != va.variable.sourceLocation.startLine\n and va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.None and rhs.constantValue is [None:]] and va.variable is [Variable v:]*\n and\n ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] is va and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n /* Exclude the case where key is passed to a func and then assigned to val*/\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)val(ue)?\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall redisFc: redisFc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Empty Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.null and rhs.constantValue == \"\"] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]\n ]\n ]\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.None and rhs.constantValue == \"\"] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Empty Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.null and rhs.constantValue == \"\"] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]\n ]\n ]\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.None and rhs.constantValue == \"\"] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Empty Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.null and rhs.constantValue == \"\"] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]\n ]\n ]\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.None and rhs.constantValue == \"\"] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Empty Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.null and rhs.constantValue == \"\"] and va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] is va and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n /* Exclude the case where key is passed to a func and then assigned to val*/\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)val(ue)?\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall redisFc: redisFc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.None and rhs.constantValue == \"\"] and va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] is va and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n /* Exclude the case where key is passed to a func and then assigned to val*/\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)val(ue)?\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall redisFc: redisFc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Empty Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.null and rhs.constantValue == \"\"] and va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] is va and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n /* Exclude the case where key is passed to a func and then assigned to val*/\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)val(ue)?\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall redisFc: redisFc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.None and rhs.constantValue == \"\"] and va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] is va and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n /* Exclude the case where key is passed to a func and then assigned to val*/\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)val(ue)?\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall redisFc: redisFc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Empty Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.null and rhs.constantValue == \"\"] and va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] is va and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n /* Exclude the case where key is passed to a func and then assigned to val*/\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)val(ue)?\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall redisFc: redisFc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.None and rhs.constantValue == \"\"] and va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] is va and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n /* Exclude the case where key is passed to a func and then assigned to val*/\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)val(ue)?\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall redisFc: redisFc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.null and not rhs.constantValue is [Null:] and not rhs.constantValue == \"\"] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n ]\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.None and not rhs.constantValue is [None:] and not rhs.constantValue == \"\"] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.null and not rhs.constantValue is [Null:] and not rhs.constantValue == \"\"] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n ]\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.None and not rhs.constantValue is [None:] and not rhs.constantValue == \"\"] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.null and not rhs.constantValue is [Null:] and not rhs.constantValue == \"\"] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n ]\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.None and not rhs.constantValue is [None:] and not rhs.constantValue == \"\"] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.null and not rhs.constantValue is [Null:] and not rhs.constantValue == \"\"] and va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall: arguments[0] is va and\n possibleTargets contains [Function f: name matches \"put|contains(Key)?|get(OrDefault)|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]]\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)value\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.None and not rhs.constantValue is [None:] and not rhs.constantValue == \"\"] and va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall: arguments[0] is va and\n possibleTargets contains [Function f: name matches \"put|contains(Key)?|get(OrDefault)|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]]\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)value\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.null and not rhs.constantValue is [Null:] and not rhs.constantValue == \"\"] and va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall: arguments[0] is va and\n possibleTargets contains [Function f: name matches \"put|contains(Key)?|get(OrDefault)|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]]\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)value\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.None and not rhs.constantValue is [None:] and not rhs.constantValue == \"\"] and va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall: arguments[0] is va and\n possibleTargets contains [Function f: name matches \"put|contains(Key)?|get(OrDefault)|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]]\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)value\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.null and not rhs.constantValue is [Null:] and not rhs.constantValue == \"\"] and va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall: arguments[0] is va and\n possibleTargets contains [Function f: name matches \"put|contains(Key)?|get(OrDefault)|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]]\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)value\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.None and not rhs.constantValue is [None:] and not rhs.constantValue == \"\"] and va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall: arguments[0] is va and\n possibleTargets contains [Function f: name matches \"put|contains(Key)?|get(OrDefault)|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]]\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)value\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n and not fa.sourceLocation.null\n and not fa.field.sourceLocation.null\n and fa.sourceLocation.startLine != fa.field.sourceLocation.startLine\n and fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.null and rhs.constantValue is [Null:]] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]\n ]\n ]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n and not fa.sourceLocation.None\n and not fa.field.sourceLocation.None\n and fa.sourceLocation.startLine != fa.field.sourceLocation.startLine\n and fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.None and rhs.constantValue is [None:]] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n and not va.sourceLocation.null\n and not va.variable.sourceLocation.null\n and va.sourceLocation.startLine != va.variable.sourceLocation.startLine\n and va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.null and rhs.constantValue is [Null:]] and va.variable is [Variable v:]*\n and\n ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] is va and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n /* Exclude the case where key is passed to a func and then assigned to val*/\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)val(ue)?\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall redisFc: redisFc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n and not va.sourceLocation.None\n and not va.variable.sourceLocation.None\n and va.sourceLocation.startLine != va.variable.sourceLocation.startLine\n and va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.None and rhs.constantValue is [None:]] and va.variable is [Variable v:]*\n and\n ( va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] is va and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n /* Exclude the case where key is passed to a func and then assigned to val*/\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)val(ue)?\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall redisFc: redisFc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Empty Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.null and rhs.constantValue == \"\"] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]\n ]\n ]\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.None and rhs.constantValue == \"\"] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"]]\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Empty Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.null and rhs.constantValue == \"\"] and va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] is va and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n /* Exclude the case where key is passed to a func and then assigned to val*/\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)val(ue)?\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall redisFc: redisFc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.None and rhs.constantValue == \"\"] and va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] is va and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n /* Exclude the case where key is passed to a func and then assigned to val*/\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)val(ue)?\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall redisFc: redisFc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.null and not rhs.constantValue is [Null:] and not rhs.constantValue == \"\"] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n ]\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is fa and not rhs.constantValue.None and not rhs.constantValue is [None:] and not rhs.constantValue == \"\"] and fa.field is [Field f:]*\n and (fa.field.type.name == \"java.lang.String\" or\n fa.field.type.name == \"java.lang.StringBuffer\" or\n fa.field.type.name == \"kotlin.String\" or\n fa.field.type.name == \"kotlin.ByteArray\" or\n fa.field.type.name == \"kotlin.CharArray\" or\n fa.field.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not fa.enclosingClass contains[Function: contains [FunctionCall fc: fc.arguments[0] is fa and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.null and not rhs.constantValue is [Null:] and not rhs.constantValue == \"\"] and va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] is va and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n /* Exclude the case where key is passed to a func and then assigned to val*/\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)val(ue)?\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall redisFc: redisFc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is va and not rhs.constantValue.None and not rhs.constantValue is [None:] and not rhs.constantValue == \"\"] and va.variable is [Variable v:]*\n and (va.variable.type.name == \"java.lang.String\" or\n va.variable.type.name == \"java.lang.StringBuffer\" or\n va.variable.type.name == \"kotlin.String\" or\n va.variable.type.name == \"kotlin.ByteArray\" or\n va.variable.type.name == \"kotlin.CharArray\" or\n va.variable.type is [Type: name matches \"byte|char\" and arrayDimensions > 0]) and\n /* Exclude cases where 'key' is an arg to a Java Map/Collections function call */\n not va.enclosingFunction contains [FunctionCall fc: fc.arguments[0] is va and\n fc.possibleTargets contains [Function:name matches \"compute(IfPresent|IfAbsent)?|entry|equals|merge|of|put(ifAbsent)?|contains(Key)?|get(OrDefault)?|remove|replace|add|(last)?indexOf|set\" and\n enclosingClass.supers contains [Class:\n name matches \"java\\.util\\.(Map|Collection)\"\n ]\n ]\n ]\n /* Exclude the case where key is passed to a func and then assigned to val*/\n and not va.enclosingFunction contains [AssignmentStatement: lhs is [VariableAccess: variable.name matches \"(?i)val(ue)?\"]\n and rhs is [FunctionCall: arguments[0] is va]]\n /* Exclude cases where 'key' is returned by Map.Entry.getKey() */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function.name == \"getKey\" and\n function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n ]\n ]\n /* Exclude cases where 'key' is returned by kotlin.collections.component1(Map.Entry), which is used for destructuring Map entries */\n and not va.enclosingFunction contains [AssignmentStatement: lhs is va\n and rhs is [FunctionCall: function is [Function: \n name == \"component1\"\n and namespace.name == \"kotlin.collections\"\n and parameterTypes[0] is [Type: name == \"kotlin.collections.Map.Entry\"]\n ]\n ]\n ]\n /* Exclude cases where 'key' is compared to the return of Map.Entry.getKey() */\n and not va.enclosingFunction contains [FunctionCall equalsFc: function.name == \"equals\"\n and equalsFc.arguments contains va\n and equalsFc.enclosingFunction contains [AssignmentStatement getKeyAs: getKeyAs.rhs is [FunctionCall getKeyFc: getKeyFc.function.name == \"getKey\"\n and function.enclosingClass.supers contains [Class: \n name == \"java.util.Map.Entry\"\n or name == \"kotlin.collections.Map.Entry\"\n ]\n and equalsFc.instance is [VariableAccess va2: va2 == getKeyAs.lhs.location]\n ]\n ]\n ]\n /* Exclude cases where 'key' is used as an arg for a spring redis database operation */\n and not va.enclosingFunction contains [FunctionCall redisFc: redisFc.arguments[0] == va\n and function.enclosingClass.supers contains [Class: name matches \"org\\.springframework\\.data\\.redis\\.core\\.(\\w)+Operations\"]\n ]\n " }, { "language": "java", @@ -1852,21 +1852,21 @@ "vuln_kingdom": "Code Quality", "vuln_category": "Android Bad Practices", "vuln_subcategory": "Use of Internal APIs", - "predicate": "\n FunctionCall fc:\n function is [Function:\n name == \"forName\"\n and enclosingClass.supers contains [Class:\n name == \"java.lang.Class\"\n ]\n ]\n and (\n /* Interal APIs */\n arguments[0].constantValue matches \".*\\.internal\\..*\"\n /* Hidden APIs */\n or arguments[0].constantValue is [String v:\n v == \"android.net.wifi.ActionListener\"\n or v == \"android.net.wifi.TxPacketCountListener\"\n or v == \"android.net.wifi.LocalOnlyHotspotSubscription\"\n or v == \"android.net.wifi.LocalOnlyHotspotObserver\"\n or v == \"android.net.wifi.WifiScanner\"\n or v == \"android.net.wifi.ActionListener\"\n or v == \"android.net.wifi.HiddenNetwork\"\n or v == \"android.net.wifi.PnoSettings\"\n or v == \"android.net.wifi.PnoNetwork\"\n or v == \"android.net.wifi.PnoScanListener\"\n or v == \"android.net.wifi.WifiChangeSettings\"\n or v == \"android.net.wifi.HotlistSettings\"\n or v == \"android.net.wifi.OperationResult\"\n or v == \"android.net.wifi.RssiPacketCountInfo\"\n or v == \"android.net.wifi.WifiWakeReasonAndCounts\"\n or v == \"android.net.wifi.RttManager\"\n or v == \"android.net.wifi.RttClient\"\n or v == \"android.net.wifi.WifiNetworkScoreCache\"\n or v == \"android.net.wifi.aware.WifiAwareNetworkSpecifier\"\n or v == \"android.net.wifi.aware.WifiAwareUtils\"\n or v == \"android.net.wifi.aware.TlvBufferUtils\"\n or v == \"android.net.wifi.aware.WifiAwareAgentNetworkSpecifier\"\n or v == \"android.net.wifi.aware.ConfigRequest\"\n or v == \"android.net.wifi.ParcelUtil\"\n or v == \"android.net.wifi.WifiSsid\"\n or v == \"android.net.wifi.WifiNetworkConnectionStatistics\"\n or v == \"android.net.wifi.BatchedScanResult\"\n or v == \"android.net.wifi.WifiLinkLayerStats\"\n or v == \"android.net.wifi.EAPConstants\"\n or v == \"android.net.wifi.SupplicantSaver\"\n or v == \"android.net.wifi.SupplicantLoader\"\n or v == \"android.net.wifi.PasspointManagementObjectDefinition\"\n or v == \"android.net.wifi.Visibility\"\n or v == \"android.net.wifi.NetworkSelectionStatus\"\n or v == \"android.net.wifi.RecentFailure\"\n or v == \"android.net.wifi.WifiConnectionStatistics\"\n or v == \"android.net.wifi.WifiActivityEnergyInfo\"\n or v == \"android.net.wifi.p2p.WifiP2pWfdInfo\"\n or v == \"android.net.wifi.p2p.PersistentGroupInfoListener\"\n or v == \"android.net.wifi.p2p.HandoverMessageListener\"\n or v == \"android.net.wifi.p2p.WifiP2pProvDiscEvent\"\n or v == \"android.net.wifi.p2p.WifiP2pGroupList\"\n or v == \"android.net.wifi.p2p.nsd.WifiP2pServiceResponse\"\n or v == \"android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceResponse\"\n or v == \"android.net.wifi.p2p.nsd.WifiP2pUpnpServiceResponse\"\n or v == \"android.net.wifi.WifiChannel\"\n or v == \"android.net.wifi.hotspot2.omadm.XMLNode\"\n or v == \"android.net.wifi.hotspot2.omadm.XMLParser\"\n or v == \"android.net.wifi.hotspot2.OsuProvider\"\n or v == \"android.net.wifi.hotspot2.pps.UpdateParameter\"\n or v == \"android.net.wifi.hotspot2.pps.Policy\"\n or v == \"android.net.wifi.ScanSettings\"\n or v == \"android.net.wifi.WpsResult\"\n or v == \"android.net.wifi.InformationElement\"\n or v == \"android.net.wifi.AnqpInformationElement\"\n or v == \"android.drm.DrmOutputStream\"\n or v == \"junit.framework.ComparisonCompactor\"\n or v == \"com.google.vr.platform.DeviceInfo\"\n or v == \"com.google.vr.platform.Dvr\"\n or v == \"org.apache.http.conn.ssl.AndroidDistinguishedNameParser\"\n or v == \"android.metrics.LogMaker\"\n or v == \"android.metrics.MetricsReader\"\n or v == \"android.metrics.Event\"\n or v == \"android.metrics.LogReader\"\n or v == \"android.database.CursorWindowAllocationException\"\n or v == \"android.database.BulkCursorDescriptor\"\n or v == \"android.database.BulkCursorNative\"\n or v == \"android.database.sqlite.SQLiteDebug\"\n or v == \"android.database.sqlite.SQLiteStatementInfo\"\n or v == \"android.database.sqlite.SQLiteDirectCursorDriver\"\n or v == \"android.database.sqlite.SQLiteGlobal\"\n or v == \"android.database.sqlite.CustomFunction\"\n or v == \"android.database.sqlite.SQLiteDatabaseConfiguration\"\n or v == \"android.database.sqlite.SQLiteCustomFunction\"\n or v == \"android.database.sqlite.SQLiteSession\"\n or v == \"android.database.sqlite.DatabaseObjectNotClosedException\"\n or v == \"android.database.sqlite.SQLiteConnectionPool\"\n or v == \"android.database.sqlite.SQLiteConnection\"\n or v == \"android.database.CursorToBulkCursorAdaptor\"\n or v == \"android.database.IBulkCursor\"\n or v == \"android.database.BulkCursorToCursorAdaptor\"\n or v == \"android.transition.AnimationInfo\"\n or v == \"android.transition.ChangeText\"\n or v == \"android.transition.Rotate\"\n or v == \"android.transition.Crossfade\"\n or v == \"android.transition.TransitionUtils\"\n or v == \"android.transition.Recolor\"\n or v == \"android.webkit.JsDialogHelper\"\n or v == \"android.webkit.WebViewFactory\"\n or v == \"android.webkit.TokenBindingService\"\n or v == \"android.webkit.WebViewDelegate\"\n or v == \"android.webkit.WebViewProviderInfo\"\n or v == \"android.webkit.UrlInterceptRegistry\"\n or v == \"android.webkit.Plugin\"\n or v == \"android.webkit.DefaultClickHandler\"\n or v == \"android.webkit.WebViewUpdateService\"\n or v == \"android.webkit.UrlInterceptHandler\"\n or v == \"android.webkit.WebViewProvider\"\n or v == \"android.webkit.PrivateAccess\"\n or v == \"android.webkit.ResultReceiver\"\n or v == \"android.webkit.WebViewProviderResponse\"\n or v == \"android.webkit.WebViewZygote\"\n or v == \"android.webkit.WebViewFactoryProvider\"\n or v == \"android.webkit.PluginList\"\n or v == \"android.webkit.FindAddress\"\n or v == \"android.webkit.FindActionModeCallback\"\n or v == \"android.webkit.PluginData\"\n or v == \"android.webkit.UserPackage\"\n or v == \"android.webkit.LegacyErrorStrings\"\n or v == \"android.printservice.recommendation.RecommendationInfo\"\n or v == \"android.printservice.recommendation.RecommendationService\"\n or v == \"android.printservice.PrintServiceInfo\"\n or v == \"android.hardware.SerialPort\"\n or v == \"android.hardware.soundtrigger.SoundTrigger\"\n or v == \"android.hardware.soundtrigger.KeyphraseEnrollmentInfo\"\n or v == \"android.hardware.soundtrigger.SoundTriggerModule\"\n or v == \"android.hardware.soundtrigger.KeyphraseMetadata\"\n or v == \"android.hardware.radio.RadioManager\"\n or v == \"android.hardware.radio.RadioMetadata\"\n or v == \"android.hardware.radio.Clock\"\n or v == \"android.hardware.radio.ProgramSelector\"\n or v == \"android.hardware.radio.RadioTuner\"\n or v == \"android.hardware.fingerprint.EnrollmentCallback\"\n or v == \"android.hardware.fingerprint.RemovalCallback\"\n or v == \"android.hardware.fingerprint.EnumerateCallback\"\n or v == \"android.hardware.fingerprint.LockoutResetCallback\"\n or v == \"android.hardware.fingerprint.Fingerprint\"\n or v == \"android.hardware.SystemSensorManager\"\n or v == \"android.hardware.input.InputDeviceIdentifier\"\n or v == \"android.hardware.input.TouchCalibration\"\n or v == \"android.hardware.input.OnTabletModeChangedListener\"\n or v == \"android.hardware.input.KeyboardLayout\"\n or v == \"android.hardware.input.InputManagerInternal\"\n or v == \"android.hardware.CameraStatus\"\n or v == \"android.hardware.location.GeofenceHardwareRequestParcelable\"\n or v == \"android.hardware.location.NanoApp\"\n or v == \"android.hardware.location.GeofenceHardwareRequest\"\n or v == \"android.hardware.location.ActivityRecognitionEvent\"\n or v == \"android.hardware.location.GeofenceHardwareCallback\"\n or v == \"android.hardware.location.GeofenceHardwareService\"\n or v == \"android.hardware.location.ContextHubInfo\"\n or v == \"android.hardware.location.NanoAppFilter\"\n or v == \"android.hardware.location.NanoAppInstanceInfo\"\n or v == \"android.hardware.location.ActivityRecognitionHardware\"\n or v == \"android.hardware.location.GeofenceHardwareMonitorEvent\"\n or v == \"android.hardware.location.GeofenceHardware\"\n or v == \"android.hardware.location.GeofenceHardwareImpl\"\n or v == \"android.hardware.location.GeofenceHardwareMonitorCallback\"\n or v == \"android.hardware.location.ContextHubMessage\"\n or v == \"android.hardware.location.ActivityChangedEvent\"\n or v == \"android.hardware.location.ContextHubManager\"\n or v == \"android.hardware.location.ICallback\"\n or v == \"android.hardware.location.MemoryRegion\"\n or v == \"android.hardware.hdmi.HdmiClient\"\n or v == \"android.hardware.hdmi.HdmiControlManager\"\n or v == \"android.hardware.hdmi.HdmiTimerRecordSources\"\n or v == \"android.hardware.hdmi.TimeUnit\"\n or v == \"android.hardware.hdmi.Time\"\n or v == \"android.hardware.hdmi.Duration\"\n or v == \"android.hardware.hdmi.TimerInfo\"\n or v == \"android.hardware.hdmi.TimerRecordSource\"\n or v == \"android.hardware.hdmi.HdmiTvClient\"\n or v == \"android.hardware.hdmi.HdmiHotplugEvent\"\n or v == \"android.hardware.hdmi.HdmiRecordSources\"\n or v == \"android.hardware.hdmi.RecordSource\"\n or v == \"android.hardware.hdmi.OwnSource\"\n or v == \"android.hardware.hdmi.AribData\"\n or v == \"android.hardware.hdmi.AtscData\"\n or v == \"android.hardware.hdmi.DvbData\"\n or v == \"android.hardware.hdmi.DigitalChannelData\"\n or v == \"android.hardware.hdmi.DigitalServiceSource\"\n or v == \"android.hardware.hdmi.AnalogueServiceSource\"\n or v == \"android.hardware.hdmi.ExternalPlugData\"\n or v == \"android.hardware.hdmi.ExternalPhysicalAddress\"\n or v == \"android.hardware.hdmi.HdmiPlaybackClient\"\n or v == \"android.hardware.hdmi.HdmiDeviceInfo\"\n or v == \"android.hardware.hdmi.HdmiRecordListener\"\n or v == \"android.hardware.hdmi.TimerStatusData\"\n or v == \"android.hardware.hdmi.HdmiPortInfo\"\n or v == \"android.hardware.usb.UsbPortStatus\"\n or v == \"android.hardware.usb.UsbPort\"\n or v == \"android.hardware.display.DisplayManagerInternal\"\n or v == \"android.hardware.display.DisplayManagerGlobal\"\n or v == \"android.hardware.display.WifiDisplayStatus\"\n or v == \"android.hardware.display.WifiDisplaySessionInfo\"\n or v == \"android.hardware.display.DisplayViewport\"\n or v == \"android.hardware.display.WifiDisplay\"\n or v == \"android.hardware.SerialManager\"\n or v == \"android.hardware.CameraInfo\"\n or v == \"android.hardware.LegacySensorManager\"\n or v == \"android.hardware.camera2.impl.ICameraDeviceUserWrapper\"\n or v == \"android.hardware.camera2.impl.CaptureResultExtras\"\n or v == \"android.hardware.camera2.utils.LongParcelable\"\n or v == \"android.hardware.camera2.utils.UncheckedThrow\"\n or v == \"android.hardware.camera2.utils.SubmitInfo\"\n or v == \"android.hardware.camera2.params.StreamConfigurationDuration\"\n or v == \"android.hardware.camera2.params.ReprocessFormatsMap\"\n or v == \"android.hardware.camera2.params.HighSpeedVideoConfiguration\"\n or v == \"android.hardware.camera2.params.VendorTagDescriptorCache\"\n or v == \"android.hardware.camera2.params.VendorTagDescriptor\"\n or v == \"android.hardware.camera2.params.StreamConfiguration\"\n or v == \"android.net.NetworkStatsHistory\"\n or v == \"android.net.metrics.RaEvent\"\n or v == \"android.net.metrics.DefaultNetworkEvent\"\n or v == \"android.net.metrics.WakeupEvent\"\n or v == \"android.net.metrics.ConnectStats\"\n or v == \"android.net.metrics.IpConnectivityLog\"\n or v == \"android.net.metrics.DhcpClientEvent\"\n or v == \"android.net.metrics.DnsEvent\"\n or v == \"android.net.metrics.ValidationProbeEvent\"\n or v == \"android.net.metrics.NetworkMetrics\"\n or v == \"android.net.metrics.DhcpErrorEvent\"\n or v == \"android.net.metrics.IpManagerEvent\"\n or v == \"android.net.metrics.IpReachabilityEvent\"\n or v == \"android.net.metrics.WakeupStats\"\n or v == \"android.net.metrics.ApfProgramEvent\"\n or v == \"android.net.metrics.ApfStats\"\n or v == \"android.net.metrics.NetworkEvent\"\n or v == \"android.net.Status\"\n or v == \"android.net.PacketKeepaliveCallback\"\n or v == \"android.net.PacketKeepalive\"\n or v == \"android.net.OnStartTetheringCallback\"\n or v == \"android.net.Errors\"\n or v == \"android.net.TooManyRequestsException\"\n or v == \"android.net.DataUsageRequest\"\n or v == \"android.net.IpConfiguration\"\n or v == \"android.net.InterfaceConfiguration\"\n or v == \"android.net.SntpClient\"\n or v == \"android.net.IpSecTransformResponse\"\n or v == \"android.net.ScoredNetwork\"\n or v == \"android.net.NetworkKey\"\n or v == \"android.net.NetworkIdentity\"\n or v == \"android.net.NetworkPolicy\"\n or v == \"android.net.NetworkUtils\"\n or v == \"android.net.DhcpResults\"\n or v == \"android.net.StaticIpConfiguration\"\n or v == \"android.net.MatchAllNetworkSpecifier\"\n or v == \"android.net.NetworkPolicyManager\"\n or v == \"android.net.NetworkScoreManager\"\n or v == \"android.net.StringNetworkSpecifier\"\n or v == \"android.net.MobileLinkQualityInfo\"\n or v == \"android.net.LinkQualityInfo\"\n or v == \"android.net.NetworkConfig\"\n or v == \"android.net.NetworkStats\"\n or v == \"android.net.RssiCurve\"\n or v == \"android.net.PacProxySelector\"\n or v == \"android.net.EthernetManager\"\n or v == \"android.net.UidRange\"\n or v == \"android.net.IpSecSpiResponse\"\n or v == \"android.net.NetworkTemplate\"\n or v == \"android.net.NetworkState\"\n or v == \"android.net.WifiLinkQualityInfo\"\n or v == \"android.net.NetworkQuotaInfo\"\n or v == \"android.net.WifiKey\"\n or v == \"android.net.wimax.WimaxManagerConstants\"\n or v == \"android.net.NetworkMisc\"\n or v == \"android.net.ConnectivityMetricsEvent\"\n or v == \"android.net.ConnectivityThread\"\n or v == \"android.net.NetworkAgent\"\n or v == \"android.net.IpSecUdpEncapResponse\"\n or v == \"android.net.CompareResult\"\n or v == \"android.net.IpSecConfig\"\n or v == \"android.net.NetworkRecommendationProvider\"\n or v == \"android.net.NetworkScorerAppData\"\n or v == \"android.net.nsd.DnsSdTxtRecord\"\n or v == \"android.net.NetworkFactory\"\n or v == \"android.app.ActivityManagerNative\"\n or v == \"android.app.BackStackRecord\"\n or v == \"android.app.PackageInstallObserver\"\n or v == \"android.app.LoadedApk\"\n or v == \"android.app.StackId\"\n or v == \"android.app.TaskThumbnailInfo\"\n or v == \"android.app.TaskThumbnail\"\n or v == \"android.app.TaskSnapshot\"\n or v == \"android.app.StackInfo\"\n or v == \"android.app.OnUidImportanceListener\"\n or v == \"android.app.assist.AutofillOverlay\"\n or v == \"android.app.TranslucentConversionListener\"\n or v == \"android.app.ActivityManagerInternal\"\n or v == \"android.app.ApplicationPackageManager\"\n or v == \"android.app.MoveCallbackDelegate\"\n or v == \"android.app.WaitResult\"\n or v == \"android.app.UiAutomationConnection\"\n or v == \"android.app.timezone.RulesManager\"\n or v == \"android.app.timezone.RulesState\"\n or v == \"android.app.timezone.Callback\"\n or v == \"android.app.timezone.DistroFormatVersion\"\n or v == \"android.app.timezone.DistroRulesVersion\"\n or v == \"android.app.timezone.RulesUpdaterContract\"\n or v == \"android.app.VrManager\"\n or v == \"android.app.ActivityView\"\n or v == \"android.app.ActivityThread\"\n or v == \"android.app.ContentProviderHolder\"\n or v == \"android.app.BroadcastOptions\"\n or v == \"android.app.JobSchedulerImpl\"\n or v == \"android.app.ResultInfo\"\n or v == \"android.app.TvExtender\"\n or v == \"android.app.UserSwitchObserver\"\n or v == \"android.app.admin.PasswordMetrics\"\n or v == \"android.app.admin.PolicyInfo\"\n or v == \"android.app.admin.DevicePolicyManagerInternal\"\n or v == \"android.app.ResourcesManager\"\n or v == \"android.app.PackageOps\"\n or v == \"android.app.OpEntry\"\n or v == \"android.app.OnOpChangedInternalListener\"\n or v == \"android.app.QueuedWork\"\n or v == \"android.app.ServiceStartArgs\"\n or v == \"android.app.usage.TimeSparseArray\"\n or v == \"android.app.usage.UsageStatsManagerInternal\"\n or v == \"android.app.usage.CacheQuotaService\"\n or v == \"android.app.usage.CacheQuotaHint\"\n or v == \"android.app.TaskStackListener\"\n or v == \"android.app.AppGlobals\"\n or v == \"android.app.StatusBarManager\"\n or v == \"android.app.OnMarshaledListener\"\n or v == \"android.app.ApplicationThreadConstants\"\n or v == \"android.app.EphemeralResolverService\"\n or v == \"android.app.ParcelableCrashInfo\"\n or v == \"android.app.job.JobHandler\"\n or v == \"android.app.Vr2dDisplayProperties\"\n or v == \"android.app.ProfilerInfo\"\n or v == \"android.app.trust.TrustManager\"\n or v == \"android.app.SearchDialog\"\n or v == \"android.app.InstantAppResolverService\"\n or v == \"android.app.OnActivityPausedListener\"\n or v == \"android.app.ActionKeyInfo\"\n or v == \"android.app.backup.BackupHelperDispatcher\"\n or v == \"android.app.backup.BackupManagerMonitor\"\n or v == \"android.app.backup.RestoreDescription\"\n or v == \"android.app.backup.SelectBackupTransportCallback\"\n or v == \"android.app.backup.BackupProgress\"\n or v == \"android.app.backup.AbsoluteFileBackupHelper\"\n or v == \"android.app.backup.FullBackup\"\n or v == \"android.app.backup.RestoreSession\"\n or v == \"android.app.backup.RestoreSet\"\n or v == \"android.app.backup.BlobBackupHelper\"\n or v == \"android.app.backup.BackupObserver\"\n or v == \"android.app.backup.WallpaperBackupHelper\"\n or v == \"android.app.backup.BackupTransport\"\n or v == \"android.app.SynchronousUserSwitchObserver\"\n or v == \"android.app.RecoverableSecurityException\"\n or v == \"android.app.LocalDialog\"\n or v == \"android.app.ApplicationLoaders\"\n or v == \"android.app.PackageDeleteObserver\"\n or v == \"android.app.OnAnimationStartedListener\"\n or v == \"android.app.OnAnimationFinishedListener\"\n or v == \"android.app.VrStateCallback\"\n or v == \"android.widget.SuggestionsAdapter\"\n or v == \"android.widget.DropDownListView\"\n or v == \"android.widget.ActionMenuChildView\"\n or v == \"android.widget.AppSecurityPermissions\"\n or v == \"android.widget.MyPermissionGroupInfo\"\n or v == \"android.widget.MyPermissionInfo\"\n or v == \"android.widget.PermissionItemView\"\n or v == \"android.widget.RadialTimePickerView\"\n or v == \"android.widget.Editor\"\n or v == \"android.widget.RemoteViewsAdapter\"\n or v == \"android.widget.RemoteViewsListAdapter\"\n or v == \"android.widget.MenuItemHoverListener\"\n or v == \"android.widget.MenuPopupWindow\"\n or v == \"android.widget.MenuDropDownListView\"\n or v == \"android.widget.CustomEditText\"\n or v == \"android.widget.TextInputTimePickerView\"\n or v == \"android.widget.ScrollBarDrawable\"\n or v == \"android.widget.SearchAutoComplete\"\n or v == \"android.widget.ActivityChooserView\"\n or v == \"android.widget.ActionMenuPresenter\"\n or v == \"android.widget.DatePickerDelegate\"\n or v == \"android.widget.ValidationCallback\"\n or v == \"android.widget.OnClickHandler\"\n or v == \"android.widget.OnViewAppliedListener\"\n or v == \"android.widget.ForwardingListener\"\n or v == \"android.widget.DateTimeView\"\n or v == \"android.widget.DatePickerController\"\n or v == \"android.widget.TextViewMetrics\"\n or v == \"android.widget.Delayer\"\n or v == \"android.widget.ActivityChooserModel\"\n or v == \"android.widget.SpellChecker\"\n or v == \"android.util.MergedConfiguration\"\n or v == \"android.util.PackageUtils\"\n or v == \"android.util.Spline\"\n or v == \"android.util.LocalLog\"\n or v == \"android.util.apk.ApkSignatureSchemeV2Verifier\"\n or v == \"android.util.proto.ProtoParseException\"\n or v == \"android.util.proto.EncodedBuffer\"\n or v == \"android.util.SuperNotCalledException\"\n or v == \"android.util.BackupUtils\"\n or v == \"android.util.Singleton\"\n or v == \"android.util.jar.StrictJarFile\"\n or v == \"android.util.jar.ZipInflaterInputStream\"\n or v == \"android.util.jar.FDStream\"\n or v == \"android.util.jar.StrictJarManifest\"\n or v == \"android.util.Pools\"\n or v == \"android.util.PrefixPrinter\"\n or v == \"android.util.PathParser\"\n or v == \"android.util.LongArray\"\n or v == \"android.util.MathUtils\"\n or v == \"android.util.FastImmutableArraySet\"\n or v == \"android.util.IntArray\"\n or v == \"android.util.ExceptionUtils\"\n or v == \"android.util.MemoryIntArray\"\n or v == \"android.util.DayOfMonthCursor\"\n or v == \"android.util.TrustedTime\"\n or v == \"android.util.ByteStringUtils\"\n or v == \"android.util.TerribleFailure\"\n or v == \"android.util.TerribleFailureHandler\"\n or v == \"android.util.NtpTrustedTime\"\n or v == \"android.util.TimingsTraceLog\"\n or v == \"android.util.IconDrawableFactory\"\n or v == \"android.util.LongSparseLongArray\"\n or v == \"android.util.RecurrenceRule\"\n or v == \"android.util.Slog\"\n or v == \"android.util.LauncherIcons\"\n or v == \"android.util.LogWriter\"\n or v == \"android.util.MapCollections\"\n or v == \"android.util.TimedRemoteCaller\"\n or v == \"android.util.KeyValueListParser\"\n or v == \"android.security.net.config.ApplicationConfig\"\n or v == \"android.security.net.config.ConfigSource\"\n or v == \"android.security.net.config.UserCertificateSource\"\n or v == \"android.security.net.config.CertificatesEntryRef\"\n or v == \"android.security.net.config.SystemCertificateSource\"\n or v == \"android.security.net.config.NetworkSecurityConfig\"\n or v == \"android.security.net.config.Builder\"\n or v == \"android.security.net.config.TrustAnchor\"\n or v == \"android.security.net.config.NetworkSecurityTrustManager\"\n or v == \"android.security.net.config.XmlConfigSource\"\n or v == \"android.security.net.config.Pin\"\n or v == \"android.security.net.config.ResourceCertificateSource\"\n or v == \"android.security.net.config.RootTrustManager\"\n or v == \"android.security.net.config.ManifestConfigSource\"\n or v == \"android.security.net.config.DirectoryCertificateSource\"\n or v == \"android.security.net.config.CertificateSource\"\n or v == \"android.security.net.config.PinSet\"\n or v == \"android.security.net.config.ConfigNetworkSecurityPolicy\"\n or v == \"android.security.net.config.TrustedCertificateStoreAdapter\"\n or v == \"android.security.net.config.RootTrustManagerFactorySpi\"\n or v == \"android.security.net.config.NetworkSecurityConfigProvider\"\n or v == \"android.security.net.config.Domain\"\n or v == \"android.security.keymaster.KeyCharacteristics\"\n or v == \"android.security.keymaster.KeymasterArguments\"\n or v == \"android.security.keymaster.KeyAttestationApplicationId\"\n or v == \"android.security.keymaster.ExportResult\"\n or v == \"android.security.keymaster.KeymasterDefs\"\n or v == \"android.security.keymaster.KeymasterCertificateChain\"\n or v == \"android.security.keymaster.KeymasterDateArgument\"\n or v == \"android.security.keymaster.KeymasterBooleanArgument\"\n or v == \"android.security.keymaster.KeymasterArgument\"\n or v == \"android.security.keymaster.KeymasterBlob\"\n or v == \"android.security.keymaster.OperationResult\"\n or v == \"android.security.keymaster.KeymasterBlobArgument\"\n or v == \"android.security.keymaster.KeyAttestationPackageInfo\"\n or v == \"android.security.keymaster.KeymasterIntArgument\"\n or v == \"android.security.keymaster.KeymasterLongArgument\"\n or v == \"android.security.FrameworkNetworkSecurityPolicy\"\n or v == \"android.security.KeystoreArguments\"\n or v == \"android.inputmethodservice.CompactExtractEditLayout\"\n or v == \"android.inputmethodservice.SoftInputWindow\"\n or v == \"android.inputmethodservice.ExtractEditLayout\"\n or v == \"android.provider.Presence\"\n or v == \"android.provider.SearchIndexableData\"\n or v == \"android.provider.SearchIndexablesContract\"\n or v == \"android.provider.SearchIndexablesProvider\"\n or v == \"android.provider.SyncConstValue\"\n or v == \"android.provider.OneTimeUseBuilder\"\n or v == \"android.provider.BrowserContract\"\n or v == \"android.provider.BaseSyncColumns\"\n or v == \"android.provider.ChromeSyncColumns\"\n or v == \"android.provider.SyncColumns\"\n or v == \"android.provider.ImageColumns\"\n or v == \"android.provider.Accounts\"\n or v == \"android.provider.Searches\"\n or v == \"android.provider.SyncState\"\n or v == \"android.provider.Combined\"\n or v == \"android.provider.Settings\"\n or v == \"android.provider.SettingsStringUtil\"\n or v == \"android.provider.Impl\"\n or v == \"android.provider.SearchIndexableResource\"\n or v == \"android.provider.MetadataReader\"\n or v == \"android.provider.Authorization\"\n or v == \"android.provider.SyncStateColumns\"\n or v == \"android.provider.PhotoFiles\"\n or v == \"android.provider.PhotoFilesColumns\"\n or v == \"android.provider.MetadataSyncColumns\"\n or v == \"android.provider.MetadataSync\"\n or v == \"android.provider.MetadataSyncStateColumns\"\n or v == \"android.provider.MetadataSyncState\"\n or v == \"android.provider.Validator\"\n or v == \"android.provider.Bookmarks\"\n or v == \"android.provider.TimeZoneRulesDataContract\"\n or v == \"android.provider.ContactsInternal\"\n or v == \"android.provider.CalendarMetaDataColumns\"\n or v == \"android.provider.CalendarMetaData\"\n or v == \"android.provider.EventsRawTimesColumns\"\n or v == \"android.provider.EventsRawTimes\"\n or v == \"android.provider.SystemContract\"\n or v == \"android.animation.AnimationHandler\"\n or v == \"android.animation.AnimationFrameCallbackProvider\"\n or v == \"android.animation.Tuple\"\n or v == \"android.animation.RevealAnimator\"\n or v == \"android.animation.KeyframeSet\"\n or v == \"android.animation.PropertyValues\"\n or v == \"android.animation.Keyframes\"\n or v == \"android.animation.PathKeyframes\"\n or v == \"android.content.pm.MacAuthenticatedInputStream\"\n or v == \"android.content.pm.InstantAppInfo\"\n or v == \"android.content.pm.split.SplitAssetDependencyLoader\"\n or v == \"android.content.pm.split.SplitAssetLoader\"\n or v == \"android.content.pm.split.DefaultSplitAssetLoader\"\n or v == \"android.content.pm.split.SplitDependencyLoader\"\n or v == \"android.content.pm.KeySet\"\n or v == \"android.content.pm.StringParceledListSlice\"\n or v == \"android.content.pm.VerifierInfo\"\n or v == \"android.content.pm.InstantAppRequest\"\n or v == \"android.content.pm.PackageBackwardCompatibility\"\n or v == \"android.content.pm.PackageManagerInternal\"\n or v == \"android.content.pm.InstantAppResolveInfo\"\n or v == \"android.content.pm.InstantAppDigest\"\n or v == \"android.content.pm.BaseParceledListSlice\"\n or v == \"android.content.pm.IntentFilterVerificationInfo\"\n or v == \"android.content.pm.OnPermissionsChangedListener\"\n or v == \"android.content.pm.MoveCallback\"\n or v == \"android.content.pm.LegacyPackageInstallObserver\"\n or v == \"android.content.pm.LegacyPackageDeleteObserver\"\n or v == \"android.content.pm.DexModuleRegisterCallback\"\n or v == \"android.content.pm.AppsQueryHelper\"\n or v == \"android.content.pm.FallbackCategoryProvider\"\n or v == \"android.content.pm.LimitedLengthInputStream\"\n or v == \"android.content.pm.VerificationParams\"\n or v == \"android.content.pm.PackageInfoLite\"\n or v == \"android.content.pm.PackageUserState\"\n or v == \"android.content.pm.SessionCallbackDelegate\"\n or v == \"android.content.pm.AuxiliaryResolveInfo\"\n or v == \"android.content.pm.RegisteredServicesCache\"\n or v == \"android.content.pm.InstantAppIntentFilter\"\n or v == \"android.content.pm.UserInfo\"\n or v == \"android.content.pm.PackageCleanItem\"\n or v == \"android.content.pm.XmlSerializerAndParser\"\n or v == \"android.content.pm.ParceledListSlice\"\n or v == \"android.content.pm.VerifierDeviceIdentity\"\n or v == \"android.content.pm.EphemeralResolveInfo\"\n or v == \"android.content.pm.EphemeralDigest\"\n or v == \"android.content.pm.EphemeralIntentFilter\"\n or v == \"android.content.pm.SELinuxUtil\"\n or v == \"android.content.pm.PackageParserCacheHelper\"\n or v == \"android.content.pm.permission.RuntimePermissionPresenter\"\n or v == \"android.content.pm.permission.RuntimePermissionPresentationInfo\"\n or v == \"android.content.pm.RegisteredServicesCacheListener\"\n or v == \"android.content.pm.PackageParser\"\n or v == \"android.content.pm.NewPermissionInfo\"\n or v == \"android.content.pm.SplitPermissionInfo\"\n or v == \"android.content.pm.ParseComponentArgs\"\n or v == \"android.content.pm.ShortcutServiceInternal\"\n or v == \"android.content.res.ResourcesKey\"\n or v == \"android.content.res.GradientColor\"\n or v == \"android.content.res.ComplexColor\"\n or v == \"android.content.res.ConfigurationBoundResourceCache\"\n or v == \"android.content.res.StringBlock\"\n or v == \"android.content.res.ResourceId\"\n or v == \"android.content.res.ResourcesImpl\"\n or v == \"android.content.res.CompatResources\"\n or v == \"android.content.res.ConstantState\"\n or v == \"android.content.res.XmlBlock\"\n or v == \"android.content.res.FontResourcesParser\"\n or v == \"android.content.res.CompatibilityInfo\"\n or v == \"android.content.res.Translator\"\n or v == \"android.content.OpenResourceIdResult\"\n or v == \"android.content.Transport\"\n or v == \"android.content.ContentInsertHandler\"\n or v == \"android.content.DefaultDataHandler\"\n or v == \"android.content.SyncActivityTooManyDeletes\"\n or v == \"android.content.DatabaseHelper\"\n or v == \"android.content.om.OverlayInfo\"\n or v == \"android.content.SyncStatusInfo\"\n or v == \"android.content.UndoOwner\"\n or v == \"android.content.CursorEntityIterator\"\n or v == \"android.content.ContentProviderNative\"\n or v == \"android.content.IContentProvider\"\n or v == \"android.content.SyncAdaptersCache\"\n or v == \"android.content.UndoManager\"\n or v == \"android.content.UndoOperation\"\n or v == \"android.content.CommandOptionHandler\"\n or v == \"android.print.PrintServiceRecommendationsLoader\"\n or v == \"android.print.PrintJobStateChangeListener\"\n or v == \"android.print.PrintServicesChangeListener\"\n or v == \"android.print.PrintServiceRecommendationsChangeListener\"\n or v == \"android.print.PrintDocumentAdapterDelegate\"\n or v == \"android.print.PrintJobStateChangeListenerWrapper\"\n or v == \"android.print.PrintServicesChangeListenerWrapper\"\n or v == \"android.print.PrintServiceRecommendationsChangeListenerWrapper\"\n or v == \"android.print.PrintFileDocumentAdapter\"\n or v == \"android.print.PrintServicesLoader\"\n or v == \"android.print.PrinterDiscoverySession\"\n or v == \"android.speech.tts.TtsEngines\"\n or v == \"android.preference.SeekBarVolumizer\"\n or v == \"android.preference.SeekBarDialogPreference\"\n or v == \"android.preference.MultiCheckPreference\"\n or v == \"android.preference.OnPreferenceTreeClickListener\"\n or v == \"android.preference.SeekBarPreference\"\n or v == \"android.preference.VolumePreference\"\n or v == \"android.preference.GenericInflater\"\n or v == \"android.preference.PreferenceGroupAdapter\"\n or v == \"android.preference.PreferenceFrameLayout\"\n or v == \"android.permissionpresenterservice.RuntimePermissionPresenterService\"\n or v == \"android.accounts.ChooseAccountTypeActivity\"\n or v == \"android.accounts.GrantCredentialsPermissionActivity\"\n or v == \"android.accounts.ChooseTypeAndAccountActivity\"\n or v == \"android.accounts.AccountManagerInternal\"\n or v == \"android.accounts.AccountManagerResponse\"\n or v == \"android.accounts.AccountAndUser\"\n or v == \"android.accounts.CantAddAccountActivity\"\n or v == \"android.accounts.ChooseAccountActivity\"\n or v == \"android.appwidget.PendingHostUpdate\"\n or v == \"android.nfc.dta.NfcDta\"\n or v == \"android.nfc.BeamShareData\"\n or v == \"android.nfc.cardemulation.ApduServiceInfo\"\n or v == \"android.nfc.cardemulation.AidGroup\"\n or v == \"android.nfc.cardemulation.NfcFServiceInfo\"\n or v == \"android.nfc.NfcUnlockHandler\"\n or v == \"android.nfc.NfcActivityManager\"\n or v == \"android.nfc.TechListParcel\"\n or v == \"android.nfc.ApduList\"\n or v == \"android.nfc.ErrorCodes\"\n or v == \"android.nfc.TransceiveResult\"\n or v == \"android.bluetooth.BluetoothCodecStatus\"\n or v == \"android.bluetooth.SdpRecord\"\n or v == \"android.bluetooth.BluetoothActivityEnergyInfo\"\n or v == \"android.bluetooth.SdpOppOpsRecord\"\n or v == \"android.bluetooth.SdpSapsRecord\"\n or v == \"android.bluetooth.BluetoothUuid\"\n or v == \"android.bluetooth.BluetoothA2dpSink\"\n or v == \"android.bluetooth.BluetoothHeadsetClientCall\"\n or v == \"android.bluetooth.BluetoothHeadsetClient\"\n or v == \"android.bluetooth.BluetoothAvrcpController\"\n or v == \"android.bluetooth.BluetoothPbapClient\"\n or v == \"android.bluetooth.BluetoothMapClient\"\n or v == \"android.bluetooth.UidTraffic\"\n or v == \"android.bluetooth.le.PeriodicAdvertisingManager\"\n or v == \"android.bluetooth.le.PeriodicAdvertisingReport\"\n or v == \"android.bluetooth.le.TruncatedFilter\"\n or v == \"android.bluetooth.le.BluetoothLeUtils\"\n or v == \"android.bluetooth.le.PeriodicAdvertisingCallback\"\n or v == \"android.bluetooth.le.ResultStorageDescriptor\"\n or v == \"android.bluetooth.BluetoothStateChangeCallback\"\n or v == \"android.bluetooth.StateChangeCallbackWrapper\"\n or v == \"android.bluetooth.BluetoothPan\"\n or v == \"android.bluetooth.BluetoothGattIncludedService\"\n or v == \"android.bluetooth.BluetoothAvrcp\"\n or v == \"android.bluetooth.BluetoothAvrcpPlayerSettings\"\n or v == \"android.bluetooth.BluetoothSap\"\n or v == \"android.bluetooth.BluetoothMasInstance\"\n or v == \"android.bluetooth.BluetoothDevicePicker\"\n or v == \"android.bluetooth.BluetoothHidHost\"\n or v == \"android.bluetooth.BluetoothCodecConfig\"\n or v == \"android.bluetooth.SdpMasRecord\"\n or v == \"android.bluetooth.BluetoothPbap\"\n or v == \"android.bluetooth.BluetoothAudioConfig\"\n or v == \"android.bluetooth.BluetoothMap\"\n or v == \"android.bluetooth.SdpPseRecord\"\n or v == \"android.bluetooth.SdpMnsRecord\"\n or v == \"android.bluetooth.OobData\"\n or v == \"android.view.InputFilter\"\n or v == \"android.view.HandlerActionQueue\"\n or v == \"android.view.WindowInfo\"\n or v == \"android.view.inputmethod.FinishedInputEventCallback\"\n or v == \"android.view.inputmethod.InputMethodSubtypeArray\"\n or v == \"android.view.inputmethod.InputMethodManagerInternal\"\n or v == \"android.view.inputmethod.SparseRectFArray\"\n or v == \"android.view.inputmethod.SparseRectFArrayBuilder\"\n or v == \"android.view.inputmethod.InputConnectionInspector\"\n or v == \"android.view.WindowManagerInternal\"\n or v == \"android.view.SurfaceControl\"\n or v == \"android.view.ViewHierarchyEncoder\"\n or v == \"android.view.OnWindowDismissedCallback\"\n or v == \"android.view.OnWindowSwipeDismissedCallback\"\n or v == \"android.view.WindowControllerCallback\"\n or v == \"android.view.InputChannel\"\n or v == \"android.view.InputEventReceiver\"\n or v == \"android.view.OnWindowShownListener\"\n or v == \"android.view.InternalInsetsInfo\"\n or v == \"android.view.OnComputeInternalInsetsListener\"\n or v == \"android.view.OnEnterAnimationCompleteListener\"\n or v == \"android.view.WindowManagerGlobal\"\n or v == \"android.view.textclassifier.TextClassifierConstants\"\n or v == \"android.view.textclassifier.TextClassifierImpl\"\n or v == \"android.view.textclassifier.LinksInfo\"\n or v == \"android.view.textclassifier.EntityConfidence\"\n or v == \"android.view.InputEventSender\"\n or v == \"android.view.FrameInfo\"\n or v == \"android.view.ViewRootImpl\"\n or v == \"android.view.RenderNode\"\n or v == \"android.view.animation.TranslateYAnimation\"\n or v == \"android.view.animation.ClipRectAnimation\"\n or v == \"android.view.animation.TranslateXAnimation\"\n or v == \"android.view.autofill.AutofillPopupWindow\"\n or v == \"android.view.autofill.Helper\"\n or v == \"android.view.autofill.AutofillClient\"\n or v == \"android.view.autofill.ParcelableMap\"\n or v == \"android.view.autofill.AutofillManagerInternal\"\n or v == \"android.view.RecordingCanvas\"\n or v == \"android.view.ThreadedRenderer\"\n or v == \"android.view.DisplayEventReceiver\"\n or v == \"android.view.GhostView\"\n or v == \"android.view.NotificationHeaderView\"\n or v == \"android.view.RenderNodeAnimator\"\n or v == \"android.view.WindowManagerPolicy\"\n or v == \"android.view.FinishedInputEventCallback\"\n or v == \"android.view.WindowCallbackWrapper\"\n or v == \"android.view.FallbackAction\"\n or v == \"android.view.DisplayAdjustments\"\n or v == \"android.view.AppTransitionAnimationSpec\"\n or v == \"android.view.InputEventConsistencyVerifier\"\n or v == \"android.view.KeyboardShortcutsReceiver\"\n or v == \"android.view.FallbackEventHandler\"\n or v == \"android.view.ViewReplaceRunnable\"\n or v == \"android.view.WindowCallbacks\"\n or v == \"android.view.WindowManagerImpl\"\n or v == \"android.view.RenderNodeAnimatorSetHelper\"\n or v == \"android.view.MagnificationSpec\"\n or v == \"android.view.DisplayListCanvas\"\n or v == \"android.view.accessibility.AccessibilityServicesStateChangeListener\"\n or v == \"android.view.accessibility.HighTextContrastChangeListener\"\n or v == \"android.view.accessibility.AccessibilityInteractionClient\"\n or v == \"android.view.accessibility.AccessibilityCache\"\n or v == \"android.view.Estimator\"\n or v == \"android.view.HierarchyHandler\"\n or v == \"android.view.DisplayInfo\"\n or v == \"android.view.HardwareLayer\"\n or v == \"android.view.SurfaceSession\"\n or v == \"android.view.BatchedInputEventReceiver\"\n or v == \"android.view.FrameMetricsObserver\"\n or v == \"android.view.FocusFinderHelper\"\n or v == \"android.view.AccessibilityIterators\"\n or v == \"android.view.TextSegmentIterator\"\n or v == \"android.view.AbstractTextSegmentIterator\"\n or v == \"android.view.SubUiVisibilityListener\"\n or v == \"android.accessibilityservice.CapabilityInfo\"\n or v == \"android.accessibilityservice.TouchPoint\"\n or v == \"android.accessibilityservice.GestureStep\"\n or v == \"android.accessibilityservice.MotionEventGenerator\"\n or v == \"android.accessibilityservice.Callbacks\"\n or v == \"android.accessibilityservice.IAccessibilityServiceClientWrapper\"\n or v == \"android.os.MyReadMapCallback\"\n or v == \"android.os.SynchronousResultReceiver\"\n or v == \"android.os.BatteryProperty\"\n or v == \"android.os.NoImagePreloadHolder\"\n or v == \"android.os.IHwInterface\"\n or v == \"android.os.PerformanceCollector\"\n or v == \"android.os.SystemVibrator\"\n or v == \"android.os.IServiceManager\"\n or v == \"android.os.HidlSupport\"\n or v == \"android.os.ServiceSpecificException\"\n or v == \"android.os.UserEnvironment\"\n or v == \"android.os.AsyncResult\"\n or v == \"android.os.PowerSaveState\"\n or v == \"android.os.Broadcaster\"\n or v == \"android.os.FactoryTest\"\n or v == \"android.os.HwParcel\"\n or v == \"android.os.IHwBinder\"\n or v == \"android.os.ParcelableException\"\n or v == \"android.os.ShellCommand\"\n or v == \"android.os.ServiceManager\"\n or v == \"android.os.ServiceNotFoundException\"\n or v == \"android.os.ProcessStartResult\"\n or v == \"android.os.SELinux\"\n or v == \"android.os.ReadWriteHelper\"\n or v == \"android.os.NullVibrator\"\n or v == \"android.os.VintfObject\"\n or v == \"android.os.BatteryProperties\"\n or v == \"android.os.HwBinder\"\n or v == \"android.os.HwRemoteBinder\"\n or v == \"android.os.GraphicsEnvironment\"\n or v == \"android.os.ShellCallback\"\n or v == \"android.os.IncidentManager\"\n or v == \"android.os.FileUtils\"\n or v == \"android.os.health.HealthStatsWriter\"\n or v == \"android.os.health.HealthKeys\"\n or v == \"android.os.health.Constants\"\n or v == \"android.os.health.HealthStatsParceler\"\n or v == \"android.os.ParcelableParcel\"\n or v == \"android.os.PowerManagerInternal\"\n or v == \"android.os.Temperature\"\n or v == \"android.os.BatteryStats\"\n or v == \"android.os.ZygoteProcess\"\n or v == \"android.os.ViolationListener\"\n or v == \"android.os.StrictModeViolation\"\n or v == \"android.os.StrictModeNetworkViolation\"\n or v == \"android.os.StrictModeDiskReadViolation\"\n or v == \"android.os.StrictModeDiskWriteViolation\"\n or v == \"android.os.StrictModeCustomViolation\"\n or v == \"android.os.StrictModeResourceMismatchViolation\"\n or v == \"android.os.StrictModeUnbufferedIOViolation\"\n or v == \"android.os.Span\"\n or v == \"android.os.ViolationInfo\"\n or v == \"android.os.storage.StorageManagerInternal\"\n or v == \"android.os.storage.StorageResultCode\"\n or v == \"android.os.storage.VolumeRecord\"\n or v == \"android.os.storage.DiskInfo\"\n or v == \"android.os.storage.VolumeInfo\"\n or v == \"android.os.storage.StorageEventListener\"\n or v == \"android.os.SystemProperties\"\n or v == \"android.os.RemoteCallback\"\n or v == \"android.os.Registrant\"\n or v == \"android.os.RevocableFileDescriptor\"\n or v == \"android.os.UEventObserver\"\n or v == \"android.os.ServiceManagerNative\"\n or v == \"android.os.UpdateEngine\"\n or v == \"android.os.BatteryManagerInternal\"\n or v == \"android.os.UpdateLock\"\n or v == \"android.os.OneShot\"\n or v == \"android.os.Waveform\"\n or v == \"android.os.Prebaked\"\n or v == \"android.os.EnforcingUser\"\n or v == \"android.os.PooledStringReader\"\n or v == \"android.os.CommonClock\"\n or v == \"android.os.IncidentReportArgs\"\n or v == \"android.os.RemoteMailException\"\n or v == \"android.os.CommonTimeConfig\"\n or v == \"android.os.RegistrantList\"\n or v == \"android.os.HwBlob\"\n or v == \"android.os.FileBridge\"\n or v == \"android.os.UserManagerInternal\"\n or v == \"android.os.SystemService\"\n or v == \"android.os.Seccomp\"\n or v == \"android.os.VintfRuntimeInfo\"\n or v == \"android.os.UpdateEngineCallback\"\n or v == \"android.os.TransactionTracker\"\n or v == \"android.os.ConfigUpdate\"\n or v == \"android.os.PooledStringWriter\"\n or v == \"android.text.FontConfig\"\n or v == \"android.text.TextLine\"\n or v == \"android.text.PackedIntVector\"\n or v == \"android.text.PositionIterator\"\n or v == \"android.text.style.AccessibilityClickableSpan\"\n or v == \"android.text.style.SuggestionRangeSpan\"\n or v == \"android.text.style.AccessibilityURLSpan\"\n or v == \"android.text.style.SpellCheckSpan\"\n or v == \"android.text.MeasuredText\"\n or v == \"android.text.AndroidBidi\"\n or v == \"android.text.SpanSet\"\n or v == \"android.text.format.BytesResult\"\n or v == \"android.text.CharSequenceCharacterIterator\"\n or v == \"android.text.Hyphenator\"\n or v == \"android.text.Emoji\"\n or v == \"android.text.GraphicsOperations\"\n or v == \"android.text.method.TransformationMethod2\"\n or v == \"android.text.method.WordIterator\"\n or v == \"android.text.method.AllCapsTransformationMethod\"\n or v == \"android.service.oemlock.OemLockManager\"\n or v == \"android.service.notification.SnoozeCriterion\"\n or v == \"android.service.notification.NotificationRankingUpdate\"\n or v == \"android.service.notification.Adjustment\"\n or v == \"android.service.notification.NotificationListenerWrapper\"\n or v == \"android.service.notification.NotificationAssistantService\"\n or v == \"android.service.notification.ZenModeConfig\"\n or v == \"android.service.gatekeeper.GateKeeperResponse\"\n or v == \"android.service.euicc.GetDownloadableSubscriptionMetadataResult\"\n or v == \"android.service.euicc.GetDefaultDownloadableSubscriptionListResult\"\n or v == \"android.service.euicc.EuiccProfileInfo\"\n or v == \"android.service.euicc.GetEuiccProfileInfoListResult\"\n or v == \"android.service.euicc.EuiccService\"\n or v == \"android.service.autofill.OptionalValidators\"\n or v == \"android.service.autofill.InternalValidator\"\n or v == \"android.service.autofill.RequiredValidators\"\n or v == \"android.service.autofill.AutofillServiceInfo\"\n or v == \"android.service.autofill.ValueFinder\"\n or v == \"android.service.autofill.InternalTransformation\"\n or v == \"android.service.voice.SoundTriggerListener\"\n or v == \"android.service.voice.VoiceInteractionServiceInfo\"\n or v == \"android.service.voice.VoiceInteractionManagerInternal\"\n or v == \"android.service.persistentdata.PersistentDataBlockManager\"\n or v == \"android.service.wallpaper.WallpaperSettingsActivity\"\n or v == \"android.service.trust.TrustAgentService\"\n or v == \"android.service.dreams.Sandman\"\n or v == \"android.service.dreams.DreamManagerInternal\"\n or v == \"android.service.carrier.ICarrierServiceWrapper\"\n or v == \"android.service.carrier.MatchType\"\n or v == \"android.service.resolver.ResolverRankerService\"\n or v == \"android.service.resolver.ResolverTarget\"\n or v == \"android.companion.BluetoothDeviceFilterUtils\"\n or v == \"com.android.server.AppWidgetBackupBridge\"\n or v == \"com.android.server.net.BaseNetworkObserver\"\n or v == \"com.android.server.net.NetlinkTracker\"\n or v == \"com.android.server.WidgetBackupProvider\"\n or v == \"com.android.server.LocalServices\"\n or v == \"android.security.KeyStoreException\"\n or v == \"android.security.keystore.AndroidKeyStoreBCWorkaroundProvider\"\n or v == \"android.security.keystore.AndroidKeyStoreHmacSpi\"\n or v == \"android.security.keystore.AndroidKeyStoreCipherSpiBase\"\n or v == \"android.security.keystore.AndroidKeyStorePublicKey\"\n or v == \"android.security.keystore.AndroidKeyStoreSecretKey\"\n or v == \"android.security.keystore.AndroidKeyStoreECPrivateKey\"\n or v == \"android.security.keystore.AndroidKeyStoreKeyGeneratorSpi\"\n or v == \"android.security.keystore.KeyStoreCryptoOperationChunkedStreamer\"\n or v == \"android.security.keystore.Purpose\"\n or v == \"android.security.keystore.KeyAlgorithm\"\n or v == \"android.security.keystore.BlockMode\"\n or v == \"android.security.keystore.EncryptionPadding\"\n or v == \"android.security.keystore.Digest\"\n or v == \"android.security.keystore.Origin\"\n or v == \"android.security.keystore.DeviceIdAttestationException\"\n or v == \"android.security.keystore.ArrayUtils\"\n or v == \"android.security.keystore.AndroidKeyStoreRSASignatureSpi\"\n or v == \"android.security.keystore.Utils\"\n or v == \"android.security.keystore.AndroidKeyStoreSignatureSpiBase\"\n or v == \"android.security.keystore.AndroidKeyStoreRSAPrivateKey\"\n or v == \"android.security.keystore.AndroidKeyStoreRSACipherSpi\"\n or v == \"android.security.keystore.AndroidKeyStoreECDSASignatureSpi\"\n or v == \"android.security.keystore.AndroidKeyStoreKeyFactorySpi\"\n or v == \"android.security.keystore.AndroidKeyStoreAuthenticatedAESCipherSpi\"\n or v == \"android.security.keystore.AndroidKeyStoreKeyPairGeneratorSpi\"\n or v == \"android.security.keystore.AndroidKeyStoreSpi\"\n or v == \"android.security.keystore.KeyStoreCryptoOperationUtils\"\n or v == \"android.security.keystore.AttestationUtils\"\n or v == \"android.security.keystore.KeyStoreCryptoOperation\"\n or v == \"android.security.keystore.KeymasterUtils\"\n or v == \"android.security.keystore.AndroidKeyStoreRSAPublicKey\"\n or v == \"android.security.keystore.KeyStoreConnectException\"\n or v == \"android.security.keystore.AndroidKeyStoreECPublicKey\"\n or v == \"android.security.keystore.AndroidKeyStoreKey\"\n or v == \"android.security.keystore.AndroidKeyStoreUnauthenticatedAESCipherSpi\"\n or v == \"android.security.keystore.AndroidKeyStorePrivateKey\"\n or v == \"android.security.keystore.KeyStoreCryptoOperationStreamer\"\n or v == \"android.security.keystore.AndroidKeyStoreProvider\"\n or v == \"android.security.keystore.AndroidKeyStoreSecretKeyFactorySpi\"\n or v == \"android.security.Credentials\"\n or v == \"android.security.KeyChainConnection\"\n or v == \"android.security.GateKeeper\"\n or v == \"android.security.SystemKeyStore\"\n or v == \"android.security.KeyStore\"\n or v == \"android.net.lowpan.Builder\"\n or v == \"android.net.lowpan.LowpanProperty\"\n or v == \"android.net.lowpan.LowpanProperties\"\n or v == \"android.net.lowpan.LowpanStandardProperty\"\n or v == \"android.location.GpsMeasurementsEvent\"\n or v == \"android.location.Listener\"\n or v == \"android.location.LocalListenerHelper\"\n or v == \"android.location.Country\"\n or v == \"android.location.GpsNavigationMessage\"\n or v == \"android.location.GpsClock\"\n or v == \"android.location.GeocoderParams\"\n or v == \"android.location.FusedBatchOptions\"\n or v == \"android.location.GpsNavigationMessageEvent\"\n or v == \"android.location.Listener\"\n or v == \"android.location.BatchedLocationCallback\"\n or v == \"android.location.CountryListener\"\n or v == \"android.location.CountryDetector\"\n or v == \"android.location.Geofence\"\n or v == \"android.location.BatchedLocationCallbackTransport\"\n or v == \"android.location.GnssMeasurementCallbackTransport\"\n or v == \"android.location.LocationRequest\"\n or v == \"android.location.GpsMeasurement\"\n or v == \"android.location.GnssNavigationMessageCallbackTransport\"\n or v == \"javax.obex.HeaderSet\"\n or v == \"javax.obex.BaseStream\"\n or v == \"javax.obex.ClientOperation\"\n or v == \"javax.obex.ServerSession\"\n or v == \"javax.obex.Operation\"\n or v == \"javax.obex.PrivateInputStream\"\n or v == \"javax.obex.PrivateOutputStream\"\n or v == \"javax.obex.ClientSession\"\n or v == \"javax.obex.SessionNotifier\"\n or v == \"javax.obex.ApplicationParameter\"\n or v == \"javax.obex.ServerOperation\"\n or v == \"javax.obex.Authenticator\"\n or v == \"javax.obex.ResponseCodes\"\n or v == \"javax.obex.ObexHelper\"\n or v == \"javax.obex.PasswordAuthentication\"\n or v == \"javax.obex.ObexTransport\"\n or v == \"javax.obex.ServerRequestHandler\"\n or v == \"javax.obex.ObexSession\"\n or v == \"android.net.util.PacketReaderTest\"\n or v == \"android.net.util.ConnectivityPacketSummaryTest\"\n or v == \"android.testing.LayoutInflaterBuilder\"\n or v == \"androidx.media.filterfw.GLToolbox\"\n or v == \"android.security.net.config.TestCertificateSource\"\n or v == \"android.security.net.config.TestConfigSource\"\n or v == \"com.android.uiautomator.core.Tracer\"\n or v == \"com.android.uiautomator.core.AccessibilityNodeInfoDumper\"\n or v == \"com.android.uiautomator.core.UiAutomatorBridge\"\n or v == \"com.android.uiautomator.testrunner.UiAutomatorTestCaseFilter\"\n or v == \"com.android.uiautomator.testrunner.TestCaseCollector\"\n or v == \"com.android.uiautomator.testrunner.UiAutomatorTestRunner\"\n or v == \"com.android.uiautomator.core.ShellUiAutomatorBridge\"\n or v == \"com.android.uiautomator.core.UiAutomationShellWrapper\"\n or v == \"com.android.uiautomator.core.InstrumentationUiAutomatorBridge\"\n or v == \"android.renderscript.ProgramRaster\"\n or v == \"android.renderscript.ProgramVertex\"\n or v == \"android.renderscript.Builder\"\n or v == \"android.renderscript.ProgramFragmentFixedFunction\"\n or v == \"android.renderscript.RenderScriptGL\"\n or v == \"android.renderscript.FileA3D\"\n or v == \"android.renderscript.ProgramVertexFixedFunction\"\n or v == \"android.renderscript.ProgramFragment\"\n or v == \"android.renderscript.Font\"\n or v == \"android.renderscript.RSTextureView\"\n or v == \"android.renderscript.RSSurfaceView\"\n or v == \"android.renderscript.Program\"\n or v == \"android.renderscript.ProgramStore\"\n or v == \"android.renderscript.Mesh\"\n or v == \"android.renderscript.RenderScriptCacheDir\"\n or v == \"android.telephony.ClientRequestStats\"\n or v == \"android.telephony.TelephonyHistogram\"\n or v == \"android.telephony.ModemActivityInfo\"\n or v == \"android.telephony.PreciseDisconnectCause\"\n or v == \"android.telephony.cdma.CdmaSmsCbProgramData\"\n or v == \"android.telephony.cdma.CdmaSmsCbProgramResults\"\n or v == \"android.telephony.PreciseCallState\"\n or v == \"android.telephony.SubscriptionPlan\"\n or v == \"android.telephony.VoLteServiceState\"\n or v == \"android.telephony.DisconnectCause\"\n or v == \"android.telephony.UiccAccessRule\"\n or v == \"android.telephony.euicc.EuiccManager\"\n or v == \"android.telephony.euicc.DownloadableSubscription\"\n or v == \"android.telephony.RadioAccessFamily\"\n or v == \"android.telephony.PcoData\"\n or v == \"android.telephony.Builder\"\n or v == \"android.telephony.WifiCallingChoices\"\n or v == \"android.telephony.ims.ImsService\"\n or v == \"android.telephony.ims.stub.ImsCallSessionListenerImplBase\"\n or v == \"android.telephony.ims.feature.ImsFeature\"\n or v == \"android.telephony.CdmaBands\"\n or v == \"android.telephony.UssdResponse\"\n or v == \"android.telephony.PreciseDataConnectionState\"\n or v == \"android.provider.CarrierColumns\"\n or v == \"android.provider.WordsTable\"\n or v == \"android.provider.CellBroadcasts\"\n or v == \"android.provider.CarrierIdentification\"\n or v == \"android.telephony.data.InterfaceAddress\"\n or v == \"android.telephony.data.DataCallResponse\"\n or v == \"android.telephony.data.DataProfile\"\n or v == \"android.telephony.Rlog\"\n or v == \"android.telephony.ImsiEncryptionInfo\"\n or v == \"android.telephony.mbms.InternalStreamingSessionCallback\"\n or v == \"android.telephony.mbms.MbmsTempFileProvider\"\n or v == \"android.telephony.mbms.OpaqueDataContainer\"\n or v == \"android.telephony.mbms.InternalDownloadSessionCallback\"\n or v == \"android.telephony.mbms.InternalStreamingServiceCallback\"\n or v == \"android.telephony.mbms.UriPathPair\"\n or v == \"android.telephony.mbms.InternalDownloadStateCallback\"\n or v == \"android.telephony.mbms.MbmsUtils\"\n or v == \"android.telephony.mbms.vendor.MbmsDownloadServiceBase\"\n or v == \"android.telephony.mbms.vendor.MbmsStreamingServiceBase\"\n or v == \"android.telephony.mbms.vendor.VendorUtils\"\n or v == \"android.telephony.DataConnectionRealTimeInfo\"\n or v == \"android.telephony.SmsCbLocation\"\n or v == \"android.telephony.SmsCbEtwsInfo\"\n or v == \"android.telephony.SmsCbMessage\"\n or v == \"android.telephony.SmsCbCmasInfo\"\n or v == \"com.android.ims.ImsStreamMediaProfile\"\n or v == \"com.android.ims.ImsReasonInfo\"\n or v == \"com.android.ims.ImsCallForwardInfo\"\n or v == \"com.android.ims.ImsExternalCallState\"\n or v == \"com.android.ims.ImsConfig\"\n or v == \"com.android.ims.ImsException\"\n or v == \"com.android.ims.ImsCallProfile\"\n or v == \"com.android.ims.ImsSuppServiceNotification\"\n or v == \"com.android.ims.ImsUtInterface\"\n or v == \"com.android.ims.ImsConferenceState\"\n or v == \"com.android.ims.ImsSsInfo\"\n or v == \"com.android.ims.ImsSsData\"\n or v == \"com.android.settingslib.NetworkPolicyEditor\"\n or v == \"com.android.sharedstoragebackup.ObbBackupService\"\n or v == \"com.android.providers.settings.SettingsProtoDumpUtil\"\n or v == \"com.android.statementservice.retriever.AndroidPackageInfoFetcher\"\n or v == \"com.android.statementservice.retriever.URLFetcher\"\n or v == \"com.android.statementservice.retriever.WebContent\"\n or v == \"com.android.backupconfirm.BackupRestoreConfirmation\"\n or v == \"com.android.proxyhandler.ProxyServer\"\n or v == \"com.android.proxyhandler.SocketConnect\"\n or v == \"com.android.proxyhandler.ProxyService\"\n or v == \"com.android.pacprocessor.PacNative\"\n or v == \"com.android.systemui.media.NotificationPlayer\"\n or v == \"junit.runner.TestRunListener\"\n or v == \"junit.runner.StandardTestSuiteLoader\"\n or v == \"android.test.LaunchPerformanceBase\"\n or v == \"android.test.NoExecTestResult\"\n or v == \"android.test.ClassPathPackageInfoSource\"\n or v == \"android.test.TestPrinter\"\n or v == \"android.test.suitebuilder.UnitTestSuiteBuilder\"\n or v == \"android.test.suitebuilder.TestGrouping\"\n or v == \"android.test.suitebuilder.TestPredicates\"\n or v == \"android.test.suitebuilder.SmokeTestSuiteBuilder\"\n or v == \"android.test.TestCaseUtil\"\n or v == \"android.test.mock.MockIContentProvider\"\n or v == \"android.telecom.TimedEvent\"\n or v == \"android.telecom.DefaultDialerManager\"\n or v == \"android.telecom.ParcelableRttCall\"\n or v == \"android.telecom.AudioState\"\n or v == \"android.telecom.Phone\"\n or v == \"android.telecom.ParcelableCallAnalytics\"\n or v == \"android.telecom.VideoEvent\"\n or v == \"android.telecom.TelecomAnalytics\"\n or v == \"android.telecom.CallbackRecord\"\n or v == \"android.telecom.Response\"\n or v == \"android.telecom.VideoCallImpl\"\n or v == \"android.telecom.ConnectionServiceAdapter\"\n or v == \"android.telecom.Builder\"\n or v == \"android.telecom.RemoteConnectionService\"\n or v == \"android.telecom.AuthenticatorService\"\n or v == \"android.telecom.Listener\"\n or v == \"android.telecom.ConferenceParticipant\"\n or v == \"android.telecom.ParcelableConnection\"\n or v == \"android.telecom.ParcelableCall\"\n or v == \"android.telecom.Log\"\n or v == \"android.telecom.Listener\"\n or v == \"android.telecom.RttTextStream\"\n or v == \"android.telecom.RemoteConnectionManager\"\n or v == \"android.telecom.ParcelableConference\"\n or v == \"android.telecom.Voicemail\"\n or v == \"android.telecom.ConnectionServiceAdapterServant\"\n or v == \"android.telecom.VideoCallbackServant\"\n or v == \"android.telecom.Listener\"\n or v == \"android.telecom.Logging.TimedEvent\"\n or v == \"android.telecom.Logging.Runnable\"\n or v == \"android.telecom.Logging.Session\"\n or v == \"android.telecom.InCallAdapter\"\n or v == \"android.graphics.GraphicBuffer\"\n or v == \"android.graphics.CanvasProperty\"\n or v == \"android.graphics.drawable.AnimatedRotateDrawable\"\n or v == \"android.graphics.drawable.VectorDrawableAnimatorRT\"\n or v == \"android.graphics.drawable.DrawableInflater\"\n or v == \"android.graphics.Insets\"\n or v == \"android.graphics.BaseCanvas\"\n or v == \"android.graphics.pdf.PdfEditor\"\n or v == \"android.graphics.Renderer\"\n or v == \"android.graphics.LeakyTypefaceStorage\"\n or v == \"android.graphics.TemporaryBuffer\"\n or v == \"android.graphics.InsetStruct\"\n or v == \"android.graphics.LargeBitmap\"\n or v == \"android.graphics.FontListParser\"\n or v == \"android.graphics.FontFamily\"\n or v == \"android.graphics.TableMaskFilter\"\n or v == \"android.net.util.NetworkConstants\"\n or v == \"android.net.util.Stopwatch\"\n or v == \"android.net.util.PrefixUtils\"\n or v == \"android.net.util.NetdService\"\n or v == \"android.net.util.IpUtils\"\n or v == \"android.net.util.VersionedBroadcastListener\"\n or v == \"android.net.util.SharedLog\"\n or v == \"android.net.util.ConnectivityPacketSummary\"\n or v == \"android.net.util.MultinetworkPolicyTracker\"\n or v == \"android.net.util.PacketReader\"\n or v == \"android.net.netlink.StructNlMsgHdr\"\n or v == \"android.net.netlink.StructNdMsg\"\n or v == \"android.net.netlink.StructNlMsgErr\"\n or v == \"android.net.netlink.NetlinkSocket\"\n or v == \"android.net.netlink.StructNlAttr\"\n or v == \"android.net.netlink.NetlinkMessage\"\n or v == \"android.net.netlink.ConntrackMessage\"\n or v == \"android.net.netlink.StructNfGenMsg\"\n or v == \"android.net.netlink.StructNdaCacheInfo\"\n or v == \"android.net.netlink.NetlinkConstants\"\n or v == \"android.net.netlink.NetlinkErrorMessage\"\n or v == \"android.net.netlink.RtNetlinkNeighborMessage\"\n or v == \"android.net.apf.ApfGenerator\"\n or v == \"android.net.apf.ApfCapabilities\"\n or v == \"android.net.apf.ApfFilter\"\n or v == \"android.net.dhcp.DhcpClient\"\n or v == \"android.net.dhcp.DhcpPacket\"\n or v == \"android.net.ip.IpReachabilityMonitor\"\n or v == \"android.net.ip.InterfaceController\"\n or v == \"android.net.ip.IpClient\"\n or v == \"android.net.ip.IpNeighborMonitor\"\n or v == \"android.net.ip.RouterAdvertisementDaemon\"\n or v == \"android.net.ip.ConnectivityPacketTracker\"\n or v == \"com.android.server.pm.PackageManagerServiceUtils\"\n or v == \"com.android.server.pm.BackgroundDexOptService\"\n or v == \"com.android.server.pm.InstructionSets\"\n or v == \"com.android.server.pm.EphemeralResolverConnection\"\n or v == \"com.android.server.pm.SELinuxMMAC\"\n or v == \"com.android.server.pm.OtaDexoptService\"\n or v == \"com.android.server.pm.InstantAppResolver\"\n or v == \"com.android.server.pm.PackageManagerException\"\n or v == \"com.android.server.vr.SettingsObserver\"\n or v == \"com.android.server.vr.VrManagerInternal\"\n or v == \"com.android.server.vr.EnabledComponentsObserver\"\n or v == \"com.android.server.vr.VrManagerService\"\n or v == \"com.android.server.vr.VrStateListener\"\n or v == \"com.android.server.webkit.SystemInterface\"\n or v == \"com.android.server.webkit.WebViewUpdateService\"\n or v == \"com.android.server.webkit.SystemImpl\"\n or v == \"com.android.server.webkit.WebViewUpdateServiceImpl\"\n or v == \"com.android.server.net.NetworkPolicyManagerInternal\"\n or v == \"com.android.server.net.NetworkIdentitySet\"\n or v == \"com.android.server.fingerprint.FingerprintService\"\n or v == \"com.android.server.am.BackupRecord\"\n or v == \"com.android.server.GraphicsStatsService\"\n or v == \"com.android.server.connectivity.Vpn\"\n or v == \"com.android.server.connectivity.IpConnectivityMetrics\"\n or v == \"com.android.server.connectivity.tethering.TetheringConfiguration\"\n or v == \"com.android.server.connectivity.tethering.OffloadHardwareInterface\"\n or v == \"com.android.server.connectivity.tethering.OffloadController\"\n or v == \"com.android.server.connectivity.tethering.TetherInterfaceStateMachine\"\n or v == \"com.android.server.connectivity.tethering.UpstreamNetworkMonitor\"\n or v == \"com.android.server.connectivity.tethering.SimChangeListener\"\n or v == \"com.android.server.connectivity.tethering.IPv6TetheringCoordinator\"\n or v == \"com.android.server.connectivity.tethering.TetheringDependencies\"\n or v == \"com.android.server.connectivity.tethering.IControlsTethering\"\n or v == \"com.android.server.connectivity.PacManager\"\n or v == \"com.android.server.connectivity.NetworkMonitor\"\n or v == \"com.android.server.connectivity.CaptivePortalProbeResult\"\n or v == \"com.android.server.connectivity.IpConnectivityEventBuilder\"\n or v == \"com.android.server.connectivity.NetworkDiagnostics\"\n or v == \"com.android.server.connectivity.Tethering\"\n or v == \"com.android.server.connectivity.PermissionMonitor\"\n or v == \"com.android.server.connectivity.KeepalivePacketData\"\n or v == \"com.android.server.connectivity.DefaultNetworkMetrics\"\n or v == \"com.android.server.connectivity.Nat464Xlat\"\n or v == \"com.android.server.security.KeyAttestationApplicationIdProviderService\"\n or v == \"com.android.server.input.InputWindowHandle\"\n or v == \"com.android.server.input.InputApplicationHandle\"\n or v == \"com.android.server.notification.NotificationManagerService\"\n or v == \"com.android.server.notification.NotificationUsageStats\"\n or v == \"com.android.server.notification.RateEstimator\"\n or v == \"com.android.server.notification.AlertRateLimiter\"\n or v == \"com.android.server.notification.NotificationRecord\"\n or v == \"com.android.server.notification.ValidateNotificationPeople\"\n or v == \"com.android.server.notification.RankingReconsideration\"\n or v == \"com.android.server.camera.CameraServiceProxy\"\n or v == \"com.android.server.location.PassiveProvider\"\n or v == \"com.android.server.location.ActivityRecognitionProxy\"\n or v == \"com.android.server.location.CountryDetectorBase\"\n or v == \"com.android.server.location.GnssLocationProvider\"\n or v == \"com.android.server.location.ContextHubService\"\n or v == \"com.android.server.location.FusedProxy\"\n or v == \"com.android.server.location.GeofenceProxy\"\n or v == \"com.android.server.location.GnssNavigationMessageProvider\"\n or v == \"com.android.server.location.LocationProviderInterface\"\n or v == \"com.android.server.location.GpsXtraDownloader\"\n or v == \"com.android.server.location.FusedLocationHardwareSecure\"\n or v == \"com.android.server.location.FlpHardwareProvider\"\n or v == \"com.android.server.location.GnssMeasurementsProvider\"\n or v == \"com.android.server.location.LocationBasedCountryDetector\"\n or v == \"com.android.server.location.ComprehensiveCountryDetector\"\n or v == \"com.android.server.location.MockProvider\"\n or v == \"com.android.server.wm.WindowManagerService\"\n or v == \"com.android.server.wm.animation.ClipRectLRAnimation\"\n or v == \"com.android.server.wm.ViewServer\"\n or v == \"com.android.server.SystemServiceManager\"\n or v == \"com.android.server.content.SyncStorageEngine\"\n or v == \"com.android.server.content.SyncManager\"\n or v == \"com.android.server.content.ActiveSyncContext\"\n or v == \"com.android.server.content.ContentService\"\n or v == \"com.android.server.content.ObserverCall\"\n or v == \"com.android.server.content.ObserverNode\"\n or v == \"com.android.server.content.SyncOperation\"\n or v == \"com.android.server.utils.ManagedApplicationService\"\n or v == \"com.android.server.utils.PriorityDump\"\n or v == \"com.android.server.utils.PriorityDumper\"\n or v == \"com.android.server.NetworkManagementService\"\n or v == \"com.android.server.tv.TvInputHardwareManager\"\n or v == \"com.android.server.IpSecService\"\n or v == \"com.android.server.ConnectivityService\"\n or v == \"com.android.server.audio.MediaFocusControl\"\n or v == \"com.android.server.audio.FocusRequester\"\n or v == \"com.android.server.audio.AudioService\"\n or v == \"com.android.server.telecom.TelecomLoaderService\"\n or v == \"com.android.server.NetworkScorerAppManager\"\n or v == \"com.android.server.CountryDetectorService\"\n or v == \"com.android.server.accounts.AccountManagerService\"\n or v == \"com.android.server.accounts.IAccountAuthenticatorCache\"\n or v == \"com.android.server.job.JobSchedulerService\"\n or v == \"com.android.server.job.JobSchedulerInternal\"\n or v == \"com.android.server.job.controllers.JobStatus\"\n or v == \"com.android.server.RescueParty\"\n or v == \"com.android.server.NsdService\"\n or v == \"com.android.server.os.SchedulingPolicyService\"\n or v == \"com.android.server.SystemServerInitThreadPool\"\n or v == \"com.android.server.NetworkScoreService\"\n or v == \"com.android.server.locksettings.LockSettingsService\"\n or v == \"com.android.server.dreams.DreamManagerService\"\n or v == \"com.android.server.IntentResolver\"\n or v == \"com.android.server.GestureLauncherService\"\n or v == \"com.android.server.SystemService\"\n or v == \"com.android.server.NetworkManagementInternal\"\n or v == \"com.android.server.policy.keyguard.KeyguardStateMonitor\"\n or v == \"com.android.server.CommonTimeManagementService\"\n or v == \"com.android.server.soundtrigger.SoundTriggerService\"\n or v == \"com.android.server.soundtrigger.SoundTriggerHelper\"\n or v == \"com.android.server.soundtrigger.SoundTriggerDbHelper\"\n or v == \"com.android.server.voiceinteraction.DatabaseHelper\"\n or v == \"com.android.server.usb.descriptors.UsbTerminalTypes\"\n or v == \"com.android.server.usb.descriptors.tree.UsbDescriptorsEndpointNode\"\n or v == \"com.android.server.usb.descriptors.tree.UsbDescriptorsACInterfaceNode\"\n or v == \"com.android.server.usb.descriptors.tree.UsbDescriptorsTreeNode\"\n or v == \"com.android.server.usb.descriptors.tree.UsbDescriptorsTree\"\n or v == \"com.android.server.usb.descriptors.tree.UsbDescriptorsInterfaceNode\"\n or v == \"com.android.server.usb.descriptors.tree.UsbDescriptorsDeviceNode\"\n or v == \"com.android.server.usb.descriptors.tree.UsbDescriptorsConfigNode\"\n or v == \"com.android.server.usb.descriptors.UsbACAudioStreamEndpoint\"\n or v == \"com.android.server.usb.descriptors.UsbBinaryParser\"\n or v == \"com.android.server.usb.descriptors.Usb10ASFormatI\"\n or v == \"com.android.server.usb.descriptors.UsbACAudioControlEndpoint\"\n or v == \"com.android.server.usb.descriptors.UsbConfigDescriptor\"\n or v == \"com.android.server.usb.descriptors.Usb20ACMixerUnit\"\n or v == \"com.android.server.usb.descriptors.UsbMSMidiInputJack\"\n or v == \"com.android.server.usb.descriptors.Usb20ACInputTerminal\"\n or v == \"com.android.server.usb.descriptors.UsbACInterface\"\n or v == \"com.android.server.usb.descriptors.Usb10ACOutputTerminal\"\n or v == \"com.android.server.usb.descriptors.UsbDeviceDescriptor\"\n or v == \"com.android.server.usb.descriptors.Usb10ACHeader\"\n or v == \"com.android.server.usb.descriptors.UsbInterfaceAssoc\"\n or v == \"com.android.server.usb.descriptors.UsbHIDDescriptor\"\n or v == \"com.android.server.usb.descriptors.UsbMSMidiOutputJack\"\n or v == \"com.android.server.usb.descriptors.Usb20ASFormatI\"\n or v == \"com.android.server.usb.descriptors.Usb10ASFormatII\"\n or v == \"com.android.server.usb.descriptors.UsbMSMidiHeader\"\n or v == \"com.android.server.usb.descriptors.Usb20ASFormatIII\"\n or v == \"com.android.server.usb.descriptors.UsbACFeatureUnit\"\n or v == \"com.android.server.usb.descriptors.UsbASFormat\"\n or v == \"com.android.server.usb.descriptors.UsbACEndpoint\"\n or v == \"com.android.server.usb.descriptors.UsbUnknown\"\n or v == \"com.android.server.usb.descriptors.Usb20ACHeader\"\n or v == \"com.android.server.usb.descriptors.UsbInterfaceDescriptor\"\n or v == \"com.android.server.usb.descriptors.UsbDescriptor\"\n or v == \"com.android.server.usb.descriptors.UsbACSelectorUnit\"\n or v == \"com.android.server.usb.descriptors.UsbACHeaderInterface\"\n or v == \"com.android.server.usb.descriptors.UsbEndpointDescriptor\"\n or v == \"com.android.server.usb.descriptors.report.TextReportCanvas\"\n or v == \"com.android.server.usb.descriptors.report.Reporting\"\n or v == \"com.android.server.usb.descriptors.report.ReportCanvas\"\n or v == \"com.android.server.usb.descriptors.report.UsbStrings\"\n or v == \"com.android.server.usb.descriptors.report.HTMLReportCanvas\"\n or v == \"com.android.server.usb.descriptors.Usb10ACInputTerminal\"\n or v == \"com.android.server.usb.descriptors.UsbDescriptorParser\"\n or v == \"com.android.server.usb.descriptors.Usb10ASGeneral\"\n or v == \"com.android.server.usb.descriptors.ByteStream\"\n or v == \"com.android.server.usb.descriptors.UsbACMidiEndpoint\"\n or v == \"com.android.server.usb.descriptors.Usb20ASFormatIIEx\"\n or v == \"com.android.server.usb.descriptors.Usb10ACMixerUnit\"\n or v == \"com.android.server.usb.descriptors.Usb20ASFormatII\"\n or v == \"com.android.server.usb.descriptors.Usb20ACOutputTerminal\"\n or v == \"com.android.server.usb.descriptors.UsbACTerminal\"\n or v == \"com.android.server.usb.descriptors.UsbACInterfaceUnparsed\"\n or v == \"com.android.server.accessibility.TouchExplorer\"\n or v == \"com.android.server.coverage.CoverageService\"\n or v == \"com.android.server.companion.CompanionDeviceManagerService\"\n or v == \"android.opengl.GLWallpaperService\"\n or v == \"android.mtp.MtpDatabase\"\n or v == \"android.mtp.MtpServer\"\n or v == \"android.mtp.MtpStorage\"\n or v == \"android.media.PlayerProxy\"\n or v == \"android.media.MediaScanner\"\n or v == \"android.media.MediaTimeProvider\"\n or v == \"android.media.OnMediaTimeListener\"\n or v == \"android.media.soundtrigger.SoundTriggerDetector\"\n or v == \"android.media.soundtrigger.RecognitionCallback\"\n or v == \"android.media.soundtrigger.SoundTriggerManager\"\n or v == \"android.media.audiofx.OnParameterChangeListener\"\n or v == \"android.media.audiofx.Settings\"\n or v == \"android.media.audiofx.OnServerDiedListener\"\n or v == \"android.media.audiofx.OnParameterChangeListener\"\n or v == \"android.media.MediaFile\"\n or v == \"android.media.PlayerDeathMonitor\"\n or v == \"android.media.RemoteDisplay\"\n or v == \"android.media.AudioPort\"\n or v == \"android.media.SRTRenderer\"\n or v == \"android.media.MiniThumbFile\"\n or v == \"android.media.midi.MidiDeviceServer\"\n or v == \"android.media.TtmlRenderer\"\n or v == \"android.media.TtmlUtils\"\n or v == \"android.media.TtmlCue\"\n or v == \"android.media.TtmlNode\"\n or v == \"android.media.TtmlParser\"\n or v == \"android.media.TtmlNodeListener\"\n or v == \"android.media.TtmlTrack\"\n or v == \"android.media.TtmlRenderingWidget\"\n or v == \"android.media.audiopolicy.AudioPolicyConfig\"\n or v == \"android.media.audiopolicy.AudioMixingRule\"\n or v == \"android.media.audiopolicy.AudioMix\"\n or v == \"android.media.audiopolicy.AudioPolicy\"\n or v == \"android.media.Callback\"\n or v == \"android.media.MediaHTTPConnection\"\n or v == \"android.media.DecoderCapabilities\"\n or v == \"android.media.OnSubtitleDataListener\"\n or v == \"android.media.TimeProvider\"\n or v == \"android.media.MediaHTTPService\"\n or v == \"android.media.AudioManagerInternal\"\n or v == \"android.media.MediaScannerClient\"\n or v == \"android.media.SubtitleTrack\"\n or v == \"android.media.CueList\"\n or v == \"android.media.Cue\"\n or v == \"android.media.Run\"\n or v == \"android.media.VolumePolicy\"\n or v == \"android.media.tv.ProgramColumns\"\n or v == \"android.media.tv.PreviewProgramColumns\"\n or v == \"android.media.tv.WatchedPrograms\"\n or v == \"android.media.tv.TvStreamConfig\"\n or v == \"android.media.tv.TvInputSettings\"\n or v == \"android.media.tv.ITvInputSessionWrapper\"\n or v == \"android.media.tv.DvbDeviceInfo\"\n or v == \"android.media.tv.TvInputHardwareInfo\"\n or v == \"android.media.tv.SessionCallback\"\n or v == \"android.media.tv.HardwareCallback\"\n or v == \"android.media.tv.Session\"\n or v == \"android.media.tv.FinishedInputEventCallback\"\n or v == \"android.media.tv.Hardware\"\n or v == \"android.media.tv.TvContentRatingSystemInfo\"\n or v == \"android.media.BufferingParams\"\n or v == \"android.media.Cea708CaptionRenderer\"\n or v == \"android.media.Cea708CaptionTrack\"\n or v == \"android.media.Cea708CCParser\"\n or v == \"android.media.Const\"\n or v == \"android.media.CaptionColor\"\n or v == \"android.media.CaptionEvent\"\n or v == \"android.media.CaptionPenAttr\"\n or v == \"android.media.CaptionPenColor\"\n or v == \"android.media.CaptionPenLocation\"\n or v == \"android.media.CaptionWindowAttr\"\n or v == \"android.media.CaptionWindow\"\n or v == \"android.media.Cea708CCWidget\"\n or v == \"android.media.ScaledLayout\"\n or v == \"android.media.ScaledLayoutParams\"\n or v == \"android.media.CCLayout\"\n or v == \"android.media.CCHandler\"\n or v == \"android.media.CCWindowLayout\"\n or v == \"android.media.CCView\"\n or v == \"android.media.EncoderCapabilities\"\n or v == \"android.media.AudioFocusInfo\"\n or v == \"android.media.AudioGainConfig\"\n or v == \"android.media.RemoteDisplayState\"\n or v == \"android.media.AudioGain\"\n or v == \"android.media.AmrInputStream\"\n or v == \"android.media.ExternalRingtonesCursorWrapper\"\n or v == \"android.media.WebVttRenderer\"\n or v == \"android.media.TextTrackCueSpan\"\n or v == \"android.media.UnstyledTextExtractor\"\n or v == \"android.media.Tokenizer\"\n or v == \"android.media.TextTrackRegion\"\n or v == \"android.media.TextTrackCue\"\n or v == \"android.media.WebVttParser\"\n or v == \"android.media.WebVttCueListener\"\n or v == \"android.media.WebVttTrack\"\n or v == \"android.media.WebVttRenderingWidget\"\n or v == \"android.media.SubtitleController\"\n or v == \"android.media.AudioSystem\"\n or v == \"android.media.Metadata\"\n or v == \"android.media.AudioRoutesInfo\"\n or v == \"android.media.PlayerBase\"\n or v == \"android.media.CharPos\"\n or v == \"android.media.Justification\"\n or v == \"android.media.Style\"\n or v == \"android.media.Font\"\n or v == \"android.media.Karaoke\"\n or v == \"android.media.HyperText\"\n or v == \"android.media.browse.MediaBrowserUtils\"\n or v == \"android.media.Builder\"\n or v == \"android.media.State\"\n or v == \"android.media.MediaInserter\"\n or v == \"android.media.ClosedCaptionRenderer\"\n or v == \"android.media.Cea608CaptionTrack\"\n or v == \"android.media.ClosedCaptionWidget\"\n or v == \"android.media.ClosedCaptionLayout\"\n or v == \"android.media.Cea608CCParser\"\n or v == \"android.media.MutableBackgroundColorSpan\"\n or v == \"android.media.Cea608CCWidget\"\n or v == \"android.media.MediaRouterClientState\"\n or v == \"android.media.ResampleInputStream\"\n or v == \"android.media.OnAudioPortUpdateListener\"\n or v == \"android.media.CertificateRequest\"\n or v == \"android.media.Certificate\"\n or v == \"android.media.AudioPatch\"\n or v == \"android.media.MediaImage\"\n or v == \"android.media.SubtitleData\"\n or v == \"android.media.projection.Callback\"\n or v == \"android.media.projection.CallbackDelegate\"\n or v == \"android.media.projection.MediaProjectionInfo\"\n or v == \"android.media.session.OnVolumeKeyLongPressListener\"\n or v == \"android.media.session.OnMediaKeyListener\"\n or v == \"android.media.session.Callback\"\n or v == \"android.media.session.MediaSessionLegacyHelper\"\n or v == \"android.media.session.ParcelableVolumeInfo\"\n or v == \"android.media.session.CallbackStub\"\n or v == \"android.media.effect.FilterEffect\"\n or v == \"android.media.effect.FilterGraphEffect\"\n or v == \"android.media.effect.SingleFilterEffect\"\n or v == \"android.media.effect.effects.BrightnessEffect\"\n or v == \"android.media.effect.effects.BitmapOverlayEffect\"\n or v == \"android.media.effect.effects.DuotoneEffect\"\n or v == \"android.media.effect.effects.SharpenEffect\"\n or v == \"android.media.effect.effects.ColorTemperatureEffect\"\n or v == \"android.media.effect.effects.LomoishEffect\"\n or v == \"android.media.effect.effects.SepiaEffect\"\n or v == \"android.media.effect.effects.FlipEffect\"\n or v == \"android.media.effect.effects.VignetteEffect\"\n or v == \"android.media.effect.effects.AutoFixEffect\"\n or v == \"android.media.effect.effects.RotateEffect\"\n or v == \"android.media.effect.effects.SaturateEffect\"\n or v == \"android.media.effect.effects.CrossProcessEffect\"\n or v == \"android.media.effect.effects.BackDropperEffect\"\n or v == \"android.media.effect.effects.TintEffect\"\n or v == \"android.media.effect.effects.PosterizeEffect\"\n or v == \"android.media.effect.effects.GrayscaleEffect\"\n or v == \"android.media.effect.effects.RedEyeEffect\"\n or v == \"android.media.effect.effects.DocumentaryEffect\"\n or v == \"android.media.effect.effects.IdentityEffect\"\n or v == \"android.media.effect.effects.FisheyeEffect\"\n or v == \"android.media.effect.effects.ContrastEffect\"\n or v == \"android.media.effect.effects.StraightenEffect\"\n or v == \"android.media.effect.effects.FillLightEffect\"\n or v == \"android.media.effect.effects.GrainEffect\"\n or v == \"android.media.effect.effects.BlackWhiteEffect\"\n or v == \"android.media.effect.effects.NegativeEffect\"\n or v == \"android.media.effect.SizeChangeEffect\"\n or v == \"android.filterpacks.ui.SurfaceTargetFilter\"\n or v == \"android.filterpacks.ui.SurfaceRenderFilter\"\n or v == \"android.filterpacks.videosrc.MediaSource\"\n or v == \"android.filterpacks.videosrc.CameraSource\"\n or v == \"android.filterpacks.videosrc.SurfaceTextureSource\"\n or v == \"android.filterpacks.videosrc.SurfaceTextureTarget\"\n or v == \"android.filterpacks.videosink.MediaEncoderFilter\"\n or v == \"android.filterpacks.videosink.MediaRecorderStopException\"\n or v == \"android.filterpacks.numeric.SinWaveFilter\"\n or v == \"android.filterpacks.imageproc.ContrastFilter\"\n or v == \"android.filterpacks.imageproc.StraightenFilter\"\n or v == \"android.filterpacks.imageproc.DrawRectFilter\"\n or v == \"android.filterpacks.imageproc.CropRectFilter\"\n or v == \"android.filterpacks.imageproc.ToGrayFilter\"\n or v == \"android.filterpacks.imageproc.AlphaBlendFilter\"\n or v == \"android.filterpacks.imageproc.CropFilter\"\n or v == \"android.filterpacks.imageproc.ImageCombineFilter\"\n or v == \"android.filterpacks.imageproc.RedEyeFilter\"\n or v == \"android.filterpacks.imageproc.ToRGBFilter\"\n or v == \"android.filterpacks.imageproc.SimpleImageFilter\"\n or v == \"android.filterpacks.imageproc.FisheyeFilter\"\n or v == \"android.filterpacks.imageproc.ResizeFilter\"\n or v == \"android.filterpacks.imageproc.FixedRotationFilter\"\n or v == \"android.filterpacks.imageproc.BlendFilter\"\n or v == \"android.filterpacks.imageproc.ToRGBAFilter\"\n or v == \"android.filterpacks.imageproc.DrawOverlayFilter\"\n or v == \"android.filterpacks.imageproc.BitmapSource\"\n or v == \"android.filterpacks.imageproc.ImageEncoder\"\n or v == \"android.filterpacks.imageproc.ToPackedGrayFilter\"\n or v == \"android.filterpacks.imageproc.RotateFilter\"\n or v == \"android.filterpacks.imageproc.BrightnessFilter\"\n or v == \"android.filterpacks.imageproc.BitmapOverlayFilter\"\n or v == \"android.filterpacks.imageproc.Invert\"\n or v == \"android.filterpacks.imageproc.FlipFilter\"\n or v == \"android.filterpacks.text.ToUpperCase\"\n or v == \"android.filterpacks.text.StringSource\"\n or v == \"android.filterpacks.text.StringLogger\"\n or v == \"android.filterpacks.performance.ThroughputFilter\"\n or v == \"android.filterpacks.performance.Throughput\"\n or v == \"android.filterpacks.base.CallbackFilter\"\n or v == \"android.filterpacks.base.NullFilter\"\n or v == \"android.filterpacks.base.GLTextureSource\"\n or v == \"android.filterpacks.base.FrameBranch\"\n or v == \"android.filterpacks.base.RetargetFilter\"\n or v == \"android.filterpacks.base.GLTextureTarget\"\n or v == \"android.filterpacks.base.FrameFetch\"\n or v == \"android.filterpacks.base.ObjectSource\"\n or v == \"android.filterpacks.base.FrameSource\"\n or v == \"android.filterpacks.base.OutputStreamTarget\"\n or v == \"android.filterpacks.base.InputStreamSource\"\n or v == \"android.filterpacks.base.FrameStore\"\n or v == \"android.filterpacks.videoproc.BackDropperFilter\"\n or v == \"android.filterfw.core.FilterSurfaceView\"\n or v == \"android.filterfw.core.InputPort\"\n or v == \"android.filterfw.core.FieldPort\"\n or v == \"android.filterfw.core.StreamPort\"\n or v == \"android.filterfw.core.FilterContext\"\n or v == \"android.filterfw.core.GLFrame\"\n or v == \"android.filterfw.core.SimpleFrame\"\n or v == \"android.filterfw.core.FilterFactory\"\n or v == \"android.filterfw.core.VertexFrame\"\n or v == \"android.filterfw.core.GraphRunner\"\n or v == \"android.filterfw.core.ProgramPort\"\n or v == \"android.filterfw.core.ShaderProgram\"\n or v == \"android.filterfw.core.NativeAllocatorTag\"\n or v == \"android.filterfw.core.Frame\"\n or v == \"android.filterfw.core.Scheduler\"\n or v == \"android.filterfw.core.SimpleFrameManager\"\n or v == \"android.filterfw.core.KeyValueMap\"\n or v == \"android.filterfw.core.ProgramVariable\"\n or v == \"android.filterfw.core.FinalPort\"\n or v == \"android.filterfw.core.FilterGraph\"\n or v == \"android.filterfw.core.CachedFrameManager\"\n or v == \"android.filterfw.core.RandomScheduler\"\n or v == \"android.filterfw.core.FilterPort\"\n or v == \"android.filterfw.core.MutableFrameFormat\"\n or v == \"android.filterfw.core.FrameManager\"\n or v == \"android.filterfw.core.NativeFrame\"\n or v == \"android.filterfw.core.FilterFunction\"\n or v == \"android.filterfw.core.AsyncRunner\"\n or v == \"android.filterfw.core.ProtocolException\"\n or v == \"android.filterfw.core.FrameFormat\"\n or v == \"android.filterfw.core.NativeBuffer\"\n or v == \"android.filterfw.core.Program\"\n or v == \"android.filterfw.core.RoundRobinScheduler\"\n or v == \"android.filterfw.core.GLEnvironment\"\n or v == \"android.filterfw.core.StopWatch\"\n or v == \"android.filterfw.core.SerializedFrame\"\n or v == \"android.filterfw.core.OneShotScheduler\"\n or v == \"android.filterfw.core.NativeProgram\"\n or v == \"android.filterfw.core.SimpleScheduler\"\n or v == \"android.filterfw.core.Filter\"\n or v == \"android.filterfw.core.OutputPort\"\n or v == \"android.filterfw.core.SyncRunner\"\n or v == \"android.filterfw.io.GraphReader\"\n or v == \"android.filterfw.io.GraphIOException\"\n or v == \"android.filterfw.io.TextGraphReader\"\n or v == \"android.filterfw.io.PatternScanner\"\n or v == \"android.filterfw.GraphEnvironment\"\n or v == \"android.filterfw.MffEnvironment\"\n or v == \"android.filterfw.FilterFunctionEnvironment\"\n or v == \"android.filterfw.format.PrimitiveFormat\"\n or v == \"android.filterfw.format.ObjectFormat\"\n or v == \"android.filterfw.format.ImageFormat\"\n or v == \"android.filterfw.geometry.Quad\"\n or v == \"android.filterfw.geometry.Point\"\n or v == \"android.filterfw.geometry.Rectangle\"\n ]\n )\n " + "predicate": "\n FunctionCall fc:\n function is [Function:\n name == \"forName\"\n and enclosingClass.supers contains [Class:\n name == \"java.lang.Class\"\n ]\n ]\n and (\n /* Interal APIs */\n arguments[0].constantValue matches \".*\\.internal\\..*\"\n /* Hidden APIs */\n or arguments[0].constantValue is [String v:\n v == \"android.net.wifi.ActionListener\"\n or v == \"android.net.wifi.TxPacketCountListener\"\n or v == \"android.net.wifi.LocalOnlyHotspotSubscription\"\n or v == \"android.net.wifi.LocalOnlyHotspotObserver\"\n or v == \"android.net.wifi.WifiScanner\"\n or v == \"android.net.wifi.ActionListener\"\n or v == \"android.net.wifi.HiddenNetwork\"\n or v == \"android.net.wifi.PnoSettings\"\n or v == \"android.net.wifi.PnoNetwork\"\n or v == \"android.net.wifi.PnoScanListener\"\n or v == \"android.net.wifi.WifiChangeSettings\"\n or v == \"android.net.wifi.HotlistSettings\"\n or v == \"android.net.wifi.OperationResult\"\n or v == \"android.net.wifi.RssiPacketCountInfo\"\n or v == \"android.net.wifi.WifiWakeReasonAndCounts\"\n or v == \"android.net.wifi.RttManager\"\n or v == \"android.net.wifi.RttClient\"\n or v == \"android.net.wifi.WifiNetworkScoreCache\"\n or v == \"android.net.wifi.aware.WifiAwareNetworkSpecifier\"\n or v == \"android.net.wifi.aware.WifiAwareUtils\"\n or v == \"android.net.wifi.aware.TlvBufferUtils\"\n or v == \"android.net.wifi.aware.WifiAwareAgentNetworkSpecifier\"\n or v == \"android.net.wifi.aware.ConfigRequest\"\n or v == \"android.net.wifi.ParcelUtil\"\n or v == \"android.net.wifi.WifiSsid\"\n or v == \"android.net.wifi.WifiNetworkConnectionStatistics\"\n or v == \"android.net.wifi.BatchedScanResult\"\n or v == \"android.net.wifi.WifiLinkLayerStats\"\n or v == \"android.net.wifi.EAPConstants\"\n or v == \"android.net.wifi.SupplicantSaver\"\n or v == \"android.net.wifi.SupplicantLoader\"\n or v == \"android.net.wifi.PasspointManagementObjectDefinition\"\n or v == \"android.net.wifi.Visibility\"\n or v == \"android.net.wifi.NetworkSelectionStatus\"\n or v == \"android.net.wifi.RecentFailure\"\n or v == \"android.net.wifi.WifiConnectionStatistics\"\n or v == \"android.net.wifi.WifiActivityEnergyInfo\"\n or v == \"android.net.wifi.p2p.WifiP2pWfdInfo\"\n or v == \"android.net.wifi.p2p.PersistentGroupInfoListener\"\n or v == \"android.net.wifi.p2p.HandoverMessageListener\"\n or v == \"android.net.wifi.p2p.WifiP2pProvDiscEvent\"\n or v == \"android.net.wifi.p2p.WifiP2pGroupList\"\n or v == \"android.net.wifi.p2p.nsd.WifiP2pServiceResponse\"\n or v == \"android.net.wifi.p2p.nsd.WifiP2pDnsSdServiceResponse\"\n or v == \"android.net.wifi.p2p.nsd.WifiP2pUpnpServiceResponse\"\n or v == \"android.net.wifi.WifiChannel\"\n or v == \"android.net.wifi.hotspot2.omadm.XMLNode\"\n or v == \"android.net.wifi.hotspot2.omadm.XMLParser\"\n or v == \"android.net.wifi.hotspot2.OsuProvider\"\n or v == \"android.net.wifi.hotspot2.pps.UpdateParameter\"\n or v == \"android.net.wifi.hotspot2.pps.Policy\"\n or v == \"android.net.wifi.ScanSettings\"\n or v == \"android.net.wifi.WpsResult\"\n or v == \"android.net.wifi.InformationElement\"\n or v == \"android.net.wifi.AnqpInformationElement\"\n or v == \"android.drm.DrmOutputStream\"\n or v == \"junit.framework.ComparisonCompactor\"\n or v == \"com.google.vr.platform.DeviceInfo\"\n or v == \"com.google.vr.platform.Dvr\"\n or v == \"org.apache.http.conn.ssl.AndroidDistinguishedNameParser\"\n or v == \"android.metrics.LogMaker\"\n or v == \"android.metrics.MetricsReader\"\n or v == \"android.metrics.Event\"\n or v == \"android.metrics.LogReader\"\n or v == \"android.database.CursorWindowAllocationException\"\n or v == \"android.database.BulkCursorDescriptor\"\n or v == \"android.database.BulkCursorNative\"\n or v == \"android.database.sqlite.SQLiteDebug\"\n or v == \"android.database.sqlite.SQLiteStatementInfo\"\n or v == \"android.database.sqlite.SQLiteDirectCursorDriver\"\n or v == \"android.database.sqlite.SQLiteGlobal\"\n or v == \"android.database.sqlite.CustomFunction\"\n or v == \"android.database.sqlite.SQLiteDatabaseConfiguration\"\n or v == \"android.database.sqlite.SQLiteCustomFunction\"\n or v == \"android.database.sqlite.SQLiteSession\"\n or v == \"android.database.sqlite.DatabaseObjectNotClosedException\"\n or v == \"android.database.sqlite.SQLiteConnectionPool\"\n or v == \"android.database.sqlite.SQLiteConnection\"\n or v == \"android.database.CursorToBulkCursorAdaptor\"\n or v == \"android.database.IBulkCursor\"\n or v == \"android.database.BulkCursorToCursorAdaptor\"\n or v == \"android.transition.AnimationInfo\"\n or v == \"android.transition.ChangeText\"\n or v == \"android.transition.Rotate\"\n or v == \"android.transition.Crossfade\"\n or v == \"android.transition.TransitionUtils\"\n or v == \"android.transition.Recolor\"\n or v == \"android.webkit.JsDialogHelper\"\n or v == \"android.webkit.WebViewFactory\"\n or v == \"android.webkit.TokenBindingService\"\n or v == \"android.webkit.WebViewDelegate\"\n or v == \"android.webkit.WebViewProviderInfo\"\n or v == \"android.webkit.UrlInterceptRegistry\"\n or v == \"android.webkit.Plugin\"\n or v == \"android.webkit.DefaultClickHandler\"\n or v == \"android.webkit.WebViewUpdateService\"\n or v == \"android.webkit.UrlInterceptHandler\"\n or v == \"android.webkit.WebViewProvider\"\n or v == \"android.webkit.PrivateAccess\"\n or v == \"android.webkit.ResultReceiver\"\n or v == \"android.webkit.WebViewProviderResponse\"\n or v == \"android.webkit.WebViewZygote\"\n or v == \"android.webkit.WebViewFactoryProvider\"\n or v == \"android.webkit.PluginList\"\n or v == \"android.webkit.FindAddress\"\n or v == \"android.webkit.FindActionModeCallback\"\n or v == \"android.webkit.PluginData\"\n or v == \"android.webkit.UserPackage\"\n or v == \"android.webkit.LegacyErrorStrings\"\n or v == \"android.printservice.recommendation.RecommendationInfo\"\n or v == \"android.printservice.recommendation.RecommendationService\"\n or v == \"android.printservice.PrintServiceInfo\"\n or v == \"android.hardware.SerialPort\"\n or v == \"android.hardware.soundtrigger.SoundTrigger\"\n or v == \"android.hardware.soundtrigger.KeyphraseEnrollmentInfo\"\n or v == \"android.hardware.soundtrigger.SoundTriggerModule\"\n or v == \"android.hardware.soundtrigger.KeyphraseMetadata\"\n or v == \"android.hardware.radio.RadioManager\"\n or v == \"android.hardware.radio.RadioMetadata\"\n or v == \"android.hardware.radio.Clock\"\n or v == \"android.hardware.radio.ProgramSelector\"\n or v == \"android.hardware.radio.RadioTuner\"\n or v == \"android.hardware.fingerprint.EnrollmentCallback\"\n or v == \"android.hardware.fingerprint.RemovalCallback\"\n or v == \"android.hardware.fingerprint.EnumerateCallback\"\n or v == \"android.hardware.fingerprint.LockoutResetCallback\"\n or v == \"android.hardware.fingerprint.Fingerprint\"\n or v == \"android.hardware.SystemSensorManager\"\n or v == \"android.hardware.input.InputDeviceIdentifier\"\n or v == \"android.hardware.input.TouchCalibration\"\n or v == \"android.hardware.input.OnTabletModeChangedListener\"\n or v == \"android.hardware.input.KeyboardLayout\"\n or v == \"android.hardware.input.InputManagerInternal\"\n or v == \"android.hardware.CameraStatus\"\n or v == \"android.hardware.location.GeofenceHardwareRequestParcelable\"\n or v == \"android.hardware.location.NanoApp\"\n or v == \"android.hardware.location.GeofenceHardwareRequest\"\n or v == \"android.hardware.location.ActivityRecognitionEvent\"\n or v == \"android.hardware.location.GeofenceHardwareCallback\"\n or v == \"android.hardware.location.GeofenceHardwareService\"\n or v == \"android.hardware.location.ContextHubInfo\"\n or v == \"android.hardware.location.NanoAppFilter\"\n or v == \"android.hardware.location.NanoAppInstanceInfo\"\n or v == \"android.hardware.location.ActivityRecognitionHardware\"\n or v == \"android.hardware.location.GeofenceHardwareMonitorEvent\"\n or v == \"android.hardware.location.GeofenceHardware\"\n or v == \"android.hardware.location.GeofenceHardwareImpl\"\n or v == \"android.hardware.location.GeofenceHardwareMonitorCallback\"\n or v == \"android.hardware.location.ContextHubMessage\"\n or v == \"android.hardware.location.ActivityChangedEvent\"\n or v == \"android.hardware.location.ContextHubManager\"\n or v == \"android.hardware.location.ICallback\"\n or v == \"android.hardware.location.MemoryRegion\"\n or v == \"android.hardware.hdmi.HdmiClient\"\n or v == \"android.hardware.hdmi.HdmiControlManager\"\n or v == \"android.hardware.hdmi.HdmiTimerRecordSources\"\n or v == \"android.hardware.hdmi.TimeUnit\"\n or v == \"android.hardware.hdmi.Time\"\n or v == \"android.hardware.hdmi.Duration\"\n or v == \"android.hardware.hdmi.TimerInfo\"\n or v == \"android.hardware.hdmi.TimerRecordSource\"\n or v == \"android.hardware.hdmi.HdmiTvClient\"\n or v == \"android.hardware.hdmi.HdmiHotplugEvent\"\n or v == \"android.hardware.hdmi.HdmiRecordSources\"\n or v == \"android.hardware.hdmi.RecordSource\"\n or v == \"android.hardware.hdmi.OwnSource\"\n or v == \"android.hardware.hdmi.AribData\"\n or v == \"android.hardware.hdmi.AtscData\"\n or v == \"android.hardware.hdmi.DvbData\"\n or v == \"android.hardware.hdmi.DigitalChannelData\"\n or v == \"android.hardware.hdmi.DigitalServiceSource\"\n or v == \"android.hardware.hdmi.AnalogueServiceSource\"\n or v == \"android.hardware.hdmi.ExternalPlugData\"\n or v == \"android.hardware.hdmi.ExternalPhysicalAddress\"\n or v == \"android.hardware.hdmi.HdmiPlaybackClient\"\n or v == \"android.hardware.hdmi.HdmiDeviceInfo\"\n or v == \"android.hardware.hdmi.HdmiRecordListener\"\n or v == \"android.hardware.hdmi.TimerStatusData\"\n or v == \"android.hardware.hdmi.HdmiPortInfo\"\n or v == \"android.hardware.usb.UsbPortStatus\"\n or v == \"android.hardware.usb.UsbPort\"\n or v == \"android.hardware.display.DisplayManagerInternal\"\n or v == \"android.hardware.display.DisplayManagerGlobal\"\n or v == \"android.hardware.display.WifiDisplayStatus\"\n or v == \"android.hardware.display.WifiDisplaySessionInfo\"\n or v == \"android.hardware.display.DisplayViewport\"\n or v == \"android.hardware.display.WifiDisplay\"\n or v == \"android.hardware.SerialManager\"\n or v == \"android.hardware.CameraInfo\"\n or v == \"android.hardware.LegacySensorManager\"\n or v == \"android.hardware.camera2.impl.ICameraDeviceUserWrapper\"\n or v == \"android.hardware.camera2.impl.CaptureResultExtras\"\n or v == \"android.hardware.camera2.utils.LongParcelable\"\n or v == \"android.hardware.camera2.utils.UncheckedThrow\"\n or v == \"android.hardware.camera2.utils.SubmitInfo\"\n or v == \"android.hardware.camera2.params.StreamConfigurationDuration\"\n or v == \"android.hardware.camera2.params.ReprocessFormatsMap\"\n or v == \"android.hardware.camera2.params.HighSpeedVideoConfiguration\"\n or v == \"android.hardware.camera2.params.VendorTagDescriptorCache\"\n or v == \"android.hardware.camera2.params.VendorTagDescriptor\"\n or v == \"android.hardware.camera2.params.StreamConfiguration\"\n or v == \"android.net.NetworkStatsHistory\"\n or v == \"android.net.metrics.RaEvent\"\n or v == \"android.net.metrics.DefaultNetworkEvent\"\n or v == \"android.net.metrics.WakeupEvent\"\n or v == \"android.net.metrics.ConnectStats\"\n or v == \"android.net.metrics.IpConnectivityLog\"\n or v == \"android.net.metrics.DhcpClientEvent\"\n or v == \"android.net.metrics.DnsEvent\"\n or v == \"android.net.metrics.ValidationProbeEvent\"\n or v == \"android.net.metrics.NetworkMetrics\"\n or v == \"android.net.metrics.DhcpErrorEvent\"\n or v == \"android.net.metrics.IpManagerEvent\"\n or v == \"android.net.metrics.IpReachabilityEvent\"\n or v == \"android.net.metrics.WakeupStats\"\n or v == \"android.net.metrics.ApfProgramEvent\"\n or v == \"android.net.metrics.ApfStats\"\n or v == \"android.net.metrics.NetworkEvent\"\n or v == \"android.net.Status\"\n or v == \"android.net.PacketKeepaliveCallback\"\n or v == \"android.net.PacketKeepalive\"\n or v == \"android.net.OnStartTetheringCallback\"\n or v == \"android.net.Errors\"\n or v == \"android.net.TooManyRequestsException\"\n or v == \"android.net.DataUsageRequest\"\n or v == \"android.net.IpConfiguration\"\n or v == \"android.net.InterfaceConfiguration\"\n or v == \"android.net.SntpClient\"\n or v == \"android.net.IpSecTransformResponse\"\n or v == \"android.net.ScoredNetwork\"\n or v == \"android.net.NetworkKey\"\n or v == \"android.net.NetworkIdentity\"\n or v == \"android.net.NetworkPolicy\"\n or v == \"android.net.NetworkUtils\"\n or v == \"android.net.DhcpResults\"\n or v == \"android.net.StaticIpConfiguration\"\n or v == \"android.net.MatchAllNetworkSpecifier\"\n or v == \"android.net.NetworkPolicyManager\"\n or v == \"android.net.NetworkScoreManager\"\n or v == \"android.net.StringNetworkSpecifier\"\n or v == \"android.net.MobileLinkQualityInfo\"\n or v == \"android.net.LinkQualityInfo\"\n or v == \"android.net.NetworkConfig\"\n or v == \"android.net.NetworkStats\"\n or v == \"android.net.RssiCurve\"\n or v == \"android.net.PacProxySelector\"\n or v == \"android.net.EthernetManager\"\n or v == \"android.net.UidRange\"\n or v == \"android.net.IpSecSpiResponse\"\n or v == \"android.net.NetworkTemplate\"\n or v == \"android.net.NetworkState\"\n or v == \"android.net.WifiLinkQualityInfo\"\n or v == \"android.net.NetworkQuotaInfo\"\n or v == \"android.net.WifiKey\"\n or v == \"android.net.wimax.WimaxManagerConstants\"\n or v == \"android.net.NetworkMisc\"\n or v == \"android.net.ConnectivityMetricsEvent\"\n or v == \"android.net.ConnectivityThread\"\n or v == \"android.net.NetworkAgent\"\n or v == \"android.net.IpSecUdpEncapResponse\"\n or v == \"android.net.CompareResult\"\n or v == \"android.net.IpSecConfig\"\n or v == \"android.net.NetworkRecommendationProvider\"\n or v == \"android.net.NetworkScorerAppData\"\n or v == \"android.net.nsd.DnsSdTxtRecord\"\n or v == \"android.net.NetworkFactory\"\n or v == \"android.app.ActivityManagerNative\"\n or v == \"android.app.BackStackRecord\"\n or v == \"android.app.PackageInstallObserver\"\n or v == \"android.app.LoadedApk\"\n or v == \"android.app.StackId\"\n or v == \"android.app.TaskThumbnailInfo\"\n or v == \"android.app.TaskThumbnail\"\n or v == \"android.app.TaskSnapshot\"\n or v == \"android.app.StackInfo\"\n or v == \"android.app.OnUidImportanceListener\"\n or v == \"android.app.assist.AutofillOverlay\"\n or v == \"android.app.TranslucentConversionListener\"\n or v == \"android.app.ActivityManagerInternal\"\n or v == \"android.app.ApplicationPackageManager\"\n or v == \"android.app.MoveCallbackDelegate\"\n or v == \"android.app.WaitResult\"\n or v == \"android.app.UiAutomationConnection\"\n or v == \"android.app.timezone.RulesManager\"\n or v == \"android.app.timezone.RulesState\"\n or v == \"android.app.timezone.Callback\"\n or v == \"android.app.timezone.DistroFormatVersion\"\n or v == \"android.app.timezone.DistroRulesVersion\"\n or v == \"android.app.timezone.RulesUpdaterContract\"\n or v == \"android.app.VrManager\"\n or v == \"android.app.ActivityView\"\n or v == \"android.app.ActivityThread\"\n or v == \"android.app.ContentProviderHolder\"\n or v == \"android.app.BroadcastOptions\"\n or v == \"android.app.JobSchedulerImpl\"\n or v == \"android.app.ResultInfo\"\n or v == \"android.app.TvExtender\"\n or v == \"android.app.UserSwitchObserver\"\n or v == \"android.app.admin.PasswordMetrics\"\n or v == \"android.app.admin.PolicyInfo\"\n or v == \"android.app.admin.DevicePolicyManagerInternal\"\n or v == \"android.app.ResourcesManager\"\n or v == \"android.app.PackageOps\"\n or v == \"android.app.OpEntry\"\n or v == \"android.app.OnOpChangedInternalListener\"\n or v == \"android.app.QueuedWork\"\n or v == \"android.app.ServiceStartArgs\"\n or v == \"android.app.usage.TimeSparseArray\"\n or v == \"android.app.usage.UsageStatsManagerInternal\"\n or v == \"android.app.usage.CacheQuotaService\"\n or v == \"android.app.usage.CacheQuotaHint\"\n or v == \"android.app.TaskStackListener\"\n or v == \"android.app.AppGlobals\"\n or v == \"android.app.StatusBarManager\"\n or v == \"android.app.OnMarshaledListener\"\n or v == \"android.app.ApplicationThreadConstants\"\n or v == \"android.app.EphemeralResolverService\"\n or v == \"android.app.ParcelableCrashInfo\"\n or v == \"android.app.job.JobHandler\"\n or v == \"android.app.Vr2dDisplayProperties\"\n or v == \"android.app.ProfilerInfo\"\n or v == \"android.app.trust.TrustManager\"\n or v == \"android.app.SearchDialog\"\n or v == \"android.app.InstantAppResolverService\"\n or v == \"android.app.OnActivityPausedListener\"\n or v == \"android.app.ActionKeyInfo\"\n or v == \"android.app.backup.BackupHelperDispatcher\"\n or v == \"android.app.backup.BackupManagerMonitor\"\n or v == \"android.app.backup.RestoreDescription\"\n or v == \"android.app.backup.SelectBackupTransportCallback\"\n or v == \"android.app.backup.BackupProgress\"\n or v == \"android.app.backup.AbsoluteFileBackupHelper\"\n or v == \"android.app.backup.FullBackup\"\n or v == \"android.app.backup.RestoreSession\"\n or v == \"android.app.backup.RestoreSet\"\n or v == \"android.app.backup.BlobBackupHelper\"\n or v == \"android.app.backup.BackupObserver\"\n or v == \"android.app.backup.WallpaperBackupHelper\"\n or v == \"android.app.backup.BackupTransport\"\n or v == \"android.app.SynchronousUserSwitchObserver\"\n or v == \"android.app.RecoverableSecurityException\"\n or v == \"android.app.LocalDialog\"\n or v == \"android.app.ApplicationLoaders\"\n or v == \"android.app.PackageDeleteObserver\"\n or v == \"android.app.OnAnimationStartedListener\"\n or v == \"android.app.OnAnimationFinishedListener\"\n or v == \"android.app.VrStateCallback\"\n or v == \"android.widget.SuggestionsAdapter\"\n or v == \"android.widget.DropDownListView\"\n or v == \"android.widget.ActionMenuChildView\"\n or v == \"android.widget.AppSecurityPermissions\"\n or v == \"android.widget.MyPermissionGroupInfo\"\n or v == \"android.widget.MyPermissionInfo\"\n or v == \"android.widget.PermissionItemView\"\n or v == \"android.widget.RadialTimePickerView\"\n or v == \"android.widget.Editor\"\n or v == \"android.widget.RemoteViewsAdapter\"\n or v == \"android.widget.RemoteViewsListAdapter\"\n or v == \"android.widget.MenuItemHoverListener\"\n or v == \"android.widget.MenuPopupWindow\"\n or v == \"android.widget.MenuDropDownListView\"\n or v == \"android.widget.CustomEditText\"\n or v == \"android.widget.TextInputTimePickerView\"\n or v == \"android.widget.ScrollBarDrawable\"\n or v == \"android.widget.SearchAutoComplete\"\n or v == \"android.widget.ActivityChooserView\"\n or v == \"android.widget.ActionMenuPresenter\"\n or v == \"android.widget.DatePickerDelegate\"\n or v == \"android.widget.ValidationCallback\"\n or v == \"android.widget.OnClickHandler\"\n or v == \"android.widget.OnViewAppliedListener\"\n or v == \"android.widget.ForwardingListener\"\n or v == \"android.widget.DateTimeView\"\n or v == \"android.widget.DatePickerController\"\n or v == \"android.widget.TextViewMetrics\"\n or v == \"android.widget.Delayer\"\n or v == \"android.widget.ActivityChooserModel\"\n or v == \"android.widget.SpellChecker\"\n or v == \"android.util.MergedConfiguration\"\n or v == \"android.util.PackageUtils\"\n or v == \"android.util.Spline\"\n or v == \"android.util.LocalLog\"\n or v == \"android.util.apk.ApkSignatureSchemeV2Verifier\"\n or v == \"android.util.proto.ProtoParseException\"\n or v == \"android.util.proto.EncodedBuffer\"\n or v == \"android.util.SuperNotCalledException\"\n or v == \"android.util.BackupUtils\"\n or v == \"android.util.Singleton\"\n or v == \"android.util.jar.StrictJarFile\"\n or v == \"android.util.jar.ZipInflaterInputStream\"\n or v == \"android.util.jar.FDStream\"\n or v == \"android.util.jar.StrictJarManifest\"\n or v == \"android.util.Pools\"\n or v == \"android.util.PrefixPrinter\"\n or v == \"android.util.PathParser\"\n or v == \"android.util.LongArray\"\n or v == \"android.util.MathUtils\"\n or v == \"android.util.FastImmutableArraySet\"\n or v == \"android.util.IntArray\"\n or v == \"android.util.ExceptionUtils\"\n or v == \"android.util.MemoryIntArray\"\n or v == \"android.util.DayOfMonthCursor\"\n or v == \"android.util.TrustedTime\"\n or v == \"android.util.ByteStringUtils\"\n or v == \"android.util.TerribleFailure\"\n or v == \"android.util.TerribleFailureHandler\"\n or v == \"android.util.NtpTrustedTime\"\n or v == \"android.util.TimingsTraceLog\"\n or v == \"android.util.IconDrawableFactory\"\n or v == \"android.util.LongSparseLongArray\"\n or v == \"android.util.RecurrenceRule\"\n or v == \"android.util.Slog\"\n or v == \"android.util.LauncherIcons\"\n or v == \"android.util.LogWriter\"\n or v == \"android.util.MapCollections\"\n or v == \"android.util.TimedRemoteCaller\"\n or v == \"android.util.KeyValueListParser\"\n or v == \"android.security.net.config.ApplicationConfig\"\n or v == \"android.security.net.config.ConfigSource\"\n or v == \"android.security.net.config.UserCertificateSource\"\n or v == \"android.security.net.config.CertificatesEntryRef\"\n or v == \"android.security.net.config.SystemCertificateSource\"\n or v == \"android.security.net.config.NetworkSecurityConfig\"\n or v == \"android.security.net.config.Builder\"\n or v == \"android.security.net.config.TrustAnchor\"\n or v == \"android.security.net.config.NetworkSecurityTrustManager\"\n or v == \"android.security.net.config.XmlConfigSource\"\n or v == \"android.security.net.config.Pin\"\n or v == \"android.security.net.config.ResourceCertificateSource\"\n or v == \"android.security.net.config.RootTrustManager\"\n or v == \"android.security.net.config.ManifestConfigSource\"\n or v == \"android.security.net.config.DirectoryCertificateSource\"\n or v == \"android.security.net.config.CertificateSource\"\n or v == \"android.security.net.config.PinSet\"\n or v == \"android.security.net.config.ConfigNetworkSecurityPolicy\"\n or v == \"android.security.net.config.TrustedCertificateStoreAdapter\"\n or v == \"android.security.net.config.RootTrustManagerFactorySpi\"\n or v == \"android.security.net.config.NetworkSecurityConfigProvider\"\n or v == \"android.security.net.config.Domain\"\n or v == \"android.security.keymaster.KeyCharacteristics\"\n or v == \"android.security.keymaster.KeymasterArguments\"\n or v == \"android.security.keymaster.KeyAttestationApplicationId\"\n or v == \"android.security.keymaster.ExportResult\"\n or v == \"android.security.keymaster.KeymasterDefs\"\n or v == \"android.security.keymaster.KeymasterCertificateChain\"\n or v == \"android.security.keymaster.KeymasterDateArgument\"\n or v == \"android.security.keymaster.KeymasterBooleanArgument\"\n or v == \"android.security.keymaster.KeymasterArgument\"\n or v == \"android.security.keymaster.KeymasterBlob\"\n or v == \"android.security.keymaster.OperationResult\"\n or v == \"android.security.keymaster.KeymasterBlobArgument\"\n or v == \"android.security.keymaster.KeyAttestationPackageInfo\"\n or v == \"android.security.keymaster.KeymasterIntArgument\"\n or v == \"android.security.keymaster.KeymasterLongArgument\"\n or v == \"android.security.FrameworkNetworkSecurityPolicy\"\n or v == \"android.security.KeystoreArguments\"\n or v == \"android.inputmethodservice.CompactExtractEditLayout\"\n or v == \"android.inputmethodservice.SoftInputWindow\"\n or v == \"android.inputmethodservice.ExtractEditLayout\"\n or v == \"android.provider.Presence\"\n or v == \"android.provider.SearchIndexableData\"\n or v == \"android.provider.SearchIndexablesContract\"\n or v == \"android.provider.SearchIndexablesProvider\"\n or v == \"android.provider.SyncConstValue\"\n or v == \"android.provider.OneTimeUseBuilder\"\n or v == \"android.provider.BrowserContract\"\n or v == \"android.provider.BaseSyncColumns\"\n or v == \"android.provider.ChromeSyncColumns\"\n or v == \"android.provider.SyncColumns\"\n or v == \"android.provider.ImageColumns\"\n or v == \"android.provider.Accounts\"\n or v == \"android.provider.Searches\"\n or v == \"android.provider.SyncState\"\n or v == \"android.provider.Combined\"\n or v == \"android.provider.Settings\"\n or v == \"android.provider.SettingsStringUtil\"\n or v == \"android.provider.Impl\"\n or v == \"android.provider.SearchIndexableResource\"\n or v == \"android.provider.MetadataReader\"\n or v == \"android.provider.Authorization\"\n or v == \"android.provider.SyncStateColumns\"\n or v == \"android.provider.PhotoFiles\"\n or v == \"android.provider.PhotoFilesColumns\"\n or v == \"android.provider.MetadataSyncColumns\"\n or v == \"android.provider.MetadataSync\"\n or v == \"android.provider.MetadataSyncStateColumns\"\n or v == \"android.provider.MetadataSyncState\"\n or v == \"android.provider.Validator\"\n or v == \"android.provider.Bookmarks\"\n or v == \"android.provider.TimeZoneRulesDataContract\"\n or v == \"android.provider.ContactsInternal\"\n or v == \"android.provider.CalendarMetaDataColumns\"\n or v == \"android.provider.CalendarMetaData\"\n or v == \"android.provider.EventsRawTimesColumns\"\n or v == \"android.provider.EventsRawTimes\"\n or v == \"android.provider.SystemContract\"\n or v == \"android.animation.AnimationHandler\"\n or v == \"android.animation.AnimationFrameCallbackProvider\"\n or v == \"android.animation.Tuple\"\n or v == \"android.animation.RevealAnimator\"\n or v == \"android.animation.KeyframeSet\"\n or v == \"android.animation.PropertyValues\"\n or v == \"android.animation.Keyframes\"\n or v == \"android.animation.PathKeyframes\"\n or v == \"android.content.pm.MacAuthenticatedInputStream\"\n or v == \"android.content.pm.InstantAppInfo\"\n or v == \"android.content.pm.split.SplitAssetDependencyLoader\"\n or v == \"android.content.pm.split.SplitAssetLoader\"\n or v == \"android.content.pm.split.DefaultSplitAssetLoader\"\n or v == \"android.content.pm.split.SplitDependencyLoader\"\n or v == \"android.content.pm.KeySet\"\n or v == \"android.content.pm.StringParceledListSlice\"\n or v == \"android.content.pm.VerifierInfo\"\n or v == \"android.content.pm.InstantAppRequest\"\n or v == \"android.content.pm.PackageBackwardCompatibility\"\n or v == \"android.content.pm.PackageManagerInternal\"\n or v == \"android.content.pm.InstantAppResolveInfo\"\n or v == \"android.content.pm.InstantAppDigest\"\n or v == \"android.content.pm.BaseParceledListSlice\"\n or v == \"android.content.pm.IntentFilterVerificationInfo\"\n or v == \"android.content.pm.OnPermissionsChangedListener\"\n or v == \"android.content.pm.MoveCallback\"\n or v == \"android.content.pm.LegacyPackageInstallObserver\"\n or v == \"android.content.pm.LegacyPackageDeleteObserver\"\n or v == \"android.content.pm.DexModuleRegisterCallback\"\n or v == \"android.content.pm.AppsQueryHelper\"\n or v == \"android.content.pm.FallbackCategoryProvider\"\n or v == \"android.content.pm.LimitedLengthInputStream\"\n or v == \"android.content.pm.VerificationParams\"\n or v == \"android.content.pm.PackageInfoLite\"\n or v == \"android.content.pm.PackageUserState\"\n or v == \"android.content.pm.SessionCallbackDelegate\"\n or v == \"android.content.pm.AuxiliaryResolveInfo\"\n or v == \"android.content.pm.RegisteredServicesCache\"\n or v == \"android.content.pm.InstantAppIntentFilter\"\n or v == \"android.content.pm.UserInfo\"\n or v == \"android.content.pm.PackageCleanItem\"\n or v == \"android.content.pm.XmlSerializerAndParser\"\n or v == \"android.content.pm.ParceledListSlice\"\n or v == \"android.content.pm.VerifierDeviceIdentity\"\n or v == \"android.content.pm.EphemeralResolveInfo\"\n or v == \"android.content.pm.EphemeralDigest\"\n or v == \"android.content.pm.EphemeralIntentFilter\"\n or v == \"android.content.pm.SELinuxUtil\"\n or v == \"android.content.pm.PackageParserCacheHelper\"\n or v == \"android.content.pm.permission.RuntimePermissionPresenter\"\n or v == \"android.content.pm.permission.RuntimePermissionPresentationInfo\"\n or v == \"android.content.pm.RegisteredServicesCacheListener\"\n or v == \"android.content.pm.PackageParser\"\n or v == \"android.content.pm.NewPermissionInfo\"\n or v == \"android.content.pm.SplitPermissionInfo\"\n or v == \"android.content.pm.ParseComponentArgs\"\n or v == \"android.content.pm.ShortcutServiceInternal\"\n or v == \"android.content.res.ResourcesKey\"\n or v == \"android.content.res.GradientColor\"\n or v == \"android.content.res.ComplexColor\"\n or v == \"android.content.res.ConfigurationBoundResourceCache\"\n or v == \"android.content.res.StringBlock\"\n or v == \"android.content.res.ResourceId\"\n or v == \"android.content.res.ResourcesImpl\"\n or v == \"android.content.res.CompatResources\"\n or v == \"android.content.res.ConstantState\"\n or v == \"android.content.res.XmlBlock\"\n or v == \"android.content.res.FontResourcesParser\"\n or v == \"android.content.res.CompatibilityInfo\"\n or v == \"android.content.res.Translator\"\n or v == \"android.content.OpenResourceIdResult\"\n or v == \"android.content.Transport\"\n or v == \"android.content.ContentInsertHandler\"\n or v == \"android.content.DefaultDataHandler\"\n or v == \"android.content.SyncActivityTooManyDeletes\"\n or v == \"android.content.DatabaseHelper\"\n or v == \"android.content.om.OverlayInfo\"\n or v == \"android.content.SyncStatusInfo\"\n or v == \"android.content.UndoOwner\"\n or v == \"android.content.CursorEntityIterator\"\n or v == \"android.content.ContentProviderNative\"\n or v == \"android.content.IContentProvider\"\n or v == \"android.content.SyncAdaptersCache\"\n or v == \"android.content.UndoManager\"\n or v == \"android.content.UndoOperation\"\n or v == \"android.content.CommandOptionHandler\"\n or v == \"android.print.PrintServiceRecommendationsLoader\"\n or v == \"android.print.PrintJobStateChangeListener\"\n or v == \"android.print.PrintServicesChangeListener\"\n or v == \"android.print.PrintServiceRecommendationsChangeListener\"\n or v == \"android.print.PrintDocumentAdapterDelegate\"\n or v == \"android.print.PrintJobStateChangeListenerWrapper\"\n or v == \"android.print.PrintServicesChangeListenerWrapper\"\n or v == \"android.print.PrintServiceRecommendationsChangeListenerWrapper\"\n or v == \"android.print.PrintFileDocumentAdapter\"\n or v == \"android.print.PrintServicesLoader\"\n or v == \"android.print.PrinterDiscoverySession\"\n or v == \"android.speech.tts.TtsEngines\"\n or v == \"android.preference.SeekBarVolumizer\"\n or v == \"android.preference.SeekBarDialogPreference\"\n or v == \"android.preference.MultiCheckPreference\"\n or v == \"android.preference.OnPreferenceTreeClickListener\"\n or v == \"android.preference.SeekBarPreference\"\n or v == \"android.preference.VolumePreference\"\n or v == \"android.preference.GenericInflater\"\n or v == \"android.preference.PreferenceGroupAdapter\"\n or v == \"android.preference.PreferenceFrameLayout\"\n or v == \"android.permissionpresenterservice.RuntimePermissionPresenterService\"\n or v == \"android.accounts.ChooseAccountTypeActivity\"\n or v == \"android.accounts.GrantCredentialsPermissionActivity\"\n or v == \"android.accounts.ChooseTypeAndAccountActivity\"\n or v == \"android.accounts.AccountManagerInternal\"\n or v == \"android.accounts.AccountManagerResponse\"\n or v == \"android.accounts.AccountAndUser\"\n or v == \"android.accounts.CantAddAccountActivity\"\n or v == \"android.accounts.ChooseAccountActivity\"\n or v == \"android.appwidget.PendingHostUpdate\"\n or v == \"android.nfc.dta.NfcDta\"\n or v == \"android.nfc.BeamShareData\"\n or v == \"android.nfc.cardemulation.ApduServiceInfo\"\n or v == \"android.nfc.cardemulation.AidGroup\"\n or v == \"android.nfc.cardemulation.NfcFServiceInfo\"\n or v == \"android.nfc.NfcUnlockHandler\"\n or v == \"android.nfc.NfcActivityManager\"\n or v == \"android.nfc.TechListParcel\"\n or v == \"android.nfc.ApduList\"\n or v == \"android.nfc.ErrorCodes\"\n or v == \"android.nfc.TransceiveResult\"\n or v == \"android.bluetooth.BluetoothCodecStatus\"\n or v == \"android.bluetooth.SdpRecord\"\n or v == \"android.bluetooth.BluetoothActivityEnergyInfo\"\n or v == \"android.bluetooth.SdpOppOpsRecord\"\n or v == \"android.bluetooth.SdpSapsRecord\"\n or v == \"android.bluetooth.BluetoothUuid\"\n or v == \"android.bluetooth.BluetoothA2dpSink\"\n or v == \"android.bluetooth.BluetoothHeadsetClientCall\"\n or v == \"android.bluetooth.BluetoothHeadsetClient\"\n or v == \"android.bluetooth.BluetoothAvrcpController\"\n or v == \"android.bluetooth.BluetoothPbapClient\"\n or v == \"android.bluetooth.BluetoothMapClient\"\n or v == \"android.bluetooth.UidTraffic\"\n or v == \"android.bluetooth.le.PeriodicAdvertisingManager\"\n or v == \"android.bluetooth.le.PeriodicAdvertisingReport\"\n or v == \"android.bluetooth.le.TruncatedFilter\"\n or v == \"android.bluetooth.le.BluetoothLeUtils\"\n or v == \"android.bluetooth.le.PeriodicAdvertisingCallback\"\n or v == \"android.bluetooth.le.ResultStorageDescriptor\"\n or v == \"android.bluetooth.BluetoothStateChangeCallback\"\n or v == \"android.bluetooth.StateChangeCallbackWrapper\"\n or v == \"android.bluetooth.BluetoothPan\"\n or v == \"android.bluetooth.BluetoothGattIncludedService\"\n or v == \"android.bluetooth.BluetoothAvrcp\"\n or v == \"android.bluetooth.BluetoothAvrcpPlayerSettings\"\n or v == \"android.bluetooth.BluetoothSap\"\n or v == \"android.bluetooth.BluetoothMasInstance\"\n or v == \"android.bluetooth.BluetoothDevicePicker\"\n or v == \"android.bluetooth.BluetoothHidHost\"\n or v == \"android.bluetooth.BluetoothCodecConfig\"\n or v == \"android.bluetooth.SdpMasRecord\"\n or v == \"android.bluetooth.BluetoothPbap\"\n or v == \"android.bluetooth.BluetoothAudioConfig\"\n or v == \"android.bluetooth.BluetoothMap\"\n or v == \"android.bluetooth.SdpPseRecord\"\n or v == \"android.bluetooth.SdpMnsRecord\"\n or v == \"android.bluetooth.OobData\"\n or v == \"android.view.InputFilter\"\n or v == \"android.view.HandlerActionQueue\"\n or v == \"android.view.WindowInfo\"\n or v == \"android.view.inputmethod.FinishedInputEventCallback\"\n or v == \"android.view.inputmethod.InputMethodSubtypeArray\"\n or v == \"android.view.inputmethod.InputMethodManagerInternal\"\n or v == \"android.view.inputmethod.SparseRectFArray\"\n or v == \"android.view.inputmethod.SparseRectFArrayBuilder\"\n or v == \"android.view.inputmethod.InputConnectionInspector\"\n or v == \"android.view.WindowManagerInternal\"\n or v == \"android.view.SurfaceControl\"\n or v == \"android.view.ViewHierarchyEncoder\"\n or v == \"android.view.OnWindowDismissedCallback\"\n or v == \"android.view.OnWindowSwipeDismissedCallback\"\n or v == \"android.view.WindowControllerCallback\"\n or v == \"android.view.InputChannel\"\n or v == \"android.view.InputEventReceiver\"\n or v == \"android.view.OnWindowShownListener\"\n or v == \"android.view.InternalInsetsInfo\"\n or v == \"android.view.OnComputeInternalInsetsListener\"\n or v == \"android.view.OnEnterAnimationCompleteListener\"\n or v == \"android.view.WindowManagerGlobal\"\n or v == \"android.view.textclassifier.TextClassifierConstants\"\n or v == \"android.view.textclassifier.TextClassifierImpl\"\n or v == \"android.view.textclassifier.LinksInfo\"\n or v == \"android.view.textclassifier.EntityConfidence\"\n or v == \"android.view.InputEventSender\"\n or v == \"android.view.FrameInfo\"\n or v == \"android.view.ViewRootImpl\"\n or v == \"android.view.RenderNode\"\n or v == \"android.view.animation.TranslateYAnimation\"\n or v == \"android.view.animation.ClipRectAnimation\"\n or v == \"android.view.animation.TranslateXAnimation\"\n or v == \"android.view.autofill.AutofillPopupWindow\"\n or v == \"android.view.autofill.Helper\"\n or v == \"android.view.autofill.AutofillClient\"\n or v == \"android.view.autofill.ParcelableMap\"\n or v == \"android.view.autofill.AutofillManagerInternal\"\n or v == \"android.view.RecordingCanvas\"\n or v == \"android.view.ThreadedRenderer\"\n or v == \"android.view.DisplayEventReceiver\"\n or v == \"android.view.GhostView\"\n or v == \"android.view.NotificationHeaderView\"\n or v == \"android.view.RenderNodeAnimator\"\n or v == \"android.view.WindowManagerPolicy\"\n or v == \"android.view.FinishedInputEventCallback\"\n or v == \"android.view.WindowCallbackWrapper\"\n or v == \"android.view.FallbackAction\"\n or v == \"android.view.DisplayAdjustments\"\n or v == \"android.view.AppTransitionAnimationSpec\"\n or v == \"android.view.InputEventConsistencyVerifier\"\n or v == \"android.view.KeyboardShortcutsReceiver\"\n or v == \"android.view.FallbackEventHandler\"\n or v == \"android.view.ViewReplaceRunnable\"\n or v == \"android.view.WindowCallbacks\"\n or v == \"android.view.WindowManagerImpl\"\n or v == \"android.view.RenderNodeAnimatorSetHelper\"\n or v == \"android.view.MagnificationSpec\"\n or v == \"android.view.DisplayListCanvas\"\n or v == \"android.view.accessibility.AccessibilityServicesStateChangeListener\"\n or v == \"android.view.accessibility.HighTextContrastChangeListener\"\n or v == \"android.view.accessibility.AccessibilityInteractionClient\"\n or v == \"android.view.accessibility.AccessibilityCache\"\n or v == \"android.view.Estimator\"\n or v == \"android.view.HierarchyHandler\"\n or v == \"android.view.DisplayInfo\"\n or v == \"android.view.HardwareLayer\"\n or v == \"android.view.SurfaceSession\"\n or v == \"android.view.BatchedInputEventReceiver\"\n or v == \"android.view.FrameMetricsObserver\"\n or v == \"android.view.FocusFinderHelper\"\n or v == \"android.view.AccessibilityIterators\"\n or v == \"android.view.TextSegmentIterator\"\n or v == \"android.view.AbstractTextSegmentIterator\"\n or v == \"android.view.SubUiVisibilityListener\"\n or v == \"android.accessibilityservice.CapabilityInfo\"\n or v == \"android.accessibilityservice.TouchPoint\"\n or v == \"android.accessibilityservice.GestureStep\"\n or v == \"android.accessibilityservice.MotionEventGenerator\"\n or v == \"android.accessibilityservice.Callbacks\"\n or v == \"android.accessibilityservice.IAccessibilityServiceClientWrapper\"\n or v == \"android.os.MyReadMapCallback\"\n or v == \"android.os.SynchronousResultReceiver\"\n or v == \"android.os.BatteryProperty\"\n or v == \"android.os.NoImagePreloadHolder\"\n or v == \"android.os.IHwInterface\"\n or v == \"android.os.PerformanceCollector\"\n or v == \"android.os.SystemVibrator\"\n or v == \"android.os.IServiceManager\"\n or v == \"android.os.HidlSupport\"\n or v == \"android.os.ServiceSpecificException\"\n or v == \"android.os.UserEnvironment\"\n or v == \"android.os.AsyncResult\"\n or v == \"android.os.PowerSaveState\"\n or v == \"android.os.Broadcaster\"\n or v == \"android.os.FactoryTest\"\n or v == \"android.os.HwParcel\"\n or v == \"android.os.IHwBinder\"\n or v == \"android.os.ParcelableException\"\n or v == \"android.os.ShellCommand\"\n or v == \"android.os.ServiceManager\"\n or v == \"android.os.ServiceNotFoundException\"\n or v == \"android.os.ProcessStartResult\"\n or v == \"android.os.SELinux\"\n or v == \"android.os.ReadWriteHelper\"\n or v == \"android.os.NoneVibrator\"\n or v == \"android.os.VintfObject\"\n or v == \"android.os.BatteryProperties\"\n or v == \"android.os.HwBinder\"\n or v == \"android.os.HwRemoteBinder\"\n or v == \"android.os.GraphicsEnvironment\"\n or v == \"android.os.ShellCallback\"\n or v == \"android.os.IncidentManager\"\n or v == \"android.os.FileUtils\"\n or v == \"android.os.health.HealthStatsWriter\"\n or v == \"android.os.health.HealthKeys\"\n or v == \"android.os.health.Constants\"\n or v == \"android.os.health.HealthStatsParceler\"\n or v == \"android.os.ParcelableParcel\"\n or v == \"android.os.PowerManagerInternal\"\n or v == \"android.os.Temperature\"\n or v == \"android.os.BatteryStats\"\n or v == \"android.os.ZygoteProcess\"\n or v == \"android.os.ViolationListener\"\n or v == \"android.os.StrictModeViolation\"\n or v == \"android.os.StrictModeNetworkViolation\"\n or v == \"android.os.StrictModeDiskReadViolation\"\n or v == \"android.os.StrictModeDiskWriteViolation\"\n or v == \"android.os.StrictModeCustomViolation\"\n or v == \"android.os.StrictModeResourceMismatchViolation\"\n or v == \"android.os.StrictModeUnbufferedIOViolation\"\n or v == \"android.os.Span\"\n or v == \"android.os.ViolationInfo\"\n or v == \"android.os.storage.StorageManagerInternal\"\n or v == \"android.os.storage.StorageResultCode\"\n or v == \"android.os.storage.VolumeRecord\"\n or v == \"android.os.storage.DiskInfo\"\n or v == \"android.os.storage.VolumeInfo\"\n or v == \"android.os.storage.StorageEventListener\"\n or v == \"android.os.SystemProperties\"\n or v == \"android.os.RemoteCallback\"\n or v == \"android.os.Registrant\"\n or v == \"android.os.RevocableFileDescriptor\"\n or v == \"android.os.UEventObserver\"\n or v == \"android.os.ServiceManagerNative\"\n or v == \"android.os.UpdateEngine\"\n or v == \"android.os.BatteryManagerInternal\"\n or v == \"android.os.UpdateLock\"\n or v == \"android.os.OneShot\"\n or v == \"android.os.Waveform\"\n or v == \"android.os.Prebaked\"\n or v == \"android.os.EnforcingUser\"\n or v == \"android.os.PooledStringReader\"\n or v == \"android.os.CommonClock\"\n or v == \"android.os.IncidentReportArgs\"\n or v == \"android.os.RemoteMailException\"\n or v == \"android.os.CommonTimeConfig\"\n or v == \"android.os.RegistrantList\"\n or v == \"android.os.HwBlob\"\n or v == \"android.os.FileBridge\"\n or v == \"android.os.UserManagerInternal\"\n or v == \"android.os.SystemService\"\n or v == \"android.os.Seccomp\"\n or v == \"android.os.VintfRuntimeInfo\"\n or v == \"android.os.UpdateEngineCallback\"\n or v == \"android.os.TransactionTracker\"\n or v == \"android.os.ConfigUpdate\"\n or v == \"android.os.PooledStringWriter\"\n or v == \"android.text.FontConfig\"\n or v == \"android.text.TextLine\"\n or v == \"android.text.PackedIntVector\"\n or v == \"android.text.PositionIterator\"\n or v == \"android.text.style.AccessibilityClickableSpan\"\n or v == \"android.text.style.SuggestionRangeSpan\"\n or v == \"android.text.style.AccessibilityURLSpan\"\n or v == \"android.text.style.SpellCheckSpan\"\n or v == \"android.text.MeasuredText\"\n or v == \"android.text.AndroidBidi\"\n or v == \"android.text.SpanSet\"\n or v == \"android.text.format.BytesResult\"\n or v == \"android.text.CharSequenceCharacterIterator\"\n or v == \"android.text.Hyphenator\"\n or v == \"android.text.Emoji\"\n or v == \"android.text.GraphicsOperations\"\n or v == \"android.text.method.TransformationMethod2\"\n or v == \"android.text.method.WordIterator\"\n or v == \"android.text.method.AllCapsTransformationMethod\"\n or v == \"android.service.oemlock.OemLockManager\"\n or v == \"android.service.notification.SnoozeCriterion\"\n or v == \"android.service.notification.NotificationRankingUpdate\"\n or v == \"android.service.notification.Adjustment\"\n or v == \"android.service.notification.NotificationListenerWrapper\"\n or v == \"android.service.notification.NotificationAssistantService\"\n or v == \"android.service.notification.ZenModeConfig\"\n or v == \"android.service.gatekeeper.GateKeeperResponse\"\n or v == \"android.service.euicc.GetDownloadableSubscriptionMetadataResult\"\n or v == \"android.service.euicc.GetDefaultDownloadableSubscriptionListResult\"\n or v == \"android.service.euicc.EuiccProfileInfo\"\n or v == \"android.service.euicc.GetEuiccProfileInfoListResult\"\n or v == \"android.service.euicc.EuiccService\"\n or v == \"android.service.autofill.OptionalValidators\"\n or v == \"android.service.autofill.InternalValidator\"\n or v == \"android.service.autofill.RequiredValidators\"\n or v == \"android.service.autofill.AutofillServiceInfo\"\n or v == \"android.service.autofill.ValueFinder\"\n or v == \"android.service.autofill.InternalTransformation\"\n or v == \"android.service.voice.SoundTriggerListener\"\n or v == \"android.service.voice.VoiceInteractionServiceInfo\"\n or v == \"android.service.voice.VoiceInteractionManagerInternal\"\n or v == \"android.service.persistentdata.PersistentDataBlockManager\"\n or v == \"android.service.wallpaper.WallpaperSettingsActivity\"\n or v == \"android.service.trust.TrustAgentService\"\n or v == \"android.service.dreams.Sandman\"\n or v == \"android.service.dreams.DreamManagerInternal\"\n or v == \"android.service.carrier.ICarrierServiceWrapper\"\n or v == \"android.service.carrier.MatchType\"\n or v == \"android.service.resolver.ResolverRankerService\"\n or v == \"android.service.resolver.ResolverTarget\"\n or v == \"android.companion.BluetoothDeviceFilterUtils\"\n or v == \"com.android.server.AppWidgetBackupBridge\"\n or v == \"com.android.server.net.BaseNetworkObserver\"\n or v == \"com.android.server.net.NetlinkTracker\"\n or v == \"com.android.server.WidgetBackupProvider\"\n or v == \"com.android.server.LocalServices\"\n or v == \"android.security.KeyStoreException\"\n or v == \"android.security.keystore.AndroidKeyStoreBCWorkaroundProvider\"\n or v == \"android.security.keystore.AndroidKeyStoreHmacSpi\"\n or v == \"android.security.keystore.AndroidKeyStoreCipherSpiBase\"\n or v == \"android.security.keystore.AndroidKeyStorePublicKey\"\n or v == \"android.security.keystore.AndroidKeyStoreSecretKey\"\n or v == \"android.security.keystore.AndroidKeyStoreECPrivateKey\"\n or v == \"android.security.keystore.AndroidKeyStoreKeyGeneratorSpi\"\n or v == \"android.security.keystore.KeyStoreCryptoOperationChunkedStreamer\"\n or v == \"android.security.keystore.Purpose\"\n or v == \"android.security.keystore.KeyAlgorithm\"\n or v == \"android.security.keystore.BlockMode\"\n or v == \"android.security.keystore.EncryptionPadding\"\n or v == \"android.security.keystore.Digest\"\n or v == \"android.security.keystore.Origin\"\n or v == \"android.security.keystore.DeviceIdAttestationException\"\n or v == \"android.security.keystore.ArrayUtils\"\n or v == \"android.security.keystore.AndroidKeyStoreRSASignatureSpi\"\n or v == \"android.security.keystore.Utils\"\n or v == \"android.security.keystore.AndroidKeyStoreSignatureSpiBase\"\n or v == \"android.security.keystore.AndroidKeyStoreRSAPrivateKey\"\n or v == \"android.security.keystore.AndroidKeyStoreRSACipherSpi\"\n or v == \"android.security.keystore.AndroidKeyStoreECDSASignatureSpi\"\n or v == \"android.security.keystore.AndroidKeyStoreKeyFactorySpi\"\n or v == \"android.security.keystore.AndroidKeyStoreAuthenticatedAESCipherSpi\"\n or v == \"android.security.keystore.AndroidKeyStoreKeyPairGeneratorSpi\"\n or v == \"android.security.keystore.AndroidKeyStoreSpi\"\n or v == \"android.security.keystore.KeyStoreCryptoOperationUtils\"\n or v == \"android.security.keystore.AttestationUtils\"\n or v == \"android.security.keystore.KeyStoreCryptoOperation\"\n or v == \"android.security.keystore.KeymasterUtils\"\n or v == \"android.security.keystore.AndroidKeyStoreRSAPublicKey\"\n or v == \"android.security.keystore.KeyStoreConnectException\"\n or v == \"android.security.keystore.AndroidKeyStoreECPublicKey\"\n or v == \"android.security.keystore.AndroidKeyStoreKey\"\n or v == \"android.security.keystore.AndroidKeyStoreUnauthenticatedAESCipherSpi\"\n or v == \"android.security.keystore.AndroidKeyStorePrivateKey\"\n or v == \"android.security.keystore.KeyStoreCryptoOperationStreamer\"\n or v == \"android.security.keystore.AndroidKeyStoreProvider\"\n or v == \"android.security.keystore.AndroidKeyStoreSecretKeyFactorySpi\"\n or v == \"android.security.Credentials\"\n or v == \"android.security.KeyChainConnection\"\n or v == \"android.security.GateKeeper\"\n or v == \"android.security.SystemKeyStore\"\n or v == \"android.security.KeyStore\"\n or v == \"android.net.lowpan.Builder\"\n or v == \"android.net.lowpan.LowpanProperty\"\n or v == \"android.net.lowpan.LowpanProperties\"\n or v == \"android.net.lowpan.LowpanStandardProperty\"\n or v == \"android.location.GpsMeasurementsEvent\"\n or v == \"android.location.Listener\"\n or v == \"android.location.LocalListenerHelper\"\n or v == \"android.location.Country\"\n or v == \"android.location.GpsNavigationMessage\"\n or v == \"android.location.GpsClock\"\n or v == \"android.location.GeocoderParams\"\n or v == \"android.location.FusedBatchOptions\"\n or v == \"android.location.GpsNavigationMessageEvent\"\n or v == \"android.location.Listener\"\n or v == \"android.location.BatchedLocationCallback\"\n or v == \"android.location.CountryListener\"\n or v == \"android.location.CountryDetector\"\n or v == \"android.location.Geofence\"\n or v == \"android.location.BatchedLocationCallbackTransport\"\n or v == \"android.location.GnssMeasurementCallbackTransport\"\n or v == \"android.location.LocationRequest\"\n or v == \"android.location.GpsMeasurement\"\n or v == \"android.location.GnssNavigationMessageCallbackTransport\"\n or v == \"javax.obex.HeaderSet\"\n or v == \"javax.obex.BaseStream\"\n or v == \"javax.obex.ClientOperation\"\n or v == \"javax.obex.ServerSession\"\n or v == \"javax.obex.Operation\"\n or v == \"javax.obex.PrivateInputStream\"\n or v == \"javax.obex.PrivateOutputStream\"\n or v == \"javax.obex.ClientSession\"\n or v == \"javax.obex.SessionNotifier\"\n or v == \"javax.obex.ApplicationParameter\"\n or v == \"javax.obex.ServerOperation\"\n or v == \"javax.obex.Authenticator\"\n or v == \"javax.obex.ResponseCodes\"\n or v == \"javax.obex.ObexHelper\"\n or v == \"javax.obex.PasswordAuthentication\"\n or v == \"javax.obex.ObexTransport\"\n or v == \"javax.obex.ServerRequestHandler\"\n or v == \"javax.obex.ObexSession\"\n or v == \"android.net.util.PacketReaderTest\"\n or v == \"android.net.util.ConnectivityPacketSummaryTest\"\n or v == \"android.testing.LayoutInflaterBuilder\"\n or v == \"androidx.media.filterfw.GLToolbox\"\n or v == \"android.security.net.config.TestCertificateSource\"\n or v == \"android.security.net.config.TestConfigSource\"\n or v == \"com.android.uiautomator.core.Tracer\"\n or v == \"com.android.uiautomator.core.AccessibilityNodeInfoDumper\"\n or v == \"com.android.uiautomator.core.UiAutomatorBridge\"\n or v == \"com.android.uiautomator.testrunner.UiAutomatorTestCaseFilter\"\n or v == \"com.android.uiautomator.testrunner.TestCaseCollector\"\n or v == \"com.android.uiautomator.testrunner.UiAutomatorTestRunner\"\n or v == \"com.android.uiautomator.core.ShellUiAutomatorBridge\"\n or v == \"com.android.uiautomator.core.UiAutomationShellWrapper\"\n or v == \"com.android.uiautomator.core.InstrumentationUiAutomatorBridge\"\n or v == \"android.renderscript.ProgramRaster\"\n or v == \"android.renderscript.ProgramVertex\"\n or v == \"android.renderscript.Builder\"\n or v == \"android.renderscript.ProgramFragmentFixedFunction\"\n or v == \"android.renderscript.RenderScriptGL\"\n or v == \"android.renderscript.FileA3D\"\n or v == \"android.renderscript.ProgramVertexFixedFunction\"\n or v == \"android.renderscript.ProgramFragment\"\n or v == \"android.renderscript.Font\"\n or v == \"android.renderscript.RSTextureView\"\n or v == \"android.renderscript.RSSurfaceView\"\n or v == \"android.renderscript.Program\"\n or v == \"android.renderscript.ProgramStore\"\n or v == \"android.renderscript.Mesh\"\n or v == \"android.renderscript.RenderScriptCacheDir\"\n or v == \"android.telephony.ClientRequestStats\"\n or v == \"android.telephony.TelephonyHistogram\"\n or v == \"android.telephony.ModemActivityInfo\"\n or v == \"android.telephony.PreciseDisconnectCause\"\n or v == \"android.telephony.cdma.CdmaSmsCbProgramData\"\n or v == \"android.telephony.cdma.CdmaSmsCbProgramResults\"\n or v == \"android.telephony.PreciseCallState\"\n or v == \"android.telephony.SubscriptionPlan\"\n or v == \"android.telephony.VoLteServiceState\"\n or v == \"android.telephony.DisconnectCause\"\n or v == \"android.telephony.UiccAccessRule\"\n or v == \"android.telephony.euicc.EuiccManager\"\n or v == \"android.telephony.euicc.DownloadableSubscription\"\n or v == \"android.telephony.RadioAccessFamily\"\n or v == \"android.telephony.PcoData\"\n or v == \"android.telephony.Builder\"\n or v == \"android.telephony.WifiCallingChoices\"\n or v == \"android.telephony.ims.ImsService\"\n or v == \"android.telephony.ims.stub.ImsCallSessionListenerImplBase\"\n or v == \"android.telephony.ims.feature.ImsFeature\"\n or v == \"android.telephony.CdmaBands\"\n or v == \"android.telephony.UssdResponse\"\n or v == \"android.telephony.PreciseDataConnectionState\"\n or v == \"android.provider.CarrierColumns\"\n or v == \"android.provider.WordsTable\"\n or v == \"android.provider.CellBroadcasts\"\n or v == \"android.provider.CarrierIdentification\"\n or v == \"android.telephony.data.InterfaceAddress\"\n or v == \"android.telephony.data.DataCallResponse\"\n or v == \"android.telephony.data.DataProfile\"\n or v == \"android.telephony.Rlog\"\n or v == \"android.telephony.ImsiEncryptionInfo\"\n or v == \"android.telephony.mbms.InternalStreamingSessionCallback\"\n or v == \"android.telephony.mbms.MbmsTempFileProvider\"\n or v == \"android.telephony.mbms.OpaqueDataContainer\"\n or v == \"android.telephony.mbms.InternalDownloadSessionCallback\"\n or v == \"android.telephony.mbms.InternalStreamingServiceCallback\"\n or v == \"android.telephony.mbms.UriPathPair\"\n or v == \"android.telephony.mbms.InternalDownloadStateCallback\"\n or v == \"android.telephony.mbms.MbmsUtils\"\n or v == \"android.telephony.mbms.vendor.MbmsDownloadServiceBase\"\n or v == \"android.telephony.mbms.vendor.MbmsStreamingServiceBase\"\n or v == \"android.telephony.mbms.vendor.VendorUtils\"\n or v == \"android.telephony.DataConnectionRealTimeInfo\"\n or v == \"android.telephony.SmsCbLocation\"\n or v == \"android.telephony.SmsCbEtwsInfo\"\n or v == \"android.telephony.SmsCbMessage\"\n or v == \"android.telephony.SmsCbCmasInfo\"\n or v == \"com.android.ims.ImsStreamMediaProfile\"\n or v == \"com.android.ims.ImsReasonInfo\"\n or v == \"com.android.ims.ImsCallForwardInfo\"\n or v == \"com.android.ims.ImsExternalCallState\"\n or v == \"com.android.ims.ImsConfig\"\n or v == \"com.android.ims.ImsException\"\n or v == \"com.android.ims.ImsCallProfile\"\n or v == \"com.android.ims.ImsSuppServiceNotification\"\n or v == \"com.android.ims.ImsUtInterface\"\n or v == \"com.android.ims.ImsConferenceState\"\n or v == \"com.android.ims.ImsSsInfo\"\n or v == \"com.android.ims.ImsSsData\"\n or v == \"com.android.settingslib.NetworkPolicyEditor\"\n or v == \"com.android.sharedstoragebackup.ObbBackupService\"\n or v == \"com.android.providers.settings.SettingsProtoDumpUtil\"\n or v == \"com.android.statementservice.retriever.AndroidPackageInfoFetcher\"\n or v == \"com.android.statementservice.retriever.URLFetcher\"\n or v == \"com.android.statementservice.retriever.WebContent\"\n or v == \"com.android.backupconfirm.BackupRestoreConfirmation\"\n or v == \"com.android.proxyhandler.ProxyServer\"\n or v == \"com.android.proxyhandler.SocketConnect\"\n or v == \"com.android.proxyhandler.ProxyService\"\n or v == \"com.android.pacprocessor.PacNative\"\n or v == \"com.android.systemui.media.NotificationPlayer\"\n or v == \"junit.runner.TestRunListener\"\n or v == \"junit.runner.StandardTestSuiteLoader\"\n or v == \"android.test.LaunchPerformanceBase\"\n or v == \"android.test.NoExecTestResult\"\n or v == \"android.test.ClassPathPackageInfoSource\"\n or v == \"android.test.TestPrinter\"\n or v == \"android.test.suitebuilder.UnitTestSuiteBuilder\"\n or v == \"android.test.suitebuilder.TestGrouping\"\n or v == \"android.test.suitebuilder.TestPredicates\"\n or v == \"android.test.suitebuilder.SmokeTestSuiteBuilder\"\n or v == \"android.test.TestCaseUtil\"\n or v == \"android.test.mock.MockIContentProvider\"\n or v == \"android.telecom.TimedEvent\"\n or v == \"android.telecom.DefaultDialerManager\"\n or v == \"android.telecom.ParcelableRttCall\"\n or v == \"android.telecom.AudioState\"\n or v == \"android.telecom.Phone\"\n or v == \"android.telecom.ParcelableCallAnalytics\"\n or v == \"android.telecom.VideoEvent\"\n or v == \"android.telecom.TelecomAnalytics\"\n or v == \"android.telecom.CallbackRecord\"\n or v == \"android.telecom.Response\"\n or v == \"android.telecom.VideoCallImpl\"\n or v == \"android.telecom.ConnectionServiceAdapter\"\n or v == \"android.telecom.Builder\"\n or v == \"android.telecom.RemoteConnectionService\"\n or v == \"android.telecom.AuthenticatorService\"\n or v == \"android.telecom.Listener\"\n or v == \"android.telecom.ConferenceParticipant\"\n or v == \"android.telecom.ParcelableConnection\"\n or v == \"android.telecom.ParcelableCall\"\n or v == \"android.telecom.Log\"\n or v == \"android.telecom.Listener\"\n or v == \"android.telecom.RttTextStream\"\n or v == \"android.telecom.RemoteConnectionManager\"\n or v == \"android.telecom.ParcelableConference\"\n or v == \"android.telecom.Voicemail\"\n or v == \"android.telecom.ConnectionServiceAdapterServant\"\n or v == \"android.telecom.VideoCallbackServant\"\n or v == \"android.telecom.Listener\"\n or v == \"android.telecom.Logging.TimedEvent\"\n or v == \"android.telecom.Logging.Runnable\"\n or v == \"android.telecom.Logging.Session\"\n or v == \"android.telecom.InCallAdapter\"\n or v == \"android.graphics.GraphicBuffer\"\n or v == \"android.graphics.CanvasProperty\"\n or v == \"android.graphics.drawable.AnimatedRotateDrawable\"\n or v == \"android.graphics.drawable.VectorDrawableAnimatorRT\"\n or v == \"android.graphics.drawable.DrawableInflater\"\n or v == \"android.graphics.Insets\"\n or v == \"android.graphics.BaseCanvas\"\n or v == \"android.graphics.pdf.PdfEditor\"\n or v == \"android.graphics.Renderer\"\n or v == \"android.graphics.LeakyTypefaceStorage\"\n or v == \"android.graphics.TemporaryBuffer\"\n or v == \"android.graphics.InsetStruct\"\n or v == \"android.graphics.LargeBitmap\"\n or v == \"android.graphics.FontListParser\"\n or v == \"android.graphics.FontFamily\"\n or v == \"android.graphics.TableMaskFilter\"\n or v == \"android.net.util.NetworkConstants\"\n or v == \"android.net.util.Stopwatch\"\n or v == \"android.net.util.PrefixUtils\"\n or v == \"android.net.util.NetdService\"\n or v == \"android.net.util.IpUtils\"\n or v == \"android.net.util.VersionedBroadcastListener\"\n or v == \"android.net.util.SharedLog\"\n or v == \"android.net.util.ConnectivityPacketSummary\"\n or v == \"android.net.util.MultinetworkPolicyTracker\"\n or v == \"android.net.util.PacketReader\"\n or v == \"android.net.netlink.StructNlMsgHdr\"\n or v == \"android.net.netlink.StructNdMsg\"\n or v == \"android.net.netlink.StructNlMsgErr\"\n or v == \"android.net.netlink.NetlinkSocket\"\n or v == \"android.net.netlink.StructNlAttr\"\n or v == \"android.net.netlink.NetlinkMessage\"\n or v == \"android.net.netlink.ConntrackMessage\"\n or v == \"android.net.netlink.StructNfGenMsg\"\n or v == \"android.net.netlink.StructNdaCacheInfo\"\n or v == \"android.net.netlink.NetlinkConstants\"\n or v == \"android.net.netlink.NetlinkErrorMessage\"\n or v == \"android.net.netlink.RtNetlinkNeighborMessage\"\n or v == \"android.net.apf.ApfGenerator\"\n or v == \"android.net.apf.ApfCapabilities\"\n or v == \"android.net.apf.ApfFilter\"\n or v == \"android.net.dhcp.DhcpClient\"\n or v == \"android.net.dhcp.DhcpPacket\"\n or v == \"android.net.ip.IpReachabilityMonitor\"\n or v == \"android.net.ip.InterfaceController\"\n or v == \"android.net.ip.IpClient\"\n or v == \"android.net.ip.IpNeighborMonitor\"\n or v == \"android.net.ip.RouterAdvertisementDaemon\"\n or v == \"android.net.ip.ConnectivityPacketTracker\"\n or v == \"com.android.server.pm.PackageManagerServiceUtils\"\n or v == \"com.android.server.pm.BackgroundDexOptService\"\n or v == \"com.android.server.pm.InstructionSets\"\n or v == \"com.android.server.pm.EphemeralResolverConnection\"\n or v == \"com.android.server.pm.SELinuxMMAC\"\n or v == \"com.android.server.pm.OtaDexoptService\"\n or v == \"com.android.server.pm.InstantAppResolver\"\n or v == \"com.android.server.pm.PackageManagerException\"\n or v == \"com.android.server.vr.SettingsObserver\"\n or v == \"com.android.server.vr.VrManagerInternal\"\n or v == \"com.android.server.vr.EnabledComponentsObserver\"\n or v == \"com.android.server.vr.VrManagerService\"\n or v == \"com.android.server.vr.VrStateListener\"\n or v == \"com.android.server.webkit.SystemInterface\"\n or v == \"com.android.server.webkit.WebViewUpdateService\"\n or v == \"com.android.server.webkit.SystemImpl\"\n or v == \"com.android.server.webkit.WebViewUpdateServiceImpl\"\n or v == \"com.android.server.net.NetworkPolicyManagerInternal\"\n or v == \"com.android.server.net.NetworkIdentitySet\"\n or v == \"com.android.server.fingerprint.FingerprintService\"\n or v == \"com.android.server.am.BackupRecord\"\n or v == \"com.android.server.GraphicsStatsService\"\n or v == \"com.android.server.connectivity.Vpn\"\n or v == \"com.android.server.connectivity.IpConnectivityMetrics\"\n or v == \"com.android.server.connectivity.tethering.TetheringConfiguration\"\n or v == \"com.android.server.connectivity.tethering.OffloadHardwareInterface\"\n or v == \"com.android.server.connectivity.tethering.OffloadController\"\n or v == \"com.android.server.connectivity.tethering.TetherInterfaceStateMachine\"\n or v == \"com.android.server.connectivity.tethering.UpstreamNetworkMonitor\"\n or v == \"com.android.server.connectivity.tethering.SimChangeListener\"\n or v == \"com.android.server.connectivity.tethering.IPv6TetheringCoordinator\"\n or v == \"com.android.server.connectivity.tethering.TetheringDependencies\"\n or v == \"com.android.server.connectivity.tethering.IControlsTethering\"\n or v == \"com.android.server.connectivity.PacManager\"\n or v == \"com.android.server.connectivity.NetworkMonitor\"\n or v == \"com.android.server.connectivity.CaptivePortalProbeResult\"\n or v == \"com.android.server.connectivity.IpConnectivityEventBuilder\"\n or v == \"com.android.server.connectivity.NetworkDiagnostics\"\n or v == \"com.android.server.connectivity.Tethering\"\n or v == \"com.android.server.connectivity.PermissionMonitor\"\n or v == \"com.android.server.connectivity.KeepalivePacketData\"\n or v == \"com.android.server.connectivity.DefaultNetworkMetrics\"\n or v == \"com.android.server.connectivity.Nat464Xlat\"\n or v == \"com.android.server.security.KeyAttestationApplicationIdProviderService\"\n or v == \"com.android.server.input.InputWindowHandle\"\n or v == \"com.android.server.input.InputApplicationHandle\"\n or v == \"com.android.server.notification.NotificationManagerService\"\n or v == \"com.android.server.notification.NotificationUsageStats\"\n or v == \"com.android.server.notification.RateEstimator\"\n or v == \"com.android.server.notification.AlertRateLimiter\"\n or v == \"com.android.server.notification.NotificationRecord\"\n or v == \"com.android.server.notification.ValidateNotificationPeople\"\n or v == \"com.android.server.notification.RankingReconsideration\"\n or v == \"com.android.server.camera.CameraServiceProxy\"\n or v == \"com.android.server.location.PassiveProvider\"\n or v == \"com.android.server.location.ActivityRecognitionProxy\"\n or v == \"com.android.server.location.CountryDetectorBase\"\n or v == \"com.android.server.location.GnssLocationProvider\"\n or v == \"com.android.server.location.ContextHubService\"\n or v == \"com.android.server.location.FusedProxy\"\n or v == \"com.android.server.location.GeofenceProxy\"\n or v == \"com.android.server.location.GnssNavigationMessageProvider\"\n or v == \"com.android.server.location.LocationProviderInterface\"\n or v == \"com.android.server.location.GpsXtraDownloader\"\n or v == \"com.android.server.location.FusedLocationHardwareSecure\"\n or v == \"com.android.server.location.FlpHardwareProvider\"\n or v == \"com.android.server.location.GnssMeasurementsProvider\"\n or v == \"com.android.server.location.LocationBasedCountryDetector\"\n or v == \"com.android.server.location.ComprehensiveCountryDetector\"\n or v == \"com.android.server.location.MockProvider\"\n or v == \"com.android.server.wm.WindowManagerService\"\n or v == \"com.android.server.wm.animation.ClipRectLRAnimation\"\n or v == \"com.android.server.wm.ViewServer\"\n or v == \"com.android.server.SystemServiceManager\"\n or v == \"com.android.server.content.SyncStorageEngine\"\n or v == \"com.android.server.content.SyncManager\"\n or v == \"com.android.server.content.ActiveSyncContext\"\n or v == \"com.android.server.content.ContentService\"\n or v == \"com.android.server.content.ObserverCall\"\n or v == \"com.android.server.content.ObserverNode\"\n or v == \"com.android.server.content.SyncOperation\"\n or v == \"com.android.server.utils.ManagedApplicationService\"\n or v == \"com.android.server.utils.PriorityDump\"\n or v == \"com.android.server.utils.PriorityDumper\"\n or v == \"com.android.server.NetworkManagementService\"\n or v == \"com.android.server.tv.TvInputHardwareManager\"\n or v == \"com.android.server.IpSecService\"\n or v == \"com.android.server.ConnectivityService\"\n or v == \"com.android.server.audio.MediaFocusControl\"\n or v == \"com.android.server.audio.FocusRequester\"\n or v == \"com.android.server.audio.AudioService\"\n or v == \"com.android.server.telecom.TelecomLoaderService\"\n or v == \"com.android.server.NetworkScorerAppManager\"\n or v == \"com.android.server.CountryDetectorService\"\n or v == \"com.android.server.accounts.AccountManagerService\"\n or v == \"com.android.server.accounts.IAccountAuthenticatorCache\"\n or v == \"com.android.server.job.JobSchedulerService\"\n or v == \"com.android.server.job.JobSchedulerInternal\"\n or v == \"com.android.server.job.controllers.JobStatus\"\n or v == \"com.android.server.RescueParty\"\n or v == \"com.android.server.NsdService\"\n or v == \"com.android.server.os.SchedulingPolicyService\"\n or v == \"com.android.server.SystemServerInitThreadPool\"\n or v == \"com.android.server.NetworkScoreService\"\n or v == \"com.android.server.locksettings.LockSettingsService\"\n or v == \"com.android.server.dreams.DreamManagerService\"\n or v == \"com.android.server.IntentResolver\"\n or v == \"com.android.server.GestureLauncherService\"\n or v == \"com.android.server.SystemService\"\n or v == \"com.android.server.NetworkManagementInternal\"\n or v == \"com.android.server.policy.keyguard.KeyguardStateMonitor\"\n or v == \"com.android.server.CommonTimeManagementService\"\n or v == \"com.android.server.soundtrigger.SoundTriggerService\"\n or v == \"com.android.server.soundtrigger.SoundTriggerHelper\"\n or v == \"com.android.server.soundtrigger.SoundTriggerDbHelper\"\n or v == \"com.android.server.voiceinteraction.DatabaseHelper\"\n or v == \"com.android.server.usb.descriptors.UsbTerminalTypes\"\n or v == \"com.android.server.usb.descriptors.tree.UsbDescriptorsEndpointNode\"\n or v == \"com.android.server.usb.descriptors.tree.UsbDescriptorsACInterfaceNode\"\n or v == \"com.android.server.usb.descriptors.tree.UsbDescriptorsTreeNode\"\n or v == \"com.android.server.usb.descriptors.tree.UsbDescriptorsTree\"\n or v == \"com.android.server.usb.descriptors.tree.UsbDescriptorsInterfaceNode\"\n or v == \"com.android.server.usb.descriptors.tree.UsbDescriptorsDeviceNode\"\n or v == \"com.android.server.usb.descriptors.tree.UsbDescriptorsConfigNode\"\n or v == \"com.android.server.usb.descriptors.UsbACAudioStreamEndpoint\"\n or v == \"com.android.server.usb.descriptors.UsbBinaryParser\"\n or v == \"com.android.server.usb.descriptors.Usb10ASFormatI\"\n or v == \"com.android.server.usb.descriptors.UsbACAudioControlEndpoint\"\n or v == \"com.android.server.usb.descriptors.UsbConfigDescriptor\"\n or v == \"com.android.server.usb.descriptors.Usb20ACMixerUnit\"\n or v == \"com.android.server.usb.descriptors.UsbMSMidiInputJack\"\n or v == \"com.android.server.usb.descriptors.Usb20ACInputTerminal\"\n or v == \"com.android.server.usb.descriptors.UsbACInterface\"\n or v == \"com.android.server.usb.descriptors.Usb10ACOutputTerminal\"\n or v == \"com.android.server.usb.descriptors.UsbDeviceDescriptor\"\n or v == \"com.android.server.usb.descriptors.Usb10ACHeader\"\n or v == \"com.android.server.usb.descriptors.UsbInterfaceAssoc\"\n or v == \"com.android.server.usb.descriptors.UsbHIDDescriptor\"\n or v == \"com.android.server.usb.descriptors.UsbMSMidiOutputJack\"\n or v == \"com.android.server.usb.descriptors.Usb20ASFormatI\"\n or v == \"com.android.server.usb.descriptors.Usb10ASFormatII\"\n or v == \"com.android.server.usb.descriptors.UsbMSMidiHeader\"\n or v == \"com.android.server.usb.descriptors.Usb20ASFormatIII\"\n or v == \"com.android.server.usb.descriptors.UsbACFeatureUnit\"\n or v == \"com.android.server.usb.descriptors.UsbASFormat\"\n or v == \"com.android.server.usb.descriptors.UsbACEndpoint\"\n or v == \"com.android.server.usb.descriptors.UsbUnknown\"\n or v == \"com.android.server.usb.descriptors.Usb20ACHeader\"\n or v == \"com.android.server.usb.descriptors.UsbInterfaceDescriptor\"\n or v == \"com.android.server.usb.descriptors.UsbDescriptor\"\n or v == \"com.android.server.usb.descriptors.UsbACSelectorUnit\"\n or v == \"com.android.server.usb.descriptors.UsbACHeaderInterface\"\n or v == \"com.android.server.usb.descriptors.UsbEndpointDescriptor\"\n or v == \"com.android.server.usb.descriptors.report.TextReportCanvas\"\n or v == \"com.android.server.usb.descriptors.report.Reporting\"\n or v == \"com.android.server.usb.descriptors.report.ReportCanvas\"\n or v == \"com.android.server.usb.descriptors.report.UsbStrings\"\n or v == \"com.android.server.usb.descriptors.report.HTMLReportCanvas\"\n or v == \"com.android.server.usb.descriptors.Usb10ACInputTerminal\"\n or v == \"com.android.server.usb.descriptors.UsbDescriptorParser\"\n or v == \"com.android.server.usb.descriptors.Usb10ASGeneral\"\n or v == \"com.android.server.usb.descriptors.ByteStream\"\n or v == \"com.android.server.usb.descriptors.UsbACMidiEndpoint\"\n or v == \"com.android.server.usb.descriptors.Usb20ASFormatIIEx\"\n or v == \"com.android.server.usb.descriptors.Usb10ACMixerUnit\"\n or v == \"com.android.server.usb.descriptors.Usb20ASFormatII\"\n or v == \"com.android.server.usb.descriptors.Usb20ACOutputTerminal\"\n or v == \"com.android.server.usb.descriptors.UsbACTerminal\"\n or v == \"com.android.server.usb.descriptors.UsbACInterfaceUnparsed\"\n or v == \"com.android.server.accessibility.TouchExplorer\"\n or v == \"com.android.server.coverage.CoverageService\"\n or v == \"com.android.server.companion.CompanionDeviceManagerService\"\n or v == \"android.opengl.GLWallpaperService\"\n or v == \"android.mtp.MtpDatabase\"\n or v == \"android.mtp.MtpServer\"\n or v == \"android.mtp.MtpStorage\"\n or v == \"android.media.PlayerProxy\"\n or v == \"android.media.MediaScanner\"\n or v == \"android.media.MediaTimeProvider\"\n or v == \"android.media.OnMediaTimeListener\"\n or v == \"android.media.soundtrigger.SoundTriggerDetector\"\n or v == \"android.media.soundtrigger.RecognitionCallback\"\n or v == \"android.media.soundtrigger.SoundTriggerManager\"\n or v == \"android.media.audiofx.OnParameterChangeListener\"\n or v == \"android.media.audiofx.Settings\"\n or v == \"android.media.audiofx.OnServerDiedListener\"\n or v == \"android.media.audiofx.OnParameterChangeListener\"\n or v == \"android.media.MediaFile\"\n or v == \"android.media.PlayerDeathMonitor\"\n or v == \"android.media.RemoteDisplay\"\n or v == \"android.media.AudioPort\"\n or v == \"android.media.SRTRenderer\"\n or v == \"android.media.MiniThumbFile\"\n or v == \"android.media.midi.MidiDeviceServer\"\n or v == \"android.media.TtmlRenderer\"\n or v == \"android.media.TtmlUtils\"\n or v == \"android.media.TtmlCue\"\n or v == \"android.media.TtmlNode\"\n or v == \"android.media.TtmlParser\"\n or v == \"android.media.TtmlNodeListener\"\n or v == \"android.media.TtmlTrack\"\n or v == \"android.media.TtmlRenderingWidget\"\n or v == \"android.media.audiopolicy.AudioPolicyConfig\"\n or v == \"android.media.audiopolicy.AudioMixingRule\"\n or v == \"android.media.audiopolicy.AudioMix\"\n or v == \"android.media.audiopolicy.AudioPolicy\"\n or v == \"android.media.Callback\"\n or v == \"android.media.MediaHTTPConnection\"\n or v == \"android.media.DecoderCapabilities\"\n or v == \"android.media.OnSubtitleDataListener\"\n or v == \"android.media.TimeProvider\"\n or v == \"android.media.MediaHTTPService\"\n or v == \"android.media.AudioManagerInternal\"\n or v == \"android.media.MediaScannerClient\"\n or v == \"android.media.SubtitleTrack\"\n or v == \"android.media.CueList\"\n or v == \"android.media.Cue\"\n or v == \"android.media.Run\"\n or v == \"android.media.VolumePolicy\"\n or v == \"android.media.tv.ProgramColumns\"\n or v == \"android.media.tv.PreviewProgramColumns\"\n or v == \"android.media.tv.WatchedPrograms\"\n or v == \"android.media.tv.TvStreamConfig\"\n or v == \"android.media.tv.TvInputSettings\"\n or v == \"android.media.tv.ITvInputSessionWrapper\"\n or v == \"android.media.tv.DvbDeviceInfo\"\n or v == \"android.media.tv.TvInputHardwareInfo\"\n or v == \"android.media.tv.SessionCallback\"\n or v == \"android.media.tv.HardwareCallback\"\n or v == \"android.media.tv.Session\"\n or v == \"android.media.tv.FinishedInputEventCallback\"\n or v == \"android.media.tv.Hardware\"\n or v == \"android.media.tv.TvContentRatingSystemInfo\"\n or v == \"android.media.BufferingParams\"\n or v == \"android.media.Cea708CaptionRenderer\"\n or v == \"android.media.Cea708CaptionTrack\"\n or v == \"android.media.Cea708CCParser\"\n or v == \"android.media.Const\"\n or v == \"android.media.CaptionColor\"\n or v == \"android.media.CaptionEvent\"\n or v == \"android.media.CaptionPenAttr\"\n or v == \"android.media.CaptionPenColor\"\n or v == \"android.media.CaptionPenLocation\"\n or v == \"android.media.CaptionWindowAttr\"\n or v == \"android.media.CaptionWindow\"\n or v == \"android.media.Cea708CCWidget\"\n or v == \"android.media.ScaledLayout\"\n or v == \"android.media.ScaledLayoutParams\"\n or v == \"android.media.CCLayout\"\n or v == \"android.media.CCHandler\"\n or v == \"android.media.CCWindowLayout\"\n or v == \"android.media.CCView\"\n or v == \"android.media.EncoderCapabilities\"\n or v == \"android.media.AudioFocusInfo\"\n or v == \"android.media.AudioGainConfig\"\n or v == \"android.media.RemoteDisplayState\"\n or v == \"android.media.AudioGain\"\n or v == \"android.media.AmrInputStream\"\n or v == \"android.media.ExternalRingtonesCursorWrapper\"\n or v == \"android.media.WebVttRenderer\"\n or v == \"android.media.TextTrackCueSpan\"\n or v == \"android.media.UnstyledTextExtractor\"\n or v == \"android.media.Tokenizer\"\n or v == \"android.media.TextTrackRegion\"\n or v == \"android.media.TextTrackCue\"\n or v == \"android.media.WebVttParser\"\n or v == \"android.media.WebVttCueListener\"\n or v == \"android.media.WebVttTrack\"\n or v == \"android.media.WebVttRenderingWidget\"\n or v == \"android.media.SubtitleController\"\n or v == \"android.media.AudioSystem\"\n or v == \"android.media.Metadata\"\n or v == \"android.media.AudioRoutesInfo\"\n or v == \"android.media.PlayerBase\"\n or v == \"android.media.CharPos\"\n or v == \"android.media.Justification\"\n or v == \"android.media.Style\"\n or v == \"android.media.Font\"\n or v == \"android.media.Karaoke\"\n or v == \"android.media.HyperText\"\n or v == \"android.media.browse.MediaBrowserUtils\"\n or v == \"android.media.Builder\"\n or v == \"android.media.State\"\n or v == \"android.media.MediaInserter\"\n or v == \"android.media.ClosedCaptionRenderer\"\n or v == \"android.media.Cea608CaptionTrack\"\n or v == \"android.media.ClosedCaptionWidget\"\n or v == \"android.media.ClosedCaptionLayout\"\n or v == \"android.media.Cea608CCParser\"\n or v == \"android.media.MutableBackgroundColorSpan\"\n or v == \"android.media.Cea608CCWidget\"\n or v == \"android.media.MediaRouterClientState\"\n or v == \"android.media.ResampleInputStream\"\n or v == \"android.media.OnAudioPortUpdateListener\"\n or v == \"android.media.CertificateRequest\"\n or v == \"android.media.Certificate\"\n or v == \"android.media.AudioPatch\"\n or v == \"android.media.MediaImage\"\n or v == \"android.media.SubtitleData\"\n or v == \"android.media.projection.Callback\"\n or v == \"android.media.projection.CallbackDelegate\"\n or v == \"android.media.projection.MediaProjectionInfo\"\n or v == \"android.media.session.OnVolumeKeyLongPressListener\"\n or v == \"android.media.session.OnMediaKeyListener\"\n or v == \"android.media.session.Callback\"\n or v == \"android.media.session.MediaSessionLegacyHelper\"\n or v == \"android.media.session.ParcelableVolumeInfo\"\n or v == \"android.media.session.CallbackStub\"\n or v == \"android.media.effect.FilterEffect\"\n or v == \"android.media.effect.FilterGraphEffect\"\n or v == \"android.media.effect.SingleFilterEffect\"\n or v == \"android.media.effect.effects.BrightnessEffect\"\n or v == \"android.media.effect.effects.BitmapOverlayEffect\"\n or v == \"android.media.effect.effects.DuotoneEffect\"\n or v == \"android.media.effect.effects.SharpenEffect\"\n or v == \"android.media.effect.effects.ColorTemperatureEffect\"\n or v == \"android.media.effect.effects.LomoishEffect\"\n or v == \"android.media.effect.effects.SepiaEffect\"\n or v == \"android.media.effect.effects.FlipEffect\"\n or v == \"android.media.effect.effects.VignetteEffect\"\n or v == \"android.media.effect.effects.AutoFixEffect\"\n or v == \"android.media.effect.effects.RotateEffect\"\n or v == \"android.media.effect.effects.SaturateEffect\"\n or v == \"android.media.effect.effects.CrossProcessEffect\"\n or v == \"android.media.effect.effects.BackDropperEffect\"\n or v == \"android.media.effect.effects.TintEffect\"\n or v == \"android.media.effect.effects.PosterizeEffect\"\n or v == \"android.media.effect.effects.GrayscaleEffect\"\n or v == \"android.media.effect.effects.RedEyeEffect\"\n or v == \"android.media.effect.effects.DocumentaryEffect\"\n or v == \"android.media.effect.effects.IdentityEffect\"\n or v == \"android.media.effect.effects.FisheyeEffect\"\n or v == \"android.media.effect.effects.ContrastEffect\"\n or v == \"android.media.effect.effects.StraightenEffect\"\n or v == \"android.media.effect.effects.FillLightEffect\"\n or v == \"android.media.effect.effects.GrainEffect\"\n or v == \"android.media.effect.effects.BlackWhiteEffect\"\n or v == \"android.media.effect.effects.NegativeEffect\"\n or v == \"android.media.effect.SizeChangeEffect\"\n or v == \"android.filterpacks.ui.SurfaceTargetFilter\"\n or v == \"android.filterpacks.ui.SurfaceRenderFilter\"\n or v == \"android.filterpacks.videosrc.MediaSource\"\n or v == \"android.filterpacks.videosrc.CameraSource\"\n or v == \"android.filterpacks.videosrc.SurfaceTextureSource\"\n or v == \"android.filterpacks.videosrc.SurfaceTextureTarget\"\n or v == \"android.filterpacks.videosink.MediaEncoderFilter\"\n or v == \"android.filterpacks.videosink.MediaRecorderStopException\"\n or v == \"android.filterpacks.numeric.SinWaveFilter\"\n or v == \"android.filterpacks.imageproc.ContrastFilter\"\n or v == \"android.filterpacks.imageproc.StraightenFilter\"\n or v == \"android.filterpacks.imageproc.DrawRectFilter\"\n or v == \"android.filterpacks.imageproc.CropRectFilter\"\n or v == \"android.filterpacks.imageproc.ToGrayFilter\"\n or v == \"android.filterpacks.imageproc.AlphaBlendFilter\"\n or v == \"android.filterpacks.imageproc.CropFilter\"\n or v == \"android.filterpacks.imageproc.ImageCombineFilter\"\n or v == \"android.filterpacks.imageproc.RedEyeFilter\"\n or v == \"android.filterpacks.imageproc.ToRGBFilter\"\n or v == \"android.filterpacks.imageproc.SimpleImageFilter\"\n or v == \"android.filterpacks.imageproc.FisheyeFilter\"\n or v == \"android.filterpacks.imageproc.ResizeFilter\"\n or v == \"android.filterpacks.imageproc.FixedRotationFilter\"\n or v == \"android.filterpacks.imageproc.BlendFilter\"\n or v == \"android.filterpacks.imageproc.ToRGBAFilter\"\n or v == \"android.filterpacks.imageproc.DrawOverlayFilter\"\n or v == \"android.filterpacks.imageproc.BitmapSource\"\n or v == \"android.filterpacks.imageproc.ImageEncoder\"\n or v == \"android.filterpacks.imageproc.ToPackedGrayFilter\"\n or v == \"android.filterpacks.imageproc.RotateFilter\"\n or v == \"android.filterpacks.imageproc.BrightnessFilter\"\n or v == \"android.filterpacks.imageproc.BitmapOverlayFilter\"\n or v == \"android.filterpacks.imageproc.Invert\"\n or v == \"android.filterpacks.imageproc.FlipFilter\"\n or v == \"android.filterpacks.text.ToUpperCase\"\n or v == \"android.filterpacks.text.StringSource\"\n or v == \"android.filterpacks.text.StringLogger\"\n or v == \"android.filterpacks.performance.ThroughputFilter\"\n or v == \"android.filterpacks.performance.Throughput\"\n or v == \"android.filterpacks.base.CallbackFilter\"\n or v == \"android.filterpacks.base.NoneFilter\"\n or v == \"android.filterpacks.base.GLTextureSource\"\n or v == \"android.filterpacks.base.FrameBranch\"\n or v == \"android.filterpacks.base.RetargetFilter\"\n or v == \"android.filterpacks.base.GLTextureTarget\"\n or v == \"android.filterpacks.base.FrameFetch\"\n or v == \"android.filterpacks.base.ObjectSource\"\n or v == \"android.filterpacks.base.FrameSource\"\n or v == \"android.filterpacks.base.OutputStreamTarget\"\n or v == \"android.filterpacks.base.InputStreamSource\"\n or v == \"android.filterpacks.base.FrameStore\"\n or v == \"android.filterpacks.videoproc.BackDropperFilter\"\n or v == \"android.filterfw.core.FilterSurfaceView\"\n or v == \"android.filterfw.core.InputPort\"\n or v == \"android.filterfw.core.FieldPort\"\n or v == \"android.filterfw.core.StreamPort\"\n or v == \"android.filterfw.core.FilterContext\"\n or v == \"android.filterfw.core.GLFrame\"\n or v == \"android.filterfw.core.SimpleFrame\"\n or v == \"android.filterfw.core.FilterFactory\"\n or v == \"android.filterfw.core.VertexFrame\"\n or v == \"android.filterfw.core.GraphRunner\"\n or v == \"android.filterfw.core.ProgramPort\"\n or v == \"android.filterfw.core.ShaderProgram\"\n or v == \"android.filterfw.core.NativeAllocatorTag\"\n or v == \"android.filterfw.core.Frame\"\n or v == \"android.filterfw.core.Scheduler\"\n or v == \"android.filterfw.core.SimpleFrameManager\"\n or v == \"android.filterfw.core.KeyValueMap\"\n or v == \"android.filterfw.core.ProgramVariable\"\n or v == \"android.filterfw.core.FinalPort\"\n or v == \"android.filterfw.core.FilterGraph\"\n or v == \"android.filterfw.core.CachedFrameManager\"\n or v == \"android.filterfw.core.RandomScheduler\"\n or v == \"android.filterfw.core.FilterPort\"\n or v == \"android.filterfw.core.MutableFrameFormat\"\n or v == \"android.filterfw.core.FrameManager\"\n or v == \"android.filterfw.core.NativeFrame\"\n or v == \"android.filterfw.core.FilterFunction\"\n or v == \"android.filterfw.core.AsyncRunner\"\n or v == \"android.filterfw.core.ProtocolException\"\n or v == \"android.filterfw.core.FrameFormat\"\n or v == \"android.filterfw.core.NativeBuffer\"\n or v == \"android.filterfw.core.Program\"\n or v == \"android.filterfw.core.RoundRobinScheduler\"\n or v == \"android.filterfw.core.GLEnvironment\"\n or v == \"android.filterfw.core.StopWatch\"\n or v == \"android.filterfw.core.SerializedFrame\"\n or v == \"android.filterfw.core.OneShotScheduler\"\n or v == \"android.filterfw.core.NativeProgram\"\n or v == \"android.filterfw.core.SimpleScheduler\"\n or v == \"android.filterfw.core.Filter\"\n or v == \"android.filterfw.core.OutputPort\"\n or v == \"android.filterfw.core.SyncRunner\"\n or v == \"android.filterfw.io.GraphReader\"\n or v == \"android.filterfw.io.GraphIOException\"\n or v == \"android.filterfw.io.TextGraphReader\"\n or v == \"android.filterfw.io.PatternScanner\"\n or v == \"android.filterfw.GraphEnvironment\"\n or v == \"android.filterfw.MffEnvironment\"\n or v == \"android.filterfw.FilterFunctionEnvironment\"\n or v == \"android.filterfw.format.PrimitiveFormat\"\n or v == \"android.filterfw.format.ObjectFormat\"\n or v == \"android.filterfw.format.ImageFormat\"\n or v == \"android.filterfw.geometry.Quad\"\n or v == \"android.filterfw.geometry.Point\"\n or v == \"android.filterfw.geometry.Rectangle\"\n ]\n )\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FunctionCall:\n function is [Function:\n (name == \"init^\" or constructor)\n and enclosingClass.supers contains [Class: name == \"java.net.PasswordAuthentication\"]\n ]\n and ( \n arguments[1] is [FunctionCall:\n function is [Function:\n name == \"toCharArray\"\n and enclosingClass.supers contains [Class: name == \"java.lang.String\"]\n ]\n and not instance.constantValue.null\n and instance.constantValue == \"\"\n ]\n or arguments[1] is [VariableAccess:\n variable is [Variable:\n uses contains [VariableAccess va:\n enclosingStatement is [AssignmentStatement:\n lhs is va\n and rhs is [FunctionCall:\n function is [Function:\n name == \"toCharArray\"\n and enclosingClass.supers contains [Class: name == \"java.lang.String\"]\n ]\n and not instance.constantValue.null\n and instance.constantValue == \"\"\n ]*\n ]\n ]\n ]\n ]\n or arguments[1] is [FieldAccess:\n field is [Field f:\n enclosingClass.functions contains [Function:\n contains [AssignmentStatement:\n lhs is [FieldAccess: field is f] \n and rhs is [FunctionCall:\n function is [Function:\n name == \"toCharArray\"\n and enclosingClass.supers contains [Class: name == \"java.lang.String\"]\n ]\n and not instance.constantValue.null\n and instance.constantValue == \"\"\n ]*\n ]\n ]\n ]\n ]\n )\n " + "predicate": "\n FunctionCall:\n function is [Function:\n (name == \"init^\" or constructor)\n and enclosingClass.supers contains [Class: name == \"java.net.PasswordAuthentication\"]\n ]\n and ( \n arguments[1] is [FunctionCall:\n function is [Function:\n name == \"toCharArray\"\n and enclosingClass.supers contains [Class: name == \"java.lang.String\"]\n ]\n and not instance.constantValue.None\n and instance.constantValue == \"\"\n ]\n or arguments[1] is [VariableAccess:\n variable is [Variable:\n uses contains [VariableAccess va:\n enclosingStatement is [AssignmentStatement:\n lhs is va\n and rhs is [FunctionCall:\n function is [Function:\n name == \"toCharArray\"\n and enclosingClass.supers contains [Class: name == \"java.lang.String\"]\n ]\n and not instance.constantValue.None\n and instance.constantValue == \"\"\n ]*\n ]\n ]\n ]\n ]\n or arguments[1] is [FieldAccess:\n field is [Field f:\n enclosingClass.functions contains [Function:\n contains [AssignmentStatement:\n lhs is [FieldAccess: field is f] \n and rhs is [FunctionCall:\n function is [Function:\n name == \"toCharArray\"\n and enclosingClass.supers contains [Class: name == \"java.lang.String\"]\n ]\n and not instance.constantValue.None\n and instance.constantValue == \"\"\n ]*\n ]\n ]\n ]\n ]\n )\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall:\n function is [Function:\n (name == \"init^\" or constructor)\n and enclosingClass.supers contains [Class: name == \"java.net.PasswordAuthentication\"]\n ]\n and ( \n arguments[1] is [FunctionCall:\n function is [Function:\n name == \"toCharArray\"\n and enclosingClass.supers contains [Class: name == \"java.lang.String\"]\n ]\n and not instance.constantValue.null\n and not instance.constantValue is [Null:]\n and not instance.constantValue == \"\"\n ]\n or arguments[1] is [VariableAccess:\n variable is [Variable:\n uses contains [VariableAccess va:\n enclosingStatement is [AssignmentStatement:\n lhs is va\n and rhs is [FunctionCall:\n function is [Function:\n name == \"toCharArray\"\n and enclosingClass.supers contains [Class: name == \"java.lang.String\"]\n ]\n and not instance.constantValue.null\n and not instance.constantValue is [Null:]\n and not instance.constantValue == \"\"\n ]*\n ]\n ]\n ]\n ]\n or arguments[1] is [FieldAccess:\n field is [Field f:\n enclosingClass.functions contains [Function:\n contains [AssignmentStatement:\n lhs is [FieldAccess: field is f] \n and rhs is [FunctionCall:\n function is [Function:\n name == \"toCharArray\"\n and enclosingClass.supers contains [Class: name == \"java.lang.String\"]\n ]\n and not instance.constantValue.null\n and not instance.constantValue is [Null:]\n and not instance.constantValue == \"\"\n ]*\n ]\n ]\n ]\n ]\n )\n " + "predicate": "\n FunctionCall:\n function is [Function:\n (name == \"init^\" or constructor)\n and enclosingClass.supers contains [Class: name == \"java.net.PasswordAuthentication\"]\n ]\n and ( \n arguments[1] is [FunctionCall:\n function is [Function:\n name == \"toCharArray\"\n and enclosingClass.supers contains [Class: name == \"java.lang.String\"]\n ]\n and not instance.constantValue.None\n and not instance.constantValue is [None:]\n and not instance.constantValue == \"\"\n ]\n or arguments[1] is [VariableAccess:\n variable is [Variable:\n uses contains [VariableAccess va:\n enclosingStatement is [AssignmentStatement:\n lhs is va\n and rhs is [FunctionCall:\n function is [Function:\n name == \"toCharArray\"\n and enclosingClass.supers contains [Class: name == \"java.lang.String\"]\n ]\n and not instance.constantValue.None\n and not instance.constantValue is [None:]\n and not instance.constantValue == \"\"\n ]*\n ]\n ]\n ]\n ]\n or arguments[1] is [FieldAccess:\n field is [Field f:\n enclosingClass.functions contains [Function:\n contains [AssignmentStatement:\n lhs is [FieldAccess: field is f] \n and rhs is [FunctionCall:\n function is [Function:\n name == \"toCharArray\"\n and enclosingClass.supers contains [Class: name == \"java.lang.String\"]\n ]\n and not instance.constantValue.None\n and not instance.constantValue is [None:]\n and not instance.constantValue == \"\"\n ]*\n ]\n ]\n ]\n ]\n )\n " }, { "language": "java", @@ -1887,55 +1887,55 @@ "vuln_kingdom": "Code Quality", "vuln_category": "Poor Style", "vuln_subcategory": "Redundant Initialization", - "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and rhs.constantValue.null]\n and not sourceLocation.null\n and not sourceLocation.isMacroExpansion\n and variable is\n [Variable var: not static and not enclosingFunction.null\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.null\n and not va.sourceLocation.null\n and sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp and not final and uses.length > 1]*\n " + "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and rhs.constantValue.None]\n and not sourceLocation.None\n and not sourceLocation.isMacroExpansion\n and variable is\n [Variable var: not static and not enclosingFunction.None\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.None\n and not va.sourceLocation.None\n and sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp and not final and uses.length > 1]*\n " }, { "language": "java", "vuln_kingdom": "Code Quality", "vuln_category": "Poor Style", "vuln_subcategory": "Redundant Initialization", - "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: lhs.location is va and rhs.constantValue.null]\n and not sourceLocation.null\n and not sourceLocation.isMacroExpansion\n and variable is\n [Variable var: not static and not enclosingFunction.null\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.null\n and not va.sourceLocation.null\n and sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp and not final and uses.length > 1]*\n " + "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: lhs.location is va and rhs.constantValue.None]\n and not sourceLocation.None\n and not sourceLocation.isMacroExpansion\n and variable is\n [Variable var: not static and not enclosingFunction.None\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.None\n and not va.sourceLocation.None\n and sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp and not final and uses.length > 1]*\n " }, { "language": "java", "vuln_kingdom": "Code Quality", "vuln_category": "Poor Style", "vuln_subcategory": "Redundant Initialization", - "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: lhs.location is va and rhs.constantValue.null]\n and not sourceLocation.null\n and not sourceLocation.isMacroExpansion\n and variable is\n [Variable: not static and not enclosingFunction.null\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.null\n and not va.sourceLocation.null\n and sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp and uses.length > 1]*\n " + "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: lhs.location is va and rhs.constantValue.None]\n and not sourceLocation.None\n and not sourceLocation.isMacroExpansion\n and variable is\n [Variable: not static and not enclosingFunction.None\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.None\n and not va.sourceLocation.None\n and sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp and uses.length > 1]*\n " }, { "language": "java", "vuln_kingdom": "Code Quality", "vuln_category": "Poor Style", "vuln_subcategory": "Value Never Read", - "predicate": "\n VariableAccess va:\n reads.length == 0\n and va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]]\n and not sourceLocation.null\n and not sourceLocation.isMacroExpansion\n and not va.this\n and not va.variable.name == \"_\"\n and (\n variable is [Variable var:\n not static\n and not enclosingFunction.null\n and not referenceTaken\n and not sourceLocation.null\n and not va.sourceLocation.null\n and not sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp\n and not final\n ]*\n or variable is [Variable:\n not static\n and not enclosingFunction.null\n and not referenceTaken\n and not sourceLocation.null\n and not va.sourceLocation.null\n and sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp\n and not final\n and uses.length == 1\n ]*\n )\n " + "predicate": "\n VariableAccess va:\n reads.length == 0\n and va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase]]\n and not sourceLocation.None\n and not sourceLocation.isMacroExpansion\n and not va.this\n and not va.variable.name == \"_\"\n and (\n variable is [Variable var:\n not static\n and not enclosingFunction.None\n and not referenceTaken\n and not sourceLocation.None\n and not va.sourceLocation.None\n and not sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp\n and not final\n ]*\n or variable is [Variable:\n not static\n and not enclosingFunction.None\n and not referenceTaken\n and not sourceLocation.None\n and not va.sourceLocation.None\n and sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp\n and not final\n and uses.length == 1\n ]*\n )\n " }, { "language": "java", "vuln_kingdom": "Code Quality", "vuln_category": "Poor Style", "vuln_subcategory": "Value Never Read", - "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: lhs.location is va]\n and not sourceLocation.null\n and not sourceLocation.isMacroExpansion\n and (variable is\n [Variable var: not static and not enclosingFunction.null\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.null\n and not va.sourceLocation.null\n and not sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp and not final]* or variable is\n [Variable: not static and not enclosingFunction.null\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.null\n and not va.sourceLocation.null\n and sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp and not final and uses.length == 1]*)\n " + "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: lhs.location is va]\n and not sourceLocation.None\n and not sourceLocation.isMacroExpansion\n and (variable is\n [Variable var: not static and not enclosingFunction.None\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.None\n and not va.sourceLocation.None\n and not sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp and not final]* or variable is\n [Variable: not static and not enclosingFunction.None\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.None\n and not va.sourceLocation.None\n and sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp and not final and uses.length == 1]*)\n " }, { "language": "java", "vuln_kingdom": "Code Quality", "vuln_category": "Poor Style", "vuln_subcategory": "Value Never Read", - "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: lhs.location is va]\n and not sourceLocation.null\n and not sourceLocation.isMacroExpansion\n and (variable is\n [Variable: not static and not enclosingFunction.null\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.null\n and not va.sourceLocation.null\n and not sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp]* or variable is\n [Variable: not static and not enclosingFunction.null\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.null\n and not va.sourceLocation.null\n and sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp and uses.length == 1]*)\n " + "predicate": "\n VariableAccess va: reads.length == 0\n and va in [AssignmentStatement: lhs.location is va]\n and not sourceLocation.None\n and not sourceLocation.isMacroExpansion\n and (variable is\n [Variable: not static and not enclosingFunction.None\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.None\n and not va.sourceLocation.None\n and not sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp]* or variable is\n [Variable: not static and not enclosingFunction.None\n and not type.indirectionLevel > 0 and not referenceTaken\n and not sourceLocation.None\n and not va.sourceLocation.None\n and sourceLocation.startLine == va.sourceLocation.startLine\n and not isTemp and uses.length == 1]*)\n " }, { "language": "java", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Unsafe JNI", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall: function is [Function:\n modifiers contains \"native\"\n /* uses of native on GWT applications are JSNI, not JNI */\n and not enclosingClass.supers contains [Class: name matches \"com\\.google\\.gwt\\..*\"]\n and not enclosingClass.functions contains [Function:\n parameters contains [Variable:\n type.definition.enclosingClass.supers contains [Class: name matches \"com\\.google\\.gwt\\..*\"]\n ]\n or contains [FunctionCall:\n function.enclosingClass.supers contains [Class: name matches \"com\\.google\\.gwt\\..*\"]\n ]\n ]\n /* function is in a user-defined class */\n /* note: cannot use isBodyAvailable on the native function itself as it returns false (since there isn't really a body available anyway) */\n and enclosingClass is [Class: \n /* note 2: this works on classes that ONLY specify native functions, due to the implicit default methods such as the constructor */\n functions contains [Function: isBodyAvailable]\n ]\n ]*\n " }, { "language": "java", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Unsafe JNI", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall: function is [Function:\n modifiers contains \"native\"\n /* uses of native on GWT applications are JSNI, not JNI */\n and not enclosingClass.supers contains [Class: name matches \"com\\.google\\.gwt\\..*\"]\n and not enclosingClass.functions contains [Function:\n parameters contains [Variable:\n type.definition.enclosingClass.supers contains [Class: name matches \"com\\.google\\.gwt\\..*\"]\n ]\n or contains [FunctionCall:\n function.enclosingClass.supers contains [Class: name matches \"com\\.google\\.gwt\\..*\"]\n ]\n ]\n ]*\n " }, { @@ -1956,35 +1956,35 @@ "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Restricted Method", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call:\n function is [Function:\n name == \"withTargetLayout\"\n and enclosingClass.supers contains [Class:\n name == \"java.lang.foreign.AddressLayout\"\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Restricted Method", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call:\n function is [Function:\n name == \"upcallStub\"\n and enclosingClass.supers contains [Class:\n name == \"java.lang.foreign.Linker\"\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Restricted Method", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call:\n function is [Function:\n name == \"libraryLookup\"\n and enclosingClass.supers contains [Class:\n name == \"java.lang.foreign.SymbolLookup\"\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Restricted Method", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call:\n function is [Function:\n name == \"reinterpret\"\n and enclosingClass.supers contains [Class:\n name == \"java.lang.foreign.MemorySegment\"\n ]\n ]\n " }, { "language": "java", "vuln_kingdom": "API Abuse", "vuln_category": "Restricted Method", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call:\n function is [Function:\n name == \"downcallHandle\"\n and enclosingClass.supers contains [Class:\n name == \"java.lang.foreign.Linker\"\n ]\n ]\n " }, { @@ -1992,7 +1992,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded HMAC Key", - "predicate": "\n FunctionCall fc: function.name == \"init\" and\n fc.function.enclosingClass.supers contains [Class: name == \"javax.crypto.Mac\"] and\n fc.arguments[0] is [Expression e: not e.constantValue.null and\n not e.constantValue is [Null:] and\n not e.constantValue == \"\"]\n " + "predicate": "\n FunctionCall fc: function.name == \"init\" and\n fc.function.enclosingClass.supers contains [Class: name == \"javax.crypto.Mac\"] and\n fc.arguments[0] is [Expression e: not e.constantValue.None and\n not e.constantValue is [None:] and\n not e.constantValue == \"\"]\n " }, { "language": "java", @@ -2006,14 +2006,14 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FunctionCall fc: (function.constructor or function.name == \"init^\") and\n fc.function.enclosingClass.supers contains [Class: name == \"javax.crypto.spec.SecretKeySpec\"] and\n fc.arguments[0] is [Expression e: not e.constantValue.null and\n not e.constantValue is [Null:] and\n not e.constantValue == \"\"]\n " + "predicate": "\n FunctionCall fc: (function.constructor or function.name == \"init^\") and\n fc.function.enclosingClass.supers contains [Class: name == \"javax.crypto.spec.SecretKeySpec\"] and\n fc.arguments[0] is [Expression e: not e.constantValue.None and\n not e.constantValue is [None:] and\n not e.constantValue == \"\"]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FunctionCall fc: (function.constructor or function.name == \"init^\") and\n fc.function.enclosingClass.supers contains [Class: name == \"javax.crypto.spec.SecretKeySpec\"] and\n fc.arguments[0] is [Expression e: e.constantValue is [Null:]]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FunctionCall fc: (function.constructor or function.name == \"init^\") and\n fc.function.enclosingClass.supers contains [Class: name == \"javax.crypto.spec.SecretKeySpec\"] and\n fc.arguments[0] is [Expression e: e.constantValue is [None:]]\n " }, { "language": "java", @@ -2132,7 +2132,7 @@ "vuln_kingdom": "Code Quality", "vuln_category": "Code Correctness", "vuln_subcategory": "Non-Static Inner Class Implements Serializable", - "predicate": "\n Class: not static\n /* not an enum */\n and not supers contains [Class: name == \"java.lang.Enum\"]\n and supers contains [Class: name == \"java.io.Serializable\"]\n and not enclosingClass.null\n /* inner class, not anonymous/local class or lambda */\n and not name matches \".*\\$[0-9].*|.*@lambda([0-9])+\"\n " + "predicate": "\n Class: not static\n /* not an enum */\n and not supers contains [Class: name == \"java.lang.Enum\"]\n and supers contains [Class: name == \"java.io.Serializable\"]\n and not enclosingClass.None\n /* inner class, not anonymous/local class or lambda */\n and not name matches \".*\\$[0-9].*|.*@lambda([0-9])+\"\n " }, { "language": "java", @@ -2181,98 +2181,98 @@ "vuln_kingdom": "Code Quality", "vuln_category": "Race Condition", "vuln_subcategory": "Class Initialization Cycle", - "predicate": "\n FieldAccess fa: field is [Field f: static and final\n and not f.sourceLocation.null\n and not fa.sourceLocation.null\n and f.sourceLocation.startLine == fa.sourceLocation.startLine\n and labels contains [String s: s == \"StaticFieldDependency\"]\n and fa.enclosingStatement is [AssignmentStatement: lhs is fa\n and rhs is\n [Expression: contains\n [FieldAccess: field is\n [Field f2: labels contains [String s2: s2 == \"DependentStaticField\"]]\n ]*\n ]\n ]\n ]*\n " + "predicate": "\n FieldAccess fa: field is [Field f: static and final\n and not f.sourceLocation.None\n and not fa.sourceLocation.None\n and f.sourceLocation.startLine == fa.sourceLocation.startLine\n and labels contains [String s: s == \"StaticFieldDependency\"]\n and fa.enclosingStatement is [AssignmentStatement: lhs is fa\n and rhs is\n [Expression: contains\n [FieldAccess: field is\n [Field f2: labels contains [String s2: s2 == \"DependentStaticField\"]]\n ]*\n ]\n ]\n ]*\n " }, { "language": "java", "vuln_kingdom": "Code Quality", "vuln_category": "Race Condition", "vuln_subcategory": "Class Initialization Cycle", - "predicate": "\n FunctionCall fc: function is [Function: constructor and isBodyAvailable\n /* and isn't the default constructor (automatically generated by SCA) */\n and not sourceLocation.null\n and not enclosingClass.sourceLocation.null\n and sourceLocation.startLine != enclosingClass.sourceLocation.startLine\n /* calling constructor of own class */\n and enclosingClass == fc.enclosingClass\n /* constructor contains static FieldAccess initialized after original assignmentStatement */\n and contains\n [FieldAccess fa: field is\n [Field field: static\n and field.enclosingClass == fc.enclosingClass\n and not sourceLocation.null\n and not fc.sourceLocation.null\n and sourceLocation.startLine > fc.sourceLocation.startLine\n /* would like to say field was not initialize to constant value, but can't find a way to do this */\n and labels contains [String s: s == \"UninitializedStaticField\"]\n ]*\n and not enclosingStatement is [AssignmentStatement: lhs === fa]\n ]*\n ]*\n and enclosingFunction is [Function f: name == \"\"]\n " + "predicate": "\n FunctionCall fc: function is [Function: constructor and isBodyAvailable\n /* and isn't the default constructor (automatically generated by SCA) */\n and not sourceLocation.None\n and not enclosingClass.sourceLocation.None\n and sourceLocation.startLine != enclosingClass.sourceLocation.startLine\n /* calling constructor of own class */\n and enclosingClass == fc.enclosingClass\n /* constructor contains static FieldAccess initialized after original assignmentStatement */\n and contains\n [FieldAccess fa: field is\n [Field field: static\n and field.enclosingClass == fc.enclosingClass\n and not sourceLocation.None\n and not fc.sourceLocation.None\n and sourceLocation.startLine > fc.sourceLocation.startLine\n /* would like to say field was not initialize to constant value, but can't find a way to do this */\n and labels contains [String s: s == \"UninitializedStaticField\"]\n ]*\n and not enclosingStatement is [AssignmentStatement: lhs === fa]\n ]*\n ]*\n and enclosingFunction is [Function f: name == \"\"]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", @@ -2377,126 +2377,126 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"PUT_REGEX_HERE\"\n ]* and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"PUT_REGEX_HERE\"\n ]* and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " + "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"PUT_REGEX_HERE\"\n ]* and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"PUT_REGEX_HERE\"\n ]* and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"PUT_REGEX_HERE\"\n ]* and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"PUT_REGEX_HERE\"\n ]* and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " + "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"PUT_REGEX_HERE\"\n ]* and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"PUT_REGEX_HERE\"\n ]* and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"(?i)pass(wd|word)\"\n ]* and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"(?i)pass(wd|word)\"\n ]* and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " + "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"(?i)pass(wd|word)\"\n ]* and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"(?i)pass(wd|word)\"\n ]* and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"PUT_REGEX_HERE\"\n ]* and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"PUT_REGEX_HERE\"\n ]* and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " + "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"PUT_REGEX_HERE\"\n ]* and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"PUT_REGEX_HERE\"\n ]* and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"PUT_REGEX_HERE\"\n ]* and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"PUT_REGEX_HERE\"\n ]* and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " + "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"PUT_REGEX_HERE\"\n ]* and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"PUT_REGEX_HERE\"\n ]* and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"(?i)pass(wd|word)\"\n ]* and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"(?i)pass(wd|word)\"\n ]* and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " + "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"(?i)pass(wd|word)\"\n ]* and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"(?i)pass(wd|word)\"\n ]* and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " }, { "language": "javascript", @@ -2544,85 +2544,85 @@ "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pwd.*\" and\n not va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pwd.*\" and\n not va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pwd.*\" and\n not va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pwd.*\" and\n not va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pwd.*\" and\n not fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pwd.*\" and\n not fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pwd.*\" and\n not fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pwd.*\" and\n not fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", @@ -2713,168 +2713,168 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pwd.*\" and\n not va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pwd.*\" and\n not va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pwd.*\" and\n not va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pwd.*\" and\n not va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pwd.*\" and\n not fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pwd.*\" and\n not fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pwd.*\" and\n not fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pwd.*\" and\n not fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and fa.field is [Field f:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String: ]\n ] and va.variable is [Variable v:]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"(?i)pwd\"\n ]* and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"(?i)pwd\"\n ]* and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " + "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"(?i)pwd\"\n ]* and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"(?i)pwd\"\n ]* and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"(?i)pwd\"\n ]* and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"(?i)pwd\"\n ]* and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " + "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"(?i)pwd\"\n ]* and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"(?i)pwd\"\n ]* and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"(?i).*pwd.*\" and\n not l.name matches \"(?i)pwd\"\n ]* and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"(?i).*pwd.*\" and\n not l2.name matches \"(?i)pwd\"\n ]* and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " + "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"(?i).*pwd.*\" and\n not l.name matches \"(?i)pwd\"\n ]* and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"(?i).*pwd.*\" and\n not l2.name matches \"(?i)pwd\"\n ]* and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"(?i).*pwd.*\" and\n not l.name matches \"(?i)pwd\"\n ]* and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"(?i).*pwd.*\" and\n not l2.name matches \"(?i)pwd\"\n ]* and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " + "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"(?i).*pwd.*\" and\n not l.name matches \"(?i)pwd\"\n ]* and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"(?i).*pwd.*\" and\n not l2.name matches \"(?i)pwd\"\n ]* and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"(?i).*pass(wd|word).*\" and\n not l.name matches \"(?i)pass(wd|word)\"\n ]* and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"(?i).*pass(wd|word).*\" and\n not l2.name matches \"(?i)pass(wd|word)\"\n ]* and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " + "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"(?i).*pass(wd|word).*\" and\n not l.name matches \"(?i)pass(wd|word)\"\n ]* and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"(?i).*pass(wd|word).*\" and\n not l2.name matches \"(?i)pass(wd|word)\"\n ]* and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"(?i).*pass(wd|word).*\" and\n not l.name matches \"(?i)pass(wd|word)\"\n ]* and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"(?i).*pass(wd|word).*\" and\n not l2.name matches \"(?i)pass(wd|word)\"\n ]* and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " + "predicate": "\n Operation operation: operation.op matches \"[!=]=(=)?\" and\n (\n (\n operation.lhs.location is [Location l:\n l.name matches \"(?i).*pass(wd|word).*\" and\n not l.name matches \"(?i)pass(wd|word)\"\n ]* and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\" and\n not operation.rhs.constantValue is [Number: ]\n ) or\n (\n operation.rhs.location is [Location l2:\n l2.name matches \"(?i).*pass(wd|word).*\" and\n not l2.name matches \"(?i)pass(wd|word)\"\n ]* and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\" and\n not operation.lhs.constantValue is [Number: ]\n )\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n /* Exclude the case where key is used as an index: \"val = obj[key]\" */\n and not va.enclosingFunction contains [ArrayAccess: index is va and\n va.variable.name == \"key\"]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n /* Exclude the case where key is used as an index: \"val = obj[key]\" */\n and not va.enclosingFunction contains [ArrayAccess: index is va and\n va.variable.name == \"key\"]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n /* Exclude the case where key is used as an index: \"val = obj[key]\" */\n and not va.enclosingFunction contains [ArrayAccess: index is va and\n va.variable.name == \"key\"]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n /* Exclude the case where key is used as an index: \"val = obj[key]\" */\n and not va.enclosingFunction contains [ArrayAccess: index is va and\n va.variable.name == \"key\"]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n /* Exclude the case where key is used as an index: \"val = obj[key]\" */\n and not va.enclosingFunction contains [ArrayAccess: index is va and\n va.variable.name == \"key\"]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n /* Exclude the case where key is used as an index: \"val = obj[key]\" */\n and not va.enclosingFunction contains [ArrayAccess: index is va and\n va.variable.name == \"key\"]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:\n /* not a key/value or key/name or key/text pair as an object */\n not f.enclosingClass is [Class: fields contains [Field: name matches \"(?i)value|name|text\"]]\n ]*\n /* exclude instances where an attribute on the DOM. Common in React */\n and not fa.instance.possibleTypes contains [Type: name matches \"HTML[A-z]*Element.*|__DomElement\"]\n /* Exclude the case where key is used as an index: \"obj.val = obj[key]\" */\n and not fa.enclosingFunction contains [ArrayAccess: index is fa and\n fa.field.name == \"key\"]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:\n /* not a key/value or key/name or key/text pair as an object */\n not f.enclosingClass is [Class: fields contains [Field: name matches \"(?i)value|name|text\"]]\n ]*\n /* exclude instances where an attribute on the DOM. Common in React */\n and not fa.instance.possibleTypes contains [Type: name matches \"HTML[A-z]*Element.*|__DomElement\"]\n /* Exclude the case where key is used as an index: \"obj.val = obj[key]\" */\n and not fa.enclosingFunction contains [ArrayAccess: index is fa and\n fa.field.name == \"key\"]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:\n /* not a key/value or key/name or key/text pair as an object */\n not f.enclosingClass is [Class: fields contains [Field: name matches \"(?i)value|name|text\"]]\n ]*\n /* exclude instances where an attribute on the DOM. Common in React */\n and not fa.instance.possibleTypes contains [Type: name matches \"HTML[A-z]*Element.*|__DomElement\"]\n /* Exclude the case where key is used as an index: \"obj.val = obj[key]\" */\n and not fa.enclosingFunction contains [ArrayAccess: index is fa and\n fa.field.name == \"key\"]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:\n /* not a key/value or key/name or key/text pair as an object */\n not f.enclosingClass is [Class: fields contains [Field: name matches \"(?i)value|name|text\"]]\n ]*\n /* exclude instances where an attribute on the DOM. Common in React */\n and not fa.instance.possibleTypes contains [Type: name matches \"HTML[A-z]*Element.*|__DomElement\"]\n /* Exclude the case where key is used as an index: \"obj.val = obj[key]\" */\n and not fa.enclosingFunction contains [ArrayAccess: index is fa and\n fa.field.name == \"key\"]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:\n /* not a key/value or key/name or key/text pair as an object */\n not f.enclosingClass is [Class: fields contains [Field: name matches \"(?i)value|name|text\"]]\n ]*\n /* exclude instances where an attribute on the DOM. Common in React */\n and not fa.instance.possibleTypes contains [Type: name matches \"HTML[A-z]*Element.*|__DomElement\"]\n /* Exclude the case where key is used as an index: \"obj.val = obj[key]\" */\n and not fa.enclosingFunction contains [ArrayAccess: index is fa and\n fa.field.name == \"key\"]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:\n /* not a key/value or key/name or key/text pair as an object */\n not f.enclosingClass is [Class: fields contains [Field: name matches \"(?i)value|name|text\"]]\n ]*\n /* exclude instances where an attribute on the DOM. Common in React */\n and not fa.instance.possibleTypes contains [Type: name matches \"HTML[A-z]*Element.*|__DomElement\"]\n /* Exclude the case where key is used as an index: \"obj.val = obj[key]\" */\n and not fa.enclosingFunction contains [ArrayAccess: index is fa and\n fa.field.name == \"key\"]\n " }, { "language": "javascript", @@ -2923,56 +2923,56 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String:\n /* minimum length is 16 bytes (128 bits) */\n length >= 16\n ]\n ] and va.variable is [Variable v:]*\n /* Exclude the case where key is used as an index: \"val = obj[key]\" */\n and not va.enclosingFunction contains [ArrayAccess: index is va and\n va.variable.name == \"key\"]\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String:\n /* minimum length is 16 bytes (128 bits) */\n length >= 16\n ]\n ] and va.variable is [Variable v:]*\n /* Exclude the case where key is used as an index: \"val = obj[key]\" */\n and not va.enclosingFunction contains [ArrayAccess: index is va and\n va.variable.name == \"key\"]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String:\n /* minimum length is 16 bytes (128 bits) */\n length >= 16\n ]\n ] and va.variable is [Variable v:]*\n /* Exclude the case where key is used as an index: \"val = obj[key]\" */\n and not va.enclosingFunction contains [ArrayAccess: index is va and\n va.variable.name == \"key\"]\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String:\n /* minimum length is 16 bytes (128 bits) */\n length >= 16\n ]\n ] and va.variable is [Variable v:]*\n /* Exclude the case where key is used as an index: \"val = obj[key]\" */\n and not va.enclosingFunction contains [ArrayAccess: index is va and\n va.variable.name == \"key\"]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String:\n /* minimum length is 16 bytes (128 bits) */\n length >= 16\n ]\n ] and va.variable is [Variable v:]*\n /* Exclude the case where key is used as an index: \"val = obj[key]\" */\n and not va.enclosingFunction contains [ArrayAccess: index is va and\n va.variable.name == \"key\"]\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String:\n /* minimum length is 16 bytes (128 bits) */\n length >= 16\n ]\n ] and va.variable is [Variable v:]*\n /* Exclude the case where key is used as an index: \"val = obj[key]\" */\n and not va.enclosingFunction contains [ArrayAccess: index is va and\n va.variable.name == \"key\"]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String:\n /* minimum length is 16 bytes (128 bits) */\n length >= 16\n ]\n ] and fa.field is [Field f:\n /* not a key/value or key/name or key/text pair as an object */\n not f.enclosingClass is [Class: fields contains [Field: name matches \"(?i)value|name|text\"]]\n ]*\n /* exclude instances where an attribute on the DOM. Common in React */\n and not fa.instance.possibleTypes contains [Type: name matches \"HTML[A-z]*Element.*|__DomElement\"]\n /* exclude key word in props for React */\n and not fa.instance.location.name matches \"~t[0-9]*~react~props\"\n /* Exclude cases where \"key\" is used as an array index */\n and not fa.enclosingFunction contains [ArrayAccess: index is fa and\n fa.field.name == \"key\"]\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String:\n /* minimum length is 16 bytes (128 bits) */\n length >= 16\n ]\n ] and fa.field is [Field f:\n /* not a key/value or key/name or key/text pair as an object */\n not f.enclosingClass is [Class: fields contains [Field: name matches \"(?i)value|name|text\"]]\n ]*\n /* exclude instances where an attribute on the DOM. Common in React */\n and not fa.instance.possibleTypes contains [Type: name matches \"HTML[A-z]*Element.*|__DomElement\"]\n /* exclude key word in props for React */\n and not fa.instance.location.name matches \"~t[0-9]*~react~props\"\n /* Exclude cases where \"key\" is used as an array index */\n and not fa.enclosingFunction contains [ArrayAccess: index is fa and\n fa.field.name == \"key\"]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String:\n /* minimum length is 16 bytes (128 bits) */\n length >= 16\n ]\n ] and fa.field is [Field f:\n /* not a key/value or key/name or key/text pair as an object */\n not f.enclosingClass is [Class: fields contains [Field: name matches \"(?i)value|name|text\"]]\n ]*\n /* exclude instances where an attribute on the DOM. Common in React */\n and not fa.instance.possibleTypes contains [Type: name matches \"HTML[A-z]*Element.*|__DomElement\"]\n /* exclude key word in props for React */\n and not fa.instance.location.name matches \"~t[0-9]*~react~props\"\n /* Exclude cases where \"key\" is used as an array index */\n and not fa.enclosingFunction contains [ArrayAccess: index is fa and\n fa.field.name == \"key\"]\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String:\n /* minimum length is 16 bytes (128 bits) */\n length >= 16\n ]\n ] and fa.field is [Field f:\n /* not a key/value or key/name or key/text pair as an object */\n not f.enclosingClass is [Class: fields contains [Field: name matches \"(?i)value|name|text\"]]\n ]*\n /* exclude instances where an attribute on the DOM. Common in React */\n and not fa.instance.possibleTypes contains [Type: name matches \"HTML[A-z]*Element.*|__DomElement\"]\n /* exclude key word in props for React */\n and not fa.instance.location.name matches \"~t[0-9]*~react~props\"\n /* Exclude cases where \"key\" is used as an array index */\n and not fa.enclosingFunction contains [ArrayAccess: index is fa and\n fa.field.name == \"key\"]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String:\n /* minimum length is 16 bytes (128 bits) */\n length >= 16\n ]\n ] and fa.field is [Field f:\n /* not a key/value or key/name or key/text pair as an object */\n not f.enclosingClass is [Class: fields contains [Field: name matches \"(?i)value|name|text\"]]\n ]*\n /* exclude instances where an attribute on the DOM. Common in React */\n and not fa.instance.possibleTypes contains [Type: name matches \"HTML[A-z]*Element.*|__DomElement\"]\n /* exclude key word in props for React */\n and not fa.instance.location.name matches \"~t[0-9]*~react~props\"\n /* Exclude cases where \"key\" is used as an array index */\n and not fa.enclosingFunction contains [ArrayAccess: index is fa and\n fa.field.name == \"key\"]\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String:\n /* minimum length is 16 bytes (128 bits) */\n length >= 16\n ]\n ] and fa.field is [Field f:\n /* not a key/value or key/name or key/text pair as an object */\n not f.enclosingClass is [Class: fields contains [Field: name matches \"(?i)value|name|text\"]]\n ]*\n /* exclude instances where an attribute on the DOM. Common in React */\n and not fa.instance.possibleTypes contains [Type: name matches \"HTML[A-z]*Element.*|__DomElement\"]\n /* exclude key word in props for React */\n and not fa.instance.location.name matches \"~t[0-9]*~react~props\"\n /* Exclude cases where \"key\" is used as an array index */\n and not fa.enclosingFunction contains [ArrayAccess: index is fa and\n fa.field.name == \"key\"]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:\n /* not a key/value or key/name or key/text pair as an object */\n not f.enclosingClass is [Class: fields contains [Field: name matches \"(?i)value|name|text\"]]\n ]*\n /* exclude instances where an attribute on the DOM. Common in React */\n and not fa.instance.possibleTypes contains [Type: name matches \"HTML[A-z]*Element.*|__DomElement\"]\n /* Exclude the case where key is used as an index: \"obj.val = obj[key]\" */\n and not fa.enclosingFunction contains [ArrayAccess: index is fa and\n fa.field.name == \"key\"]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:\n /* not a key/value or key/name or key/text pair as an object */\n not f.enclosingClass is [Class: fields contains [Field: name matches \"(?i)value|name|text\"]]\n ]*\n /* exclude instances where an attribute on the DOM. Common in React */\n and not fa.instance.possibleTypes contains [Type: name matches \"HTML[A-z]*Element.*|__DomElement\"]\n /* Exclude the case where key is used as an index: \"obj.val = obj[key]\" */\n and not fa.enclosingFunction contains [ArrayAccess: index is fa and\n fa.field.name == \"key\"]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n /* Exclude the case where key is used as an index: \"val = obj[key]\" */\n and not va.enclosingFunction contains [ArrayAccess: index is va and\n va.variable.name == \"key\"]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n /* Exclude the case where key is used as an index: \"val = obj[key]\" */\n and not va.enclosingFunction contains [ArrayAccess: index is va and\n va.variable.name == \"key\"]\n " }, { "language": "javascript", @@ -2993,14 +2993,14 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String:\n /* minimum length is 16 bytes (128 bits) */\n length >= 16\n ]\n ] and va.variable is [Variable v:]*\n /* Exclude the case where key is used as an index: \"val = obj[key]\" */\n and not va.enclosingFunction contains [ArrayAccess: index is va and\n va.variable.name == \"key\"]\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String:\n /* minimum length is 16 bytes (128 bits) */\n length >= 16\n ]\n ] and va.variable is [Variable v:]*\n /* Exclude the case where key is used as an index: \"val = obj[key]\" */\n and not va.enclosingFunction contains [ArrayAccess: index is va and\n va.variable.name == \"key\"]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String:\n /* minimum length is 16 bytes (128 bits) */\n length >= 16\n ]\n ] and fa.field is [Field f:\n /* not a key/value or key/name or key/text pair as an object */\n not f.enclosingClass is [Class: fields contains [Field: name matches \"(?i)value|name|text\"]]\n ]*\n /* exclude instances where an attribute on the DOM. Common in React */\n and not fa.instance.possibleTypes contains [Type: name matches \"HTML[A-z]*Element.*|__DomElement\"]\n /* Exclude the case where key is used as an index: \"obj.val = obj[key]\" */\n and not fa.enclosingFunction contains [ArrayAccess: index is fa and\n fa.field.name == \"key\"]\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n rhs.constantValue is [String:\n /* minimum length is 16 bytes (128 bits) */\n length >= 16\n ]\n ] and fa.field is [Field f:\n /* not a key/value or key/name or key/text pair as an object */\n not f.enclosingClass is [Class: fields contains [Field: name matches \"(?i)value|name|text\"]]\n ]*\n /* exclude instances where an attribute on the DOM. Common in React */\n and not fa.instance.possibleTypes contains [Type: name matches \"HTML[A-z]*Element.*|__DomElement\"]\n /* Exclude the case where key is used as an index: \"obj.val = obj[key]\" */\n and not fa.enclosingFunction contains [ArrayAccess: index is fa and\n fa.field.name == \"key\"]\n " }, { "language": "javascript", @@ -3042,7 +3042,7 @@ "vuln_kingdom": "Encapsulation", "vuln_category": "HTML5", "vuln_subcategory": "Easy-to-Guess Database Name", - "predicate": "\n FunctionCall call: call.name == \"openDatabase\" and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null:] and\n not call.arguments[0].constantValue == \"\"\n " + "predicate": "\n FunctionCall call: call.name == \"openDatabase\" and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None:] and\n not call.arguments[0].constantValue == \"\"\n " }, { "language": "javascript", @@ -3055,22 +3055,22 @@ "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "SQL Injection", - "vuln_subcategory": null, - "predicate": "\n FunctionCall call: call.name == \"executeSql\" and\n call.arguments[0] is [Expression arg: arg.constantValue.null]\n " + "vuln_subcategory": None, + "predicate": "\n FunctionCall call: call.name == \"executeSql\" and\n call.arguments[0] is [Expression arg: arg.constantValue.None]\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "HTML5", "vuln_subcategory": "Easy-to-Guess Database Name", - "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"openDatabase\"] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null:] and\n not call.arguments[0].constantValue == \"\"\n " + "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"openDatabase\"] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None:] and\n not call.arguments[0].constantValue == \"\"\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "SQL Injection", - "vuln_subcategory": null, - "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"executeSql\"] and\n call.arguments[0] is [Expression arg: arg.constantValue.null]\n " + "vuln_subcategory": None, + "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"executeSql\"] and\n call.arguments[0] is [Expression arg: arg.constantValue.None]\n " }, { "language": "javascript", @@ -3083,21 +3083,21 @@ "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Denial of Service", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.name == \"write\" and\n call.instance is [Location l: l.name matches \"(?i).*file.*\"]\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Denial of Service", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"write\"] and\n call.instance is [Location l: l.name matches \"(?i).*file.*\"]\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Denial of Service", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"write\"] and\n call.instance is [FieldAccess fa: fa.field.name matches \"(?i).*file.*\"]\n " }, { @@ -3111,21 +3111,21 @@ "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "SQL Injection", - "vuln_subcategory": null, - "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"executeSql\"] and\n call.arguments[0] is [Expression arg: arg.constantValue.null]\n " + "vuln_subcategory": None, + "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"executeSql\"] and\n call.arguments[0] is [Expression arg: arg.constantValue.None]\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "HTML5", "vuln_subcategory": "Easy-to-Guess Database Name", - "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"openDatabase\"] and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null:] and\n not call.arguments[0].constantValue == \"\"\n " + "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"openDatabase\"] and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None:] and\n not call.arguments[0].constantValue == \"\"\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Denial of Service", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.name == \"write\" and\n call.instance is [FieldAccess fa: fa.field.name matches \"(?i).*file.*\"]\n " }, { @@ -3139,29 +3139,29 @@ "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "SQL Injection", - "vuln_subcategory": null, - "predicate": "\n FunctionCall call: call.name == \"executeSql\" and\n call.arguments[0] is [Expression arg: arg.constantValue.null]\n " + "vuln_subcategory": None, + "predicate": "\n FunctionCall call: call.name == \"executeSql\" and\n call.arguments[0] is [Expression arg: arg.constantValue.None]\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "HTML5", "vuln_subcategory": "Easy-to-Guess Database Name", - "predicate": "\n FunctionCall call: call.name == \"openDatabase\" and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null:] and\n not call.arguments[0].constantValue == \"\"\n " + "predicate": "\n FunctionCall call: call.name == \"openDatabase\" and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None:] and\n not call.arguments[0].constantValue == \"\"\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "HTML5", "vuln_subcategory": "Easy-to-Guess Database Name", - "predicate": "\n FunctionCall call: call.name == \"openDatabase\" and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null:] and\n not call.arguments[0].constantValue == \"\"\n " + "predicate": "\n FunctionCall call: call.name == \"openDatabase\" and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None:] and\n not call.arguments[0].constantValue == \"\"\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "HTML5", "vuln_subcategory": "Easy-to-Guess Database Name", - "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"openDatabase\"] and\n (\n call.instance.possibleTypes contains [Type: name == \"Window\"] or\n /* or doesn't have an instance */\n not call in [Location: ]\n ) and\n not call.arguments[0].constantValue.null and\n not call.arguments[0].constantValue is [Null:] and\n not call.arguments[0].constantValue == \"\"\n " + "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"openDatabase\"] and\n (\n call.instance.possibleTypes contains [Type: name == \"Window\"] or\n /* or doesn't have an instance */\n not call in [Location: ]\n ) and\n not call.arguments[0].constantValue.None and\n not call.arguments[0].constantValue is [None:] and\n not call.arguments[0].constantValue == \"\"\n " }, { "language": "javascript", @@ -3174,84 +3174,84 @@ "language": "javascript", "vuln_kingdom": "Code Quality", "vuln_category": "Fortify Internal", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc:\n possibleTargets contains [Function:\n name == \"use\"\n ]\n and instance.possibleTypes contains [Type: definition is\n [Class: name == \"Express\"\n and interface == true\n and filepath matches \"(.*[/\\\\])?express-serve-static-core[/\\\\]index\\.d\\.ts\"\n ]\n ]\n and fc.arguments contains [Expression inst1: inst1 is [FieldAccess: field.name matches \"(?i).*csrf.*\"]\n or inst1 is [VariableAccess: variable.name matches \"(?i).*csrf.*\"]\n ]\n\n " }, { "language": "javascript", "vuln_kingdom": "Code Quality", "vuln_category": "Fortify Internal", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: fc.possibleTargets contains [Function f: name == \"noSniff\"\n and possibleHeapPaths contains [String str: str matches \"helmet(\\.exports)?\"]\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Code Quality", "vuln_category": "Fortify Internal", - "vuln_subcategory": null, - "predicate": "\n AccessLocation al: al.accessName == \"secure\" and\n al in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === al.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue == true]\n and al.accessInstance is [AccessLocation al2: accessName == \"defaults\"\n and al2.accessInstance is [Location: name == \"$cookiesProvider\"]]\n " + "vuln_subcategory": None, + "predicate": "\n AccessLocation al: al.accessName == \"secure\" and\n al in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === al.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue == true]\n and al.accessInstance is [AccessLocation al2: accessName == \"defaults\"\n and al2.accessInstance is [Location: name == \"$cookiesProvider\"]]\n " }, { "language": "javascript", "vuln_kingdom": "Code Quality", "vuln_category": "Fortify Internal", - "vuln_subcategory": null, - "predicate": "\n AccessLocation al: al.accessName == \"secure\" and\n al in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === al.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue == true]\n and al.accessInstance is [AccessLocation al2: accessName == \"defaults\"\n and al2.accessInstance is [Location: name == \"$cookiesProvider\"]]\n " + "vuln_subcategory": None, + "predicate": "\n AccessLocation al: al.accessName == \"secure\" and\n al in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === al.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue == true]\n and al.accessInstance is [AccessLocation al2: accessName == \"defaults\"\n and al2.accessInstance is [Location: name == \"$cookiesProvider\"]]\n " }, { "language": "javascript", "vuln_kingdom": "Code Quality", "vuln_category": "Fortify Internal", - "vuln_subcategory": null, - "predicate": "\n FieldAccess fa: fa.field.name == \"secure\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue == true]\n and fa.instance is [FieldAccess fa2: field.name == \"defaults\"\n and fa2.instance is [FieldAccess fa3: field.name == \"$cookiesProvider\"]]\n " + "vuln_subcategory": None, + "predicate": "\n FieldAccess fa: fa.field.name == \"secure\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue == true]\n and fa.instance is [FieldAccess fa2: field.name == \"defaults\"\n and fa2.instance is [FieldAccess fa3: field.name == \"$cookiesProvider\"]]\n " }, { "language": "javascript", "vuln_kingdom": "Code Quality", "vuln_category": "Fortify Internal", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n AccessLocation: accessName matches \"xsrf(Header|Cookie)Name\"\n and accessInstance is [AccessLocation: accessName == \"defaults\"\n and accessInstance is [Location: name matches \"\\$http(Provider)?\"]\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Code Quality", "vuln_category": "Fortify Internal", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n AccessLocation: accessName matches \"xsrf(Header|Cookie)Name\"\n and accessInstance is [AccessLocation: accessName == \"defaults\"\n and accessInstance is [Location: name matches \"\\$http(Provider)?\"]\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Code Quality", "vuln_category": "Fortify Internal", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FieldAccess: field.name matches \"xsrf(Header|Cookie)Name\"\n and instance is [FieldAccess: field.name == \"defaults\"\n and instance is [FieldAccess: field.name matches \"\\$http(Provider)?\"]\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Code Quality", "vuln_category": "Fortify Internal", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: fc.possibleTargets contains [Function f: name == \"noSniff\"\n and possibleHeapPaths contains [String str: str matches \"helmet(\\.exports)?\"]\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FunctionCall call: call.name == \"open\" and\n not call.arguments[4].constantValue.null and\n call.arguments[4].constantValue is [Null:]\n " + "vuln_subcategory": "None Password", + "predicate": "\n FunctionCall call: call.name == \"open\" and\n not call.arguments[4].constantValue.None and\n call.arguments[4].constantValue is [None:]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.name matches \"(?i).*(MD2|MD4|MD5).*|.*SHA((-)?1)?$\"\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.name matches \"(?i).*(RC4|ARCFOUR).*|(.*_|.*with|.*encrypt.*|.*decrypt.*)?(DES|3DES|TripleDES|DESede)(_.*|.*encrypt.*|.*decrypt.*)?\"\n " }, { @@ -3266,20 +3266,20 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FunctionCall call: call.name == \"open\" and\n not call.arguments[4].constantValue.null and\n call.arguments[4].constantValue == \"\"\n " + "predicate": "\n FunctionCall call: call.name == \"open\" and\n not call.arguments[4].constantValue.None and\n call.arguments[4].constantValue == \"\"\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call:\n call.name matches \"(?i)RC2.*\"\n or call.name matches \"(?i).*RC2\"\n or call.name matches \"(?i)RC2\"\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.name == \"open\" and\n call.arguments[0].partialConstantValues contains\n [String : matches \"(?i)post|get\"]\n " }, { @@ -3287,27 +3287,27 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall call: call.name == \"open\" and\n not call.arguments[4].constantValue.null and\n not call.arguments[4].constantValue is [Null:] and\n not call.arguments[4].constantValue == \"\" and\n not call.arguments[4].constantValue matches \"(?i)true|false\"\n " + "predicate": "\n FunctionCall call: call.name == \"open\" and\n not call.arguments[4].constantValue.None and\n not call.arguments[4].constantValue is [None:] and\n not call.arguments[4].constantValue == \"\" and\n not call.arguments[4].constantValue matches \"(?i)true|false\"\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.|\\$)?window(\\..*)?\"]\n )\n )\n ]\n and not call.arguments[4].constantValue.null and\n call.arguments[4].constantValue == \"\"\n " + "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.|\\$)?window(\\..*)?\"]\n )\n )\n ]\n and not call.arguments[4].constantValue.None and\n call.arguments[4].constantValue == \"\"\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (\n call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.|\\$)?window(\\..*)?\"]\n )\n )\n ]\n and call.arguments[0].partialConstantValues contains [String : matches \"(?i)post|get\"]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name matches \"(?i).*(MD2|MD4|MD5).*|.*SHA((-)?1)?$\"]\n " }, { @@ -3321,21 +3321,21 @@ "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f:\n f.name matches \"(?i).*RC2\"\n or f.name matches \"(?i)RC2.*\"\n or f.name matches \"(?i)RC2\"\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.|\\$)?window(\\..*)?\"]\n )\n )\n ]\n and not call.arguments[4].constantValue.null and\n call.arguments[4].constantValue is [Null:]\n " + "vuln_subcategory": "None Password", + "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.|\\$)?window(\\..*)?\"]\n )\n )\n ]\n and not call.arguments[4].constantValue.None and\n call.arguments[4].constantValue is [None:]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name matches \"(?i).*(RC4|ARCFOUR).*|(.*_|.*with|.*encrypt.*|.*decrypt.*)?(DES|3DES|TripleDES|DESede)(_.*|.*encrypt.*|.*decrypt.*)?\"]\n " }, { @@ -3343,69 +3343,69 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.|\\$)?window(\\..*)?\"]\n )\n )\n ]\n and not call.arguments[4].constantValue.null and\n not call.arguments[4].constantValue is [Null:] and\n not call.arguments[4].constantValue == \"\"\n " + "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.|\\$)?window(\\..*)?\"]\n )\n )\n ]\n and not call.arguments[4].constantValue.None and\n not call.arguments[4].constantValue is [None:] and\n not call.arguments[4].constantValue == \"\"\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f:\n f.name matches \"(?i).*RC2\"\n or f.name matches \"(?i)RC2.*\"\n or f.name matches \"(?i)RC2\"\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name matches \"(?i).*(RC4|ARCFOUR).*|(.*_|.*with|.*encrypt.*|.*decrypt.*)?(DES|3DES|TripleDES|DESede)(_.*|.*encrypt.*|.*decrypt.*)?\"]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name matches \"(?i).*(MD2|MD4|MD5).*|.*SHA((-)?1)?$\"]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Randomness", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.name == \"random\" and\n call.instance is [Location l: l.name matches \"Math|_\"]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Randomness", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"random\"\n and (\n f.possibleHeapPaths contains [String str: str matches \"Math|_|underscore\"] or\n call.instance is [Location l: l.name matches \"Math|_\"]\n )\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Randomness", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"random\"\n and f.possibleHeapPaths contains [String str: str == \"Math\"]]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Randomness", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"random\"] and\n call.instance is [FieldAccess fa: fa.field.name == \"Math\"]\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (\n call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.|\\$)?window(\\..*)?\"]\n )\n )\n ]\n and call.arguments[0].partialConstantValues contains [String : matches \"(?i)post|get\"]\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (\n call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.)?window(\\..*)?\"]\n )\n )\n ]\n and call.arguments[0].partialConstantValues contains [String : matches \"(?i)post|get\"]\n " }, { @@ -3413,42 +3413,42 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.|\\$)?window(\\..*)?\"]\n )\n )\n ]\n and not call.arguments[4].constantValue.null and\n not call.arguments[4].constantValue is [Null:] and\n not call.arguments[4].constantValue == \"\"\n " + "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.|\\$)?window(\\..*)?\"]\n )\n )\n ]\n and not call.arguments[4].constantValue.None and\n not call.arguments[4].constantValue is [None:] and\n not call.arguments[4].constantValue == \"\"\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.)?window(\\..*)?\"]\n )\n )\n ]\n and not call.arguments[4].constantValue.null and\n not call.arguments[4].constantValue is [Null:] and\n not call.arguments[4].constantValue == \"\" and\n not call.arguments[4].constantValue matches \"(?i)true|false\"\n " + "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.)?window(\\..*)?\"]\n )\n )\n ]\n and not call.arguments[4].constantValue.None and\n not call.arguments[4].constantValue is [None:] and\n not call.arguments[4].constantValue == \"\" and\n not call.arguments[4].constantValue matches \"(?i)true|false\"\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.|\\$)?window(\\..*)?\"]\n )\n )\n ]\n and not call.arguments[4].constantValue.null and\n call.arguments[4].constantValue == \"\"\n " + "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.|\\$)?window(\\..*)?\"]\n )\n )\n ]\n and not call.arguments[4].constantValue.None and\n call.arguments[4].constantValue == \"\"\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.)?window(\\..*)?\"]\n )\n )\n ]\n and not call.arguments[4].constantValue.null and\n call.arguments[4].constantValue == \"\"\n " + "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.)?window(\\..*)?\"]\n )\n )\n ]\n and not call.arguments[4].constantValue.None and\n call.arguments[4].constantValue == \"\"\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.|\\$)?window(\\..*)?\"]\n )\n )\n ]\n and not call.arguments[4].constantValue.null and\n call.arguments[4].constantValue is [Null:]\n " + "vuln_subcategory": "None Password", + "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.|\\$)?window(\\..*)?\"]\n )\n )\n ]\n and not call.arguments[4].constantValue.None and\n call.arguments[4].constantValue is [None:]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.)?window(\\..*)?\"]\n )\n )\n ]\n and not call.arguments[4].constantValue.null and\n call.arguments[4].constantValue is [Null:]\n " + "vuln_subcategory": "None Password", + "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name == \"open\"\n and (call.instance.possibleTypes contains [Type: name matches \"XMLHttpRequest|ActiveXObject\"]\n or\n (\n call.instance.possibleTypes.length == 0\n and\n /* do not match against window.open */\n not f.possibleHeapPaths contains [String str: str matches \"(.*\\.)?window(\\..*)?\"]\n )\n )\n ]\n and not call.arguments[4].constantValue.None and\n call.arguments[4].constantValue is [None:]\n " }, { "language": "javascript", @@ -3461,56 +3461,56 @@ "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call:\n call.name matches \"(?i)RC2.*\"\n or call.name matches \"(?i).*RC2\"\n or call.name matches \"(?i)RC2\"\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.name matches \"(?i).*(RC4|ARCFOUR).*|(.*_|.*with|.*encrypt.*|.*decrypt.*)?(DES|3DES|TripleDES|DESede)(_.*|.*encrypt.*|.*decrypt.*)?\"\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.name matches \"(?i).*(MD2|MD4|MD5).*|.*SHA((-)?1)?$\"\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Randomness", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.name == \"random\" and\n call.instance is [FieldAccess fa: fa.field.name == \"Math\"]\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n AssignmentStatement a: a.lhs.location is [AccessLocation al:\n al.accessName == \"method\"\n /* we don't want to be matching on html when DOMModeling is turned on */\n and not al.accessInstance is [Expression:\n type.name matches \"HTML[A-z]*Element.*|__DomElement\"\n or possibleTypes contains [Type: name matches \"HTML[A-z]*Element.*|__DomElement\"]\n ]\n ]\n and a.rhs.partialConstantValues contains [String: matches \"(?i)post|get\"]\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n AssignmentStatement a: a.lhs.location is [AccessLocation al:\n al.accessName == \"method\"\n /* we don't want to be matching on html when DOMModeling is turned on */\n and not al.accessInstance is [Expression:\n type.name matches \"HTML[A-z]*Element.*|__DomElement\"\n or possibleTypes contains [Type: name matches \"HTML[A-z]*Element.*|__DomElement\"]\n ]\n ]\n and a.rhs.partialConstantValues contains [String: matches \"(?i)post|get\"]\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n AssignmentStatement a: a.lhs.location is [FieldAccess fa: fa.field.name == \"method\"\n /* we don't want to be matching on html when DOMModeling is turned on */\n and not fa.instance is [FieldAccess fa2: type.name matches \"HTML[A-z]*Element.*|__DomElement\"]]\n and a.rhs.partialConstantValues contains [String: matches \"(?i)post|get\"]\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.name == \"open\" and\n call.arguments[0].partialConstantValues contains\n [String : matches \"(?i)post|get\"]\n " }, { @@ -3518,21 +3518,21 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall call: call.name == \"open\" and\n not call.arguments[4].constantValue.null and\n not call.arguments[4].constantValue is [Null:] and\n not call.arguments[4].constantValue == \"\" and\n not call.arguments[4].constantValue matches \"(?i)true|false\"\n " + "predicate": "\n FunctionCall call: call.name == \"open\" and\n not call.arguments[4].constantValue.None and\n not call.arguments[4].constantValue is [None:] and\n not call.arguments[4].constantValue == \"\" and\n not call.arguments[4].constantValue matches \"(?i)true|false\"\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FunctionCall call: call.name == \"open\" and\n not call.arguments[4].constantValue.null and\n call.arguments[4].constantValue == \"\"\n " + "predicate": "\n FunctionCall call: call.name == \"open\" and\n not call.arguments[4].constantValue.None and\n call.arguments[4].constantValue == \"\"\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FunctionCall call: call.name == \"open\" and\n not call.arguments[4].constantValue.null and\n call.arguments[4].constantValue is [Null:]\n " + "vuln_subcategory": "None Password", + "predicate": "\n FunctionCall call: call.name == \"open\" and\n not call.arguments[4].constantValue.None and\n call.arguments[4].constantValue is [None:]\n " }, { "language": "javascript", @@ -3545,78 +3545,78 @@ "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n AssignmentStatement a:\n a.lhs.location is [AccessLocation al:\n al.accessName == \"method\"\n /* we don't want to be matching on html when DOMModeling is turned on */\n and not al.accessInstance is [Expression:\n possibleTypes contains [Type: name matches \"HTML[A-z]*Element.*|__DomElement\"]\n ]\n ]\n and a.rhs.partialConstantValues contains [String: matches \"(?i)post|get\"]\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call:\n call.possibleTargets contains [Function f:\n f.name == \"open\"\n /* do not match against window.open */\n and not call.instance.possibleTypes contains [Type: name == \"Window\"]\n ]\n and call.arguments[0].partialConstantValues contains [String : matches \"(?i)post|get\"]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(\\$)?(PUT_REGEX_HERE)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(\\$)?(PUT_REGEX_HERE)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(\\$)?(PUT_REGEX_HERE)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(\\$)?(PUT_REGEX_HERE)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)(\\$)?pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)(\\$)?pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"\\$(PUT_REGEX_HERE)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"\\$(PUT_REGEX_HERE)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"\\$(PUT_REGEX_HERE)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"\\$(PUT_REGEX_HERE)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)\\$pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)\\$pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"PUT_REGEX_HERE\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n rhs.constantValue is [Null: ]]\n " + "vuln_subcategory": "None Password", + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"PUT_REGEX_HERE\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n rhs.constantValue is [None: ]]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"PUT_REGEX_HERE\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n rhs.constantValue is [Null: ]]\n " + "vuln_subcategory": "None Password", + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"PUT_REGEX_HERE\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n rhs.constantValue is [None: ]]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"(?i)pass(wd|word)\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n rhs.constantValue is [Null: ]]\n " + "vuln_subcategory": "None Password", + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"(?i)pass(wd|word)\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n rhs.constantValue is [None: ]]\n " }, { "language": "php", @@ -3700,84 +3700,84 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"\\$(PUT_REGEX_HERE)\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"\\$(PUT_REGEX_HERE)\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"(\\$)?(PUT_REGEX_HERE)\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"(\\$)?(PUT_REGEX_HERE)\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"\\$(PUT_REGEX_HERE)\"]] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ))\n " + "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"\\$(PUT_REGEX_HERE)\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"\\$(PUT_REGEX_HERE)\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"(\\$)?(PUT_REGEX_HERE)\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"(\\$)?(PUT_REGEX_HERE)\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"\\$(PUT_REGEX_HERE)\"]] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ))\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"\\$(PUT_REGEX_HERE)\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"\\$(PUT_REGEX_HERE)\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"(\\$)?(PUT_REGEX_HERE)\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"(\\$)?(PUT_REGEX_HERE)\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"\\$(PUT_REGEX_HERE)\"]] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ))\n " + "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"\\$(PUT_REGEX_HERE)\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"\\$(PUT_REGEX_HERE)\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"(\\$)?(PUT_REGEX_HERE)\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"(\\$)?(PUT_REGEX_HERE)\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"\\$(PUT_REGEX_HERE)\"]] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ))\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"(?i)\\$pass(wd|word)\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"(?i)\\$pass(wd|word)\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"(?i)(\\$)?pass(wd|word)\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"(?i)(\\$)?pass(wd|word)\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i)\\$pass(wd|word)\"]] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ))\n " + "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"(?i)\\$pass(wd|word)\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"(?i)\\$pass(wd|word)\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"(?i)(\\$)?pass(wd|word)\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"(?i)(\\$)?pass(wd|word)\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i)\\$pass(wd|word)\"]] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ))\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(\\$)?(PUT_REGEX_HERE)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(\\$)?(PUT_REGEX_HERE)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(\\$)?(PUT_REGEX_HERE)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(\\$)?(PUT_REGEX_HERE)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)(\\$)?pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)(\\$)?pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"\\$(PUT_REGEX_HERE)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"\\$(PUT_REGEX_HERE)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"\\$(PUT_REGEX_HERE)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"\\$(PUT_REGEX_HERE)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)\\$pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)\\$pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"PUT_REGEX_HERE\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"]\n " + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"PUT_REGEX_HERE\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"PUT_REGEX_HERE\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"]\n " + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"PUT_REGEX_HERE\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"(?i)pass(wd|word)\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"]\n " + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"(?i)pass(wd|word)\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"]\n " }, { "language": "php", @@ -3804,22 +3804,22 @@ "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)(\\$)?.*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)(\\$)?pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)(\\$)?.*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)(\\$)?pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)\\$.*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)\\$pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)\\$.*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)\\$pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"(?i).*pass(wd|word).*\" and\n not sl.constantValue matches \"(?i)pass(wd|word)\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n rhs.constantValue is [Null: ]]\n " + "vuln_subcategory": "None Password", + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"(?i).*pass(wd|word).*\" and\n not sl.constantValue matches \"(?i)pass(wd|word)\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n rhs.constantValue is [None: ]]\n " }, { "language": "php", @@ -3847,112 +3847,112 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"(?i)\\$.*pass(wd|word).*\" and not val.variable.name matches \"(?i)\\$pass(wd|word)\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"(?i)\\$.*pass(wd|word).*\" and not var.variable.name matches \"(?i)\\$pass(wd|word)\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"(?i)(\\$)?.*pass(wd|word).*\" and not fal.field.name matches \"(?i)(\\$)?pass(wd|word)\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"(?i)(\\$)?.*pass(wd|word).*\" and not far.field.name matches \"(?i)(\\$)?pass(wd|word)\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i)\\$.*pass(wd|word).*\"]] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ))\n " + "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"(?i)\\$.*pass(wd|word).*\" and not val.variable.name matches \"(?i)\\$pass(wd|word)\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"(?i)\\$.*pass(wd|word).*\" and not var.variable.name matches \"(?i)\\$pass(wd|word)\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"(?i)(\\$)?.*pass(wd|word).*\" and not fal.field.name matches \"(?i)(\\$)?pass(wd|word)\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"(?i)(\\$)?.*pass(wd|word).*\" and not far.field.name matches \"(?i)(\\$)?pass(wd|word)\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i)\\$.*pass(wd|word).*\"]] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ))\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)(\\$)?.*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)(\\$)?pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)(\\$)?.*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)(\\$)?pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)\\$.*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)\\$pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)\\$.*pass(wd|word).*\" and\n not va.variable.name matches \"(?i)\\$pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"(?i).*pass(wd|word).*\" and\n not sl.constantValue matches \"(?i)pass(wd|word)\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"]\n " + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"(?i).*pass(wd|word).*\" and\n not sl.constantValue matches \"(?i)pass(wd|word)\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[0].constantValue matches \"PUT_REGEX_HERE\"\n and arguments[1] is [Expression e:\n e.constantValue is [Null:]\n ]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[0].constantValue matches \"PUT_REGEX_HERE\"\n and arguments[1] is [Expression e:\n e.constantValue is [None:]\n ]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[0].constantValue matches \"PUT_REGEX_HERE\"\n and arguments[1] is [Expression e:\n e.constantValue is [Null:]\n ]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[0].constantValue matches \"PUT_REGEX_HERE\"\n and arguments[1] is [Expression e:\n e.constantValue is [None:]\n ]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[0].constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto|private|secret)?(_)?key|passphrase\"\n and arguments[1] is [Expression e:\n e.constantValue is [Null:]\n ]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[0].constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto|private|secret)?(_)?key|passphrase\"\n and arguments[1] is [Expression e:\n e.constantValue is [None:]\n ]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(\\$)?(PUT_REGEX_HERE)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(\\$)?(PUT_REGEX_HERE)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(\\$)?(PUT_REGEX_HERE)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(\\$)?(PUT_REGEX_HERE)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)(\\$)?((enc(ryption|rypt)?|crypto)(_)?key)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)(\\$)?((enc(ryption|rypt)?|crypto)(_)?key)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"\\$(PUT_REGEX_HERE)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n VariableAccess va: va.variable.name matches \"\\$(PUT_REGEX_HERE)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"\\$(PUT_REGEX_HERE)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n VariableAccess va: va.variable.name matches \"\\$(PUT_REGEX_HERE)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)\\$((enc(ryption|rypt)?|crypto)(_)?key)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)\\$((enc(ryption|rypt)?|crypto)(_)?key)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"PUT_REGEX_HERE\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n rhs.constantValue is [Null: ]]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"PUT_REGEX_HERE\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n rhs.constantValue is [None: ]]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"PUT_REGEX_HERE\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n rhs.constantValue is [Null: ]]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"PUT_REGEX_HERE\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n rhs.constantValue is [None: ]]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n rhs.constantValue is [Null: ]]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n rhs.constantValue is [None: ]]\n " }, { "language": "php", @@ -4043,112 +4043,112 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(\\$)?(PUT_REGEX_HERE)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(\\$)?(PUT_REGEX_HERE)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(\\$)?(PUT_REGEX_HERE)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(\\$)?(PUT_REGEX_HERE)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)(\\$)?((enc(ryption|rypt)?|crypto)(_)?key)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)(\\$)?((enc(ryption|rypt)?|crypto)(_)?key)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"\\$(PUT_REGEX_HERE)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"\\$(PUT_REGEX_HERE)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"\\$(PUT_REGEX_HERE)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"\\$(PUT_REGEX_HERE)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)\\$((enc(ryption|rypt)?|crypto)(_)?key)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)\\$((enc(ryption|rypt)?|crypto)(_)?key)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"PUT_REGEX_HERE\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\" and\n /* Exclude values used by CakePhp framework to describe SQL schemas */\n not rhs.constantValue matches \"primary|unique|index\"\n ]\n " + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"PUT_REGEX_HERE\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\" and\n /* Exclude values used by CakePhp framework to describe SQL schemas */\n not rhs.constantValue matches \"primary|unique|index\"\n ]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"PUT_REGEX_HERE\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\" and\n /* Exclude values used by CakePhp framework to describe SQL schemas */\n not rhs.constantValue matches \"primary|unique|index\"\n ]\n " + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"PUT_REGEX_HERE\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\" and\n /* Exclude values used by CakePhp framework to describe SQL schemas */\n not rhs.constantValue matches \"primary|unique|index\"\n ]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\" and\n /* Exclude values used by CakePhp framework to describe SQL schemas */\n not rhs.constantValue matches \"primary|unique|index\"\n ]\n " + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\" and\n /* Exclude values used by CakePhp framework to describe SQL schemas */\n not rhs.constantValue matches \"primary|unique|index\"\n ]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[1].constantValue matches \"PUT_REGEX_HERE\"\n and arguments[2] is [Expression e:\n not e.constantValue.null\n and not e.constantValue is [Null:]\n and not e.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[1].constantValue matches \"PUT_REGEX_HERE\"\n and arguments[2] is [Expression e:\n not e.constantValue.None\n and not e.constantValue is [None:]\n and not e.constantValue == \"\"\n ]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[1].constantValue matches \"PUT_REGEX_HERE\"\n and arguments[2] is [Expression e:\n not e.constantValue.null\n and not e.constantValue is [Null:]\n and not e.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[1].constantValue matches \"PUT_REGEX_HERE\"\n and arguments[2] is [Expression e:\n not e.constantValue.None\n and not e.constantValue is [None:]\n and not e.constantValue == \"\"\n ]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[1].constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto|private|secret)?(_)?key|passphrase\"\n and arguments[2] is [Expression e:\n not e.constantValue.null\n and not e.constantValue is [Null:]\n and not e.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[1].constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto|private|secret)?(_)?key|passphrase\"\n and arguments[2] is [Expression e:\n not e.constantValue.None\n and not e.constantValue is [None:]\n and not e.constantValue == \"\"\n ]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[1].constantValue matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto|private|secret).*key.*|.*passphrase.*\"\n and not fc.arguments[1].constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n and not fc.arguments[1].constantValue matches \"(?i).*public.*\"\n and fc.arguments[2] is [Expression e:\n e.constantValue is [Null:]\n ]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[1].constantValue matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto|private|secret).*key.*|.*passphrase.*\"\n and not fc.arguments[1].constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n and not fc.arguments[1].constantValue matches \"(?i).*public.*\"\n and fc.arguments[2] is [Expression e:\n e.constantValue is [None:]\n ]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)(\\$)?(.*enc(?!e|o|y).*key.*)\" and\n not fa.field.name matches \"(?i)(\\$)?((enc(ryption|rypt)?|crypto)(_)?key)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)(\\$)?(.*enc(?!e|o|y).*key.*)\" and\n not fa.field.name matches \"(?i)(\\$)?((enc(ryption|rypt)?|crypto)(_)?key)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)\\$(.*enc(?!e|o|y).*key.*)\" and\n not va.variable.name matches \"(?i)\\$((enc(ryption|rypt)?|crypto)(_)?key)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)\\$(.*enc(?!e|o|y).*key.*)\" and\n not va.variable.name matches \"(?i)\\$((enc(ryption|rypt)?|crypto)(_)?key)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not sl.constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n rhs.constantValue is [Null: ]]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not sl.constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n rhs.constantValue is [None: ]]\n " }, { "language": "php", @@ -4183,35 +4183,35 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)(\\$)?(.*enc(?!e|o|y).*key.*)\" and\n not fa.field.name matches \"(?i)(\\$)?((enc(ryption|rypt)?|crypto)(_)?key)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)(\\$)?(.*enc(?!e|o|y).*key.*)\" and\n not fa.field.name matches \"(?i)(\\$)?((enc(ryption|rypt)?|crypto)(_)?key)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)\\$(.*enc(?!e|o|y).*key.*)\" and\n not va.variable.name matches \"(?i)\\$((enc(ryption|rypt)?|crypto)(_)?key)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)\\$(.*enc(?!e|o|y).*key.*)\" and\n not va.variable.name matches \"(?i)\\$((enc(ryption|rypt)?|crypto)(_)?key)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[1].constantValue matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto|private|secret).*key.*|.*passphrase.*\"\n and not fc.arguments[1].constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n and not fc.arguments[1].constantValue matches \"(?i).*public.*\"\n and fc.arguments[2] is [Expression e:\n not e.constantValue.null\n and not e.constantValue is [Null:]\n and not e.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc:\n name matches \"(?i)define\"\n and fc.arguments[1].constantValue matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto|private|secret).*key.*|.*passphrase.*\"\n and not fc.arguments[1].constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n and not fc.arguments[1].constantValue matches \"(?i).*public.*\"\n and fc.arguments[2] is [Expression e:\n not e.constantValue.None\n and not e.constantValue is [None:]\n and not e.constantValue == \"\"\n ]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not sl.constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"]\n " + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not sl.constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue == \"blowfish_secret\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n rhs.constantValue is [Null:]]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue == \"blowfish_secret\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n rhs.constantValue is [None:]]\n " }, { "language": "php", @@ -4225,7 +4225,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue == \"blowfish_secret\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"]\n " + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl: sl.constantValue == \"blowfish_secret\"] and\n aa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === aa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\" and\n not rhs.constantValue matches \"(?i)true|false\"]\n " }, { "language": "php", @@ -4238,14 +4238,14 @@ "language": "php", "vuln_kingdom": "Encapsulation", "vuln_category": "System Information Leak", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n AssignmentStatement as: lhs is\n [\n FieldAccess fa: fa.instance.type.definition.supers contains [Class c: c.name matches \"(?i)(Data|Dbo)Source\"] and fa.field.name matches \"(?i)fullDebug\"\n ]\n and\n not (rhs.constantValue matches \"(?i)^false$\" or rhs.constantValue == false)\n " }, { "language": "php", "vuln_kingdom": "Encapsulation", "vuln_category": "System Information Leak", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n AssignmentStatement as: lhs is\n [\n FieldAccess fa: fa.instance.type.definition.supers contains [Class c: c.name matches \"(?i)EmailComponent\"] and fa.field.name matches \"(?i)_debug\"\n ]\n and\n not (rhs.constantValue matches \"(?i)^true$\" or rhs.constantValue == true)\n " }, { @@ -4266,21 +4266,21 @@ "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": null, - "predicate": "\n AssignmentStatement as: lhs is\n [\n FieldAccess fa: fa.instance.type.definition.supers contains [Class c: c.name matches \"(?i)Security\"] and fa.field.name matches \"(?i)hashType\"\n ]\n and (rhs.constantValue matches \"(?i)sha1|md5\" or rhs.constantValue == \"\" or rhs.constantValue is [Null:])\n " + "vuln_subcategory": None, + "predicate": "\n AssignmentStatement as: lhs is\n [\n FieldAccess fa: fa.instance.type.definition.supers contains [Class c: c.name matches \"(?i)Security\"] and fa.field.name matches \"(?i)hashType\"\n ]\n and (rhs.constantValue matches \"(?i)sha1|md5\" or rhs.constantValue == \"\" or rhs.constantValue is [None:])\n " }, { "language": "php", "vuln_kingdom": "Encapsulation", "vuln_category": "System Information Leak", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n AssignmentStatement as: lhs is\n [\n FieldAccess fa: fa.instance.type.definition.supers contains [Class c: c.name matches \"(?i)Configure\"] and fa.field.name matches \"(?i)debug\"\n ]\n and\n not (rhs.constantValue == \"0\" or rhs.constantValue == 0)\n " }, { "language": "php", "vuln_kingdom": "Time and State", "vuln_category": "Session Fixation", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: fc.function.name matches \"(?i)ini_set\"\n and\n fc.arguments[0].constantValue matches \"(?i)session.use_strict_mode\"\n and\n fc.arguments[1].constantValue matches \"(?i)off|0\"\n " }, { @@ -4483,14 +4483,14 @@ "language": "php", "vuln_kingdom": "Encapsulation", "vuln_category": "System Information Leak", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n AssignmentStatement: lhs.location is [FieldAccess: field.name == \"debugging\" and instance.type.name == \"Smarty\"] and rhs.constantValue == true\n " }, { "language": "php", "vuln_kingdom": "Encapsulation", "vuln_category": "System Information Leak", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall: function.name matches \"(?i)__set\"\n and arguments[0].constantValue == \"debugging\"\n and arguments[1].constantValue == true\n and instance.type.name == \"Smarty\"\n " }, { @@ -4498,41 +4498,41 @@ "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Possible Variable Overwrite", "vuln_subcategory": "Global Scope", - "predicate": "\n FunctionCall call: call.function is [Function f: f.name == \"extract\" ] and\n call.arguments[0] is [Expression inArg: ] and\n ( call.arguments.length == 1\n or\n (\n call.arguments[1] is\n [\n FieldAccess fa: fa.instance is\n [\n VariableAccess va:\n va.type.name == \"~PHPGlobalType\"\n and\n va.variable.name == \"~PHPGlobalObject\"\n ]\n and\n fa.field.name != \"EXTR_SKIP\"\n and\n fa.field.name != \"EXTR_PREFIX_SAME\"\n and\n fa.field.name != \"EXTR_PREFIX_ALL\"\n ]\n and\n call.arguments[0].constantValue.null\n )\n )\n " + "predicate": "\n FunctionCall call: call.function is [Function f: f.name == \"extract\" ] and\n call.arguments[0] is [Expression inArg: ] and\n ( call.arguments.length == 1\n or\n (\n call.arguments[1] is\n [\n FieldAccess fa: fa.instance is\n [\n VariableAccess va:\n va.type.name == \"~PHPGlobalType\"\n and\n va.variable.name == \"~PHPGlobalObject\"\n ]\n and\n fa.field.name != \"EXTR_SKIP\"\n and\n fa.field.name != \"EXTR_PREFIX_SAME\"\n and\n fa.field.name != \"EXTR_PREFIX_ALL\"\n ]\n and\n call.arguments[0].constantValue.None\n )\n )\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", "vuln_subcategory": "Weak SSL Cipher", - "predicate": "\n ArrayAccess aa:\n aa.index is [StringLiteral sl: sl.constantValue matches \"(?i)ciphers\"]\n and aa in [AssignmentStatement:\n lhs.location is [Location l: l.transitiveBase === aa.transitiveBase]\n and (\n /* CBC Mode */\n rhs.constantValue matches \"(?i).*-CBC(3)?-.*\"\n /* Weak Hash Functions */\n or rhs.constantValue matches \"(?i).*-(SHA|MD5|GOST94|GOST89)\"\n /* Weak Ciphers */\n or rhs.constantValue matches \"(?i).*-(RC2|RC4|DES|3DES)-.*\"\n /* Anonymous or Null algortihms */\n or rhs.constantValue matches \"(?i).*(ANON|NULL).*\"\n )\n ]\n " + "predicate": "\n ArrayAccess aa:\n aa.index is [StringLiteral sl: sl.constantValue matches \"(?i)ciphers\"]\n and aa in [AssignmentStatement:\n lhs.location is [Location l: l.transitiveBase === aa.transitiveBase]\n and (\n /* CBC Mode */\n rhs.constantValue matches \"(?i).*-CBC(3)?-.*\"\n /* Weak Hash Functions */\n or rhs.constantValue matches \"(?i).*-(SHA|MD5|GOST94|GOST89)\"\n /* Weak Ciphers */\n or rhs.constantValue matches \"(?i).*-(RC2|RC4|DES|3DES)-.*\"\n /* Anonymous or None algortihms */\n or rhs.constantValue matches \"(?i).*(ANON|None).*\"\n )\n ]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall: name matches \"(?i)mcrypt_(encrypt|decrypt|cbc|cfb|ecb|module_open|ofb|get_block_size|get_cipher_name|get_iv_size|get_key_size|module_get_algo_block_size|module_get_algo_key_size|module_get_supported_key_size|module_is_block_algorithm|module_self_test)\" and\n (\n arguments[0] is [FieldAccess fa: fa.field.name matches \"(?i)MCRYPT_RC2\"] or\n arguments[0].constantValue matches \"(?i)rc2\"\n )\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall: name matches \"(?i)mcrypt_(encrypt|decrypt|cbc|cfb|ecb|module_open|ofb|get_block_size|get_cipher_name|get_iv_size|get_key_size|module_get_algo_block_size|module_get_algo_key_size|module_get_supported_key_size|module_is_block_algorithm|module_self_test)\" and\n (\n arguments[0] is [FieldAccess fa: fa.field.name matches \"(?i)MCRYPT_((3|TRIPLE)?DES(_COMPAT)?|ARCFOUR|RC4)\"] or\n arguments[0].constantValue == 1 or\n (arguments[0].constantValue matches \"(?i)des|desede|3des|tripledes|arcfour|rc4\")\n )\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Signature", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n ArrayAccess aa:\n aa.index is [StringLiteral sl: sl.constantValue matches \"(?i)private_key_type\"]\n and aa in [AssignmentStatement:\n lhs.location is [Location l: l.transitiveBase === aa.transitiveBase]\n and rhs is [FieldAccess: name matches \"(?i)OPENSSL_KEYTYPE_DSA\"]\n ]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall: name matches \"(?i)mhash_(get_block_size|get_hash_name|keygen_s2k)|mhash\" and\n (\n arguments[0] is [FieldAccess fa: fa.field.name matches \"(?i)MHASH_(MD2|MD4|MD5|SHA1)\"] or\n /* MHASH_MD4 */\n arguments[0].constantValue == 16 or\n arguments[0].constantValue == 273 or\n /* MHASH_MD5 */\n arguments[0].constantValue == 1 or\n arguments[0].constantValue == 289 or\n /* MHASH_MD2 */\n arguments[0].constantValue == 28 or\n arguments[0].constantValue == 257 or\n /* MHASH_SHA1 */\n arguments[0].constantValue == 2 or\n arguments[0].constantValue == 513\n )\n " }, { @@ -4540,14 +4540,14 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded PBE Password", - "predicate": "\n FunctionCall fc: name matches \"(?i)hash_pbkdf2\"\n and arguments[1] is [Expression e:\n not e.constantValue.null\n and not e.constantValue is [Null:]\n and not e.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: name matches \"(?i)hash_pbkdf2\"\n and arguments[1] is [Expression e:\n not e.constantValue.None\n and not e.constantValue is [None:]\n and not e.constantValue == \"\"\n ]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Predictable Salt", - "predicate": "\n FunctionCall fc: name matches \"(?i)hash_pbkdf2\"\n and (arguments[1].constantValue === arguments[2].constantValue\n or arguments[1] is arguments[2])\n and not arguments[1].constantValue.null\n " + "predicate": "\n FunctionCall fc: name matches \"(?i)hash_pbkdf2\"\n and (arguments[1].constantValue === arguments[2].constantValue\n or arguments[1] is arguments[2])\n and not arguments[1].constantValue.None\n " }, { "language": "php", @@ -4581,8 +4581,8 @@ "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FunctionCall fc:\n function is [Function:\n name matches \"(?i)stream_context_set_option\"\n ] \n and arguments[1].constantValue is [String: matches \"(?i)ssl\"]\n and arguments[2].constantValue is [String: matches \"(?i)passphrase\"]\n and arguments[3].constantValue is [Null: ]\n " + "vuln_subcategory": "None Password", + "predicate": "\n FunctionCall fc:\n function is [Function:\n name matches \"(?i)stream_context_set_option\"\n ] \n and arguments[1].constantValue is [String: matches \"(?i)ssl\"]\n and arguments[2].constantValue is [String: matches \"(?i)passphrase\"]\n and arguments[3].constantValue is [None: ]\n " }, { "language": "php", @@ -4596,14 +4596,14 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall fc:\n function is [Function:\n name matches \"(?i)stream_context_set_option\"\n ] \n and arguments[1].constantValue is [String: matches \"(?i)ssl\"]\n and arguments[2].constantValue is [String: matches \"(?i)passphrase\"]\n and not arguments[3].constantValue.null\n and not arguments[3].constantValue is [Null: ]\n and not arguments[3].constantValue == \"\"\n and not arguments[3].constantValue matches \"(?i)true|false\"\n " + "predicate": "\n FunctionCall fc:\n function is [Function:\n name matches \"(?i)stream_context_set_option\"\n ] \n and arguments[1].constantValue is [String: matches \"(?i)ssl\"]\n and arguments[2].constantValue is [String: matches \"(?i)passphrase\"]\n and not arguments[3].constantValue.None\n and not arguments[3].constantValue is [None: ]\n and not arguments[3].constantValue == \"\"\n and not arguments[3].constantValue matches \"(?i)true|false\"\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", "vuln_subcategory": "Weak SSL Cipher", - "predicate": "\n FunctionCall fc:\n function is [Function:\n name matches \"(?i)stream_context_set_option\"\n ] \n and arguments[1].constantValue is [String: matches \"(?i)ssl\"]\n and arguments[2].constantValue is [String: matches \"(?i)ciphers\"]\n and (\n /* CBC Mode */\n arguments[3].constantValue matches \"(?i).*-CBC(3)?-.*\"\n /* Weak Hash Functions */\n or arguments[3].constantValue matches \"(?i).*-(SHA|MD5|GOST94|GOST89)\"\n /* Weak Ciphers */\n or arguments[3].constantValue matches \"(?i).*-(RC2|RC4|DES|3DES)-.*\"\n /* Anonymous or Null algortihms */\n or arguments[3].constantValue matches \"(?i).*(ANON|NULL).*\"\n )\n " + "predicate": "\n FunctionCall fc:\n function is [Function:\n name matches \"(?i)stream_context_set_option\"\n ] \n and arguments[1].constantValue is [String: matches \"(?i)ssl\"]\n and arguments[2].constantValue is [String: matches \"(?i)ciphers\"]\n and (\n /* CBC Mode */\n arguments[3].constantValue matches \"(?i).*-CBC(3)?-.*\"\n /* Weak Hash Functions */\n or arguments[3].constantValue matches \"(?i).*-(SHA|MD5|GOST94|GOST89)\"\n /* Weak Ciphers */\n or arguments[3].constantValue matches \"(?i).*-(RC2|RC4|DES|3DES)-.*\"\n /* Anonymous or None algortihms */\n or arguments[3].constantValue matches \"(?i).*(ANON|None).*\"\n )\n " }, { "language": "php", @@ -4616,14 +4616,14 @@ "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Signature", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall: name matches \"(?i)openssl_(sign|verify)\"\n and arguments[3].constantValue matches \"(?i)dsa.*\"\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall: \n name matches \"(?i)openssl_(sign|verify)\"\n /* Do not report on SHA224 or higher */\n and not arguments[3].constantValue matches \"(?i).*SHA[2-9][0-9]{2}.*\"\n and (arguments[3] is [FieldAccess fa: \n fa.field.name matches \"(?i)OPENSSL_ALGO_(MD2|MD4|MD5|SHA1|RMD160)\"\n ] or arguments[3].constantValue matches \"(?i).*((ripemd|rmd)(160)?|MD2|MD4|MD5|SHA((-)?1)?).*\")\n " }, { @@ -4631,7 +4631,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Predictable Salt", - "predicate": "\n FunctionCall fc: name matches \"(?i)openssl_pbkdf2\"\n and (arguments[0].constantValue === arguments[1].constantValue\n or arguments[0] is arguments[1])\n and not arguments[0].constantValue.null\n " + "predicate": "\n FunctionCall fc: name matches \"(?i)openssl_pbkdf2\"\n and (arguments[0].constantValue === arguments[1].constantValue\n or arguments[0] is arguments[1])\n and not arguments[0].constantValue.None\n " }, { "language": "php", @@ -4645,20 +4645,20 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded PBE Password", - "predicate": "\n FunctionCall fc: name matches \"(?i)openssl_pbkdf2\"\n and arguments[0] is [Expression e:\n not e.constantValue.null\n and not e.constantValue is [Null:]\n and not e.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: name matches \"(?i)openssl_pbkdf2\"\n and arguments[0] is [Expression e:\n not e.constantValue.None\n and not e.constantValue is [None:]\n and not e.constantValue == \"\"\n ]\n " }, { "language": "php", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: name matches \"(?i)openssl_spki_new\"\n and arguments[2] is [Expression e:\n constantValue is [Number n:\n n > 1 and n < 8\n or n > 13 and n < 19\n ]\n ]\n " }, { "language": "python", "vuln_kingdom": "Code Quality", "vuln_category": "Fortify Internal", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n \n FunctionPointerCall fpc: fpc.name == \"enable_unsafe_deserialization\"\n and fpc.closureExpression is [FieldAccess fa: instance is [FieldAccess: instance is [FieldAccess: name == \"tensorflow.keras~module\"]]]\n \n " }, { @@ -4687,21 +4687,21 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n \n FunctionCall fc:\n function is [Function:\n name == \"__setitem__\"\n ]\n and namedParameters contains [NamedParameter:\n name == \"key\" and expression.constantValue matches \"PUT_REGEX_HERE\"\n ]\n and namedParameters contains [NamedParameter:\n name == \"value\"\n and not expression.constantValue.null\n and not expression.constantValue is [Null:]\n and not expression.constantValue == \"\"\n and not expression.constantValue matches \"(?i)true|false\"\n ]\n \n " + "predicate": "\n \n FunctionCall fc:\n function is [Function:\n name == \"__setitem__\"\n ]\n and namedParameters contains [NamedParameter:\n name == \"key\" and expression.constantValue matches \"PUT_REGEX_HERE\"\n ]\n and namedParameters contains [NamedParameter:\n name == \"value\"\n and not expression.constantValue.None\n and not expression.constantValue is [None:]\n and not expression.constantValue == \"\"\n and not expression.constantValue matches \"(?i)true|false\"\n ]\n \n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n \n FunctionCall fc:\n function is [Function:\n name == \"__setitem__\"\n ]\n and namedParameters contains [NamedParameter:\n name == \"key\" and expression.constantValue matches \"PUT_REGEX_HERE\"\n ]\n and namedParameters contains [NamedParameter:\n name == \"value\"\n and not expression.constantValue.null\n and not expression.constantValue is [Null:]\n and not expression.constantValue == \"\"\n and not expression.constantValue matches \"(?i)true|false\"\n ]\n \n " + "predicate": "\n \n FunctionCall fc:\n function is [Function:\n name == \"__setitem__\"\n ]\n and namedParameters contains [NamedParameter:\n name == \"key\" and expression.constantValue matches \"PUT_REGEX_HERE\"\n ]\n and namedParameters contains [NamedParameter:\n name == \"value\"\n and not expression.constantValue.None\n and not expression.constantValue is [None:]\n and not expression.constantValue == \"\"\n and not expression.constantValue matches \"(?i)true|false\"\n ]\n \n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall fc:\n function is [Function:\n name == \"__setitem__\"\n ]\n and namedParameters contains [NamedParameter:\n name == \"key\" and expression.constantValue matches \"(?i)password|client_secret\"\n ]\n and namedParameters contains [NamedParameter:\n name == \"value\"\n and not expression.constantValue.null\n and not expression.constantValue is [Null:]\n and not expression.constantValue == \"\"\n and not expression.constantValue matches \"(?i)true|false\"\n ]\n " + "predicate": "\n FunctionCall fc:\n function is [Function:\n name == \"__setitem__\"\n ]\n and namedParameters contains [NamedParameter:\n name == \"key\" and expression.constantValue matches \"(?i)password|client_secret\"\n ]\n and namedParameters contains [NamedParameter:\n name == \"value\"\n and not expression.constantValue.None\n and not expression.constantValue is [None:]\n and not expression.constantValue == \"\"\n and not expression.constantValue matches \"(?i)true|false\"\n ]\n " }, { "language": "python", @@ -4728,64 +4728,64 @@ "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\"\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase]\n and rhs.constantValue is [Null:]\n ]\n and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\"\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase]\n and rhs.constantValue is [None:]\n ]\n and fa.field is [Field f:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\"\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase]\n and rhs.constantValue is [Null:]\n ]\n and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\"\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase]\n and rhs.constantValue is [None:]\n ]\n and fa.field is [Field f:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pass(wd|word)\"\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase]\n and rhs.constantValue is [Null:]\n ]\n and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pass(wd|word)\"\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase]\n and rhs.constantValue is [None:]\n ]\n and fa.field is [Field f:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\"\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase]\n and rhs.constantValue is [Null:]\n ]\n and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\"\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase]\n and rhs.constantValue is [None:]\n ]\n and va.variable is [Variable v:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\"\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase]\n and rhs.constantValue is [Null:]\n ]\n and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\"\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase]\n and rhs.constantValue is [None:]\n ]\n and va.variable is [Variable v:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pass(wd|word)\"\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase]\n and rhs.constantValue is [Null:]\n ]\n and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pass(wd|word)\"\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase]\n and rhs.constantValue is [None:]\n ]\n and va.variable is [Variable v:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"PUT_REGEX_HERE\"]\n and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase]\n and rhs.constantValue is [Null: ]\n ]\n " + "vuln_subcategory": "None Password", + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"PUT_REGEX_HERE\"]\n and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase]\n and rhs.constantValue is [None: ]\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"PUT_REGEX_HERE\"]\n and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase]\n and rhs.constantValue is [Null: ]\n ]\n " + "vuln_subcategory": "None Password", + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"PUT_REGEX_HERE\"]\n and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase]\n and rhs.constantValue is [None: ]\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i)pass(wd|word)\"]\n and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase]\n and rhs.constantValue is [Null: ]\n ]\n " + "vuln_subcategory": "None Password", + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i)pass(wd|word)\"]\n and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase]\n and rhs.constantValue is [None: ]\n ]\n " }, { "language": "python", @@ -4855,84 +4855,84 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"PUT_REGEX_HERE\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"PUT_REGEX_HERE\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"PUT_REGEX_HERE\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"PUT_REGEX_HERE\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"PUT_REGEX_HERE\"]] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ))\n " + "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"PUT_REGEX_HERE\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"PUT_REGEX_HERE\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"PUT_REGEX_HERE\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"PUT_REGEX_HERE\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"PUT_REGEX_HERE\"]] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ))\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"PUT_REGEX_HERE\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"PUT_REGEX_HERE\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"PUT_REGEX_HERE\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"PUT_REGEX_HERE\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"PUT_REGEX_HERE\"]] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ))\n " + "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"PUT_REGEX_HERE\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"PUT_REGEX_HERE\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"PUT_REGEX_HERE\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"PUT_REGEX_HERE\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"PUT_REGEX_HERE\"]] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ))\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"(?i)pass(wd|word)\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"(?i)pass(wd|word)\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"(?i)pass(wd|word)\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"(?i)pass(wd|word)\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i)pass(wd|word)\"]] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ))\n " + "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"(?i)pass(wd|word)\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"(?i)pass(wd|word)\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"(?i)pass(wd|word)\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"(?i)pass(wd|word)\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i)pass(wd|word)\"]] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ))\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\"\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null\n and not rhs.constantValue is [Null:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\"\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None\n and not rhs.constantValue is [None:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n and fa.field is [Field f:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\"\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null\n and not rhs.constantValue is [Null:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\"\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None\n and not rhs.constantValue is [None:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n and fa.field is [Field f:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pass(wd|word)\"\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null\n and not rhs.constantValue is [Null:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pass(wd|word)\"\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None\n and not rhs.constantValue is [None:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n and fa.field is [Field f:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"PUT_REGEX_HERE\"]\n and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase]\n and not rhs.constantValue.null\n and not rhs.constantValue is [Null:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"]\n " + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"PUT_REGEX_HERE\"]\n and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase]\n and not rhs.constantValue.None\n and not rhs.constantValue is [None:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"PUT_REGEX_HERE\"]\n and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase]\n and not rhs.constantValue.null\n and not rhs.constantValue is [Null:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"]\n " + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"PUT_REGEX_HERE\"]\n and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase]\n and not rhs.constantValue.None\n and not rhs.constantValue is [None:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i)pass(wd|word)\"]\n and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase]\n and not rhs.constantValue.null\n and not rhs.constantValue is [Null:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"]\n " + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i)pass(wd|word)\"]\n and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase]\n and not rhs.constantValue.None\n and not rhs.constantValue is [None:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\"\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null\n and not rhs.constantValue is [Null:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\"\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None\n and not rhs.constantValue is [None:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n and va.variable is [Variable v:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\"\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null\n and not rhs.constantValue is [Null:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\"\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None\n and not rhs.constantValue is [None:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n and va.variable is [Variable v:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pass(wd|word)\"\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null\n and not rhs.constantValue is [Null:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pass(wd|word)\"\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None\n and not rhs.constantValue is [None:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n and va.variable is [Variable v:]*\n " }, { "language": "python", @@ -4959,22 +4959,22 @@ "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\"\n and not fa.field.name matches \"(?i)pass(wd|word)\"\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase]\n and rhs.constantValue is [Null:]\n ]\n and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\"\n and not fa.field.name matches \"(?i)pass(wd|word)\"\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase]\n and rhs.constantValue is [None:]\n ]\n and fa.field is [Field f:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\"\n and not va.variable.name matches \"(?i)pass(wd|word)\"\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase]\n and rhs.constantValue is [Null:]\n ]\n and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\"\n and not va.variable.name matches \"(?i)pass(wd|word)\"\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase]\n and rhs.constantValue is [None:]\n ]\n and va.variable is [Variable v:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i).*pass(wd|word).*\"\n and not sl.constantValue matches \"(?i)pass(wd|word)\"]\n and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase]\n and rhs.constantValue is [Null: ]\n ]\n " + "vuln_subcategory": "None Password", + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i).*pass(wd|word).*\"\n and not sl.constantValue matches \"(?i)pass(wd|word)\"]\n and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase]\n and rhs.constantValue is [None: ]\n ]\n " }, { "language": "python", @@ -5002,28 +5002,28 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"(?i).*pass(wd|word).*\" and not val.variable.name matches \"(?i)pass(wd|word)\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"(?i).*pass(wd|word).*\" and not var.variable.name matches \"(?i)pass(wd|word)\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"(?i).*pass(wd|word).*\" and not fal.field.name matches \"(?i)pass(wd|word)\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"(?i).*pass(wd|word).*\" and not far.field.name matches \"(?i)pass(wd|word)\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i).*pass(wd|word).*\"]] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ))\n " + "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"(?i).*pass(wd|word).*\" and not val.variable.name matches \"(?i)pass(wd|word)\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"(?i).*pass(wd|word).*\" and not var.variable.name matches \"(?i)pass(wd|word)\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"(?i).*pass(wd|word).*\" and not fal.field.name matches \"(?i)pass(wd|word)\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\" and\n not operation.rhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"(?i).*pass(wd|word).*\" and not far.field.name matches \"(?i)pass(wd|word)\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ) or\n (operation.rhs.location is\n [ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i).*pass(wd|word).*\"]] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\" and\n not operation.lhs.constantValue matches \"(?i)true|false\"\n ))\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\"\n and not fa.field.name matches \"(?i)pass(wd|word)\"\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null\n and not rhs.constantValue is [Null:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\"\n and not fa.field.name matches \"(?i)pass(wd|word)\"\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None\n and not rhs.constantValue is [None:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n and fa.field is [Field f:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i).*pass(wd|word).*\"\n and not sl.constantValue matches \"(?i)pass(wd|word)\"]\n and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase]\n and not rhs.constantValue.null\n and not rhs.constantValue is [Null:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"]\n " + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i).*pass(wd|word).*\"\n and not sl.constantValue matches \"(?i)pass(wd|word)\"]\n and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase]\n and not rhs.constantValue.None\n and not rhs.constantValue is [None:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\"\n and not va.variable.name matches \"(?i)pass(wd|word)\"\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.null\n and not rhs.constantValue is [Null:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\"\n and not va.variable.name matches \"(?i)pass(wd|word)\"\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase]\n and not rhs.constantValue.None\n and not rhs.constantValue is [None:]\n and not rhs.constantValue == \"\"\n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n and va.variable is [Variable v:]*\n " }, { "language": "python", @@ -5050,64 +5050,64 @@ "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\"\n /* Exclude cases where key is used as the index to a dict */\n and not fa.enclosingClass contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains fa]\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase\n ] and rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\"\n /* Exclude cases where key is used as the index to a dict */\n and not fa.enclosingClass contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains fa]\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase\n ] and rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\"\n /* Exclude cases where key is used as the index to a dict */\n and not fa.enclosingClass contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains fa]\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase\n ] and rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\"\n /* Exclude cases where key is used as the index to a dict */\n and not fa.enclosingClass contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains fa]\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase\n ] and rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n /* Exclude cases where key is used as the index to a dict */\n and not fa.enclosingClass contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains fa]\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase\n ] and rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n /* Exclude cases where key is used as the index to a dict */\n and not fa.enclosingClass contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains fa]\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase\n ] and rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\"\n // prevent 1DE90697-BF28-4DDB-A786-30E5BABA15D2 dupes\n and not (\n variable.name == \"SECRET_KEY\"\n and variable.namespace.name matches \".*settings.*\"\n )\n /* Exclude cases where key is used as the index to a dict */\n and not enclosingFunction contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains va]\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase\n ] and rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\"\n // prevent 1DE90697-BF28-4DDB-A786-30E5BABA15D2 dupes\n and not (\n variable.name == \"SECRET_KEY\"\n and variable.namespace.name matches \".*settings.*\"\n )\n /* Exclude cases where key is used as the index to a dict */\n and not enclosingFunction contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains va]\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase\n ] and rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\"\n // prevent 1DE90697-BF28-4DDB-A786-30E5BABA15D2 dupes\n and not (\n variable.name == \"SECRET_KEY\"\n and variable.namespace.name matches \".*settings.*\"\n )\n /* Exclude cases where key is used as the index to a dict */\n and not enclosingFunction contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains va]\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase\n ] and rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\"\n // prevent 1DE90697-BF28-4DDB-A786-30E5BABA15D2 dupes\n and not (\n variable.name == \"SECRET_KEY\"\n and variable.namespace.name matches \".*settings.*\"\n )\n /* Exclude cases where key is used as the index to a dict */\n and not enclosingFunction contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains va]\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase\n ] and rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n /* Exclude cases where key is used as the index to a dict */\n and not enclosingFunction contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains va]\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase\n ] and rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n /* Exclude cases where key is used as the index to a dict */\n and not enclosingFunction contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains va]\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase\n ] and rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"PUT_REGEX_HERE\"\n ] and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase\n ] and rhs.constantValue is [Null: ]\n ]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"PUT_REGEX_HERE\"\n ] and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase\n ] and rhs.constantValue is [None: ]\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"PUT_REGEX_HERE\"\n ] and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase\n ] and rhs.constantValue is [Null: ]\n ]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"PUT_REGEX_HERE\"\n ] and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase\n ] and rhs.constantValue is [None: ]\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n ] and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase\n ] and rhs.constantValue is [Null: ]\n ]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n ] and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase\n ] and rhs.constantValue is [None: ]\n ]\n " }, { "language": "python", @@ -5177,84 +5177,84 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\"\n /* Exclude cases where key is used as the index to a dict */\n and not fa.enclosingClass contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains fa]\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase\n ] and not rhs.constantValue.null\n and not rhs.constantValue is [Null: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\"\n /* Exclude cases where key is used as the index to a dict */\n and not fa.enclosingClass contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains fa]\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase\n ] and not rhs.constantValue.None\n and not rhs.constantValue is [None: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\"\n /* Exclude cases where key is used as the index to a dict */\n and not fa.enclosingClass contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains fa]\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase\n ] and not rhs.constantValue.null\n and not rhs.constantValue is [Null: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\"\n /* Exclude cases where key is used as the index to a dict */\n and not fa.enclosingClass contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains fa]\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase\n ] and not rhs.constantValue.None\n and not rhs.constantValue is [None: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n /* Exclude cases where key is used as the index to a dict */\n and not fa.enclosingClass contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains fa]\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase\n ] and not rhs.constantValue.null\n and not rhs.constantValue is [Null: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n /* Exclude cases where key is used as the index to a dict */\n and not fa.enclosingClass contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains fa]\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase\n ] and not rhs.constantValue.None\n and not rhs.constantValue is [None: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\"\n // prevent 1DE90697-BF28-4DDB-A786-30E5BABA15D2 dupes\n and not (\n variable.name == \"SECRET_KEY\"\n and variable.namespace.name matches \".*settings.*\"\n )\n /* Exclude cases where the varAccess is in the func declaration */\n and not (enclosingFunction.parameters contains va.variable\n or va.enclosingFunction.sourceLocation.startLine == va.sourceLocation.startLine)\n /* Exclude cases where key is used as the index to a dict */\n and not enclosingFunction contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains va]\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase\n ] and not rhs.constantValue.null\n and not rhs.constantValue is [Null: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\"\n // prevent 1DE90697-BF28-4DDB-A786-30E5BABA15D2 dupes\n and not (\n variable.name == \"SECRET_KEY\"\n and variable.namespace.name matches \".*settings.*\"\n )\n /* Exclude cases where the varAccess is in the func declaration */\n and not (enclosingFunction.parameters contains va.variable\n or va.enclosingFunction.sourceLocation.startLine == va.sourceLocation.startLine)\n /* Exclude cases where key is used as the index to a dict */\n and not enclosingFunction contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains va]\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase\n ] and not rhs.constantValue.None\n and not rhs.constantValue is [None: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\"\n // prevent 1DE90697-BF28-4DDB-A786-30E5BABA15D2 dupes\n and not (\n variable.name == \"SECRET_KEY\"\n and variable.namespace.name matches \".*settings.*\"\n )\n /* Exclude cases where the varAccess is in the func declaration */\n and not (enclosingFunction.parameters contains va.variable\n or va.enclosingFunction.sourceLocation.startLine == va.sourceLocation.startLine)\n /* Exclude cases where key is used as the index to a dict */\n and not enclosingFunction contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains va]\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase\n ] and not rhs.constantValue.null\n and not rhs.constantValue is [Null: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\"\n // prevent 1DE90697-BF28-4DDB-A786-30E5BABA15D2 dupes\n and not (\n variable.name == \"SECRET_KEY\"\n and variable.namespace.name matches \".*settings.*\"\n )\n /* Exclude cases where the varAccess is in the func declaration */\n and not (enclosingFunction.parameters contains va.variable\n or va.enclosingFunction.sourceLocation.startLine == va.sourceLocation.startLine)\n /* Exclude cases where key is used as the index to a dict */\n and not enclosingFunction contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains va]\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase\n ] and not rhs.constantValue.None\n and not rhs.constantValue is [None: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n /* Exclude cases where the varAccess is in the func declaration */\n and not (enclosingFunction.parameters contains va.variable\n or va.enclosingFunction.sourceLocation.startLine == va.sourceLocation.startLine)\n /* Exclude cases where key is used as the index to a dict */\n and not enclosingFunction contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains va]\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase\n ] and not rhs.constantValue.null\n and not rhs.constantValue is [Null: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n /* Exclude cases where the varAccess is in the func declaration */\n and not (enclosingFunction.parameters contains va.variable\n or va.enclosingFunction.sourceLocation.startLine == va.sourceLocation.startLine)\n /* Exclude cases where key is used as the index to a dict */\n and not enclosingFunction contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains va]\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase\n ] and not rhs.constantValue.None\n and not rhs.constantValue is [None: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"PUT_REGEX_HERE\"\n ] and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase\n ] and not rhs.constantValue.null\n and not rhs.constantValue is [Null: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n " + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"PUT_REGEX_HERE\"\n ] and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase\n ] and not rhs.constantValue.None\n and not rhs.constantValue is [None: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"PUT_REGEX_HERE\"\n ] and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase\n ] and not rhs.constantValue.null\n and not rhs.constantValue is [Null: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n " + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"PUT_REGEX_HERE\"\n ] and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase\n ] and not rhs.constantValue.None\n and not rhs.constantValue is [None: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n ] and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase\n ] and not rhs.constantValue.null\n and not rhs.constantValue is [Null: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n " + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n ] and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase\n ] and not rhs.constantValue.None\n and not rhs.constantValue is [None: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\"\n and not fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n /* Exclude cases where key is used as the index to a dict */\n and not fa.enclosingClass contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains fa]\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase\n ] and rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\"\n and not fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n /* Exclude cases where key is used as the index to a dict */\n and not fa.enclosingClass contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains fa]\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase\n ] and rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\"\n and not va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n /* Exclude cases where key is used as the index to a dict */\n and not enclosingFunction contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains va]\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase\n ] and rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\"\n and not va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n /* Exclude cases where key is used as the index to a dict */\n and not enclosingFunction contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains va]\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase\n ] and rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\"\n and not sl.constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n ] and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase\n ] and rhs.constantValue is [Null:]\n ]\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\"\n and not sl.constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n ] and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase\n ] and rhs.constantValue is [None:]\n ]\n " }, { "language": "python", @@ -5282,21 +5282,21 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\"\n and not fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n /* Exclude cases where key is used as the index to a dict */\n and not fa.enclosingClass contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains fa]\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase\n ] and not rhs.constantValue.null\n and not rhs.constantValue is [Null: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\"\n and not fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n /* Exclude cases where key is used as the index to a dict */\n and not fa.enclosingClass contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains fa]\n and fa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === fa.transitiveBase\n ] and not rhs.constantValue.None\n and not rhs.constantValue is [None: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ] and fa.field is [Field f:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\"\n /* Exclude cases where the varAccess is in the func declaration */\n and not (enclosingFunction.parameters contains va.variable\n or va.enclosingFunction.sourceLocation.startLine == va.sourceLocation.startLine)\n /* Exclude cases where key is used as the index to a dict */\n and not enclosingFunction contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains va]\n and not va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n and not va.enclosingFunction contains [FunctionCall fc: fc.name == \"__getitem__\"\n and fc.arguments contains [VariableAccess va2: va2 == va]]\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase\n ] and not rhs.constantValue.null\n and not rhs.constantValue is [Null: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\"\n /* Exclude cases where the varAccess is in the func declaration */\n and not (enclosingFunction.parameters contains va.variable\n or va.enclosingFunction.sourceLocation.startLine == va.sourceLocation.startLine)\n /* Exclude cases where key is used as the index to a dict */\n and not enclosingFunction contains [FunctionCall: function.name == \"__getitem__\" and\n arguments contains va]\n and not va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n and not va.enclosingFunction contains [FunctionCall fc: fc.name == \"__getitem__\"\n and fc.arguments contains [VariableAccess va2: va2 == va]]\n and va in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === va.transitiveBase\n ] and not rhs.constantValue.None\n and not rhs.constantValue is [None: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\"\n and not sl.constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n ] and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase\n ] and not rhs.constantValue.null\n and not rhs.constantValue is [Null: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n " + "predicate": "\n ArrayAccess aa: aa.index is [StringLiteral sl:\n sl.constantValue matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\"\n and not sl.constantValue matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\"\n ] and aa in [AssignmentStatement:\n lhs.location is [Location l:\n l.transitiveBase === aa.transitiveBase\n ] and not rhs.constantValue.None\n and not rhs.constantValue is [None: ]\n and not rhs.constantValue == \"\" \n and not rhs.constantValue matches \"(?i)true|false\"\n ]\n " }, { "language": "python", @@ -5323,50 +5323,50 @@ "language": "python", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "SQL Injection", - "vuln_subcategory": null, - "predicate": "\n FunctionCall fc: fc.possibleTargets contains [Function f:\n name matches \"execute(many)?\"\n and enclosingClass.supers contains [Class:\n name == \"django.db.backends.utils.CursorWrapper\"\n ]\n ]\n and fc.arguments[1] is [Expression: constantValue.null ]\n " + "vuln_subcategory": None, + "predicate": "\n FunctionCall fc: fc.possibleTargets contains [Function f:\n name matches \"execute(many)?\"\n and enclosingClass.supers contains [Class:\n name == \"django.db.backends.utils.CursorWrapper\"\n ]\n ]\n and fc.arguments[1] is [Expression: constantValue.None ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Empty PBE Password", - "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"pbkdf2\"\n and namespace.name == \"django.utils.crypto\"\n ] and arguments[0] is [Expression e:\n e.constantValue == \"\"\n or e.constantValue is [Null :]\n ]\n " + "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"pbkdf2\"\n and namespace.name == \"django.utils.crypto\"\n ] and arguments[0] is [Expression e:\n e.constantValue == \"\"\n or e.constantValue is [None :]\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded PBE Password", - "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"pbkdf2\"\n and namespace.name == \"django.utils.crypto\"\n ] and arguments[0] is [Expression e:\n not e.constantValue.null\n and not e.constantValue is [Null:]\n and not e.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"pbkdf2\"\n and namespace.name == \"django.utils.crypto\"\n ] and arguments[0] is [Expression e:\n not e.constantValue.None\n and not e.constantValue is [None:]\n and not e.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Empty PBE Password", - "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"pbkdf2_hmac\"\n and namespace.name == \"hashlib\"\n ] and arguments[1] is [Expression e:\n e.constantValue == \"\"\n or e.constantValue is [Null :]\n ]\n " + "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"pbkdf2_hmac\"\n and namespace.name == \"hashlib\"\n ] and arguments[1] is [Expression e:\n e.constantValue == \"\"\n or e.constantValue is [None :]\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded PBE Password", - "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"pbkdf2_hmac\"\n and namespace.name == \"hashlib\"\n ] and arguments[1] is [Expression e:\n not e.constantValue.null\n and not e.constantValue is [Null:]\n and not e.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"pbkdf2_hmac\"\n and namespace.name == \"hashlib\"\n ] and arguments[1] is [Expression e:\n not e.constantValue.None\n and not e.constantValue is [None:]\n and not e.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Empty PBE Password", - "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name matches \"PBKDF(1|2)|scrypt|bcrypt|HKDF\"\n and namespace.name == \"Crypto.Protocol.KDF\"\n ] and arguments[0] is [Expression e:\n e.constantValue == \"\"\n or e.constantValue is [Null :]\n ]\n " + "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name matches \"PBKDF(1|2)|scrypt|bcrypt|HKDF\"\n and namespace.name == \"Crypto.Protocol.KDF\"\n ] and arguments[0] is [Expression e:\n e.constantValue == \"\"\n or e.constantValue is [None :]\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded PBE Password", - "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name matches \"PBKDF(1|2)|scrypt|bcrypt|HKDF|SP800_108_Counter\"\n and namespace.name matches \"Crypto.Protocol.KDF\"\n ] and arguments[0] is [Expression e:\n not e.constantValue.null\n and not e.constantValue is [Null:]\n and not e.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name matches \"PBKDF(1|2)|scrypt|bcrypt|HKDF|SP800_108_Counter\"\n and namespace.name matches \"Crypto.Protocol.KDF\"\n ] and arguments[0] is [Expression e:\n not e.constantValue.None\n and not e.constantValue is [None:]\n and not e.constantValue == \"\"\n ]\n " }, { "language": "python", @@ -5407,8 +5407,8 @@ "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": "Null PBE Salt", - "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"pbkdf2\"\n and namespace.name == \"django.utils.crypto\"\n ]\n and not arguments[1].constantValue.null\n and arguments[1].constantValue is [Null:]\n " + "vuln_subcategory": "None PBE Salt", + "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"pbkdf2\"\n and namespace.name == \"django.utils.crypto\"\n ]\n and not arguments[1].constantValue.None\n and arguments[1].constantValue is [None:]\n " }, { "language": "python", @@ -5422,14 +5422,14 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Hardcoded PBE Salt", - "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"pbkdf2\"\n and namespace.name == \"django.utils.crypto\"\n ]\n and arguments[1] is [Expression:\n not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"pbkdf2\"\n and namespace.name == \"django.utils.crypto\"\n ]\n and arguments[1] is [Expression:\n not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": "Null Salt", - "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"salted_hmac\"\n and namespace.name == \"django.utils.crypto\"\n ]\n and not arguments[0].constantValue.null\n and arguments[0].constantValue is [Null:]\n " + "vuln_subcategory": "None Salt", + "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"salted_hmac\"\n and namespace.name == \"django.utils.crypto\"\n ]\n and not arguments[0].constantValue.None\n and arguments[0].constantValue is [None:]\n " }, { "language": "python", @@ -5443,7 +5443,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Hardcoded Salt", - "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"salted_hmac\"\n and namespace.name == \"django.utils.crypto\"\n ]\n and arguments[0] is [Expression:\n not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"salted_hmac\"\n and namespace.name == \"django.utils.crypto\"\n ]\n and arguments[0] is [Expression:\n not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ]\n " }, { "language": "python", @@ -5477,29 +5477,29 @@ "language": "python", "vuln_kingdom": "Code Quality", "vuln_category": "Fortify Internal", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Statement s: s contains [AssignmentStatement:\n lhs is [VariableAccess:\n variable.name == \"CACHE_BACKEND\"\n and variable.namespace.name matches \".*settings.*\"\n ]\n and rhs.constantValue matches \".*memcached.*\"\n ] or s contains [AssignmentStatement:\n lhs is [VariableAccess:\n variable.name == \"CACHES\"\n and variable.namespace.name matches \".*settings.*\"\n ]\n and rhs is [FunctionCall:\n possibleTargets contains [Function: name == \"~python~dict\"]\n and arguments contains [FunctionCall:\n possibleTargets contains [Function: name == \"~python~dict\"]\n and arguments contains [Expression:\n constantValue matches \".*memcached.*\"\n ]\n ]\n ]\n ]\n " }, { "language": "python", "vuln_kingdom": "Code Quality", "vuln_category": "Fortify Internal", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc:\n function is [Function:\n name == \"__setitem__\"\n ]\n and namedParameters contains [NamedParameter:\n name == \"key\" and expression.constantValue == \"default\"\n ]\n and namedParameters contains [NamedParameter:\n name == \"value\" and expression is [VariableAccess:\n variable is [Variable temp1:\n enclosingFunction contains [FunctionCall:\n function is [Function:\n name == \"__setitem__\"\n ]\n and namedParameters contains [NamedParameter:\n name == \"key\" and expression.constantValue == \"BACKEND\"\n ]\n and namedParameters contains [NamedParameter:\n name == \"value\" and expression.constantValue matches \".*memcached.*\"\n ]\n and namedParameters contains [NamedParameter self:\n name == \"self\"\n and expression is [VariableAccess:\n variable is [Variable temp2:\n temp2 is temp1\n ]*\n ]\n ]\n and instance is [Expression this:]\n ]\n ]*\n ]*\n ]\n " }, { "language": "python", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "SQL Injection", - "vuln_subcategory": null, - "predicate": "\n FunctionCall fc: fc.possibleTargets contains [Function f:\n name == \"raw\"\n and enclosingClass.supers contains [Class:\n name matches \"django\\.db\\.models\\..*(Manager|Query|QuerySet)\"\n ]\n ]\n and arguments[1] is [Expression: constantValue.null ]\n " + "vuln_subcategory": None, + "predicate": "\n FunctionCall fc: fc.possibleTargets contains [Function f:\n name == \"raw\"\n and enclosingClass.supers contains [Class:\n name matches \"django\\.db\\.models\\..*(Manager|Query|QuerySet)\"\n ]\n ]\n and arguments[1] is [Expression: constantValue.None ]\n " }, { "language": "python", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "SQL Injection", - "vuln_subcategory": null, - "predicate": "\n FunctionCall fc: fc.possibleTargets contains [Function f:\n name == \"extra\"\n and enclosingClass.supers contains [Class:\n name matches \"django\\.db\\.models\\..*(Manager|Query|QuerySet)\"\n ]\n ]\n and arguments[1] is [Expression: constantValue.null ]\n " + "vuln_subcategory": None, + "predicate": "\n FunctionCall fc: fc.possibleTargets contains [Function f:\n name == \"extra\"\n and enclosingClass.supers contains [Class:\n name matches \"django\\.db\\.models\\..*(Manager|Query|QuerySet)\"\n ]\n ]\n and arguments[1] is [Expression: constantValue.None ]\n " }, { "language": "python", @@ -5520,7 +5520,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Hardcoded Salt", - "predicate": "\n FunctionCall fc: possibleTargets contains [Function:\n name == \"make_password\"\n and namespace.name == \"django.contrib.auth.hashers\"\n ]\n and namedParameters contains [NamedParameter p:\n name == \"salt\"\n and expression is [Expression:\n not constantValue.null\n ]\n ]\n " + "predicate": "\n FunctionCall fc: possibleTargets contains [Function:\n name == \"make_password\"\n and namespace.name == \"django.contrib.auth.hashers\"\n ]\n and namedParameters contains [NamedParameter p:\n name == \"salt\"\n and expression is [Expression:\n not constantValue.None\n ]\n ]\n " }, { "language": "python", @@ -5561,7 +5561,7 @@ "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Statement s: s contains [AssignmentStatement as:\n lhs is [VariableAccess:\n variable.name matches \"MIDDLEWARE(_CLASSES)?\"\n and variable.namespace.name matches \".*settings.*\"\n ]\n ]*\n and not s contains [AssignmentStatement:\n lhs is [VariableAccess:\n variable.name == \"SECURE_SSL_REDIRECT\"\n and variable.namespace.name matches \".*settings.*\"\n ]\n and rhs is [VariableAccess:\n variable.name == \"True\"\n ]\n ]\n /* Only report on top level statement (whole file) */\n and not s in [Statement parentStatement: ]\n " }, { @@ -5701,7 +5701,7 @@ "language": "python", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n AssignmentStatement: lhs is [VariableAccess:\n variable.name matches \"MIDDLEWARE(_CLASSES)?\"\n and variable.namespace.name matches \".*settings.*\"\n ]*\n and rhs is [FunctionCall:\n possibleTargets contains [Function: name matches \"~python~(tuple|list)\"]\n and not arguments contains [Expression e:\n e.constantValue == \"django.middleware.csrf.CsrfViewMiddleware\"\n ]\n ]*\n " }, { @@ -5715,7 +5715,7 @@ "language": "python", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Frame Scripting", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Statement s: s contains [AssignmentStatement:\n lhs is [VariableAccess:\n variable.name matches \"MIDDLEWARE(_CLASSES)?\"\n and variable.namespace.name matches \".*settings.*\"\n ]\n and (\n rhs is [FunctionCall:\n possibleTargets contains [Function: name matches \"~python~(tuple|list)\"]\n and not arguments contains [Expression e:\n e.constantValue == \"django.middleware.clickjacking.XFrameOptionsMiddleware\"\n ]\n ]\n and not s contains [AssignmentStatement:\n lhs is [VariableAccess:\n variable.name == \"SECURE_FRAME_DENY\"\n and variable.namespace.name matches \".*settings.*\"\n ]*\n and rhs is [VariableAccess:\n variable.name == \"True\"\n ]\n ]\n )]*\n /* Only report on top level statement (whole file) */\n and not s in [Statement parentStatement: ]\n " }, { @@ -5841,22 +5841,22 @@ "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FunctionCall fc:\n fc.name matches \"create_(super)?user\"\n and fc.instance is [VariableAccess:\n possibleTypes contains [Type:\n definition.supers contains [Class:\n name == \"django.contrib.auth.models.UserManager\"\n ]\n ]\n ]\n and fc.namedParameters contains [NamedParameter np:\n np.name == \"password\"\n and expression is [Expression e:\n constantValue.null\n and constantValue is [Null:]\n ]\n ]\n " + "vuln_subcategory": "None Password", + "predicate": "\n FunctionCall fc:\n fc.name matches \"create_(super)?user\"\n and fc.instance is [VariableAccess:\n possibleTypes contains [Type:\n definition.supers contains [Class:\n name == \"django.contrib.auth.models.UserManager\"\n ]\n ]\n ]\n and fc.namedParameters contains [NamedParameter np:\n np.name == \"password\"\n and expression is [Expression e:\n constantValue.None\n and constantValue is [None:]\n ]\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FunctionCall fc:\n fc.name matches \"create_(super)?user\"\n and fc.instance is [VariableAccess:\n possibleTypes contains [Type:\n definition.supers contains [Class:\n name == \"django.contrib.auth.models.UserManager\"\n ]\n ]\n ]\n and fc.namedParameters contains [NamedParameter np:\n np.name == \"password\"\n and expression is [Expression e:\n not constantValue.null\n and not constantValue is [Null: ]\n and constantValue == \"\"\n ]\n ]\n " + "predicate": "\n FunctionCall fc:\n fc.name matches \"create_(super)?user\"\n and fc.instance is [VariableAccess:\n possibleTypes contains [Type:\n definition.supers contains [Class:\n name == \"django.contrib.auth.models.UserManager\"\n ]\n ]\n ]\n and fc.namedParameters contains [NamedParameter np:\n np.name == \"password\"\n and expression is [Expression e:\n not constantValue.None\n and not constantValue is [None: ]\n and constantValue == \"\"\n ]\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall fc:\n fc.name matches \"create_(super)?user\"\n and fc.instance is [VariableAccess:\n possibleTypes contains [Type:\n definition.supers contains [Class:\n name == \"django.contrib.auth.models.UserManager\"\n ]\n ]\n ]\n and fc.namedParameters contains [NamedParameter np:\n np.name == \"password\"\n and expression is [Expression e:\n not constantValue.null\n and not constantValue is [Null: ]\n and not constantValue == \"\"\n ]\n ]\n " + "predicate": "\n FunctionCall fc:\n fc.name matches \"create_(super)?user\"\n and fc.instance is [VariableAccess:\n possibleTypes contains [Type:\n definition.supers contains [Class:\n name == \"django.contrib.auth.models.UserManager\"\n ]\n ]\n ]\n and fc.namedParameters contains [NamedParameter np:\n np.name == \"password\"\n and expression is [Expression e:\n not constantValue.None\n and not constantValue is [None: ]\n and not constantValue == \"\"\n ]\n ]\n " }, { "language": "python", @@ -5905,28 +5905,28 @@ "vuln_kingdom": "Security Features", "vuln_category": "Cookie Security", "vuln_subcategory": "Cookie not Sent Over SSL", - "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"set_signed_cookie\"\n and enclosingClass.supers contains [Class:\n name matches \"django\\.http(\\.response)?\\.(Streaming)?HttpResponse(Base)?\"\n ]\n ]\n and (fc.arguments[8] is [VariableAccess: variable.name == \"False\"]\n /* or fc.arguments[8].constantValue is [Null:] */\n or (not fc.namedParameters contains [NamedParameter:\n name == \"secure\"\n ] and fc.arguments.length < 9)\n or fc.namedParameters contains [NamedParameter:\n name == \"secure\"\n and (expression is [VariableAccess: variable.name == \"False\"]\n or expression.constantValue is [Null:])\n ])\n " + "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"set_signed_cookie\"\n and enclosingClass.supers contains [Class:\n name matches \"django\\.http(\\.response)?\\.(Streaming)?HttpResponse(Base)?\"\n ]\n ]\n and (fc.arguments[8] is [VariableAccess: variable.name == \"False\"]\n /* or fc.arguments[8].constantValue is [None:] */\n or (not fc.namedParameters contains [NamedParameter:\n name == \"secure\"\n ] and fc.arguments.length < 9)\n or fc.namedParameters contains [NamedParameter:\n name == \"secure\"\n and (expression is [VariableAccess: variable.name == \"False\"]\n or expression.constantValue is [None:])\n ])\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Cookie Security", "vuln_subcategory": "Cookie not Sent Over SSL", - "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"set_cookie\"\n and enclosingClass.supers contains [Class:\n name matches \"django\\.http(\\.response)?\\.(Streaming)?HttpResponse(Base)?\"\n ]\n ]\n and (fc.arguments[7] is [VariableAccess: variable.name == \"False\"]\n or fc.arguments[7].constantValue is [Null:]\n or (not fc.namedParameters contains [NamedParameter:\n name == \"secure\"\n ] and fc.arguments.length < 8)\n or fc.namedParameters contains [NamedParameter:\n name == \"secure\"\n and (expression is [VariableAccess: variable.name == \"False\"]\n or expression.constantValue is [Null:])\n ])\n " + "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"set_cookie\"\n and enclosingClass.supers contains [Class:\n name matches \"django\\.http(\\.response)?\\.(Streaming)?HttpResponse(Base)?\"\n ]\n ]\n and (fc.arguments[7] is [VariableAccess: variable.name == \"False\"]\n or fc.arguments[7].constantValue is [None:]\n or (not fc.namedParameters contains [NamedParameter:\n name == \"secure\"\n ] and fc.arguments.length < 8)\n or fc.namedParameters contains [NamedParameter:\n name == \"secure\"\n and (expression is [VariableAccess: variable.name == \"False\"]\n or expression.constantValue is [None:])\n ])\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Cookie Security", "vuln_subcategory": "Persistent Cookie", - "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"set_signed_cookie\"\n and enclosingClass.supers contains [Class:\n name matches \"django\\.http(\\.response)?\\.(Streaming)?HttpResponse(Base)?\"\n ]\n ]\n and (fc.arguments[5] is [VariableAccess: variable.name == \"False\"]\n /* or fc.arguments[5].constantValue is [Null:] */\n or (not fc.namedParameters contains [NamedParameter:\n name == \"expires\"\n ] and fc.arguments.length < 6)\n or fc.namedParameters contains [NamedParameter:\n name == \"expires\"\n and (expression is [VariableAccess: variable.name == \"False\"]\n or expression.constantValue is [Null:])\n ])\n " + "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"set_signed_cookie\"\n and enclosingClass.supers contains [Class:\n name matches \"django\\.http(\\.response)?\\.(Streaming)?HttpResponse(Base)?\"\n ]\n ]\n and (fc.arguments[5] is [VariableAccess: variable.name == \"False\"]\n /* or fc.arguments[5].constantValue is [None:] */\n or (not fc.namedParameters contains [NamedParameter:\n name == \"expires\"\n ] and fc.arguments.length < 6)\n or fc.namedParameters contains [NamedParameter:\n name == \"expires\"\n and (expression is [VariableAccess: variable.name == \"False\"]\n or expression.constantValue is [None:])\n ])\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Cookie Security", "vuln_subcategory": "Persistent Cookie", - "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"set_cookie\"\n and enclosingClass.supers contains [Class:\n name matches \"django\\.http(\\.response)?\\.(Streaming)?HttpResponse(Base)?\"\n ]\n ]\n and (fc.arguments[4] is [VariableAccess: variable.name == \"False\"]\n or fc.arguments[4].constantValue is [Null:]\n or (not fc.namedParameters contains [NamedParameter:\n name == \"expires\"\n ] and fc.arguments.length < 5)\n or fc.namedParameters contains [NamedParameter:\n name == \"expires\"\n and (expression is [VariableAccess: variable.name == \"False\"]\n or expression.constantValue is [Null:])\n ])\n " + "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"set_cookie\"\n and enclosingClass.supers contains [Class:\n name matches \"django\\.http(\\.response)?\\.(Streaming)?HttpResponse(Base)?\"\n ]\n ]\n and (fc.arguments[4] is [VariableAccess: variable.name == \"False\"]\n or fc.arguments[4].constantValue is [None:]\n or (not fc.namedParameters contains [NamedParameter:\n name == \"expires\"\n ] and fc.arguments.length < 5)\n or fc.namedParameters contains [NamedParameter:\n name == \"expires\"\n and (expression is [VariableAccess: variable.name == \"False\"]\n or expression.constantValue is [None:])\n ])\n " }, { "language": "python", @@ -5947,56 +5947,56 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Empty Salt", - "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"get_signed_cookie\"\n and enclosingClass.supers contains [Class:\n name matches \"django\\.http(\\.request)?\\.HttpRequest\"\n ]\n ]\n and (fc.arguments[2] is [Expression:\n not constantValue.null\n and (constantValue is [Null:]\n or constantValue == \"\")\n ]\n or (not fc.namedParameters contains [NamedParameter:\n name == \"salt\"\n ] and fc.arguments.length < 3)\n or fc.namedParameters contains [NamedParameter:\n name == \"salt\"\n and expression is [Expression:\n not constantValue.null\n and (constantValue is [Null:]\n or constantValue == \"\")\n ]\n ])\n " + "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"get_signed_cookie\"\n and enclosingClass.supers contains [Class:\n name matches \"django\\.http(\\.request)?\\.HttpRequest\"\n ]\n ]\n and (fc.arguments[2] is [Expression:\n not constantValue.None\n and (constantValue is [None:]\n or constantValue == \"\")\n ]\n or (not fc.namedParameters contains [NamedParameter:\n name == \"salt\"\n ] and fc.arguments.length < 3)\n or fc.namedParameters contains [NamedParameter:\n name == \"salt\"\n and expression is [Expression:\n not constantValue.None\n and (constantValue is [None:]\n or constantValue == \"\")\n ]\n ])\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Hardcoded Salt", - "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"get_signed_cookie\"\n and enclosingClass.supers contains [Class:\n name matches \"django\\.http(\\.request)?\\.HttpRequest\"\n ]\n ]\n and (fc.arguments[2] is [Expression:\n not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ]\n or fc.namedParameters contains [NamedParameter:\n name == \"salt\"\n and expression is [Expression:\n not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ]\n ])\n " + "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"get_signed_cookie\"\n and enclosingClass.supers contains [Class:\n name matches \"django\\.http(\\.request)?\\.HttpRequest\"\n ]\n ]\n and (fc.arguments[2] is [Expression:\n not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ]\n or fc.namedParameters contains [NamedParameter:\n name == \"salt\"\n and expression is [Expression:\n not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ]\n ])\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Empty Salt", - "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"set_signed_cookie\"\n and enclosingClass.supers contains [Class:\n name matches \"django\\.http(\\.response)?\\.(Streaming)?HttpResponse(Base)?\"\n ]\n ]\n and (fc.arguments[3] is [Expression:\n not constantValue.null\n and (constantValue == \"\"\n or constantValue is [Null:])\n ]\n or not fc.namedParameters contains [NamedParameter:\n name == \"salt\"\n ]\n or fc.namedParameters contains [NamedParameter:\n name == \"salt\"\n and expression is [Expression:\n not constantValue.null\n and (constantValue == \"\"\n or constantValue is [Null:])\n ]\n ])\n " + "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"set_signed_cookie\"\n and enclosingClass.supers contains [Class:\n name matches \"django\\.http(\\.response)?\\.(Streaming)?HttpResponse(Base)?\"\n ]\n ]\n and (fc.arguments[3] is [Expression:\n not constantValue.None\n and (constantValue == \"\"\n or constantValue is [None:])\n ]\n or not fc.namedParameters contains [NamedParameter:\n name == \"salt\"\n ]\n or fc.namedParameters contains [NamedParameter:\n name == \"salt\"\n and expression is [Expression:\n not constantValue.None\n and (constantValue == \"\"\n or constantValue is [None:])\n ]\n ])\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Hardcoded Salt", - "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"set_signed_cookie\"\n and enclosingClass.supers contains [Class:\n name matches \"django\\.http(\\.response)?\\.(Streaming)?HttpResponse(Base)?\"\n ]\n ]\n and (fc.arguments[3] is [Expression:\n not constantValue.null\n and not constantValue == \"\"\n and not constantValue is [Null: ]\n ]\n or fc.namedParameters contains [NamedParameter:\n name == \"salt\"\n and expression is [Expression:\n not constantValue.null\n and not constantValue == \"\"\n and not constantValue is [Null: ]\n ]\n ])\n " + "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name == \"set_signed_cookie\"\n and enclosingClass.supers contains [Class:\n name matches \"django\\.http(\\.response)?\\.(Streaming)?HttpResponse(Base)?\"\n ]\n ]\n and (fc.arguments[3] is [Expression:\n not constantValue.None\n and not constantValue == \"\"\n and not constantValue is [None: ]\n ]\n or fc.namedParameters contains [NamedParameter:\n name == \"salt\"\n and expression is [Expression:\n not constantValue.None\n and not constantValue == \"\"\n and not constantValue is [None: ]\n ]\n ])\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Randomness", "vuln_subcategory": "Weak Entropy Source", - "predicate": "\n FunctionCall fc: name matches \"(wh)?seed|__init__\"\n and function.enclosingClass.name matches \"random\\.(Random|WichmannHill)\"\n and ( arguments.length == 0\n or arguments[0] is [NullLiteral:]\n )\n " + "predicate": "\n FunctionCall fc: name matches \"(wh)?seed|__init__\"\n and function.enclosingClass.name matches \"random\\.(Random|WichmannHill)\"\n and ( arguments.length == 0\n or arguments[0] is [NoneLiteral:]\n )\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Randomness", "vuln_subcategory": "Weak Entropy Source", - "predicate": "\n FunctionCall fc: name matches \"(wh)?seed\"\n and function.namespace.name == \"random\"\n and namedParameters contains [NamedParameter: name == \"a\"\n and expression is [NullLiteral:]\n ]\n " + "predicate": "\n FunctionCall fc: name matches \"(wh)?seed\"\n and function.namespace.name == \"random\"\n and namedParameters contains [NamedParameter: name == \"a\"\n and expression is [NoneLiteral:]\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Randomness", "vuln_subcategory": "Weak Entropy Source", - "predicate": "\n FunctionCall fc: name matches \"(wh)?seed\"\n and function.namespace.name == \"random\"\n and ( arguments.length == 0\n or arguments[0] is [NullLiteral:]\n )\n " + "predicate": "\n FunctionCall fc: name matches \"(wh)?seed\"\n and function.namespace.name == \"random\"\n and ( arguments.length == 0\n or arguments[0] is [NoneLiteral:]\n )\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": "Null Salt", - "predicate": "\n FunctionCall fc: name == \"update\"\n and function.enclosingClass.name == \"_hashlib.HASH\"\n and (arguments[1] is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ] or arguments[1] is [Operation:\n (rhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] or lhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ])\n ])\n " + "vuln_subcategory": "None Salt", + "predicate": "\n FunctionCall fc: name == \"update\"\n and function.enclosingClass.name == \"_hashlib.HASH\"\n and (arguments[1] is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ] or arguments[1] is [Operation:\n (rhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] or lhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ])\n ])\n " }, { "language": "python", @@ -6010,14 +6010,14 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Hardcoded Salt", - "predicate": "\n FunctionCall fc: name == \"update\"\n and function.enclosingClass.name == \"_hashlib.HASH\"\n and (arguments[1] is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] or arguments[1] is [Operation:\n (rhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] or lhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ])\n ])\n " + "predicate": "\n FunctionCall fc: name == \"update\"\n and function.enclosingClass.name == \"_hashlib.HASH\"\n and (arguments[1] is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] or arguments[1] is [Operation:\n (rhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] or lhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ])\n ])\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": "Null Salt", - "predicate": "\n FunctionCall fc: name matches \"md5|sha1|sha224|sha256|sha384|sha512\"\n and function.namespace.name == \"hashlib\"\n and (arguments[0] is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ] or arguments[0] is [Operation:\n (rhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ] or lhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ])\n ])\n " + "vuln_subcategory": "None Salt", + "predicate": "\n FunctionCall fc: name matches \"md5|sha1|sha224|sha256|sha384|sha512\"\n and function.namespace.name == \"hashlib\"\n and (arguments[0] is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ] or arguments[0] is [Operation:\n (rhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ] or lhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ])\n ])\n " }, { "language": "python", @@ -6031,14 +6031,14 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Hardcoded Salt", - "predicate": "\n FunctionCall fc: name matches \"md5|sha1|sha224|sha256|sha384|sha512\"\n and function.namespace.name == \"hashlib\"\n and (arguments[0] is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] or arguments[0] is [Operation:\n (rhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] or lhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ])\n ])\n " + "predicate": "\n FunctionCall fc: name matches \"md5|sha1|sha224|sha256|sha384|sha512\"\n and function.namespace.name == \"hashlib\"\n and (arguments[0] is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] or arguments[0] is [Operation:\n (rhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] or lhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ])\n ])\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": "Null Salt", - "predicate": "\n FunctionCall fc: name matches \"md5|sha1|sha224|sha256|sha384|sha512\"\n and function.namespace.name == \"hashlib\"\n and (arguments[0] is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ] or arguments[0] is [Operation:\n (rhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ] or lhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ])\n ])\n " + "vuln_subcategory": "None Salt", + "predicate": "\n FunctionCall fc: name matches \"md5|sha1|sha224|sha256|sha384|sha512\"\n and function.namespace.name == \"hashlib\"\n and (arguments[0] is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ] or arguments[0] is [Operation:\n (rhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ] or lhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ])\n ])\n " }, { "language": "python", @@ -6052,14 +6052,14 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Hardcoded Salt", - "predicate": "\n FunctionCall fc: name matches \"md5|sha1|sha224|sha256|sha384|sha512\"\n and function.namespace.name == \"hashlib\"\n and (arguments[0] is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] or arguments[0] is [Operation:\n (rhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] or lhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ])\n ])\n " + "predicate": "\n FunctionCall fc: name matches \"md5|sha1|sha224|sha256|sha384|sha512\"\n and function.namespace.name == \"hashlib\"\n and (arguments[0] is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] or arguments[0] is [Operation:\n (rhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] or lhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ])\n ])\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": "Null PBE Salt", - "predicate": "\n FunctionCall fc: name == \"pbkdf2_hmac\"\n and function.namespace.name == \"hashlib\"\n and arguments[2] is [FieldAccess:\n not constantValue.null\n and constantValue is [Null:]\n ]\n " + "vuln_subcategory": "None PBE Salt", + "predicate": "\n FunctionCall fc: name == \"pbkdf2_hmac\"\n and function.namespace.name == \"hashlib\"\n and arguments[2] is [FieldAccess:\n not constantValue.None\n and constantValue is [None:]\n ]\n " }, { "language": "python", @@ -6073,35 +6073,35 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Hardcoded PBE Salt", - "predicate": "\n FunctionCall fc: name == \"pbkdf2_hmac\"\n and function.namespace.name == \"hashlib\"\n and arguments[2] is [FieldAccess:\n not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: name == \"pbkdf2_hmac\"\n and function.namespace.name == \"hashlib\"\n and arguments[2] is [FieldAccess:\n not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": "Null PBE Salt", - "predicate": "\n FunctionCall fc: name == \"pbkdf2_hmac\"\n and function.namespace.name == \"hashlib\"\n and arguments[2] is [VariableAccess:\n not constantValue.null\n and constantValue is [Null:]\n ]\n " + "vuln_subcategory": "None PBE Salt", + "predicate": "\n FunctionCall fc: name == \"pbkdf2_hmac\"\n and function.namespace.name == \"hashlib\"\n and arguments[2] is [VariableAccess:\n not constantValue.None\n and constantValue is [None:]\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Empty HMAC Key", - "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name == \"hmac\"\n and arguments[0] is [Expression e:\n not e.constantValue.null\n and e.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name == \"hmac\"\n and arguments[0] is [Expression e:\n not e.constantValue.None\n and e.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded HMAC Key", - "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name == \"Crypto.Hash.HMAC\"\n and arguments[0] is [Expression e:\n not e.constantValue.null\n and not e.constantValue is [Null: ]\n and not e.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name == \"Crypto.Hash.HMAC\"\n and arguments[0] is [Expression e:\n not e.constantValue.None\n and not e.constantValue is [None: ]\n and not e.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded HMAC Key", - "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name == \"hmac\"\n and arguments[0] is [Expression e:\n not e.constantValue.null\n and not e.constantValue is [Null: ]\n and not e.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name == \"hmac\"\n and arguments[0] is [Expression e:\n not e.constantValue.None\n and not e.constantValue is [None: ]\n and not e.constantValue == \"\"\n ]\n " }, { "language": "python", @@ -6115,7 +6115,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Hardcoded PBE Salt", - "predicate": "\n FunctionCall fc: name == \"pbkdf2_hmac\"\n and function.namespace.name == \"hashlib\"\n and arguments[2] is [VariableAccess:\n not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: name == \"pbkdf2_hmac\"\n and function.namespace.name == \"hashlib\"\n and arguments[2] is [VariableAccess:\n not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ]\n " }, { "language": "python", @@ -6156,22 +6156,22 @@ "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FunctionCall fc: fc.function.name == \"connect\"\n and fc.function.namespace.name == \"psycopg2\"\n and fc.namedParameters contains [NamedParameter p:\n p.name == \"password\"\n and (p.expression is [VariableAccess va: va.variable.name == \"None\"]\n or p.expression.constantValue is [Null: ])\n and not p.expression.constantValue == \"\"\n ]\n " + "vuln_subcategory": "None Password", + "predicate": "\n FunctionCall fc: fc.function.name == \"connect\"\n and fc.function.namespace.name == \"psycopg2\"\n and fc.namedParameters contains [NamedParameter p:\n p.name == \"password\"\n and (p.expression is [VariableAccess va: va.variable.name == \"None\"]\n or p.expression.constantValue is [None: ])\n and not p.expression.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FunctionCall fc: fc.function.name == \"connect\"\n and fc.function.namespace.name == \"psycopg2\"\n and fc.namedParameters contains [NamedParameter p:\n p.name == \"password\"\n and not p.expression.constantValue.null\n and not p.expression.constantValue is [Null: ]\n and p.expression.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: fc.function.name == \"connect\"\n and fc.function.namespace.name == \"psycopg2\"\n and fc.namedParameters contains [NamedParameter p:\n p.name == \"password\"\n and not p.expression.constantValue.None\n and not p.expression.constantValue is [None: ]\n and p.expression.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall fc: fc.function.name == \"connect\"\n and fc.function.namespace.name == \"psycopg2\"\n and fc.namedParameters contains [NamedParameter p:\n p.name == \"password\"\n and not p.expression.constantValue.null\n and not p.expression.constantValue is [Null: ]\n and not p.expression.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: fc.function.name == \"connect\"\n and fc.function.namespace.name == \"psycopg2\"\n and fc.namedParameters contains [NamedParameter p:\n p.name == \"password\"\n and not p.expression.constantValue.None\n and not p.expression.constantValue is [None: ]\n and not p.expression.constantValue == \"\"\n ]\n " }, { "language": "python", @@ -6184,22 +6184,22 @@ "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FunctionCall fc: fc.function.name == \"setopt\"\n and fc.function.enclosingClass.name matches \"pycurl\\.Curl(Share)?\"\n and (fc.arguments[1] is [VariableAccess va:\n va.variable.name == \"USERPWD\"\n and va.variable.namespace.name == \"pycurl\"\n ] or\n fc.arguments[1] is [FieldAccess fa:\n fa.field.name == \"USERPWD\"\n and fa.field.enclosingClass.name == \"pycurl.Curl\"\n ])\n and (fc.arguments[2] is [VariableAccess va2: va2.variable.name == \"None\"]\n or fc.arguments[2].constantValue is [Null: ])\n and not fc.arguments[2].constantValue == \"\"\n " + "vuln_subcategory": "None Password", + "predicate": "\n FunctionCall fc: fc.function.name == \"setopt\"\n and fc.function.enclosingClass.name matches \"pycurl\\.Curl(Share)?\"\n and (fc.arguments[1] is [VariableAccess va:\n va.variable.name == \"USERPWD\"\n and va.variable.namespace.name == \"pycurl\"\n ] or\n fc.arguments[1] is [FieldAccess fa:\n fa.field.name == \"USERPWD\"\n and fa.field.enclosingClass.name == \"pycurl.Curl\"\n ])\n and (fc.arguments[2] is [VariableAccess va2: va2.variable.name == \"None\"]\n or fc.arguments[2].constantValue is [None: ])\n and not fc.arguments[2].constantValue == \"\"\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FunctionCall fc: fc.function.name == \"setopt\"\n and fc.function.enclosingClass.name matches \"pycurl\\.Curl(Share)?\"\n and (fc.arguments[1] is [VariableAccess va:\n va.variable.name == \"USERPWD\"\n and va.variable.namespace.name == \"pycurl\"\n ] or\n fc.arguments[1] is [FieldAccess fa:\n fa.field.name == \"USERPWD\"\n and fa.field.enclosingClass.name == \"pycurl.Curl\"\n ])\n and not fc.arguments[2].constantValue.null\n and not fc.arguments[2].constantValue is [Null: ]\n and fc.arguments[2].constantValue == \"\"\n " + "predicate": "\n FunctionCall fc: fc.function.name == \"setopt\"\n and fc.function.enclosingClass.name matches \"pycurl\\.Curl(Share)?\"\n and (fc.arguments[1] is [VariableAccess va:\n va.variable.name == \"USERPWD\"\n and va.variable.namespace.name == \"pycurl\"\n ] or\n fc.arguments[1] is [FieldAccess fa:\n fa.field.name == \"USERPWD\"\n and fa.field.enclosingClass.name == \"pycurl.Curl\"\n ])\n and not fc.arguments[2].constantValue.None\n and not fc.arguments[2].constantValue is [None: ]\n and fc.arguments[2].constantValue == \"\"\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall fc: fc.function.name == \"setopt\"\n and fc.function.enclosingClass.name matches \"pycurl\\.Curl(Share)?\"\n and (fc.arguments[1] is [VariableAccess va:\n va.variable.name == \"USERPWD\"\n and va.variable.namespace.name == \"pycurl\"\n ] or\n fc.arguments[1] is [FieldAccess fa:\n fa.field.name == \"USERPWD\"\n and fa.field.enclosingClass.name == \"pycurl.Curl\"\n ])\n and not fc.arguments[2].constantValue.null\n and not fc.arguments[2].constantValue is [Null: ]\n and not fc.arguments[2].constantValue == \"\"\n " + "predicate": "\n FunctionCall fc: fc.function.name == \"setopt\"\n and fc.function.enclosingClass.name matches \"pycurl\\.Curl(Share)?\"\n and (fc.arguments[1] is [VariableAccess va:\n va.variable.name == \"USERPWD\"\n and va.variable.namespace.name == \"pycurl\"\n ] or\n fc.arguments[1] is [FieldAccess fa:\n fa.field.name == \"USERPWD\"\n and fa.field.enclosingClass.name == \"pycurl.Curl\"\n ])\n and not fc.arguments[2].constantValue.None\n and not fc.arguments[2].constantValue is [None: ]\n and not fc.arguments[2].constantValue == \"\"\n " }, { "language": "python", @@ -6219,7 +6219,7 @@ "language": "python", "vuln_kingdom": "Code Quality", "vuln_category": "Fortify Internal", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Field f: f.name == \"cgi\"\n and f.enclosingClass is [Class c: c.name matches \".*~module\"]\n " }, { @@ -6290,35 +6290,35 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall fc: name == \"__init__\"\n and function.enclosingClass.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\\.(AES|RC2|Blowfish|CAST128|DES|DES3)(_)?Cipher\"\n and arguments[5] is [Expression e:\n not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] and arguments[1].constantValue != arguments[5].constantValue\n " + "predicate": "\n FunctionCall fc: name == \"__init__\"\n and function.enclosingClass.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\\.(AES|RC2|Blowfish|CAST128|DES|DES3)(_)?Cipher\"\n and arguments[5] is [Expression e:\n not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] and arguments[1].constantValue != arguments[5].constantValue\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\"\n and arguments[4] is [Expression:\n not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] and arguments[0].constantValue != arguments[4].constantValue\n " + "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\"\n and arguments[4] is [Expression:\n not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] and arguments[0].constantValue != arguments[4].constantValue\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall fc: name == \"__init__\"\n and function.enclosingClass.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\\.(AES|RC2|Blowfish|CAST128|DES|DES3)(_)?Cipher\"\n and namedParameters contains [NamedParameter p:\n name == \"IV\"\n and expression is [Expression:\n not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ]\n ]\n " + "predicate": "\n FunctionCall fc: name == \"__init__\"\n and function.enclosingClass.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\\.(AES|RC2|Blowfish|CAST128|DES|DES3)(_)?Cipher\"\n and namedParameters contains [NamedParameter p:\n name == \"IV\"\n and expression is [Expression:\n not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ]\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\"\n and namedParameters contains [NamedParameter p:\n name == \"IV\"\n and expression is [Expression:\n not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ]\n ]\n " + "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\"\n and namedParameters contains [NamedParameter p:\n name == \"IV\"\n and expression is [Expression:\n not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ]\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall fc: name == \"__init__\"\n and function.enclosingClass.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\\.(AES|RC2|Blowfish|CAST128|DES|DES3)(_)?Cipher\"\n and not namedParameters contains [NamedParameter p:\n name == \"IV\"\n ]\n and (arguments.length < 4\n or not arguments[3].constantValue.null\n )\n " + "predicate": "\n FunctionCall fc: name == \"__init__\"\n and function.enclosingClass.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\\.(AES|RC2|Blowfish|CAST128|DES|DES3)(_)?Cipher\"\n and not namedParameters contains [NamedParameter p:\n name == \"IV\"\n ]\n and (arguments.length < 4\n or not arguments[3].constantValue.None\n )\n " }, { "language": "python", @@ -6367,63 +6367,63 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Predictable Salt", - "predicate": "\n FunctionCall fc: name matches \"PBKDF(1|2)|scrypt\"\n and fc.function.namespace.name == \"Crypto.Protocol.KDF\"\n and arguments[0] is arguments[1]\n and arguments[0].constantValue.null\n " + "predicate": "\n FunctionCall fc: name matches \"PBKDF(1|2)|scrypt\"\n and fc.function.namespace.name == \"Crypto.Protocol.KDF\"\n and arguments[0] is arguments[1]\n and arguments[0].constantValue.None\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Predictable Salt", - "predicate": "\n FunctionCall fc: name matches \"PBKDF(1|2)|scrypt\"\n and fc.function.namespace.name == \"Crypto.Protocol.KDF\"\n and arguments[0].constantValue === arguments[1].constantValue\n and not arguments[0].constantValue.null\n " + "predicate": "\n FunctionCall fc: name matches \"PBKDF(1|2)|scrypt\"\n and fc.function.namespace.name == \"Crypto.Protocol.KDF\"\n and arguments[0].constantValue === arguments[1].constantValue\n and not arguments[0].constantValue.None\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Predictable Salt", - "predicate": "\n FunctionCall fc: name == \"pbkdf2_hmac\"\n and fc.function.namespace.name == \"hashlib\"\n and arguments[1] is arguments[2]\n and arguments[1].constantValue.null\n " + "predicate": "\n FunctionCall fc: name == \"pbkdf2_hmac\"\n and fc.function.namespace.name == \"hashlib\"\n and arguments[1] is arguments[2]\n and arguments[1].constantValue.None\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Predictable Salt", - "predicate": "\n FunctionCall fc: name == \"pbkdf2_hmac\"\n and fc.function.namespace.name == \"hashlib\"\n and arguments[1].constantValue === arguments[2].constantValue\n and not arguments[1].constantValue.null\n " + "predicate": "\n FunctionCall fc: name == \"pbkdf2_hmac\"\n and fc.function.namespace.name == \"hashlib\"\n and arguments[1].constantValue === arguments[2].constantValue\n and not arguments[1].constantValue.None\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall fc: name == \"__init__\"\n and function.enclosingClass.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\\.(AES|RC2|Blowfish|CAST128|DES|DES3)(_)?Cipher\"\n and arguments[1] is arguments[5]\n and arguments[1].constantValue.null\n " + "predicate": "\n FunctionCall fc: name == \"__init__\"\n and function.enclosingClass.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\\.(AES|RC2|Blowfish|CAST128|DES|DES3)(_)?Cipher\"\n and arguments[1] is arguments[5]\n and arguments[1].constantValue.None\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\"\n and arguments[0] is arguments[4]\n and arguments[0].constantValue.null\n " + "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\"\n and arguments[0] is arguments[4]\n and arguments[0].constantValue.None\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall fc: name == \"__init__\"\n and function.enclosingClass.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\\.(AES|RC2|Blowfish|CAST128|DES|DES3)(_)?Cipher\"\n and arguments[1].constantValue === arguments[5].constantValue\n and not arguments[1].constantValue.null\n " + "predicate": "\n FunctionCall fc: name == \"__init__\"\n and function.enclosingClass.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\\.(AES|RC2|Blowfish|CAST128|DES|DES3)(_)?Cipher\"\n and arguments[1].constantValue === arguments[5].constantValue\n and not arguments[1].constantValue.None\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\"\n and arguments[0].constantValue === arguments[2].constantValue\n and not arguments[0].constantValue.null\n " + "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\"\n and arguments[0].constantValue === arguments[2].constantValue\n and not arguments[0].constantValue.None\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\"\n and arguments[0].constantValue === arguments[4].constantValue\n and not arguments[0].constantValue.null\n " + "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\"\n and arguments[0].constantValue === arguments[4].constantValue\n and not arguments[0].constantValue.None\n " }, { "language": "python", @@ -6437,49 +6437,49 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FunctionCall fc: name == \"importKey\"\n and function.namespace.name == \"Crypto.PublicKey.RSA\"\n and namedParameters contains [NamedParameter p:\n name == \"passphrase\"\n and expression is [Expression e:\n not e.constantValue.null\n and not e.constantValue is [Null:]\n and not e.constantValue == \"\"\n ]\n ]\n and arguments.length < 3\n " + "predicate": "\n FunctionCall fc: name == \"importKey\"\n and function.namespace.name == \"Crypto.PublicKey.RSA\"\n and namedParameters contains [NamedParameter p:\n name == \"passphrase\"\n and expression is [Expression e:\n not e.constantValue.None\n and not e.constantValue is [None:]\n and not e.constantValue == \"\"\n ]\n ]\n and arguments.length < 3\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Unencrypted Private Key", - "predicate": "\n FunctionCall fc: name == \"importKey\"\n and function.namespace.name == \"Crypto.PublicKey.RSA\"\n and namedParameters contains [NamedParameter p:\n name == \"passphrase\"\n and expression is [Expression e:\n e.constantValue is [Null:]\n or e.constantValue == \"\"\n ]\n ]\n and arguments.length < 3\n " + "predicate": "\n FunctionCall fc: name == \"importKey\"\n and function.namespace.name == \"Crypto.PublicKey.RSA\"\n and namedParameters contains [NamedParameter p:\n name == \"passphrase\"\n and expression is [Expression e:\n e.constantValue is [None:]\n or e.constantValue == \"\"\n ]\n ]\n and arguments.length < 3\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FunctionCall fc: name == \"exportKey\"\n and function.enclosingClass.name == \"Crypto.PublicKey.RSA._RSAobj\"\n and namedParameters contains [NamedParameter p:\n name == \"passphrase\"\n and expression is [Expression e:\n not e.constantValue.null\n and not e.constantValue is [Null:]\n and not e.constantValue == \"\"\n ]\n ]\n and arguments.length < 4\n " + "predicate": "\n FunctionCall fc: name == \"exportKey\"\n and function.enclosingClass.name == \"Crypto.PublicKey.RSA._RSAobj\"\n and namedParameters contains [NamedParameter p:\n name == \"passphrase\"\n and expression is [Expression e:\n not e.constantValue.None\n and not e.constantValue is [None:]\n and not e.constantValue == \"\"\n ]\n ]\n and arguments.length < 4\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Unencrypted Private Key", - "predicate": "\n FunctionCall fc: name == \"exportKey\"\n and function.enclosingClass.name == \"Crypto.PublicKey.RSA._RSAobj\"\n and namedParameters contains [NamedParameter p:\n name == \"passphrase\"\n and expression is [Expression e:\n e.constantValue is [Null:]\n or e.constantValue == \"\"\n ]\n ]\n and arguments.length < 4\n " + "predicate": "\n FunctionCall fc: name == \"exportKey\"\n and function.enclosingClass.name == \"Crypto.PublicKey.RSA._RSAobj\"\n and namedParameters contains [NamedParameter p:\n name == \"passphrase\"\n and expression is [Expression e:\n e.constantValue is [None:]\n or e.constantValue == \"\"\n ]\n ]\n and arguments.length < 4\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FunctionCall fc: name == \"importKey\"\n and function.namespace.name == \"Crypto.PublicKey.RSA\"\n and arguments[1] is [Expression e:\n not e.constantValue.null\n and not e.constantValue is [Null:]\n and not e.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: name == \"importKey\"\n and function.namespace.name == \"Crypto.PublicKey.RSA\"\n and arguments[1] is [Expression e:\n not e.constantValue.None\n and not e.constantValue is [None:]\n and not e.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Unencrypted Private Key", - "predicate": "\n FunctionCall fc: name == \"importKey\"\n and function.namespace.name == \"Crypto.PublicKey.RSA\"\n and arguments[1] is [Expression e:\n e.constantValue is [Null:]\n or e.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: name == \"importKey\"\n and function.namespace.name == \"Crypto.PublicKey.RSA\"\n and arguments[1] is [Expression e:\n e.constantValue is [None:]\n or e.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FunctionCall fc: name == \"exportKey\"\n and function.enclosingClass.name == \"Crypto.PublicKey.RSA._RSAobj\"\n and arguments[2] is [Expression e:\n not e.constantValue.null\n and not e.constantValue is [Null:]\n and not e.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: name == \"exportKey\"\n and function.enclosingClass.name == \"Crypto.PublicKey.RSA._RSAobj\"\n and arguments[2] is [Expression e:\n not e.constantValue.None\n and not e.constantValue is [None:]\n and not e.constantValue == \"\"\n ]\n " }, { "language": "python", @@ -6493,21 +6493,21 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Unencrypted Private Key", - "predicate": "\n FunctionCall fc: name == \"exportKey\"\n and function.enclosingClass.name == \"Crypto.PublicKey.RSA._RSAobj\"\n and arguments[2] is [Expression e:\n e.constantValue is [Null:]\n or e.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: name == \"exportKey\"\n and function.enclosingClass.name == \"Crypto.PublicKey.RSA._RSAobj\"\n and arguments[2] is [Expression e:\n e.constantValue is [None:]\n or e.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FunctionCall fc: name == \"__init__\"\n and function.enclosingClass.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\\.(AES|RC2|Blowfish|CAST128|DES|DES3)(_)?Cipher\"\n and arguments[1] is [Expression e:\n not e.constantValue.null\n and not e.constantValue is [Null: ]\n and not e.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: name == \"__init__\"\n and function.enclosingClass.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\\.(AES|RC2|Blowfish|CAST128|DES|DES3)(_)?Cipher\"\n and arguments[1] is [Expression e:\n not e.constantValue.None\n and not e.constantValue is [None: ]\n and not e.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": "Null Salt", - "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Hash\\.(.*)\"\n and (arguments[0] is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue is [Null:]\n and constantValue == \"\"\n ] or arguments[0] is [Operation:\n (rhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ] or lhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ])\n ])\n " + "vuln_subcategory": "None Salt", + "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Hash\\.(.*)\"\n and (arguments[0] is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue is [None:]\n and constantValue == \"\"\n ] or arguments[0] is [Operation:\n (rhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ] or lhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ])\n ])\n " }, { "language": "python", @@ -6521,14 +6521,14 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Hardcoded Salt", - "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Hash\\.(.*)\"\n and (arguments[0] is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] or arguments[0] is [Operation:\n (rhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] or lhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ])\n ])\n " + "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Hash\\.(.*)\"\n and (arguments[0] is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] or arguments[0] is [Operation:\n (rhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] or lhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ])\n ])\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": "Null Salt", - "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Hash\\.(.*)\"\n and (arguments[0] is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ] or arguments[0] is [Operation:\n (rhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] or lhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ])\n ])\n " + "vuln_subcategory": "None Salt", + "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Hash\\.(.*)\"\n and (arguments[0] is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ] or arguments[0] is [Operation:\n (rhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] or lhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ])\n ])\n " }, { "language": "python", @@ -6542,14 +6542,14 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Hardcoded Salt", - "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Hash\\.(.*)\"\n and (arguments[0] is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] or arguments[0] is [Operation:\n (rhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] or lhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ])\n ])\n " + "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Hash\\.(.*)\"\n and (arguments[0] is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] or arguments[0] is [Operation:\n (rhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] or lhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ])\n ])\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": "Null Salt", - "predicate": "\n FunctionCall fc: name == \"__init__\"\n and function.enclosingClass.name matches \"Crypto\\.Hash\\.(.*)\"\n and (arguments[1] is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ] or arguments[1] is [Operation:\n (rhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ] or lhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ])\n ])\n " + "vuln_subcategory": "None Salt", + "predicate": "\n FunctionCall fc: name == \"__init__\"\n and function.enclosingClass.name matches \"Crypto\\.Hash\\.(.*)\"\n and (arguments[1] is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ] or arguments[1] is [Operation:\n (rhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ] or lhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ])\n ])\n " }, { "language": "python", @@ -6563,14 +6563,14 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Hardcoded Salt", - "predicate": "\n FunctionCall fc: name == \"__init__\"\n and function.enclosingClass.name matches \"Crypto\\.Hash\\.(.*)\"\n and (arguments[1] is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] or arguments[1] is [Operation:\n (rhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] or lhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ])\n ])\n " + "predicate": "\n FunctionCall fc: name == \"__init__\"\n and function.enclosingClass.name matches \"Crypto\\.Hash\\.(.*)\"\n and (arguments[1] is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] or arguments[1] is [Operation:\n (rhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] or lhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ])\n ])\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": "Null Salt", - "predicate": "\n FunctionCall fc: name == \"__init__\"\n and function.enclosingClass.name matches \"Crypto\\.Hash\\.(.*)\"\n and (arguments[1] is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ] or arguments[1] is [Operation:\n (rhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ] or lhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ])\n ])\n " + "vuln_subcategory": "None Salt", + "predicate": "\n FunctionCall fc: name == \"__init__\"\n and function.enclosingClass.name matches \"Crypto\\.Hash\\.(.*)\"\n and (arguments[1] is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ] or arguments[1] is [Operation:\n (rhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ] or lhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ])\n ])\n " }, { "language": "python", @@ -6584,14 +6584,14 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Hardcoded Salt", - "predicate": "\n FunctionCall fc: name == \"__init__\"\n and function.enclosingClass.name matches \"Crypto\\.Hash\\.(.*)\"\n and (arguments[1] is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] or arguments[1] is [Operation:\n (rhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] or lhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ])\n ])\n " + "predicate": "\n FunctionCall fc: name == \"__init__\"\n and function.enclosingClass.name matches \"Crypto\\.Hash\\.(.*)\"\n and (arguments[1] is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] or arguments[1] is [Operation:\n (rhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] or lhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ])\n ])\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": "Null Salt", - "predicate": "\n FunctionCall fc: name == \"update\"\n and function.enclosingClass.name == \"Crypto.Hash.hashalgo.HashAlgo\"\n and (arguments[1] is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ] or arguments[1] is [Operation:\n (rhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ] or lhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ])\n ])\n " + "vuln_subcategory": "None Salt", + "predicate": "\n FunctionCall fc: name == \"update\"\n and function.enclosingClass.name == \"Crypto.Hash.hashalgo.HashAlgo\"\n and (arguments[1] is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ] or arguments[1] is [Operation:\n (rhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ] or lhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ])\n ])\n " }, { "language": "python", @@ -6605,14 +6605,14 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Hardcoded Salt", - "predicate": "\n FunctionCall fc: name == \"update\"\n and function.enclosingClass.name == \"Crypto.Hash.hashalgo.HashAlgo\"\n and (arguments[1] is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] or arguments[1] is [Operation:\n (rhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] or lhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ])\n ])\n " + "predicate": "\n FunctionCall fc: name == \"update\"\n and function.enclosingClass.name == \"Crypto.Hash.hashalgo.HashAlgo\"\n and (arguments[1] is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] or arguments[1] is [Operation:\n (rhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] or lhs is [FieldAccess:\n field.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ])\n ])\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": "Null Salt", - "predicate": "\n FunctionCall fc: name == \"update\"\n and function.enclosingClass.name == \"Crypto.Hash.hashalgo.HashAlgo\"\n and (arguments[1] is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n ] or arguments[1] is [Operation:\n (rhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ] or lhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and constantValue is [Null:]\n ])\n ])\n " + "vuln_subcategory": "None Salt", + "predicate": "\n FunctionCall fc: name == \"update\"\n and function.enclosingClass.name == \"Crypto.Hash.hashalgo.HashAlgo\"\n and (arguments[1] is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n ] or arguments[1] is [Operation:\n (rhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ] or lhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and constantValue is [None:]\n ])\n ])\n " }, { "language": "python", @@ -6626,28 +6626,28 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Hardcoded Salt", - "predicate": "\n FunctionCall fc: name == \"update\"\n and function.enclosingClass.name == \"Crypto.Hash.hashalgo.HashAlgo\"\n and (arguments[1] is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] or arguments[1] is [Operation:\n (rhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ] or lhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ])\n ])\n " + "predicate": "\n FunctionCall fc: name == \"update\"\n and function.enclosingClass.name == \"Crypto.Hash.hashalgo.HashAlgo\"\n and (arguments[1] is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] or arguments[1] is [Operation:\n (rhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ] or lhs is [VariableAccess:\n variable.name matches \"(?i).*salt.*\"\n and not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ])\n ])\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: name matches \"__init__|new\"\n and function.enclosingClass.name matches \"Crypto\\.Hash\\.(MD2|MD4|MD5|SHA|RIPEMD|keccak)\\.(MD2|MD4|MD5|RIPEMD160|SHA1|Keccak_)Hash\"\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Hash\\.(MD2|MD4|MD5|SHA|RIPEMD|keccak)\"\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": "Null PBE Salt", - "predicate": "\n FunctionCall fc: name matches \"PBKDF(1|2)\"\n and function.namespace.name == \"Crypto.Protocol.KDF\"\n and arguments[1] is [FieldAccess:\n not constantValue.null\n and constantValue is [Null:]\n ]\n " + "vuln_subcategory": "None PBE Salt", + "predicate": "\n FunctionCall fc: name matches \"PBKDF(1|2)\"\n and function.namespace.name == \"Crypto.Protocol.KDF\"\n and arguments[1] is [FieldAccess:\n not constantValue.None\n and constantValue is [None:]\n ]\n " }, { "language": "python", @@ -6661,14 +6661,14 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Hardcoded PBE Salt", - "predicate": "\n FunctionCall fc: name matches \"PBKDF(1|2)\"\n and function.namespace.name == \"Crypto.Protocol.KDF\"\n and arguments[1] is [FieldAccess:\n not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: name matches \"PBKDF(1|2)\"\n and function.namespace.name == \"Crypto.Protocol.KDF\"\n and arguments[1] is [FieldAccess:\n not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": "Null PBE Salt", - "predicate": "\n FunctionCall fc: name matches \"PBKDF(1|2)\"\n and function.namespace.name == \"Crypto.Protocol.KDF\"\n and arguments[1] is [VariableAccess:\n not constantValue.null\n and constantValue is [Null:]\n ]\n " + "vuln_subcategory": "None PBE Salt", + "predicate": "\n FunctionCall fc: name matches \"PBKDF(1|2)\"\n and function.namespace.name == \"Crypto.Protocol.KDF\"\n and arguments[1] is [VariableAccess:\n not constantValue.None\n and constantValue is [None:]\n ]\n " }, { "language": "python", @@ -6682,14 +6682,14 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Hardcoded PBE Salt", - "predicate": "\n FunctionCall fc: name matches \"PBKDF(1|2)\"\n and function.namespace.name == \"Crypto.Protocol.KDF\"\n and arguments[1] is [VariableAccess:\n not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: name matches \"PBKDF(1|2)\"\n and function.namespace.name == \"Crypto.Protocol.KDF\"\n and arguments[1] is [VariableAccess:\n not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\"\n and arguments[0] is [Expression e:\n not e.constantValue.null\n and not e.constantValue is [Null:]\n and not e.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: name == \"new\"\n and function.namespace.name matches \"Crypto\\.Cipher\\.(AES|ARC2|Blowfish|CAST|DES|DES3)\"\n and arguments[0] is [Expression e:\n not e.constantValue.None\n and not e.constantValue is [None:]\n and not e.constantValue == \"\"\n ]\n " }, { "language": "python", @@ -6766,7 +6766,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", "vuln_subcategory": "Weak SSL Cipher", - "predicate": "\n FunctionCall fc: fc.function.name == \"wrap_socket\"\n and fc.function.namespace.name == \"ssl\"\n and fc.namedParameters contains [NamedParameter np:\n name == \"ciphers\"\n and expression is [VariableAccess va:\n /* CBC Mode */\n va.constantValue matches \"(?i).*-CBC(3)?-.*\"\n /* Weak Hash Functions */\n or va.constantValue matches \"(?i)-(SHA|MD5|GOSTR3411)\"\n /* Weak Ciphers */\n or va.constantValue matches \"(?i).*-(RC2|RC4|DES|3DES)-.*\"\n /* Null or Anonymous Algorithms */\n or va.constantValue matches \"(?i).*-(NULL|ANON)-.*\"\n ]\n ]\n " + "predicate": "\n FunctionCall fc: fc.function.name == \"wrap_socket\"\n and fc.function.namespace.name == \"ssl\"\n and fc.namedParameters contains [NamedParameter np:\n name == \"ciphers\"\n and expression is [VariableAccess va:\n /* CBC Mode */\n va.constantValue matches \"(?i).*-CBC(3)?-.*\"\n /* Weak Hash Functions */\n or va.constantValue matches \"(?i)-(SHA|MD5|GOSTR3411)\"\n /* Weak Ciphers */\n or va.constantValue matches \"(?i).*-(RC2|RC4|DES|3DES)-.*\"\n /* None or Anonymous Algorithms */\n or va.constantValue matches \"(?i).*-(None|ANON)-.*\"\n ]\n ]\n " }, { "language": "python", @@ -6815,21 +6815,21 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FunctionCall fc:\n function is [Function:\n name == \"__init__\"\n and enclosingClass.supers contains [Class:\n name == \"pymongo.mongo_client.MongoClient\"\n ]\n ]\n and (\n namedParameters contains [NamedParameter: name == \"host\"\n and not expression.constantValue.null\n and not expression.constantValue is [Null:]\n and not expression.constantValue == \"\"\n and expression.constantValue matches \"mongodb(\\+srv)?://.*:@.*\"\n ]\n or namedParameters contains [NamedParameter: name == \"password\"\n and expression.constantValue == \"\"\n ]\n )\n " + "predicate": "\n FunctionCall fc:\n function is [Function:\n name == \"__init__\"\n and enclosingClass.supers contains [Class:\n name == \"pymongo.mongo_client.MongoClient\"\n ]\n ]\n and (\n namedParameters contains [NamedParameter: name == \"host\"\n and not expression.constantValue.None\n and not expression.constantValue is [None:]\n and not expression.constantValue == \"\"\n and expression.constantValue matches \"mongodb(\\+srv)?://.*:@.*\"\n ]\n or namedParameters contains [NamedParameter: name == \"password\"\n and expression.constantValue == \"\"\n ]\n )\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall fc:\n function is [Function:\n name == \"__init__\"\n and enclosingClass.supers contains [Class:\n name == \"pymongo.mongo_client.MongoClient\"\n ]\n ]\n and (\n namedParameters contains [NamedParameter: name == \"host\"\n and not expression.constantValue.null\n and not expression.constantValue is [Null:]\n and expression.constantValue matches \"mongodb(\\+srv)?://.*:.+@.*\"\n ]\n or namedParameters contains [NamedParameter: name == \"password\"\n and not expression.constantValue.null\n and not expression.constantValue is [Null:]\n and not expression.constantValue == \"\"\n ]\n )\n " + "predicate": "\n FunctionCall fc:\n function is [Function:\n name == \"__init__\"\n and enclosingClass.supers contains [Class:\n name == \"pymongo.mongo_client.MongoClient\"\n ]\n ]\n and (\n namedParameters contains [NamedParameter: name == \"host\"\n and not expression.constantValue.None\n and not expression.constantValue is [None:]\n and expression.constantValue matches \"mongodb(\\+srv)?://.*:.+@.*\"\n ]\n or namedParameters contains [NamedParameter: name == \"password\"\n and not expression.constantValue.None\n and not expression.constantValue is [None:]\n and not expression.constantValue == \"\"\n ]\n )\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Unauthenticated Service", "vuln_subcategory": "MongoDB", - "predicate": "\n FunctionCall fc:\n function.name == \"__init__\"\n and function.enclosingClass.supers contains [Class:\n name == \"pymongo.mongo_client.MongoClient\"\n ]\n and not namedParameters contains [NamedParameter: name == \"username\"\n and not expression.constantValue is [Null:]\n ]\n and not namedParameters contains [NamedParameter: name == \"password\"\n and not expression.constantValue is [Null:]\n ]\n and namedParameters contains [NamedParameter: name == \"host\"\n and (expression.constantValue is [Null:]\n or (not expression.constantValue.null\n and not expression.constantValue matches \"mongodb(\\+srv)?://.*:.*@.*\"\n )\n )\n ]\n " + "predicate": "\n FunctionCall fc:\n function.name == \"__init__\"\n and function.enclosingClass.supers contains [Class:\n name == \"pymongo.mongo_client.MongoClient\"\n ]\n and not namedParameters contains [NamedParameter: name == \"username\"\n and not expression.constantValue is [None:]\n ]\n and not namedParameters contains [NamedParameter: name == \"password\"\n and not expression.constantValue is [None:]\n ]\n and namedParameters contains [NamedParameter: name == \"host\"\n and (expression.constantValue is [None:]\n or (not expression.constantValue.None\n and not expression.constantValue matches \"mongodb(\\+srv)?://.*:.*@.*\"\n )\n )\n ]\n " }, { "language": "python", @@ -6856,64 +6856,64 @@ "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FunctionCall fc: fc.function.name == \"login\"\n and function.enclosingClass.supers contains [Class:\n name matches \"ftplib\\.(FTP|FTP_TLS)\"\n ]\n and fc.namedParameters contains [NamedParameter: name == \"passwd\"\n and not expression.constantValue.null\n and expression.constantValue is [Null: ]\n and not expression.constantValue == \"\"\n ]\n " + "vuln_subcategory": "None Password", + "predicate": "\n FunctionCall fc: fc.function.name == \"login\"\n and function.enclosingClass.supers contains [Class:\n name matches \"ftplib\\.(FTP|FTP_TLS)\"\n ]\n and fc.namedParameters contains [NamedParameter: name == \"passwd\"\n and not expression.constantValue.None\n and expression.constantValue is [None: ]\n and not expression.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FunctionCall fc: fc.function.name == \"__init__\"\n and function.enclosingClass.supers contains [Class:\n name matches \"ftplib\\.(FTP|FTP_TLS)\"\n ]\n and fc.namedParameters contains [NamedParameter: name == \"passwd\"\n and not expression.constantValue.null\n and expression.constantValue is [Null: ]\n and not expression.constantValue == \"\"\n ]\n " + "vuln_subcategory": "None Password", + "predicate": "\n FunctionCall fc: fc.function.name == \"__init__\"\n and function.enclosingClass.supers contains [Class:\n name matches \"ftplib\\.(FTP|FTP_TLS)\"\n ]\n and fc.namedParameters contains [NamedParameter: name == \"passwd\"\n and not expression.constantValue.None\n and expression.constantValue is [None: ]\n and not expression.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FunctionCall fc: fc.function.name == \"login\"\n and function.enclosingClass.supers contains [Class:\n name matches \"ftplib\\.(FTP|FTP_TLS)\"\n ]\n and fc.namedParameters contains [NamedParameter: name == \"passwd\"\n and not expression.constantValue.null\n and not expression.constantValue is [Null: ]\n and expression.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: fc.function.name == \"login\"\n and function.enclosingClass.supers contains [Class:\n name matches \"ftplib\\.(FTP|FTP_TLS)\"\n ]\n and fc.namedParameters contains [NamedParameter: name == \"passwd\"\n and not expression.constantValue.None\n and not expression.constantValue is [None: ]\n and expression.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FunctionCall fc: fc.function.name == \"__init__\"\n and function.enclosingClass.supers contains [Class:\n name matches \"ftplib\\.(FTP|FTP_TLS)\"\n ]\n and fc.namedParameters contains [NamedParameter: name == \"passwd\"\n and not expression.constantValue.null\n and not expression.constantValue is [Null: ]\n and expression.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: fc.function.name == \"__init__\"\n and function.enclosingClass.supers contains [Class:\n name matches \"ftplib\\.(FTP|FTP_TLS)\"\n ]\n and fc.namedParameters contains [NamedParameter: name == \"passwd\"\n and not expression.constantValue.None\n and not expression.constantValue is [None: ]\n and expression.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall fc: fc.function.name == \"login\"\n and function.enclosingClass.supers contains [Class:\n name matches \"ftplib\\.(FTP|FTP_TLS)\"\n ]\n and fc.namedParameters contains [NamedParameter: name == \"passwd\"\n and not expression.constantValue.null\n and not expression.constantValue is [Null: ]\n and not expression.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: fc.function.name == \"login\"\n and function.enclosingClass.supers contains [Class:\n name matches \"ftplib\\.(FTP|FTP_TLS)\"\n ]\n and fc.namedParameters contains [NamedParameter: name == \"passwd\"\n and not expression.constantValue.None\n and not expression.constantValue is [None: ]\n and not expression.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall fc: fc.function.name == \"__init__\"\n and function.enclosingClass.supers contains [Class:\n name matches \"ftplib\\.(FTP|FTP_TLS)\"\n ]\n and fc.namedParameters contains [NamedParameter: name == \"passwd\"\n and not expression.constantValue.null\n and not expression.constantValue is [Null: ]\n and not expression.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: fc.function.name == \"__init__\"\n and function.enclosingClass.supers contains [Class:\n name matches \"ftplib\\.(FTP|FTP_TLS)\"\n ]\n and fc.namedParameters contains [NamedParameter: name == \"passwd\"\n and not expression.constantValue.None\n and not expression.constantValue is [None: ]\n and not expression.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FunctionCall fc: function is [Function f: f.name == \"__init__\"\n and f.enclosingClass.supers contains [Class:\n name matches \"urllib3\\.poolmanager\\.(Proxy|Pool)Manager\"\n ]\n ]\n and fc.namedParameters contains [NamedParameter: name == \"key_password\"\n and not expression.constantValue.null\n and expression.constantValue is [Null: ]\n and not expression.constantValue == \"\"\n ]\n " + "vuln_subcategory": "None Password", + "predicate": "\n FunctionCall fc: function is [Function f: f.name == \"__init__\"\n and f.enclosingClass.supers contains [Class:\n name matches \"urllib3\\.poolmanager\\.(Proxy|Pool)Manager\"\n ]\n ]\n and fc.namedParameters contains [NamedParameter: name == \"key_password\"\n and not expression.constantValue.None\n and expression.constantValue is [None: ]\n and not expression.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FunctionCall fc: function is [Function f: f.name == \"__init__\"\n and f.enclosingClass.supers contains [Class:\n name matches \"urllib3\\.poolmanager\\.(Proxy|Pool)Manager\"\n ]\n ]\n and fc.namedParameters contains [NamedParameter: name == \"key_password\"\n and not expression.constantValue.null\n and not expression.constantValue is [Null: ]\n and expression.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: function is [Function f: f.name == \"__init__\"\n and f.enclosingClass.supers contains [Class:\n name matches \"urllib3\\.poolmanager\\.(Proxy|Pool)Manager\"\n ]\n ]\n and fc.namedParameters contains [NamedParameter: name == \"key_password\"\n and not expression.constantValue.None\n and not expression.constantValue is [None: ]\n and expression.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall fc: function is [Function f: f.name == \"__init__\"\n and f.enclosingClass.supers contains [Class:\n name matches \"urllib3\\.poolmanager\\.(Proxy|Pool)Manager\"\n ]\n ]\n and fc.namedParameters contains [NamedParameter: name == \"key_password\"\n and not expression.constantValue.null\n and not expression.constantValue is [Null: ]\n and not expression.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: function is [Function f: f.name == \"__init__\"\n and f.enclosingClass.supers contains [Class:\n name matches \"urllib3\\.poolmanager\\.(Proxy|Pool)Manager\"\n ]\n ]\n and fc.namedParameters contains [NamedParameter: name == \"key_password\"\n and not expression.constantValue.None\n and not expression.constantValue is [None: ]\n and not expression.constantValue == \"\"\n ]\n " }, { "language": "python", @@ -6948,7 +6948,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", "vuln_subcategory": "Weak SSL Cipher", - "predicate": "\n FunctionCall fc: function is [Function f: f.name == \"ssl_wrap_socket\"\n and f.namespace.name == \"urllib3.util.ssl_\"\n ] and fc.namedParameters contains [NamedParameter np:\n name == \"ciphers\"\n and expression is [VariableAccess s:\n /* CBC Mode */\n s.constantValue matches \"(?i).*-CBC(3)?-.*\"\n /* Weak Hash Functions */\n or s.constantValue matches \"(?i)-(SHA|MD5|GOSTR3411)\"\n /* Weak Ciphers */\n or s.constantValue matches \"(?i).*-(RC2|RC4|DES|3DES)-.*\"\n /* Null */\n or s.constantValue matches \"(?i).*-NULL-.*\"\n ]\n ]\n " + "predicate": "\n FunctionCall fc: function is [Function f: f.name == \"ssl_wrap_socket\"\n and f.namespace.name == \"urllib3.util.ssl_\"\n ] and fc.namedParameters contains [NamedParameter np:\n name == \"ciphers\"\n and expression is [VariableAccess s:\n /* CBC Mode */\n s.constantValue matches \"(?i).*-CBC(3)?-.*\"\n /* Weak Hash Functions */\n or s.constantValue matches \"(?i)-(SHA|MD5|GOSTR3411)\"\n /* Weak Ciphers */\n or s.constantValue matches \"(?i).*-(RC2|RC4|DES|3DES)-.*\"\n /* None */\n or s.constantValue matches \"(?i).*-None-.*\"\n ]\n ]\n " }, { "language": "python", @@ -6961,43 +6961,43 @@ "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FunctionCall fc: fc.function.name matches \"connect|create_pool\"\n and fc.function.namespace.name == \"aiopg\"\n and fc.namedParameters contains [NamedParameter p:\n p.name == \"password\"\n and (p.expression is [VariableAccess va: va.variable.name == \"None\"]\n or p.expression.constantValue is [Null: ])\n and not p.expression.constantValue == \"\"\n ]\n " + "vuln_subcategory": "None Password", + "predicate": "\n FunctionCall fc: fc.function.name matches \"connect|create_pool\"\n and fc.function.namespace.name == \"aiopg\"\n and fc.namedParameters contains [NamedParameter p:\n p.name == \"password\"\n and (p.expression is [VariableAccess va: va.variable.name == \"None\"]\n or p.expression.constantValue is [None: ])\n and not p.expression.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FunctionCall fc: fc.function.name matches \"connect|create_pool\"\n and fc.function.namespace.name == \"aiopg\"\n and fc.namedParameters contains [NamedParameter p:\n p.name == \"password\"\n and not p.expression.constantValue.null\n and not p.expression.constantValue is [Null: ]\n and p.expression.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: fc.function.name matches \"connect|create_pool\"\n and fc.function.namespace.name == \"aiopg\"\n and fc.namedParameters contains [NamedParameter p:\n p.name == \"password\"\n and not p.expression.constantValue.None\n and not p.expression.constantValue is [None: ]\n and p.expression.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall fc: fc.function.name matches \"connect|create_pool\"\n and fc.function.namespace.name == \"aiopg\"\n and fc.namedParameters contains [NamedParameter p:\n p.name == \"password\"\n and not p.expression.constantValue.null\n and not p.expression.constantValue is [Null: ]\n and not p.expression.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: fc.function.name matches \"connect|create_pool\"\n and fc.function.namespace.name == \"aiopg\"\n and fc.namedParameters contains [NamedParameter p:\n p.name == \"password\"\n and not p.expression.constantValue.None\n and not p.expression.constantValue is [None: ]\n and not p.expression.constantValue == \"\"\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", "vuln_subcategory": "Weak SSL Cipher", - "predicate": "\n FunctionCall fc:\n function is [Function:\n enclosingClass.name == \"paramiko.rsakey.RSAKey\"\n and name == \"__init__\"\n ]\n and namedParameters contains [NamedParameter:\n name == \"filename\"\n and expression is [NullLiteral: ]\n ]\n and namedParameters contains [NamedParameter:\n name == \"key\"\n and expression is [NullLiteral: ]\n ]\n and namedParameters contains [NamedParameter:\n name == \"file_obj\"\n and expression is [NullLiteral: ]\n ] \n " + "predicate": "\n FunctionCall fc:\n function is [Function:\n enclosingClass.name == \"paramiko.rsakey.RSAKey\"\n and name == \"__init__\"\n ]\n and namedParameters contains [NamedParameter:\n name == \"filename\"\n and expression is [NoneLiteral: ]\n ]\n and namedParameters contains [NamedParameter:\n name == \"key\"\n and expression is [NoneLiteral: ]\n ]\n and namedParameters contains [NamedParameter:\n name == \"file_obj\"\n and expression is [NoneLiteral: ]\n ] \n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall fc:\n function is [Function:\n enclosingClass.name == \"paramiko.client.SSHClient\"\n and name == \"connect\"\n ]\n and namedParameters contains [NamedParameter: \n name == \"passphrase\"\n and expression is [Expression: \n not constantValue.null\n and not constantValue == \"\"\n and not constantValue is [Null: ]\n ]\n ]\n " + "predicate": "\n FunctionCall fc:\n function is [Function:\n enclosingClass.name == \"paramiko.client.SSHClient\"\n and name == \"connect\"\n ]\n and namedParameters contains [NamedParameter: \n name == \"passphrase\"\n and expression is [Expression: \n not constantValue.None\n and not constantValue == \"\"\n and not constantValue is [None: ]\n ]\n ]\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall fc:\n function is [Function:\n enclosingClass.name == \"paramiko.client.SSHClient\"\n and name == \"connect\"\n ]\n and namedParameters contains [NamedParameter: \n name == \"password\"\n and expression is [Expression: \n not constantValue.null\n and not constantValue == \"\"\n and not constantValue is [Null: ]\n ]\n ]\n " + "predicate": "\n FunctionCall fc:\n function is [Function:\n enclosingClass.name == \"paramiko.client.SSHClient\"\n and name == \"connect\"\n ]\n and namedParameters contains [NamedParameter: \n name == \"password\"\n and expression is [Expression: \n not constantValue.None\n and not constantValue == \"\"\n and not constantValue is [None: ]\n ]\n ]\n " }, { "language": "python", @@ -7010,8 +7010,8 @@ "language": "python", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Command Injection", - "vuln_subcategory": null, - "predicate": "\n FunctionCall fc:\n function is [Function:\n enclosingClass.name == \"paramiko.client.SSHClient\"\n and name == \"exec_command\"\n ]\n and namedParameters contains [NamedParameter: \n name == \"environment\"\n and expression is [Expression: \n not constantValue == \"\"\n and not constantValue is [Null: ]\n ]\n ]\n " + "vuln_subcategory": None, + "predicate": "\n FunctionCall fc:\n function is [Function:\n enclosingClass.name == \"paramiko.client.SSHClient\"\n and name == \"exec_command\"\n ]\n and namedParameters contains [NamedParameter: \n name == \"environment\"\n and expression is [Expression: \n not constantValue == \"\"\n and not constantValue is [None: ]\n ]\n ]\n " }, { "language": "python", @@ -7053,27 +7053,27 @@ "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", "vuln_subcategory": "gRPC Server Credentials", - "predicate": "\n FunctionCall fc: fc.name == \"ssl_server_credentials\" and \n fc.function.namespace.name == \"grpc\"\n\n /* Match if arg 2 & 3 are are empty regardless of order (1 arg required, others have default if not \n specified) and if root_certificates is None/Empty or if require_client_auth is false */\n\n and ( \n (fc.namedParameters contains [NamedParameter p1: p1.name == \"root_certificates\"\n and (p1.expression is [VariableAccess va1: va1.variable.name == \"None\"]\n or p1.expression.constantValue == \"\")]\n ) \n or\n (fc.namedParameters contains [NamedParameter p2: p2.name == \"require_client_auth\"\n and p2.expression is [VariableAccess va2: va2.variable.name == \"False\"]])\n or \n fc.arguments[1].constantValue is [Null: ]\n or\n fc.arguments[2].constantValue is [Null: ]\n )\n " + "predicate": "\n FunctionCall fc: fc.name == \"ssl_server_credentials\" and \n fc.function.namespace.name == \"grpc\"\n\n /* Match if arg 2 & 3 are are empty regardless of order (1 arg required, others have default if not \n specified) and if root_certificates is None/Empty or if require_client_auth is false */\n\n and ( \n (fc.namedParameters contains [NamedParameter p1: p1.name == \"root_certificates\"\n and (p1.expression is [VariableAccess va1: va1.variable.name == \"None\"]\n or p1.expression.constantValue == \"\")]\n ) \n or\n (fc.namedParameters contains [NamedParameter p2: p2.name == \"require_client_auth\"\n and p2.expression is [VariableAccess va2: va2.variable.name == \"False\"]])\n or \n fc.arguments[1].constantValue is [None: ]\n or\n fc.arguments[2].constantValue is [None: ]\n )\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", "vuln_subcategory": "gRPC Channel Credentials", - "predicate": "\n FunctionCall fc: fc.name is \"ssl_channel_credentials\" and \n fc.function.namespace.name == \"grpc\"\n\n /* Match if any argument is empty or None as it will mean a default or empty value is taken */\n \n and (\n fc.arguments contains [Expression: constantValue is [Null: ] or constantValue is \"\"]\n )\n " + "predicate": "\n FunctionCall fc: fc.name is \"ssl_channel_credentials\" and \n fc.function.namespace.name == \"grpc\"\n\n /* Match if any argument is empty or None as it will mean a default or empty value is taken */\n \n and (\n fc.arguments contains [Expression: constantValue is [None: ] or constantValue is \"\"]\n )\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: fc.name is \"add_insecure_port\" and \n fc.function.enclosingClass.name matches \"grpc.+Server\"\n " }, { "language": "python", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: fc.name is \"insecure_channel\" and \n fc.function.namespace.name == \"grpc\"\n " }, { @@ -7193,7 +7193,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Cookie Security", "vuln_subcategory": "Persistent Cookie", - "predicate": "\n FunctionCall fc:\n fc.possibleTargets contains [Function f:\n f.name matches \"set_cookie\"\n and f.enclosingClass.supers contains [Class: \n name matches \"(flask\\.wrappers|werkzeug\\.sansio\\.response).Response\"\n ]\n ] and fc.namedParameters contains [NamedParameter p:\n p.name == \"expires\"\n and (p.expression is [VariableAccess: variable.name == \"None\"]\n or p.expression is [NullLiteral:]\n or p.expression.constantValue == \"None\")\n ]\n " + "predicate": "\n FunctionCall fc:\n fc.possibleTargets contains [Function f:\n f.name matches \"set_cookie\"\n and f.enclosingClass.supers contains [Class: \n name matches \"(flask\\.wrappers|werkzeug\\.sansio\\.response).Response\"\n ]\n ] and fc.namedParameters contains [NamedParameter p:\n p.name == \"expires\"\n and (p.expression is [VariableAccess: variable.name == \"None\"]\n or p.expression is [NoneLiteral:]\n or p.expression.constantValue == \"None\")\n ]\n " }, { "language": "python", @@ -7207,7 +7207,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Cookie Security", "vuln_subcategory": "Missing SameSite Attribute", - "predicate": "\n FunctionCall fc:\n fc.possibleTargets contains [Function f:\n f.name matches \"set_cookie\"\n and f.enclosingClass.supers contains [Class: \n name matches \"(flask\\.wrappers|werkzeug\\.sansio\\.response).Response\"\n ]\n ] and fc.namedParameters contains [NamedParameter p:\n p.name == \"samesite\"\n and (p.expression is [VariableAccess: variable.name == \"None\"]\n or p.expression is [NullLiteral:]\n or p.expression.constantValue == \"None\")\n ]\n " + "predicate": "\n FunctionCall fc:\n fc.possibleTargets contains [Function f:\n f.name matches \"set_cookie\"\n and f.enclosingClass.supers contains [Class: \n name matches \"(flask\\.wrappers|werkzeug\\.sansio\\.response).Response\"\n ]\n ] and fc.namedParameters contains [NamedParameter p:\n p.name == \"samesite\"\n and (p.expression is [VariableAccess: variable.name == \"None\"]\n or p.expression is [NoneLiteral:]\n or p.expression.constantValue == \"None\")\n ]\n " }, { "language": "python", @@ -7228,7 +7228,7 @@ "vuln_kingdom": "Code Quality", "vuln_category": "Android Bad Practices", "vuln_subcategory": "Use of Internal APIs", - "predicate": "\n FunctionCall fc:\n function is [Function:\n name == \"FindClass\"\n and enclosingClass.supers contains [Class:\n name == \"JNIEnv_\"\n ]\n ]\n and (\n /* Interal APIs */\n arguments[0].constantValue matches \".*/internal/.*\"\n /* Hidden APIs */\n or arguments[0].constantValue is [String v:\n v == \"android/net/wifi/ActionListener\"\n or v == \"android/net/wifi/TxPacketCountListener\"\n or v == \"android/net/wifi/LocalOnlyHotspotSubscription\"\n or v == \"android/net/wifi/LocalOnlyHotspotObserver\"\n or v == \"android/net/wifi/WifiScanner\"\n or v == \"android/net/wifi/ActionListener\"\n or v == \"android/net/wifi/HiddenNetwork\"\n or v == \"android/net/wifi/PnoSettings\"\n or v == \"android/net/wifi/PnoNetwork\"\n or v == \"android/net/wifi/PnoScanListener\"\n or v == \"android/net/wifi/WifiChangeSettings\"\n or v == \"android/net/wifi/HotlistSettings\"\n or v == \"android/net/wifi/OperationResult\"\n or v == \"android/net/wifi/RssiPacketCountInfo\"\n or v == \"android/net/wifi/WifiWakeReasonAndCounts\"\n or v == \"android/net/wifi/RttManager\"\n or v == \"android/net/wifi/RttClient\"\n or v == \"android/net/wifi/WifiNetworkScoreCache\"\n or v == \"android/net/wifi/aware/WifiAwareNetworkSpecifier\"\n or v == \"android/net/wifi/aware/WifiAwareUtils\"\n or v == \"android/net/wifi/aware/TlvBufferUtils\"\n or v == \"android/net/wifi/aware/WifiAwareAgentNetworkSpecifier\"\n or v == \"android/net/wifi/aware/ConfigRequest\"\n or v == \"android/net/wifi/ParcelUtil\"\n or v == \"android/net/wifi/WifiSsid\"\n or v == \"android/net/wifi/WifiNetworkConnectionStatistics\"\n or v == \"android/net/wifi/BatchedScanResult\"\n or v == \"android/net/wifi/WifiLinkLayerStats\"\n or v == \"android/net/wifi/EAPConstants\"\n or v == \"android/net/wifi/SupplicantSaver\"\n or v == \"android/net/wifi/SupplicantLoader\"\n or v == \"android/net/wifi/PasspointManagementObjectDefinition\"\n or v == \"android/net/wifi/Visibility\"\n or v == \"android/net/wifi/NetworkSelectionStatus\"\n or v == \"android/net/wifi/RecentFailure\"\n or v == \"android/net/wifi/WifiConnectionStatistics\"\n or v == \"android/net/wifi/WifiActivityEnergyInfo\"\n or v == \"android/net/wifi/p2p/WifiP2pWfdInfo\"\n or v == \"android/net/wifi/p2p/PersistentGroupInfoListener\"\n or v == \"android/net/wifi/p2p/HandoverMessageListener\"\n or v == \"android/net/wifi/p2p/WifiP2pProvDiscEvent\"\n or v == \"android/net/wifi/p2p/WifiP2pGroupList\"\n or v == \"android/net/wifi/p2p/nsd/WifiP2pServiceResponse\"\n or v == \"android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse\"\n or v == \"android/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse\"\n or v == \"android/net/wifi/WifiChannel\"\n or v == \"android/net/wifi/hotspot2/omadm/XMLNode\"\n or v == \"android/net/wifi/hotspot2/omadm/XMLParser\"\n or v == \"android/net/wifi/hotspot2/OsuProvider\"\n or v == \"android/net/wifi/hotspot2/pps/UpdateParameter\"\n or v == \"android/net/wifi/hotspot2/pps/Policy\"\n or v == \"android/net/wifi/ScanSettings\"\n or v == \"android/net/wifi/WpsResult\"\n or v == \"android/net/wifi/InformationElement\"\n or v == \"android/net/wifi/AnqpInformationElement\"\n or v == \"android/drm/DrmOutputStream\"\n or v == \"junit/framework/ComparisonCompactor\"\n or v == \"com/google/vr/platform/DeviceInfo\"\n or v == \"com/google/vr/platform/Dvr\"\n or v == \"org/apache/http/conn/ssl/AndroidDistinguishedNameParser\"\n or v == \"android/metrics/LogMaker\"\n or v == \"android/metrics/MetricsReader\"\n or v == \"android/metrics/Event\"\n or v == \"android/metrics/LogReader\"\n or v == \"android/database/CursorWindowAllocationException\"\n or v == \"android/database/BulkCursorDescriptor\"\n or v == \"android/database/BulkCursorNative\"\n or v == \"android/database/sqlite/SQLiteDebug\"\n or v == \"android/database/sqlite/SQLiteStatementInfo\"\n or v == \"android/database/sqlite/SQLiteDirectCursorDriver\"\n or v == \"android/database/sqlite/SQLiteGlobal\"\n or v == \"android/database/sqlite/CustomFunction\"\n or v == \"android/database/sqlite/SQLiteDatabaseConfiguration\"\n or v == \"android/database/sqlite/SQLiteCustomFunction\"\n or v == \"android/database/sqlite/SQLiteSession\"\n or v == \"android/database/sqlite/DatabaseObjectNotClosedException\"\n or v == \"android/database/sqlite/SQLiteConnectionPool\"\n or v == \"android/database/sqlite/SQLiteConnection\"\n or v == \"android/database/CursorToBulkCursorAdaptor\"\n or v == \"android/database/IBulkCursor\"\n or v == \"android/database/BulkCursorToCursorAdaptor\"\n or v == \"android/transition/AnimationInfo\"\n or v == \"android/transition/ChangeText\"\n or v == \"android/transition/Rotate\"\n or v == \"android/transition/Crossfade\"\n or v == \"android/transition/TransitionUtils\"\n or v == \"android/transition/Recolor\"\n or v == \"android/webkit/JsDialogHelper\"\n or v == \"android/webkit/WebViewFactory\"\n or v == \"android/webkit/TokenBindingService\"\n or v == \"android/webkit/WebViewDelegate\"\n or v == \"android/webkit/WebViewProviderInfo\"\n or v == \"android/webkit/UrlInterceptRegistry\"\n or v == \"android/webkit/Plugin\"\n or v == \"android/webkit/DefaultClickHandler\"\n or v == \"android/webkit/WebViewUpdateService\"\n or v == \"android/webkit/UrlInterceptHandler\"\n or v == \"android/webkit/WebViewProvider\"\n or v == \"android/webkit/PrivateAccess\"\n or v == \"android/webkit/ResultReceiver\"\n or v == \"android/webkit/WebViewProviderResponse\"\n or v == \"android/webkit/WebViewZygote\"\n or v == \"android/webkit/WebViewFactoryProvider\"\n or v == \"android/webkit/PluginList\"\n or v == \"android/webkit/FindAddress\"\n or v == \"android/webkit/FindActionModeCallback\"\n or v == \"android/webkit/PluginData\"\n or v == \"android/webkit/UserPackage\"\n or v == \"android/webkit/LegacyErrorStrings\"\n or v == \"android/printservice/recommendation/RecommendationInfo\"\n or v == \"android/printservice/recommendation/RecommendationService\"\n or v == \"android/printservice/PrintServiceInfo\"\n or v == \"android/hardware/SerialPort\"\n or v == \"android/hardware/soundtrigger/SoundTrigger\"\n or v == \"android/hardware/soundtrigger/KeyphraseEnrollmentInfo\"\n or v == \"android/hardware/soundtrigger/SoundTriggerModule\"\n or v == \"android/hardware/soundtrigger/KeyphraseMetadata\"\n or v == \"android/hardware/radio/RadioManager\"\n or v == \"android/hardware/radio/RadioMetadata\"\n or v == \"android/hardware/radio/Clock\"\n or v == \"android/hardware/radio/ProgramSelector\"\n or v == \"android/hardware/radio/RadioTuner\"\n or v == \"android/hardware/fingerprint/EnrollmentCallback\"\n or v == \"android/hardware/fingerprint/RemovalCallback\"\n or v == \"android/hardware/fingerprint/EnumerateCallback\"\n or v == \"android/hardware/fingerprint/LockoutResetCallback\"\n or v == \"android/hardware/fingerprint/Fingerprint\"\n or v == \"android/hardware/SystemSensorManager\"\n or v == \"android/hardware/input/InputDeviceIdentifier\"\n or v == \"android/hardware/input/TouchCalibration\"\n or v == \"android/hardware/input/OnTabletModeChangedListener\"\n or v == \"android/hardware/input/KeyboardLayout\"\n or v == \"android/hardware/input/InputManagerInternal\"\n or v == \"android/hardware/CameraStatus\"\n or v == \"android/hardware/location/GeofenceHardwareRequestParcelable\"\n or v == \"android/hardware/location/NanoApp\"\n or v == \"android/hardware/location/GeofenceHardwareRequest\"\n or v == \"android/hardware/location/ActivityRecognitionEvent\"\n or v == \"android/hardware/location/GeofenceHardwareCallback\"\n or v == \"android/hardware/location/GeofenceHardwareService\"\n or v == \"android/hardware/location/ContextHubInfo\"\n or v == \"android/hardware/location/NanoAppFilter\"\n or v == \"android/hardware/location/NanoAppInstanceInfo\"\n or v == \"android/hardware/location/ActivityRecognitionHardware\"\n or v == \"android/hardware/location/GeofenceHardwareMonitorEvent\"\n or v == \"android/hardware/location/GeofenceHardware\"\n or v == \"android/hardware/location/GeofenceHardwareImpl\"\n or v == \"android/hardware/location/GeofenceHardwareMonitorCallback\"\n or v == \"android/hardware/location/ContextHubMessage\"\n or v == \"android/hardware/location/ActivityChangedEvent\"\n or v == \"android/hardware/location/ContextHubManager\"\n or v == \"android/hardware/location/ICallback\"\n or v == \"android/hardware/location/MemoryRegion\"\n or v == \"android/hardware/hdmi/HdmiClient\"\n or v == \"android/hardware/hdmi/HdmiControlManager\"\n or v == \"android/hardware/hdmi/HdmiTimerRecordSources\"\n or v == \"android/hardware/hdmi/TimeUnit\"\n or v == \"android/hardware/hdmi/Time\"\n or v == \"android/hardware/hdmi/Duration\"\n or v == \"android/hardware/hdmi/TimerInfo\"\n or v == \"android/hardware/hdmi/TimerRecordSource\"\n or v == \"android/hardware/hdmi/HdmiTvClient\"\n or v == \"android/hardware/hdmi/HdmiHotplugEvent\"\n or v == \"android/hardware/hdmi/HdmiRecordSources\"\n or v == \"android/hardware/hdmi/RecordSource\"\n or v == \"android/hardware/hdmi/OwnSource\"\n or v == \"android/hardware/hdmi/AribData\"\n or v == \"android/hardware/hdmi/AtscData\"\n or v == \"android/hardware/hdmi/DvbData\"\n or v == \"android/hardware/hdmi/DigitalChannelData\"\n or v == \"android/hardware/hdmi/DigitalServiceSource\"\n or v == \"android/hardware/hdmi/AnalogueServiceSource\"\n or v == \"android/hardware/hdmi/ExternalPlugData\"\n or v == \"android/hardware/hdmi/ExternalPhysicalAddress\"\n or v == \"android/hardware/hdmi/HdmiPlaybackClient\"\n or v == \"android/hardware/hdmi/HdmiDeviceInfo\"\n or v == \"android/hardware/hdmi/HdmiRecordListener\"\n or v == \"android/hardware/hdmi/TimerStatusData\"\n or v == \"android/hardware/hdmi/HdmiPortInfo\"\n or v == \"android/hardware/usb/UsbPortStatus\"\n or v == \"android/hardware/usb/UsbPort\"\n or v == \"android/hardware/display/DisplayManagerInternal\"\n or v == \"android/hardware/display/DisplayManagerGlobal\"\n or v == \"android/hardware/display/WifiDisplayStatus\"\n or v == \"android/hardware/display/WifiDisplaySessionInfo\"\n or v == \"android/hardware/display/DisplayViewport\"\n or v == \"android/hardware/display/WifiDisplay\"\n or v == \"android/hardware/SerialManager\"\n or v == \"android/hardware/CameraInfo\"\n or v == \"android/hardware/LegacySensorManager\"\n or v == \"android/hardware/camera2/impl/ICameraDeviceUserWrapper\"\n or v == \"android/hardware/camera2/impl/CaptureResultExtras\"\n or v == \"android/hardware/camera2/utils/LongParcelable\"\n or v == \"android/hardware/camera2/utils/UncheckedThrow\"\n or v == \"android/hardware/camera2/utils/SubmitInfo\"\n or v == \"android/hardware/camera2/params/StreamConfigurationDuration\"\n or v == \"android/hardware/camera2/params/ReprocessFormatsMap\"\n or v == \"android/hardware/camera2/params/HighSpeedVideoConfiguration\"\n or v == \"android/hardware/camera2/params/VendorTagDescriptorCache\"\n or v == \"android/hardware/camera2/params/VendorTagDescriptor\"\n or v == \"android/hardware/camera2/params/StreamConfiguration\"\n or v == \"android/net/NetworkStatsHistory\"\n or v == \"android/net/metrics/RaEvent\"\n or v == \"android/net/metrics/DefaultNetworkEvent\"\n or v == \"android/net/metrics/WakeupEvent\"\n or v == \"android/net/metrics/ConnectStats\"\n or v == \"android/net/metrics/IpConnectivityLog\"\n or v == \"android/net/metrics/DhcpClientEvent\"\n or v == \"android/net/metrics/DnsEvent\"\n or v == \"android/net/metrics/ValidationProbeEvent\"\n or v == \"android/net/metrics/NetworkMetrics\"\n or v == \"android/net/metrics/DhcpErrorEvent\"\n or v == \"android/net/metrics/IpManagerEvent\"\n or v == \"android/net/metrics/IpReachabilityEvent\"\n or v == \"android/net/metrics/WakeupStats\"\n or v == \"android/net/metrics/ApfProgramEvent\"\n or v == \"android/net/metrics/ApfStats\"\n or v == \"android/net/metrics/NetworkEvent\"\n or v == \"android/net/Status\"\n or v == \"android/net/PacketKeepaliveCallback\"\n or v == \"android/net/PacketKeepalive\"\n or v == \"android/net/OnStartTetheringCallback\"\n or v == \"android/net/Errors\"\n or v == \"android/net/TooManyRequestsException\"\n or v == \"android/net/DataUsageRequest\"\n or v == \"android/net/IpConfiguration\"\n or v == \"android/net/InterfaceConfiguration\"\n or v == \"android/net/SntpClient\"\n or v == \"android/net/IpSecTransformResponse\"\n or v == \"android/net/ScoredNetwork\"\n or v == \"android/net/NetworkKey\"\n or v == \"android/net/NetworkIdentity\"\n or v == \"android/net/NetworkPolicy\"\n or v == \"android/net/NetworkUtils\"\n or v == \"android/net/DhcpResults\"\n or v == \"android/net/StaticIpConfiguration\"\n or v == \"android/net/MatchAllNetworkSpecifier\"\n or v == \"android/net/NetworkPolicyManager\"\n or v == \"android/net/NetworkScoreManager\"\n or v == \"android/net/StringNetworkSpecifier\"\n or v == \"android/net/MobileLinkQualityInfo\"\n or v == \"android/net/LinkQualityInfo\"\n or v == \"android/net/NetworkConfig\"\n or v == \"android/net/NetworkStats\"\n or v == \"android/net/RssiCurve\"\n or v == \"android/net/PacProxySelector\"\n or v == \"android/net/EthernetManager\"\n or v == \"android/net/UidRange\"\n or v == \"android/net/IpSecSpiResponse\"\n or v == \"android/net/NetworkTemplate\"\n or v == \"android/net/NetworkState\"\n or v == \"android/net/WifiLinkQualityInfo\"\n or v == \"android/net/NetworkQuotaInfo\"\n or v == \"android/net/WifiKey\"\n or v == \"android/net/wimax/WimaxManagerConstants\"\n or v == \"android/net/NetworkMisc\"\n or v == \"android/net/ConnectivityMetricsEvent\"\n or v == \"android/net/ConnectivityThread\"\n or v == \"android/net/NetworkAgent\"\n or v == \"android/net/IpSecUdpEncapResponse\"\n or v == \"android/net/CompareResult\"\n or v == \"android/net/IpSecConfig\"\n or v == \"android/net/NetworkRecommendationProvider\"\n or v == \"android/net/NetworkScorerAppData\"\n or v == \"android/net/nsd/DnsSdTxtRecord\"\n or v == \"android/net/NetworkFactory\"\n or v == \"android/app/ActivityManagerNative\"\n or v == \"android/app/BackStackRecord\"\n or v == \"android/app/PackageInstallObserver\"\n or v == \"android/app/LoadedApk\"\n or v == \"android/app/StackId\"\n or v == \"android/app/TaskThumbnailInfo\"\n or v == \"android/app/TaskThumbnail\"\n or v == \"android/app/TaskSnapshot\"\n or v == \"android/app/StackInfo\"\n or v == \"android/app/OnUidImportanceListener\"\n or v == \"android/app/assist/AutofillOverlay\"\n or v == \"android/app/TranslucentConversionListener\"\n or v == \"android/app/ActivityManagerInternal\"\n or v == \"android/app/ApplicationPackageManager\"\n or v == \"android/app/MoveCallbackDelegate\"\n or v == \"android/app/WaitResult\"\n or v == \"android/app/UiAutomationConnection\"\n or v == \"android/app/timezone/RulesManager\"\n or v == \"android/app/timezone/RulesState\"\n or v == \"android/app/timezone/Callback\"\n or v == \"android/app/timezone/DistroFormatVersion\"\n or v == \"android/app/timezone/DistroRulesVersion\"\n or v == \"android/app/timezone/RulesUpdaterContract\"\n or v == \"android/app/VrManager\"\n or v == \"android/app/ActivityView\"\n or v == \"android/app/ActivityThread\"\n or v == \"android/app/ContentProviderHolder\"\n or v == \"android/app/BroadcastOptions\"\n or v == \"android/app/JobSchedulerImpl\"\n or v == \"android/app/ResultInfo\"\n or v == \"android/app/TvExtender\"\n or v == \"android/app/UserSwitchObserver\"\n or v == \"android/app/admin/PasswordMetrics\"\n or v == \"android/app/admin/PolicyInfo\"\n or v == \"android/app/admin/DevicePolicyManagerInternal\"\n or v == \"android/app/ResourcesManager\"\n or v == \"android/app/PackageOps\"\n or v == \"android/app/OpEntry\"\n or v == \"android/app/OnOpChangedInternalListener\"\n or v == \"android/app/QueuedWork\"\n or v == \"android/app/ServiceStartArgs\"\n or v == \"android/app/usage/TimeSparseArray\"\n or v == \"android/app/usage/UsageStatsManagerInternal\"\n or v == \"android/app/usage/CacheQuotaService\"\n or v == \"android/app/usage/CacheQuotaHint\"\n or v == \"android/app/TaskStackListener\"\n or v == \"android/app/AppGlobals\"\n or v == \"android/app/StatusBarManager\"\n or v == \"android/app/OnMarshaledListener\"\n or v == \"android/app/ApplicationThreadConstants\"\n or v == \"android/app/EphemeralResolverService\"\n or v == \"android/app/ParcelableCrashInfo\"\n or v == \"android/app/job/JobHandler\"\n or v == \"android/app/Vr2dDisplayProperties\"\n or v == \"android/app/ProfilerInfo\"\n or v == \"android/app/trust/TrustManager\"\n or v == \"android/app/SearchDialog\"\n or v == \"android/app/InstantAppResolverService\"\n or v == \"android/app/OnActivityPausedListener\"\n or v == \"android/app/ActionKeyInfo\"\n or v == \"android/app/backup/BackupHelperDispatcher\"\n or v == \"android/app/backup/BackupManagerMonitor\"\n or v == \"android/app/backup/RestoreDescription\"\n or v == \"android/app/backup/SelectBackupTransportCallback\"\n or v == \"android/app/backup/BackupProgress\"\n or v == \"android/app/backup/AbsoluteFileBackupHelper\"\n or v == \"android/app/backup/FullBackup\"\n or v == \"android/app/backup/RestoreSession\"\n or v == \"android/app/backup/RestoreSet\"\n or v == \"android/app/backup/BlobBackupHelper\"\n or v == \"android/app/backup/BackupObserver\"\n or v == \"android/app/backup/WallpaperBackupHelper\"\n or v == \"android/app/backup/BackupTransport\"\n or v == \"android/app/SynchronousUserSwitchObserver\"\n or v == \"android/app/RecoverableSecurityException\"\n or v == \"android/app/LocalDialog\"\n or v == \"android/app/ApplicationLoaders\"\n or v == \"android/app/PackageDeleteObserver\"\n or v == \"android/app/OnAnimationStartedListener\"\n or v == \"android/app/OnAnimationFinishedListener\"\n or v == \"android/app/VrStateCallback\"\n or v == \"android/widget/SuggestionsAdapter\"\n or v == \"android/widget/DropDownListView\"\n or v == \"android/widget/ActionMenuChildView\"\n or v == \"android/widget/AppSecurityPermissions\"\n or v == \"android/widget/MyPermissionGroupInfo\"\n or v == \"android/widget/MyPermissionInfo\"\n or v == \"android/widget/PermissionItemView\"\n or v == \"android/widget/RadialTimePickerView\"\n or v == \"android/widget/Editor\"\n or v == \"android/widget/RemoteViewsAdapter\"\n or v == \"android/widget/RemoteViewsListAdapter\"\n or v == \"android/widget/MenuItemHoverListener\"\n or v == \"android/widget/MenuPopupWindow\"\n or v == \"android/widget/MenuDropDownListView\"\n or v == \"android/widget/CustomEditText\"\n or v == \"android/widget/TextInputTimePickerView\"\n or v == \"android/widget/ScrollBarDrawable\"\n or v == \"android/widget/SearchAutoComplete\"\n or v == \"android/widget/ActivityChooserView\"\n or v == \"android/widget/ActionMenuPresenter\"\n or v == \"android/widget/DatePickerDelegate\"\n or v == \"android/widget/ValidationCallback\"\n or v == \"android/widget/OnClickHandler\"\n or v == \"android/widget/OnViewAppliedListener\"\n or v == \"android/widget/ForwardingListener\"\n or v == \"android/widget/DateTimeView\"\n or v == \"android/widget/DatePickerController\"\n or v == \"android/widget/TextViewMetrics\"\n or v == \"android/widget/Delayer\"\n or v == \"android/widget/ActivityChooserModel\"\n or v == \"android/widget/SpellChecker\"\n or v == \"android/util/MergedConfiguration\"\n or v == \"android/util/PackageUtils\"\n or v == \"android/util/Spline\"\n or v == \"android/util/LocalLog\"\n or v == \"android/util/apk/ApkSignatureSchemeV2Verifier\"\n or v == \"android/util/proto/ProtoParseException\"\n or v == \"android/util/proto/EncodedBuffer\"\n or v == \"android/util/SuperNotCalledException\"\n or v == \"android/util/BackupUtils\"\n or v == \"android/util/Singleton\"\n or v == \"android/util/jar/StrictJarFile\"\n or v == \"android/util/jar/ZipInflaterInputStream\"\n or v == \"android/util/jar/FDStream\"\n or v == \"android/util/jar/StrictJarManifest\"\n or v == \"android/util/Pools\"\n or v == \"android/util/PrefixPrinter\"\n or v == \"android/util/PathParser\"\n or v == \"android/util/LongArray\"\n or v == \"android/util/MathUtils\"\n or v == \"android/util/FastImmutableArraySet\"\n or v == \"android/util/IntArray\"\n or v == \"android/util/ExceptionUtils\"\n or v == \"android/util/MemoryIntArray\"\n or v == \"android/util/DayOfMonthCursor\"\n or v == \"android/util/TrustedTime\"\n or v == \"android/util/ByteStringUtils\"\n or v == \"android/util/TerribleFailure\"\n or v == \"android/util/TerribleFailureHandler\"\n or v == \"android/util/NtpTrustedTime\"\n or v == \"android/util/TimingsTraceLog\"\n or v == \"android/util/IconDrawableFactory\"\n or v == \"android/util/LongSparseLongArray\"\n or v == \"android/util/RecurrenceRule\"\n or v == \"android/util/Slog\"\n or v == \"android/util/LauncherIcons\"\n or v == \"android/util/LogWriter\"\n or v == \"android/util/MapCollections\"\n or v == \"android/util/TimedRemoteCaller\"\n or v == \"android/util/KeyValueListParser\"\n or v == \"android/security/net/config/ApplicationConfig\"\n or v == \"android/security/net/config/ConfigSource\"\n or v == \"android/security/net/config/UserCertificateSource\"\n or v == \"android/security/net/config/CertificatesEntryRef\"\n or v == \"android/security/net/config/SystemCertificateSource\"\n or v == \"android/security/net/config/NetworkSecurityConfig\"\n or v == \"android/security/net/config/Builder\"\n or v == \"android/security/net/config/TrustAnchor\"\n or v == \"android/security/net/config/NetworkSecurityTrustManager\"\n or v == \"android/security/net/config/XmlConfigSource\"\n or v == \"android/security/net/config/Pin\"\n or v == \"android/security/net/config/ResourceCertificateSource\"\n or v == \"android/security/net/config/RootTrustManager\"\n or v == \"android/security/net/config/ManifestConfigSource\"\n or v == \"android/security/net/config/DirectoryCertificateSource\"\n or v == \"android/security/net/config/CertificateSource\"\n or v == \"android/security/net/config/PinSet\"\n or v == \"android/security/net/config/ConfigNetworkSecurityPolicy\"\n or v == \"android/security/net/config/TrustedCertificateStoreAdapter\"\n or v == \"android/security/net/config/RootTrustManagerFactorySpi\"\n or v == \"android/security/net/config/NetworkSecurityConfigProvider\"\n or v == \"android/security/net/config/Domain\"\n or v == \"android/security/keymaster/KeyCharacteristics\"\n or v == \"android/security/keymaster/KeymasterArguments\"\n or v == \"android/security/keymaster/KeyAttestationApplicationId\"\n or v == \"android/security/keymaster/ExportResult\"\n or v == \"android/security/keymaster/KeymasterDefs\"\n or v == \"android/security/keymaster/KeymasterCertificateChain\"\n or v == \"android/security/keymaster/KeymasterDateArgument\"\n or v == \"android/security/keymaster/KeymasterBooleanArgument\"\n or v == \"android/security/keymaster/KeymasterArgument\"\n or v == \"android/security/keymaster/KeymasterBlob\"\n or v == \"android/security/keymaster/OperationResult\"\n or v == \"android/security/keymaster/KeymasterBlobArgument\"\n or v == \"android/security/keymaster/KeyAttestationPackageInfo\"\n or v == \"android/security/keymaster/KeymasterIntArgument\"\n or v == \"android/security/keymaster/KeymasterLongArgument\"\n or v == \"android/security/FrameworkNetworkSecurityPolicy\"\n or v == \"android/security/KeystoreArguments\"\n or v == \"android/inputmethodservice/CompactExtractEditLayout\"\n or v == \"android/inputmethodservice/SoftInputWindow\"\n or v == \"android/inputmethodservice/ExtractEditLayout\"\n or v == \"android/provider/Presence\"\n or v == \"android/provider/SearchIndexableData\"\n or v == \"android/provider/SearchIndexablesContract\"\n or v == \"android/provider/SearchIndexablesProvider\"\n or v == \"android/provider/SyncConstValue\"\n or v == \"android/provider/OneTimeUseBuilder\"\n or v == \"android/provider/BrowserContract\"\n or v == \"android/provider/BaseSyncColumns\"\n or v == \"android/provider/ChromeSyncColumns\"\n or v == \"android/provider/SyncColumns\"\n or v == \"android/provider/ImageColumns\"\n or v == \"android/provider/Accounts\"\n or v == \"android/provider/Searches\"\n or v == \"android/provider/SyncState\"\n or v == \"android/provider/Combined\"\n or v == \"android/provider/Settings\"\n or v == \"android/provider/SettingsStringUtil\"\n or v == \"android/provider/Impl\"\n or v == \"android/provider/SearchIndexableResource\"\n or v == \"android/provider/MetadataReader\"\n or v == \"android/provider/Authorization\"\n or v == \"android/provider/SyncStateColumns\"\n or v == \"android/provider/PhotoFiles\"\n or v == \"android/provider/PhotoFilesColumns\"\n or v == \"android/provider/MetadataSyncColumns\"\n or v == \"android/provider/MetadataSync\"\n or v == \"android/provider/MetadataSyncStateColumns\"\n or v == \"android/provider/MetadataSyncState\"\n or v == \"android/provider/Validator\"\n or v == \"android/provider/Bookmarks\"\n or v == \"android/provider/TimeZoneRulesDataContract\"\n or v == \"android/provider/ContactsInternal\"\n or v == \"android/provider/CalendarMetaDataColumns\"\n or v == \"android/provider/CalendarMetaData\"\n or v == \"android/provider/EventsRawTimesColumns\"\n or v == \"android/provider/EventsRawTimes\"\n or v == \"android/provider/SystemContract\"\n or v == \"android/animation/AnimationHandler\"\n or v == \"android/animation/AnimationFrameCallbackProvider\"\n or v == \"android/animation/Tuple\"\n or v == \"android/animation/RevealAnimator\"\n or v == \"android/animation/KeyframeSet\"\n or v == \"android/animation/PropertyValues\"\n or v == \"android/animation/Keyframes\"\n or v == \"android/animation/PathKeyframes\"\n or v == \"android/content/pm/MacAuthenticatedInputStream\"\n or v == \"android/content/pm/InstantAppInfo\"\n or v == \"android/content/pm/split/SplitAssetDependencyLoader\"\n or v == \"android/content/pm/split/SplitAssetLoader\"\n or v == \"android/content/pm/split/DefaultSplitAssetLoader\"\n or v == \"android/content/pm/split/SplitDependencyLoader\"\n or v == \"android/content/pm/KeySet\"\n or v == \"android/content/pm/StringParceledListSlice\"\n or v == \"android/content/pm/VerifierInfo\"\n or v == \"android/content/pm/InstantAppRequest\"\n or v == \"android/content/pm/PackageBackwardCompatibility\"\n or v == \"android/content/pm/PackageManagerInternal\"\n or v == \"android/content/pm/InstantAppResolveInfo\"\n or v == \"android/content/pm/InstantAppDigest\"\n or v == \"android/content/pm/BaseParceledListSlice\"\n or v == \"android/content/pm/IntentFilterVerificationInfo\"\n or v == \"android/content/pm/OnPermissionsChangedListener\"\n or v == \"android/content/pm/MoveCallback\"\n or v == \"android/content/pm/LegacyPackageInstallObserver\"\n or v == \"android/content/pm/LegacyPackageDeleteObserver\"\n or v == \"android/content/pm/DexModuleRegisterCallback\"\n or v == \"android/content/pm/AppsQueryHelper\"\n or v == \"android/content/pm/FallbackCategoryProvider\"\n or v == \"android/content/pm/LimitedLengthInputStream\"\n or v == \"android/content/pm/VerificationParams\"\n or v == \"android/content/pm/PackageInfoLite\"\n or v == \"android/content/pm/PackageUserState\"\n or v == \"android/content/pm/SessionCallbackDelegate\"\n or v == \"android/content/pm/AuxiliaryResolveInfo\"\n or v == \"android/content/pm/RegisteredServicesCache\"\n or v == \"android/content/pm/InstantAppIntentFilter\"\n or v == \"android/content/pm/UserInfo\"\n or v == \"android/content/pm/PackageCleanItem\"\n or v == \"android/content/pm/XmlSerializerAndParser\"\n or v == \"android/content/pm/ParceledListSlice\"\n or v == \"android/content/pm/VerifierDeviceIdentity\"\n or v == \"android/content/pm/EphemeralResolveInfo\"\n or v == \"android/content/pm/EphemeralDigest\"\n or v == \"android/content/pm/EphemeralIntentFilter\"\n or v == \"android/content/pm/SELinuxUtil\"\n or v == \"android/content/pm/PackageParserCacheHelper\"\n or v == \"android/content/pm/permission/RuntimePermissionPresenter\"\n or v == \"android/content/pm/permission/RuntimePermissionPresentationInfo\"\n or v == \"android/content/pm/RegisteredServicesCacheListener\"\n or v == \"android/content/pm/PackageParser\"\n or v == \"android/content/pm/NewPermissionInfo\"\n or v == \"android/content/pm/SplitPermissionInfo\"\n or v == \"android/content/pm/ParseComponentArgs\"\n or v == \"android/content/pm/ShortcutServiceInternal\"\n or v == \"android/content/res/ResourcesKey\"\n or v == \"android/content/res/GradientColor\"\n or v == \"android/content/res/ComplexColor\"\n or v == \"android/content/res/ConfigurationBoundResourceCache\"\n or v == \"android/content/res/StringBlock\"\n or v == \"android/content/res/ResourceId\"\n or v == \"android/content/res/ResourcesImpl\"\n or v == \"android/content/res/CompatResources\"\n or v == \"android/content/res/ConstantState\"\n or v == \"android/content/res/XmlBlock\"\n or v == \"android/content/res/FontResourcesParser\"\n or v == \"android/content/res/CompatibilityInfo\"\n or v == \"android/content/res/Translator\"\n or v == \"android/content/OpenResourceIdResult\"\n or v == \"android/content/Transport\"\n or v == \"android/content/ContentInsertHandler\"\n or v == \"android/content/DefaultDataHandler\"\n or v == \"android/content/SyncActivityTooManyDeletes\"\n or v == \"android/content/DatabaseHelper\"\n or v == \"android/content/om/OverlayInfo\"\n or v == \"android/content/SyncStatusInfo\"\n or v == \"android/content/UndoOwner\"\n or v == \"android/content/CursorEntityIterator\"\n or v == \"android/content/ContentProviderNative\"\n or v == \"android/content/IContentProvider\"\n or v == \"android/content/SyncAdaptersCache\"\n or v == \"android/content/UndoManager\"\n or v == \"android/content/UndoOperation\"\n or v == \"android/content/CommandOptionHandler\"\n or v == \"android/print/PrintServiceRecommendationsLoader\"\n or v == \"android/print/PrintJobStateChangeListener\"\n or v == \"android/print/PrintServicesChangeListener\"\n or v == \"android/print/PrintServiceRecommendationsChangeListener\"\n or v == \"android/print/PrintDocumentAdapterDelegate\"\n or v == \"android/print/PrintJobStateChangeListenerWrapper\"\n or v == \"android/print/PrintServicesChangeListenerWrapper\"\n or v == \"android/print/PrintServiceRecommendationsChangeListenerWrapper\"\n or v == \"android/print/PrintFileDocumentAdapter\"\n or v == \"android/print/PrintServicesLoader\"\n or v == \"android/print/PrinterDiscoverySession\"\n or v == \"android/speech/tts/TtsEngines\"\n or v == \"android/preference/SeekBarVolumizer\"\n or v == \"android/preference/SeekBarDialogPreference\"\n or v == \"android/preference/MultiCheckPreference\"\n or v == \"android/preference/OnPreferenceTreeClickListener\"\n or v == \"android/preference/SeekBarPreference\"\n or v == \"android/preference/VolumePreference\"\n or v == \"android/preference/GenericInflater\"\n or v == \"android/preference/PreferenceGroupAdapter\"\n or v == \"android/preference/PreferenceFrameLayout\"\n or v == \"android/permissionpresenterservice/RuntimePermissionPresenterService\"\n or v == \"android/accounts/ChooseAccountTypeActivity\"\n or v == \"android/accounts/GrantCredentialsPermissionActivity\"\n or v == \"android/accounts/ChooseTypeAndAccountActivity\"\n or v == \"android/accounts/AccountManagerInternal\"\n or v == \"android/accounts/AccountManagerResponse\"\n or v == \"android/accounts/AccountAndUser\"\n or v == \"android/accounts/CantAddAccountActivity\"\n or v == \"android/accounts/ChooseAccountActivity\"\n or v == \"android/appwidget/PendingHostUpdate\"\n or v == \"android/nfc/dta/NfcDta\"\n or v == \"android/nfc/BeamShareData\"\n or v == \"android/nfc/cardemulation/ApduServiceInfo\"\n or v == \"android/nfc/cardemulation/AidGroup\"\n or v == \"android/nfc/cardemulation/NfcFServiceInfo\"\n or v == \"android/nfc/NfcUnlockHandler\"\n or v == \"android/nfc/NfcActivityManager\"\n or v == \"android/nfc/TechListParcel\"\n or v == \"android/nfc/ApduList\"\n or v == \"android/nfc/ErrorCodes\"\n or v == \"android/nfc/TransceiveResult\"\n or v == \"android/bluetooth/BluetoothCodecStatus\"\n or v == \"android/bluetooth/SdpRecord\"\n or v == \"android/bluetooth/BluetoothActivityEnergyInfo\"\n or v == \"android/bluetooth/SdpOppOpsRecord\"\n or v == \"android/bluetooth/SdpSapsRecord\"\n or v == \"android/bluetooth/BluetoothUuid\"\n or v == \"android/bluetooth/BluetoothA2dpSink\"\n or v == \"android/bluetooth/BluetoothHeadsetClientCall\"\n or v == \"android/bluetooth/BluetoothHeadsetClient\"\n or v == \"android/bluetooth/BluetoothAvrcpController\"\n or v == \"android/bluetooth/BluetoothPbapClient\"\n or v == \"android/bluetooth/BluetoothMapClient\"\n or v == \"android/bluetooth/UidTraffic\"\n or v == \"android/bluetooth/le/PeriodicAdvertisingManager\"\n or v == \"android/bluetooth/le/PeriodicAdvertisingReport\"\n or v == \"android/bluetooth/le/TruncatedFilter\"\n or v == \"android/bluetooth/le/BluetoothLeUtils\"\n or v == \"android/bluetooth/le/PeriodicAdvertisingCallback\"\n or v == \"android/bluetooth/le/ResultStorageDescriptor\"\n or v == \"android/bluetooth/BluetoothStateChangeCallback\"\n or v == \"android/bluetooth/StateChangeCallbackWrapper\"\n or v == \"android/bluetooth/BluetoothPan\"\n or v == \"android/bluetooth/BluetoothGattIncludedService\"\n or v == \"android/bluetooth/BluetoothAvrcp\"\n or v == \"android/bluetooth/BluetoothAvrcpPlayerSettings\"\n or v == \"android/bluetooth/BluetoothSap\"\n or v == \"android/bluetooth/BluetoothMasInstance\"\n or v == \"android/bluetooth/BluetoothDevicePicker\"\n or v == \"android/bluetooth/BluetoothHidHost\"\n or v == \"android/bluetooth/BluetoothCodecConfig\"\n or v == \"android/bluetooth/SdpMasRecord\"\n or v == \"android/bluetooth/BluetoothPbap\"\n or v == \"android/bluetooth/BluetoothAudioConfig\"\n or v == \"android/bluetooth/BluetoothMap\"\n or v == \"android/bluetooth/SdpPseRecord\"\n or v == \"android/bluetooth/SdpMnsRecord\"\n or v == \"android/bluetooth/OobData\"\n or v == \"android/view/InputFilter\"\n or v == \"android/view/HandlerActionQueue\"\n or v == \"android/view/WindowInfo\"\n or v == \"android/view/inputmethod/FinishedInputEventCallback\"\n or v == \"android/view/inputmethod/InputMethodSubtypeArray\"\n or v == \"android/view/inputmethod/InputMethodManagerInternal\"\n or v == \"android/view/inputmethod/SparseRectFArray\"\n or v == \"android/view/inputmethod/SparseRectFArrayBuilder\"\n or v == \"android/view/inputmethod/InputConnectionInspector\"\n or v == \"android/view/WindowManagerInternal\"\n or v == \"android/view/SurfaceControl\"\n or v == \"android/view/ViewHierarchyEncoder\"\n or v == \"android/view/OnWindowDismissedCallback\"\n or v == \"android/view/OnWindowSwipeDismissedCallback\"\n or v == \"android/view/WindowControllerCallback\"\n or v == \"android/view/InputChannel\"\n or v == \"android/view/InputEventReceiver\"\n or v == \"android/view/OnWindowShownListener\"\n or v == \"android/view/InternalInsetsInfo\"\n or v == \"android/view/OnComputeInternalInsetsListener\"\n or v == \"android/view/OnEnterAnimationCompleteListener\"\n or v == \"android/view/WindowManagerGlobal\"\n or v == \"android/view/textclassifier/TextClassifierConstants\"\n or v == \"android/view/textclassifier/TextClassifierImpl\"\n or v == \"android/view/textclassifier/LinksInfo\"\n or v == \"android/view/textclassifier/EntityConfidence\"\n or v == \"android/view/InputEventSender\"\n or v == \"android/view/FrameInfo\"\n or v == \"android/view/ViewRootImpl\"\n or v == \"android/view/RenderNode\"\n or v == \"android/view/animation/TranslateYAnimation\"\n or v == \"android/view/animation/ClipRectAnimation\"\n or v == \"android/view/animation/TranslateXAnimation\"\n or v == \"android/view/autofill/AutofillPopupWindow\"\n or v == \"android/view/autofill/Helper\"\n or v == \"android/view/autofill/AutofillClient\"\n or v == \"android/view/autofill/ParcelableMap\"\n or v == \"android/view/autofill/AutofillManagerInternal\"\n or v == \"android/view/RecordingCanvas\"\n or v == \"android/view/ThreadedRenderer\"\n or v == \"android/view/DisplayEventReceiver\"\n or v == \"android/view/GhostView\"\n or v == \"android/view/NotificationHeaderView\"\n or v == \"android/view/RenderNodeAnimator\"\n or v == \"android/view/WindowManagerPolicy\"\n or v == \"android/view/FinishedInputEventCallback\"\n or v == \"android/view/WindowCallbackWrapper\"\n or v == \"android/view/FallbackAction\"\n or v == \"android/view/DisplayAdjustments\"\n or v == \"android/view/AppTransitionAnimationSpec\"\n or v == \"android/view/InputEventConsistencyVerifier\"\n or v == \"android/view/KeyboardShortcutsReceiver\"\n or v == \"android/view/FallbackEventHandler\"\n or v == \"android/view/ViewReplaceRunnable\"\n or v == \"android/view/WindowCallbacks\"\n or v == \"android/view/WindowManagerImpl\"\n or v == \"android/view/RenderNodeAnimatorSetHelper\"\n or v == \"android/view/MagnificationSpec\"\n or v == \"android/view/DisplayListCanvas\"\n or v == \"android/view/accessibility/AccessibilityServicesStateChangeListener\"\n or v == \"android/view/accessibility/HighTextContrastChangeListener\"\n or v == \"android/view/accessibility/AccessibilityInteractionClient\"\n or v == \"android/view/accessibility/AccessibilityCache\"\n or v == \"android/view/Estimator\"\n or v == \"android/view/HierarchyHandler\"\n or v == \"android/view/DisplayInfo\"\n or v == \"android/view/HardwareLayer\"\n or v == \"android/view/SurfaceSession\"\n or v == \"android/view/BatchedInputEventReceiver\"\n or v == \"android/view/FrameMetricsObserver\"\n or v == \"android/view/FocusFinderHelper\"\n or v == \"android/view/AccessibilityIterators\"\n or v == \"android/view/TextSegmentIterator\"\n or v == \"android/view/AbstractTextSegmentIterator\"\n or v == \"android/view/SubUiVisibilityListener\"\n or v == \"android/accessibilityservice/CapabilityInfo\"\n or v == \"android/accessibilityservice/TouchPoint\"\n or v == \"android/accessibilityservice/GestureStep\"\n or v == \"android/accessibilityservice/MotionEventGenerator\"\n or v == \"android/accessibilityservice/Callbacks\"\n or v == \"android/accessibilityservice/IAccessibilityServiceClientWrapper\"\n or v == \"android/os/MyReadMapCallback\"\n or v == \"android/os/SynchronousResultReceiver\"\n or v == \"android/os/BatteryProperty\"\n or v == \"android/os/NoImagePreloadHolder\"\n or v == \"android/os/IHwInterface\"\n or v == \"android/os/PerformanceCollector\"\n or v == \"android/os/SystemVibrator\"\n or v == \"android/os/IServiceManager\"\n or v == \"android/os/HidlSupport\"\n or v == \"android/os/ServiceSpecificException\"\n or v == \"android/os/UserEnvironment\"\n or v == \"android/os/AsyncResult\"\n or v == \"android/os/PowerSaveState\"\n or v == \"android/os/Broadcaster\"\n or v == \"android/os/FactoryTest\"\n or v == \"android/os/HwParcel\"\n or v == \"android/os/IHwBinder\"\n or v == \"android/os/ParcelableException\"\n or v == \"android/os/ShellCommand\"\n or v == \"android/os/ServiceManager\"\n or v == \"android/os/ServiceNotFoundException\"\n or v == \"android/os/ProcessStartResult\"\n or v == \"android/os/SELinux\"\n or v == \"android/os/ReadWriteHelper\"\n or v == \"android/os/NullVibrator\"\n or v == \"android/os/VintfObject\"\n or v == \"android/os/BatteryProperties\"\n or v == \"android/os/HwBinder\"\n or v == \"android/os/HwRemoteBinder\"\n or v == \"android/os/GraphicsEnvironment\"\n or v == \"android/os/ShellCallback\"\n or v == \"android/os/IncidentManager\"\n or v == \"android/os/FileUtils\"\n or v == \"android/os/health/HealthStatsWriter\"\n or v == \"android/os/health/HealthKeys\"\n or v == \"android/os/health/Constants\"\n or v == \"android/os/health/HealthStatsParceler\"\n or v == \"android/os/ParcelableParcel\"\n or v == \"android/os/PowerManagerInternal\"\n or v == \"android/os/Temperature\"\n or v == \"android/os/BatteryStats\"\n or v == \"android/os/ZygoteProcess\"\n or v == \"android/os/ViolationListener\"\n or v == \"android/os/StrictModeViolation\"\n or v == \"android/os/StrictModeNetworkViolation\"\n or v == \"android/os/StrictModeDiskReadViolation\"\n or v == \"android/os/StrictModeDiskWriteViolation\"\n or v == \"android/os/StrictModeCustomViolation\"\n or v == \"android/os/StrictModeResourceMismatchViolation\"\n or v == \"android/os/StrictModeUnbufferedIOViolation\"\n or v == \"android/os/Span\"\n or v == \"android/os/ViolationInfo\"\n or v == \"android/os/storage/StorageManagerInternal\"\n or v == \"android/os/storage/StorageResultCode\"\n or v == \"android/os/storage/VolumeRecord\"\n or v == \"android/os/storage/DiskInfo\"\n or v == \"android/os/storage/VolumeInfo\"\n or v == \"android/os/storage/StorageEventListener\"\n or v == \"android/os/SystemProperties\"\n or v == \"android/os/RemoteCallback\"\n or v == \"android/os/Registrant\"\n or v == \"android/os/RevocableFileDescriptor\"\n or v == \"android/os/UEventObserver\"\n or v == \"android/os/ServiceManagerNative\"\n or v == \"android/os/UpdateEngine\"\n or v == \"android/os/BatteryManagerInternal\"\n or v == \"android/os/UpdateLock\"\n or v == \"android/os/OneShot\"\n or v == \"android/os/Waveform\"\n or v == \"android/os/Prebaked\"\n or v == \"android/os/EnforcingUser\"\n or v == \"android/os/PooledStringReader\"\n or v == \"android/os/CommonClock\"\n or v == \"android/os/IncidentReportArgs\"\n or v == \"android/os/RemoteMailException\"\n or v == \"android/os/CommonTimeConfig\"\n or v == \"android/os/RegistrantList\"\n or v == \"android/os/HwBlob\"\n or v == \"android/os/FileBridge\"\n or v == \"android/os/UserManagerInternal\"\n or v == \"android/os/SystemService\"\n or v == \"android/os/Seccomp\"\n or v == \"android/os/VintfRuntimeInfo\"\n or v == \"android/os/UpdateEngineCallback\"\n or v == \"android/os/TransactionTracker\"\n or v == \"android/os/ConfigUpdate\"\n or v == \"android/os/PooledStringWriter\"\n or v == \"android/text/FontConfig\"\n or v == \"android/text/TextLine\"\n or v == \"android/text/PackedIntVector\"\n or v == \"android/text/PositionIterator\"\n or v == \"android/text/style/AccessibilityClickableSpan\"\n or v == \"android/text/style/SuggestionRangeSpan\"\n or v == \"android/text/style/AccessibilityURLSpan\"\n or v == \"android/text/style/SpellCheckSpan\"\n or v == \"android/text/MeasuredText\"\n or v == \"android/text/AndroidBidi\"\n or v == \"android/text/SpanSet\"\n or v == \"android/text/format/BytesResult\"\n or v == \"android/text/CharSequenceCharacterIterator\"\n or v == \"android/text/Hyphenator\"\n or v == \"android/text/Emoji\"\n or v == \"android/text/GraphicsOperations\"\n or v == \"android/text/method/TransformationMethod2\"\n or v == \"android/text/method/WordIterator\"\n or v == \"android/text/method/AllCapsTransformationMethod\"\n or v == \"android/service/oemlock/OemLockManager\"\n or v == \"android/service/notification/SnoozeCriterion\"\n or v == \"android/service/notification/NotificationRankingUpdate\"\n or v == \"android/service/notification/Adjustment\"\n or v == \"android/service/notification/NotificationListenerWrapper\"\n or v == \"android/service/notification/NotificationAssistantService\"\n or v == \"android/service/notification/ZenModeConfig\"\n or v == \"android/service/gatekeeper/GateKeeperResponse\"\n or v == \"android/service/euicc/GetDownloadableSubscriptionMetadataResult\"\n or v == \"android/service/euicc/GetDefaultDownloadableSubscriptionListResult\"\n or v == \"android/service/euicc/EuiccProfileInfo\"\n or v == \"android/service/euicc/GetEuiccProfileInfoListResult\"\n or v == \"android/service/euicc/EuiccService\"\n or v == \"android/service/autofill/OptionalValidators\"\n or v == \"android/service/autofill/InternalValidator\"\n or v == \"android/service/autofill/RequiredValidators\"\n or v == \"android/service/autofill/AutofillServiceInfo\"\n or v == \"android/service/autofill/ValueFinder\"\n or v == \"android/service/autofill/InternalTransformation\"\n or v == \"android/service/voice/SoundTriggerListener\"\n or v == \"android/service/voice/VoiceInteractionServiceInfo\"\n or v == \"android/service/voice/VoiceInteractionManagerInternal\"\n or v == \"android/service/persistentdata/PersistentDataBlockManager\"\n or v == \"android/service/wallpaper/WallpaperSettingsActivity\"\n or v == \"android/service/trust/TrustAgentService\"\n or v == \"android/service/dreams/Sandman\"\n or v == \"android/service/dreams/DreamManagerInternal\"\n or v == \"android/service/carrier/ICarrierServiceWrapper\"\n or v == \"android/service/carrier/MatchType\"\n or v == \"android/service/resolver/ResolverRankerService\"\n or v == \"android/service/resolver/ResolverTarget\"\n or v == \"android/companion/BluetoothDeviceFilterUtils\"\n or v == \"com/android/server/AppWidgetBackupBridge\"\n or v == \"com/android/server/net/BaseNetworkObserver\"\n or v == \"com/android/server/net/NetlinkTracker\"\n or v == \"com/android/server/WidgetBackupProvider\"\n or v == \"com/android/server/LocalServices\"\n or v == \"android/security/KeyStoreException\"\n or v == \"android/security/keystore/AndroidKeyStoreBCWorkaroundProvider\"\n or v == \"android/security/keystore/AndroidKeyStoreHmacSpi\"\n or v == \"android/security/keystore/AndroidKeyStoreCipherSpiBase\"\n or v == \"android/security/keystore/AndroidKeyStorePublicKey\"\n or v == \"android/security/keystore/AndroidKeyStoreSecretKey\"\n or v == \"android/security/keystore/AndroidKeyStoreECPrivateKey\"\n or v == \"android/security/keystore/AndroidKeyStoreKeyGeneratorSpi\"\n or v == \"android/security/keystore/KeyStoreCryptoOperationChunkedStreamer\"\n or v == \"android/security/keystore/Purpose\"\n or v == \"android/security/keystore/KeyAlgorithm\"\n or v == \"android/security/keystore/BlockMode\"\n or v == \"android/security/keystore/EncryptionPadding\"\n or v == \"android/security/keystore/Digest\"\n or v == \"android/security/keystore/Origin\"\n or v == \"android/security/keystore/DeviceIdAttestationException\"\n or v == \"android/security/keystore/ArrayUtils\"\n or v == \"android/security/keystore/AndroidKeyStoreRSASignatureSpi\"\n or v == \"android/security/keystore/Utils\"\n or v == \"android/security/keystore/AndroidKeyStoreSignatureSpiBase\"\n or v == \"android/security/keystore/AndroidKeyStoreRSAPrivateKey\"\n or v == \"android/security/keystore/AndroidKeyStoreRSACipherSpi\"\n or v == \"android/security/keystore/AndroidKeyStoreECDSASignatureSpi\"\n or v == \"android/security/keystore/AndroidKeyStoreKeyFactorySpi\"\n or v == \"android/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi\"\n or v == \"android/security/keystore/AndroidKeyStoreKeyPairGeneratorSpi\"\n or v == \"android/security/keystore/AndroidKeyStoreSpi\"\n or v == \"android/security/keystore/KeyStoreCryptoOperationUtils\"\n or v == \"android/security/keystore/AttestationUtils\"\n or v == \"android/security/keystore/KeyStoreCryptoOperation\"\n or v == \"android/security/keystore/KeymasterUtils\"\n or v == \"android/security/keystore/AndroidKeyStoreRSAPublicKey\"\n or v == \"android/security/keystore/KeyStoreConnectException\"\n or v == \"android/security/keystore/AndroidKeyStoreECPublicKey\"\n or v == \"android/security/keystore/AndroidKeyStoreKey\"\n or v == \"android/security/keystore/AndroidKeyStoreUnauthenticatedAESCipherSpi\"\n or v == \"android/security/keystore/AndroidKeyStorePrivateKey\"\n or v == \"android/security/keystore/KeyStoreCryptoOperationStreamer\"\n or v == \"android/security/keystore/AndroidKeyStoreProvider\"\n or v == \"android/security/keystore/AndroidKeyStoreSecretKeyFactorySpi\"\n or v == \"android/security/Credentials\"\n or v == \"android/security/KeyChainConnection\"\n or v == \"android/security/GateKeeper\"\n or v == \"android/security/SystemKeyStore\"\n or v == \"android/security/KeyStore\"\n or v == \"android/net/lowpan/Builder\"\n or v == \"android/net/lowpan/LowpanProperty\"\n or v == \"android/net/lowpan/LowpanProperties\"\n or v == \"android/net/lowpan/LowpanStandardProperty\"\n or v == \"android/location/GpsMeasurementsEvent\"\n or v == \"android/location/Listener\"\n or v == \"android/location/LocalListenerHelper\"\n or v == \"android/location/Country\"\n or v == \"android/location/GpsNavigationMessage\"\n or v == \"android/location/GpsClock\"\n or v == \"android/location/GeocoderParams\"\n or v == \"android/location/FusedBatchOptions\"\n or v == \"android/location/GpsNavigationMessageEvent\"\n or v == \"android/location/Listener\"\n or v == \"android/location/BatchedLocationCallback\"\n or v == \"android/location/CountryListener\"\n or v == \"android/location/CountryDetector\"\n or v == \"android/location/Geofence\"\n or v == \"android/location/BatchedLocationCallbackTransport\"\n or v == \"android/location/GnssMeasurementCallbackTransport\"\n or v == \"android/location/LocationRequest\"\n or v == \"android/location/GpsMeasurement\"\n or v == \"android/location/GnssNavigationMessageCallbackTransport\"\n or v == \"javax/obex/HeaderSet\"\n or v == \"javax/obex/BaseStream\"\n or v == \"javax/obex/ClientOperation\"\n or v == \"javax/obex/ServerSession\"\n or v == \"javax/obex/Operation\"\n or v == \"javax/obex/PrivateInputStream\"\n or v == \"javax/obex/PrivateOutputStream\"\n or v == \"javax/obex/ClientSession\"\n or v == \"javax/obex/SessionNotifier\"\n or v == \"javax/obex/ApplicationParameter\"\n or v == \"javax/obex/ServerOperation\"\n or v == \"javax/obex/Authenticator\"\n or v == \"javax/obex/ResponseCodes\"\n or v == \"javax/obex/ObexHelper\"\n or v == \"javax/obex/PasswordAuthentication\"\n or v == \"javax/obex/ObexTransport\"\n or v == \"javax/obex/ServerRequestHandler\"\n or v == \"javax/obex/ObexSession\"\n or v == \"android/net/util/PacketReaderTest\"\n or v == \"android/net/util/ConnectivityPacketSummaryTest\"\n or v == \"android/testing/LayoutInflaterBuilder\"\n or v == \"androidx/media/filterfw/GLToolbox\"\n or v == \"android/security/net/config/TestCertificateSource\"\n or v == \"android/security/net/config/TestConfigSource\"\n or v == \"com/android/uiautomator/core/Tracer\"\n or v == \"com/android/uiautomator/core/AccessibilityNodeInfoDumper\"\n or v == \"com/android/uiautomator/core/UiAutomatorBridge\"\n or v == \"com/android/uiautomator/testrunner/UiAutomatorTestCaseFilter\"\n or v == \"com/android/uiautomator/testrunner/TestCaseCollector\"\n or v == \"com/android/uiautomator/testrunner/UiAutomatorTestRunner\"\n or v == \"com/android/uiautomator/core/ShellUiAutomatorBridge\"\n or v == \"com/android/uiautomator/core/UiAutomationShellWrapper\"\n or v == \"com/android/uiautomator/core/InstrumentationUiAutomatorBridge\"\n or v == \"android/renderscript/ProgramRaster\"\n or v == \"android/renderscript/ProgramVertex\"\n or v == \"android/renderscript/Builder\"\n or v == \"android/renderscript/ProgramFragmentFixedFunction\"\n or v == \"android/renderscript/RenderScriptGL\"\n or v == \"android/renderscript/FileA3D\"\n or v == \"android/renderscript/ProgramVertexFixedFunction\"\n or v == \"android/renderscript/ProgramFragment\"\n or v == \"android/renderscript/Font\"\n or v == \"android/renderscript/RSTextureView\"\n or v == \"android/renderscript/RSSurfaceView\"\n or v == \"android/renderscript/Program\"\n or v == \"android/renderscript/ProgramStore\"\n or v == \"android/renderscript/Mesh\"\n or v == \"android/renderscript/RenderScriptCacheDir\"\n or v == \"android/telephony/ClientRequestStats\"\n or v == \"android/telephony/TelephonyHistogram\"\n or v == \"android/telephony/ModemActivityInfo\"\n or v == \"android/telephony/PreciseDisconnectCause\"\n or v == \"android/telephony/cdma/CdmaSmsCbProgramData\"\n or v == \"android/telephony/cdma/CdmaSmsCbProgramResults\"\n or v == \"android/telephony/PreciseCallState\"\n or v == \"android/telephony/SubscriptionPlan\"\n or v == \"android/telephony/VoLteServiceState\"\n or v == \"android/telephony/DisconnectCause\"\n or v == \"android/telephony/UiccAccessRule\"\n or v == \"android/telephony/euicc/EuiccManager\"\n or v == \"android/telephony/euicc/DownloadableSubscription\"\n or v == \"android/telephony/RadioAccessFamily\"\n or v == \"android/telephony/PcoData\"\n or v == \"android/telephony/Builder\"\n or v == \"android/telephony/WifiCallingChoices\"\n or v == \"android/telephony/ims/ImsService\"\n or v == \"android/telephony/ims/stub/ImsCallSessionListenerImplBase\"\n or v == \"android/telephony/ims/feature/ImsFeature\"\n or v == \"android/telephony/CdmaBands\"\n or v == \"android/telephony/UssdResponse\"\n or v == \"android/telephony/PreciseDataConnectionState\"\n or v == \"android/provider/CarrierColumns\"\n or v == \"android/provider/WordsTable\"\n or v == \"android/provider/CellBroadcasts\"\n or v == \"android/provider/CarrierIdentification\"\n or v == \"android/telephony/data/InterfaceAddress\"\n or v == \"android/telephony/data/DataCallResponse\"\n or v == \"android/telephony/data/DataProfile\"\n or v == \"android/telephony/Rlog\"\n or v == \"android/telephony/ImsiEncryptionInfo\"\n or v == \"android/telephony/mbms/InternalStreamingSessionCallback\"\n or v == \"android/telephony/mbms/MbmsTempFileProvider\"\n or v == \"android/telephony/mbms/OpaqueDataContainer\"\n or v == \"android/telephony/mbms/InternalDownloadSessionCallback\"\n or v == \"android/telephony/mbms/InternalStreamingServiceCallback\"\n or v == \"android/telephony/mbms/UriPathPair\"\n or v == \"android/telephony/mbms/InternalDownloadStateCallback\"\n or v == \"android/telephony/mbms/MbmsUtils\"\n or v == \"android/telephony/mbms/vendor/MbmsDownloadServiceBase\"\n or v == \"android/telephony/mbms/vendor/MbmsStreamingServiceBase\"\n or v == \"android/telephony/mbms/vendor/VendorUtils\"\n or v == \"android/telephony/DataConnectionRealTimeInfo\"\n or v == \"android/telephony/SmsCbLocation\"\n or v == \"android/telephony/SmsCbEtwsInfo\"\n or v == \"android/telephony/SmsCbMessage\"\n or v == \"android/telephony/SmsCbCmasInfo\"\n or v == \"com/android/ims/ImsStreamMediaProfile\"\n or v == \"com/android/ims/ImsReasonInfo\"\n or v == \"com/android/ims/ImsCallForwardInfo\"\n or v == \"com/android/ims/ImsExternalCallState\"\n or v == \"com/android/ims/ImsConfig\"\n or v == \"com/android/ims/ImsException\"\n or v == \"com/android/ims/ImsCallProfile\"\n or v == \"com/android/ims/ImsSuppServiceNotification\"\n or v == \"com/android/ims/ImsUtInterface\"\n or v == \"com/android/ims/ImsConferenceState\"\n or v == \"com/android/ims/ImsSsInfo\"\n or v == \"com/android/ims/ImsSsData\"\n or v == \"com/android/settingslib/NetworkPolicyEditor\"\n or v == \"com/android/sharedstoragebackup/ObbBackupService\"\n or v == \"com/android/providers/settings/SettingsProtoDumpUtil\"\n or v == \"com/android/statementservice/retriever/AndroidPackageInfoFetcher\"\n or v == \"com/android/statementservice/retriever/URLFetcher\"\n or v == \"com/android/statementservice/retriever/WebContent\"\n or v == \"com/android/backupconfirm/BackupRestoreConfirmation\"\n or v == \"com/android/proxyhandler/ProxyServer\"\n or v == \"com/android/proxyhandler/SocketConnect\"\n or v == \"com/android/proxyhandler/ProxyService\"\n or v == \"com/android/pacprocessor/PacNative\"\n or v == \"com/android/systemui/media/NotificationPlayer\"\n or v == \"junit/runner/TestRunListener\"\n or v == \"junit/runner/StandardTestSuiteLoader\"\n or v == \"android/test/LaunchPerformanceBase\"\n or v == \"android/test/NoExecTestResult\"\n or v == \"android/test/ClassPathPackageInfoSource\"\n or v == \"android/test/TestPrinter\"\n or v == \"android/test/suitebuilder/UnitTestSuiteBuilder\"\n or v == \"android/test/suitebuilder/TestGrouping\"\n or v == \"android/test/suitebuilder/TestPredicates\"\n or v == \"android/test/suitebuilder/SmokeTestSuiteBuilder\"\n or v == \"android/test/TestCaseUtil\"\n or v == \"android/test/mock/MockIContentProvider\"\n or v == \"android/telecom/TimedEvent\"\n or v == \"android/telecom/DefaultDialerManager\"\n or v == \"android/telecom/ParcelableRttCall\"\n or v == \"android/telecom/AudioState\"\n or v == \"android/telecom/Phone\"\n or v == \"android/telecom/ParcelableCallAnalytics\"\n or v == \"android/telecom/VideoEvent\"\n or v == \"android/telecom/TelecomAnalytics\"\n or v == \"android/telecom/CallbackRecord\"\n or v == \"android/telecom/Response\"\n or v == \"android/telecom/VideoCallImpl\"\n or v == \"android/telecom/ConnectionServiceAdapter\"\n or v == \"android/telecom/Builder\"\n or v == \"android/telecom/RemoteConnectionService\"\n or v == \"android/telecom/AuthenticatorService\"\n or v == \"android/telecom/Listener\"\n or v == \"android/telecom/ConferenceParticipant\"\n or v == \"android/telecom/ParcelableConnection\"\n or v == \"android/telecom/ParcelableCall\"\n or v == \"android/telecom/Log\"\n or v == \"android/telecom/Listener\"\n or v == \"android/telecom/RttTextStream\"\n or v == \"android/telecom/RemoteConnectionManager\"\n or v == \"android/telecom/ParcelableConference\"\n or v == \"android/telecom/Voicemail\"\n or v == \"android/telecom/ConnectionServiceAdapterServant\"\n or v == \"android/telecom/VideoCallbackServant\"\n or v == \"android/telecom/Listener\"\n or v == \"android/telecom/Logging/TimedEvent\"\n or v == \"android/telecom/Logging/Runnable\"\n or v == \"android/telecom/Logging/Session\"\n or v == \"android/telecom/InCallAdapter\"\n or v == \"android/graphics/GraphicBuffer\"\n or v == \"android/graphics/CanvasProperty\"\n or v == \"android/graphics/drawable/AnimatedRotateDrawable\"\n or v == \"android/graphics/drawable/VectorDrawableAnimatorRT\"\n or v == \"android/graphics/drawable/DrawableInflater\"\n or v == \"android/graphics/Insets\"\n or v == \"android/graphics/BaseCanvas\"\n or v == \"android/graphics/pdf/PdfEditor\"\n or v == \"android/graphics/Renderer\"\n or v == \"android/graphics/LeakyTypefaceStorage\"\n or v == \"android/graphics/TemporaryBuffer\"\n or v == \"android/graphics/InsetStruct\"\n or v == \"android/graphics/LargeBitmap\"\n or v == \"android/graphics/FontListParser\"\n or v == \"android/graphics/FontFamily\"\n or v == \"android/graphics/TableMaskFilter\"\n or v == \"android/net/util/NetworkConstants\"\n or v == \"android/net/util/Stopwatch\"\n or v == \"android/net/util/PrefixUtils\"\n or v == \"android/net/util/NetdService\"\n or v == \"android/net/util/IpUtils\"\n or v == \"android/net/util/VersionedBroadcastListener\"\n or v == \"android/net/util/SharedLog\"\n or v == \"android/net/util/ConnectivityPacketSummary\"\n or v == \"android/net/util/MultinetworkPolicyTracker\"\n or v == \"android/net/util/PacketReader\"\n or v == \"android/net/netlink/StructNlMsgHdr\"\n or v == \"android/net/netlink/StructNdMsg\"\n or v == \"android/net/netlink/StructNlMsgErr\"\n or v == \"android/net/netlink/NetlinkSocket\"\n or v == \"android/net/netlink/StructNlAttr\"\n or v == \"android/net/netlink/NetlinkMessage\"\n or v == \"android/net/netlink/ConntrackMessage\"\n or v == \"android/net/netlink/StructNfGenMsg\"\n or v == \"android/net/netlink/StructNdaCacheInfo\"\n or v == \"android/net/netlink/NetlinkConstants\"\n or v == \"android/net/netlink/NetlinkErrorMessage\"\n or v == \"android/net/netlink/RtNetlinkNeighborMessage\"\n or v == \"android/net/apf/ApfGenerator\"\n or v == \"android/net/apf/ApfCapabilities\"\n or v == \"android/net/apf/ApfFilter\"\n or v == \"android/net/dhcp/DhcpClient\"\n or v == \"android/net/dhcp/DhcpPacket\"\n or v == \"android/net/ip/IpReachabilityMonitor\"\n or v == \"android/net/ip/InterfaceController\"\n or v == \"android/net/ip/IpClient\"\n or v == \"android/net/ip/IpNeighborMonitor\"\n or v == \"android/net/ip/RouterAdvertisementDaemon\"\n or v == \"android/net/ip/ConnectivityPacketTracker\"\n or v == \"com/android/server/pm/PackageManagerServiceUtils\"\n or v == \"com/android/server/pm/BackgroundDexOptService\"\n or v == \"com/android/server/pm/InstructionSets\"\n or v == \"com/android/server/pm/EphemeralResolverConnection\"\n or v == \"com/android/server/pm/SELinuxMMAC\"\n or v == \"com/android/server/pm/OtaDexoptService\"\n or v == \"com/android/server/pm/InstantAppResolver\"\n or v == \"com/android/server/pm/PackageManagerException\"\n or v == \"com/android/server/vr/SettingsObserver\"\n or v == \"com/android/server/vr/VrManagerInternal\"\n or v == \"com/android/server/vr/EnabledComponentsObserver\"\n or v == \"com/android/server/vr/VrManagerService\"\n or v == \"com/android/server/vr/VrStateListener\"\n or v == \"com/android/server/webkit/SystemInterface\"\n or v == \"com/android/server/webkit/WebViewUpdateService\"\n or v == \"com/android/server/webkit/SystemImpl\"\n or v == \"com/android/server/webkit/WebViewUpdateServiceImpl\"\n or v == \"com/android/server/net/NetworkPolicyManagerInternal\"\n or v == \"com/android/server/net/NetworkIdentitySet\"\n or v == \"com/android/server/fingerprint/FingerprintService\"\n or v == \"com/android/server/am/BackupRecord\"\n or v == \"com/android/server/GraphicsStatsService\"\n or v == \"com/android/server/connectivity/Vpn\"\n or v == \"com/android/server/connectivity/IpConnectivityMetrics\"\n or v == \"com/android/server/connectivity/tethering/TetheringConfiguration\"\n or v == \"com/android/server/connectivity/tethering/OffloadHardwareInterface\"\n or v == \"com/android/server/connectivity/tethering/OffloadController\"\n or v == \"com/android/server/connectivity/tethering/TetherInterfaceStateMachine\"\n or v == \"com/android/server/connectivity/tethering/UpstreamNetworkMonitor\"\n or v == \"com/android/server/connectivity/tethering/SimChangeListener\"\n or v == \"com/android/server/connectivity/tethering/IPv6TetheringCoordinator\"\n or v == \"com/android/server/connectivity/tethering/TetheringDependencies\"\n or v == \"com/android/server/connectivity/tethering/IControlsTethering\"\n or v == \"com/android/server/connectivity/PacManager\"\n or v == \"com/android/server/connectivity/NetworkMonitor\"\n or v == \"com/android/server/connectivity/CaptivePortalProbeResult\"\n or v == \"com/android/server/connectivity/IpConnectivityEventBuilder\"\n or v == \"com/android/server/connectivity/NetworkDiagnostics\"\n or v == \"com/android/server/connectivity/Tethering\"\n or v == \"com/android/server/connectivity/PermissionMonitor\"\n or v == \"com/android/server/connectivity/KeepalivePacketData\"\n or v == \"com/android/server/connectivity/DefaultNetworkMetrics\"\n or v == \"com/android/server/connectivity/Nat464Xlat\"\n or v == \"com/android/server/security/KeyAttestationApplicationIdProviderService\"\n or v == \"com/android/server/input/InputWindowHandle\"\n or v == \"com/android/server/input/InputApplicationHandle\"\n or v == \"com/android/server/notification/NotificationManagerService\"\n or v == \"com/android/server/notification/NotificationUsageStats\"\n or v == \"com/android/server/notification/RateEstimator\"\n or v == \"com/android/server/notification/AlertRateLimiter\"\n or v == \"com/android/server/notification/NotificationRecord\"\n or v == \"com/android/server/notification/ValidateNotificationPeople\"\n or v == \"com/android/server/notification/RankingReconsideration\"\n or v == \"com/android/server/camera/CameraServiceProxy\"\n or v == \"com/android/server/location/PassiveProvider\"\n or v == \"com/android/server/location/ActivityRecognitionProxy\"\n or v == \"com/android/server/location/CountryDetectorBase\"\n or v == \"com/android/server/location/GnssLocationProvider\"\n or v == \"com/android/server/location/ContextHubService\"\n or v == \"com/android/server/location/FusedProxy\"\n or v == \"com/android/server/location/GeofenceProxy\"\n or v == \"com/android/server/location/GnssNavigationMessageProvider\"\n or v == \"com/android/server/location/LocationProviderInterface\"\n or v == \"com/android/server/location/GpsXtraDownloader\"\n or v == \"com/android/server/location/FusedLocationHardwareSecure\"\n or v == \"com/android/server/location/FlpHardwareProvider\"\n or v == \"com/android/server/location/GnssMeasurementsProvider\"\n or v == \"com/android/server/location/LocationBasedCountryDetector\"\n or v == \"com/android/server/location/ComprehensiveCountryDetector\"\n or v == \"com/android/server/location/MockProvider\"\n or v == \"com/android/server/wm/WindowManagerService\"\n or v == \"com/android/server/wm/animation/ClipRectLRAnimation\"\n or v == \"com/android/server/wm/ViewServer\"\n or v == \"com/android/server/SystemServiceManager\"\n or v == \"com/android/server/content/SyncStorageEngine\"\n or v == \"com/android/server/content/SyncManager\"\n or v == \"com/android/server/content/ActiveSyncContext\"\n or v == \"com/android/server/content/ContentService\"\n or v == \"com/android/server/content/ObserverCall\"\n or v == \"com/android/server/content/ObserverNode\"\n or v == \"com/android/server/content/SyncOperation\"\n or v == \"com/android/server/utils/ManagedApplicationService\"\n or v == \"com/android/server/utils/PriorityDump\"\n or v == \"com/android/server/utils/PriorityDumper\"\n or v == \"com/android/server/NetworkManagementService\"\n or v == \"com/android/server/tv/TvInputHardwareManager\"\n or v == \"com/android/server/IpSecService\"\n or v == \"com/android/server/ConnectivityService\"\n or v == \"com/android/server/audio/MediaFocusControl\"\n or v == \"com/android/server/audio/FocusRequester\"\n or v == \"com/android/server/audio/AudioService\"\n or v == \"com/android/server/telecom/TelecomLoaderService\"\n or v == \"com/android/server/NetworkScorerAppManager\"\n or v == \"com/android/server/CountryDetectorService\"\n or v == \"com/android/server/accounts/AccountManagerService\"\n or v == \"com/android/server/accounts/IAccountAuthenticatorCache\"\n or v == \"com/android/server/job/JobSchedulerService\"\n or v == \"com/android/server/job/JobSchedulerInternal\"\n or v == \"com/android/server/job/controllers/JobStatus\"\n or v == \"com/android/server/RescueParty\"\n or v == \"com/android/server/NsdService\"\n or v == \"com/android/server/os/SchedulingPolicyService\"\n or v == \"com/android/server/SystemServerInitThreadPool\"\n or v == \"com/android/server/NetworkScoreService\"\n or v == \"com/android/server/locksettings/LockSettingsService\"\n or v == \"com/android/server/dreams/DreamManagerService\"\n or v == \"com/android/server/IntentResolver\"\n or v == \"com/android/server/GestureLauncherService\"\n or v == \"com/android/server/SystemService\"\n or v == \"com/android/server/NetworkManagementInternal\"\n or v == \"com/android/server/policy/keyguard/KeyguardStateMonitor\"\n or v == \"com/android/server/CommonTimeManagementService\"\n or v == \"com/android/server/soundtrigger/SoundTriggerService\"\n or v == \"com/android/server/soundtrigger/SoundTriggerHelper\"\n or v == \"com/android/server/soundtrigger/SoundTriggerDbHelper\"\n or v == \"com/android/server/voiceinteraction/DatabaseHelper\"\n or v == \"com/android/server/usb/descriptors/UsbTerminalTypes\"\n or v == \"com/android/server/usb/descriptors/tree/UsbDescriptorsEndpointNode\"\n or v == \"com/android/server/usb/descriptors/tree/UsbDescriptorsACInterfaceNode\"\n or v == \"com/android/server/usb/descriptors/tree/UsbDescriptorsTreeNode\"\n or v == \"com/android/server/usb/descriptors/tree/UsbDescriptorsTree\"\n or v == \"com/android/server/usb/descriptors/tree/UsbDescriptorsInterfaceNode\"\n or v == \"com/android/server/usb/descriptors/tree/UsbDescriptorsDeviceNode\"\n or v == \"com/android/server/usb/descriptors/tree/UsbDescriptorsConfigNode\"\n or v == \"com/android/server/usb/descriptors/UsbACAudioStreamEndpoint\"\n or v == \"com/android/server/usb/descriptors/UsbBinaryParser\"\n or v == \"com/android/server/usb/descriptors/Usb10ASFormatI\"\n or v == \"com/android/server/usb/descriptors/UsbACAudioControlEndpoint\"\n or v == \"com/android/server/usb/descriptors/UsbConfigDescriptor\"\n or v == \"com/android/server/usb/descriptors/Usb20ACMixerUnit\"\n or v == \"com/android/server/usb/descriptors/UsbMSMidiInputJack\"\n or v == \"com/android/server/usb/descriptors/Usb20ACInputTerminal\"\n or v == \"com/android/server/usb/descriptors/UsbACInterface\"\n or v == \"com/android/server/usb/descriptors/Usb10ACOutputTerminal\"\n or v == \"com/android/server/usb/descriptors/UsbDeviceDescriptor\"\n or v == \"com/android/server/usb/descriptors/Usb10ACHeader\"\n or v == \"com/android/server/usb/descriptors/UsbInterfaceAssoc\"\n or v == \"com/android/server/usb/descriptors/UsbHIDDescriptor\"\n or v == \"com/android/server/usb/descriptors/UsbMSMidiOutputJack\"\n or v == \"com/android/server/usb/descriptors/Usb20ASFormatI\"\n or v == \"com/android/server/usb/descriptors/Usb10ASFormatII\"\n or v == \"com/android/server/usb/descriptors/UsbMSMidiHeader\"\n or v == \"com/android/server/usb/descriptors/Usb20ASFormatIII\"\n or v == \"com/android/server/usb/descriptors/UsbACFeatureUnit\"\n or v == \"com/android/server/usb/descriptors/UsbASFormat\"\n or v == \"com/android/server/usb/descriptors/UsbACEndpoint\"\n or v == \"com/android/server/usb/descriptors/UsbUnknown\"\n or v == \"com/android/server/usb/descriptors/Usb20ACHeader\"\n or v == \"com/android/server/usb/descriptors/UsbInterfaceDescriptor\"\n or v == \"com/android/server/usb/descriptors/UsbDescriptor\"\n or v == \"com/android/server/usb/descriptors/UsbACSelectorUnit\"\n or v == \"com/android/server/usb/descriptors/UsbACHeaderInterface\"\n or v == \"com/android/server/usb/descriptors/UsbEndpointDescriptor\"\n or v == \"com/android/server/usb/descriptors/report/TextReportCanvas\"\n or v == \"com/android/server/usb/descriptors/report/Reporting\"\n or v == \"com/android/server/usb/descriptors/report/ReportCanvas\"\n or v == \"com/android/server/usb/descriptors/report/UsbStrings\"\n or v == \"com/android/server/usb/descriptors/report/HTMLReportCanvas\"\n or v == \"com/android/server/usb/descriptors/Usb10ACInputTerminal\"\n or v == \"com/android/server/usb/descriptors/UsbDescriptorParser\"\n or v == \"com/android/server/usb/descriptors/Usb10ASGeneral\"\n or v == \"com/android/server/usb/descriptors/ByteStream\"\n or v == \"com/android/server/usb/descriptors/UsbACMidiEndpoint\"\n or v == \"com/android/server/usb/descriptors/Usb20ASFormatIIEx\"\n or v == \"com/android/server/usb/descriptors/Usb10ACMixerUnit\"\n or v == \"com/android/server/usb/descriptors/Usb20ASFormatII\"\n or v == \"com/android/server/usb/descriptors/Usb20ACOutputTerminal\"\n or v == \"com/android/server/usb/descriptors/UsbACTerminal\"\n or v == \"com/android/server/usb/descriptors/UsbACInterfaceUnparsed\"\n or v == \"com/android/server/accessibility/TouchExplorer\"\n or v == \"com/android/server/coverage/CoverageService\"\n or v == \"com/android/server/companion/CompanionDeviceManagerService\"\n or v == \"android/opengl/GLWallpaperService\"\n or v == \"android/mtp/MtpDatabase\"\n or v == \"android/mtp/MtpServer\"\n or v == \"android/mtp/MtpStorage\"\n or v == \"android/media/PlayerProxy\"\n or v == \"android/media/MediaScanner\"\n or v == \"android/media/MediaTimeProvider\"\n or v == \"android/media/OnMediaTimeListener\"\n or v == \"android/media/soundtrigger/SoundTriggerDetector\"\n or v == \"android/media/soundtrigger/RecognitionCallback\"\n or v == \"android/media/soundtrigger/SoundTriggerManager\"\n or v == \"android/media/audiofx/OnParameterChangeListener\"\n or v == \"android/media/audiofx/Settings\"\n or v == \"android/media/audiofx/OnServerDiedListener\"\n or v == \"android/media/audiofx/OnParameterChangeListener\"\n or v == \"android/media/MediaFile\"\n or v == \"android/media/PlayerDeathMonitor\"\n or v == \"android/media/RemoteDisplay\"\n or v == \"android/media/AudioPort\"\n or v == \"android/media/SRTRenderer\"\n or v == \"android/media/MiniThumbFile\"\n or v == \"android/media/midi/MidiDeviceServer\"\n or v == \"android/media/TtmlRenderer\"\n or v == \"android/media/TtmlUtils\"\n or v == \"android/media/TtmlCue\"\n or v == \"android/media/TtmlNode\"\n or v == \"android/media/TtmlParser\"\n or v == \"android/media/TtmlNodeListener\"\n or v == \"android/media/TtmlTrack\"\n or v == \"android/media/TtmlRenderingWidget\"\n or v == \"android/media/audiopolicy/AudioPolicyConfig\"\n or v == \"android/media/audiopolicy/AudioMixingRule\"\n or v == \"android/media/audiopolicy/AudioMix\"\n or v == \"android/media/audiopolicy/AudioPolicy\"\n or v == \"android/media/Callback\"\n or v == \"android/media/MediaHTTPConnection\"\n or v == \"android/media/DecoderCapabilities\"\n or v == \"android/media/OnSubtitleDataListener\"\n or v == \"android/media/TimeProvider\"\n or v == \"android/media/MediaHTTPService\"\n or v == \"android/media/AudioManagerInternal\"\n or v == \"android/media/MediaScannerClient\"\n or v == \"android/media/SubtitleTrack\"\n or v == \"android/media/CueList\"\n or v == \"android/media/Cue\"\n or v == \"android/media/Run\"\n or v == \"android/media/VolumePolicy\"\n or v == \"android/media/tv/ProgramColumns\"\n or v == \"android/media/tv/PreviewProgramColumns\"\n or v == \"android/media/tv/WatchedPrograms\"\n or v == \"android/media/tv/TvStreamConfig\"\n or v == \"android/media/tv/TvInputSettings\"\n or v == \"android/media/tv/ITvInputSessionWrapper\"\n or v == \"android/media/tv/DvbDeviceInfo\"\n or v == \"android/media/tv/TvInputHardwareInfo\"\n or v == \"android/media/tv/SessionCallback\"\n or v == \"android/media/tv/HardwareCallback\"\n or v == \"android/media/tv/Session\"\n or v == \"android/media/tv/FinishedInputEventCallback\"\n or v == \"android/media/tv/Hardware\"\n or v == \"android/media/tv/TvContentRatingSystemInfo\"\n or v == \"android/media/BufferingParams\"\n or v == \"android/media/Cea708CaptionRenderer\"\n or v == \"android/media/Cea708CaptionTrack\"\n or v == \"android/media/Cea708CCParser\"\n or v == \"android/media/Const\"\n or v == \"android/media/CaptionColor\"\n or v == \"android/media/CaptionEvent\"\n or v == \"android/media/CaptionPenAttr\"\n or v == \"android/media/CaptionPenColor\"\n or v == \"android/media/CaptionPenLocation\"\n or v == \"android/media/CaptionWindowAttr\"\n or v == \"android/media/CaptionWindow\"\n or v == \"android/media/Cea708CCWidget\"\n or v == \"android/media/ScaledLayout\"\n or v == \"android/media/ScaledLayoutParams\"\n or v == \"android/media/CCLayout\"\n or v == \"android/media/CCHandler\"\n or v == \"android/media/CCWindowLayout\"\n or v == \"android/media/CCView\"\n or v == \"android/media/EncoderCapabilities\"\n or v == \"android/media/AudioFocusInfo\"\n or v == \"android/media/AudioGainConfig\"\n or v == \"android/media/RemoteDisplayState\"\n or v == \"android/media/AudioGain\"\n or v == \"android/media/AmrInputStream\"\n or v == \"android/media/ExternalRingtonesCursorWrapper\"\n or v == \"android/media/WebVttRenderer\"\n or v == \"android/media/TextTrackCueSpan\"\n or v == \"android/media/UnstyledTextExtractor\"\n or v == \"android/media/Tokenizer\"\n or v == \"android/media/TextTrackRegion\"\n or v == \"android/media/TextTrackCue\"\n or v == \"android/media/WebVttParser\"\n or v == \"android/media/WebVttCueListener\"\n or v == \"android/media/WebVttTrack\"\n or v == \"android/media/WebVttRenderingWidget\"\n or v == \"android/media/SubtitleController\"\n or v == \"android/media/AudioSystem\"\n or v == \"android/media/Metadata\"\n or v == \"android/media/AudioRoutesInfo\"\n or v == \"android/media/PlayerBase\"\n or v == \"android/media/CharPos\"\n or v == \"android/media/Justification\"\n or v == \"android/media/Style\"\n or v == \"android/media/Font\"\n or v == \"android/media/Karaoke\"\n or v == \"android/media/HyperText\"\n or v == \"android/media/browse/MediaBrowserUtils\"\n or v == \"android/media/Builder\"\n or v == \"android/media/State\"\n or v == \"android/media/MediaInserter\"\n or v == \"android/media/ClosedCaptionRenderer\"\n or v == \"android/media/Cea608CaptionTrack\"\n or v == \"android/media/ClosedCaptionWidget\"\n or v == \"android/media/ClosedCaptionLayout\"\n or v == \"android/media/Cea608CCParser\"\n or v == \"android/media/MutableBackgroundColorSpan\"\n or v == \"android/media/Cea608CCWidget\"\n or v == \"android/media/MediaRouterClientState\"\n or v == \"android/media/ResampleInputStream\"\n or v == \"android/media/OnAudioPortUpdateListener\"\n or v == \"android/media/CertificateRequest\"\n or v == \"android/media/Certificate\"\n or v == \"android/media/AudioPatch\"\n or v == \"android/media/MediaImage\"\n or v == \"android/media/SubtitleData\"\n or v == \"android/media/projection/Callback\"\n or v == \"android/media/projection/CallbackDelegate\"\n or v == \"android/media/projection/MediaProjectionInfo\"\n or v == \"android/media/session/OnVolumeKeyLongPressListener\"\n or v == \"android/media/session/OnMediaKeyListener\"\n or v == \"android/media/session/Callback\"\n or v == \"android/media/session/MediaSessionLegacyHelper\"\n or v == \"android/media/session/ParcelableVolumeInfo\"\n or v == \"android/media/session/CallbackStub\"\n or v == \"android/media/effect/FilterEffect\"\n or v == \"android/media/effect/FilterGraphEffect\"\n or v == \"android/media/effect/SingleFilterEffect\"\n or v == \"android/media/effect/effects/BrightnessEffect\"\n or v == \"android/media/effect/effects/BitmapOverlayEffect\"\n or v == \"android/media/effect/effects/DuotoneEffect\"\n or v == \"android/media/effect/effects/SharpenEffect\"\n or v == \"android/media/effect/effects/ColorTemperatureEffect\"\n or v == \"android/media/effect/effects/LomoishEffect\"\n or v == \"android/media/effect/effects/SepiaEffect\"\n or v == \"android/media/effect/effects/FlipEffect\"\n or v == \"android/media/effect/effects/VignetteEffect\"\n or v == \"android/media/effect/effects/AutoFixEffect\"\n or v == \"android/media/effect/effects/RotateEffect\"\n or v == \"android/media/effect/effects/SaturateEffect\"\n or v == \"android/media/effect/effects/CrossProcessEffect\"\n or v == \"android/media/effect/effects/BackDropperEffect\"\n or v == \"android/media/effect/effects/TintEffect\"\n or v == \"android/media/effect/effects/PosterizeEffect\"\n or v == \"android/media/effect/effects/GrayscaleEffect\"\n or v == \"android/media/effect/effects/RedEyeEffect\"\n or v == \"android/media/effect/effects/DocumentaryEffect\"\n or v == \"android/media/effect/effects/IdentityEffect\"\n or v == \"android/media/effect/effects/FisheyeEffect\"\n or v == \"android/media/effect/effects/ContrastEffect\"\n or v == \"android/media/effect/effects/StraightenEffect\"\n or v == \"android/media/effect/effects/FillLightEffect\"\n or v == \"android/media/effect/effects/GrainEffect\"\n or v == \"android/media/effect/effects/BlackWhiteEffect\"\n or v == \"android/media/effect/effects/NegativeEffect\"\n or v == \"android/media/effect/SizeChangeEffect\"\n or v == \"android/filterpacks/ui/SurfaceTargetFilter\"\n or v == \"android/filterpacks/ui/SurfaceRenderFilter\"\n or v == \"android/filterpacks/videosrc/MediaSource\"\n or v == \"android/filterpacks/videosrc/CameraSource\"\n or v == \"android/filterpacks/videosrc/SurfaceTextureSource\"\n or v == \"android/filterpacks/videosrc/SurfaceTextureTarget\"\n or v == \"android/filterpacks/videosink/MediaEncoderFilter\"\n or v == \"android/filterpacks/videosink/MediaRecorderStopException\"\n or v == \"android/filterpacks/numeric/SinWaveFilter\"\n or v == \"android/filterpacks/imageproc/ContrastFilter\"\n or v == \"android/filterpacks/imageproc/StraightenFilter\"\n or v == \"android/filterpacks/imageproc/DrawRectFilter\"\n or v == \"android/filterpacks/imageproc/CropRectFilter\"\n or v == \"android/filterpacks/imageproc/ToGrayFilter\"\n or v == \"android/filterpacks/imageproc/AlphaBlendFilter\"\n or v == \"android/filterpacks/imageproc/CropFilter\"\n or v == \"android/filterpacks/imageproc/ImageCombineFilter\"\n or v == \"android/filterpacks/imageproc/RedEyeFilter\"\n or v == \"android/filterpacks/imageproc/ToRGBFilter\"\n or v == \"android/filterpacks/imageproc/SimpleImageFilter\"\n or v == \"android/filterpacks/imageproc/FisheyeFilter\"\n or v == \"android/filterpacks/imageproc/ResizeFilter\"\n or v == \"android/filterpacks/imageproc/FixedRotationFilter\"\n or v == \"android/filterpacks/imageproc/BlendFilter\"\n or v == \"android/filterpacks/imageproc/ToRGBAFilter\"\n or v == \"android/filterpacks/imageproc/DrawOverlayFilter\"\n or v == \"android/filterpacks/imageproc/BitmapSource\"\n or v == \"android/filterpacks/imageproc/ImageEncoder\"\n or v == \"android/filterpacks/imageproc/ToPackedGrayFilter\"\n or v == \"android/filterpacks/imageproc/RotateFilter\"\n or v == \"android/filterpacks/imageproc/BrightnessFilter\"\n or v == \"android/filterpacks/imageproc/BitmapOverlayFilter\"\n or v == \"android/filterpacks/imageproc/Invert\"\n or v == \"android/filterpacks/imageproc/FlipFilter\"\n or v == \"android/filterpacks/text/ToUpperCase\"\n or v == \"android/filterpacks/text/StringSource\"\n or v == \"android/filterpacks/text/StringLogger\"\n or v == \"android/filterpacks/performance/ThroughputFilter\"\n or v == \"android/filterpacks/performance/Throughput\"\n or v == \"android/filterpacks/base/CallbackFilter\"\n or v == \"android/filterpacks/base/NullFilter\"\n or v == \"android/filterpacks/base/GLTextureSource\"\n or v == \"android/filterpacks/base/FrameBranch\"\n or v == \"android/filterpacks/base/RetargetFilter\"\n or v == \"android/filterpacks/base/GLTextureTarget\"\n or v == \"android/filterpacks/base/FrameFetch\"\n or v == \"android/filterpacks/base/ObjectSource\"\n or v == \"android/filterpacks/base/FrameSource\"\n or v == \"android/filterpacks/base/OutputStreamTarget\"\n or v == \"android/filterpacks/base/InputStreamSource\"\n or v == \"android/filterpacks/base/FrameStore\"\n or v == \"android/filterpacks/videoproc/BackDropperFilter\"\n or v == \"android/filterfw/core/FilterSurfaceView\"\n or v == \"android/filterfw/core/InputPort\"\n or v == \"android/filterfw/core/FieldPort\"\n or v == \"android/filterfw/core/StreamPort\"\n or v == \"android/filterfw/core/FilterContext\"\n or v == \"android/filterfw/core/GLFrame\"\n or v == \"android/filterfw/core/SimpleFrame\"\n or v == \"android/filterfw/core/FilterFactory\"\n or v == \"android/filterfw/core/VertexFrame\"\n or v == \"android/filterfw/core/GraphRunner\"\n or v == \"android/filterfw/core/ProgramPort\"\n or v == \"android/filterfw/core/ShaderProgram\"\n or v == \"android/filterfw/core/NativeAllocatorTag\"\n or v == \"android/filterfw/core/Frame\"\n or v == \"android/filterfw/core/Scheduler\"\n or v == \"android/filterfw/core/SimpleFrameManager\"\n or v == \"android/filterfw/core/KeyValueMap\"\n or v == \"android/filterfw/core/ProgramVariable\"\n or v == \"android/filterfw/core/FinalPort\"\n or v == \"android/filterfw/core/FilterGraph\"\n or v == \"android/filterfw/core/CachedFrameManager\"\n or v == \"android/filterfw/core/RandomScheduler\"\n or v == \"android/filterfw/core/FilterPort\"\n or v == \"android/filterfw/core/MutableFrameFormat\"\n or v == \"android/filterfw/core/FrameManager\"\n or v == \"android/filterfw/core/NativeFrame\"\n or v == \"android/filterfw/core/FilterFunction\"\n or v == \"android/filterfw/core/AsyncRunner\"\n or v == \"android/filterfw/core/ProtocolException\"\n or v == \"android/filterfw/core/FrameFormat\"\n or v == \"android/filterfw/core/NativeBuffer\"\n or v == \"android/filterfw/core/Program\"\n or v == \"android/filterfw/core/RoundRobinScheduler\"\n or v == \"android/filterfw/core/GLEnvironment\"\n or v == \"android/filterfw/core/StopWatch\"\n or v == \"android/filterfw/core/SerializedFrame\"\n or v == \"android/filterfw/core/OneShotScheduler\"\n or v == \"android/filterfw/core/NativeProgram\"\n or v == \"android/filterfw/core/SimpleScheduler\"\n or v == \"android/filterfw/core/Filter\"\n or v == \"android/filterfw/core/OutputPort\"\n or v == \"android/filterfw/core/SyncRunner\"\n or v == \"android/filterfw/io/GraphReader\"\n or v == \"android/filterfw/io/GraphIOException\"\n or v == \"android/filterfw/io/TextGraphReader\"\n or v == \"android/filterfw/io/PatternScanner\"\n or v == \"android/filterfw/GraphEnvironment\"\n or v == \"android/filterfw/MffEnvironment\"\n or v == \"android/filterfw/FilterFunctionEnvironment\"\n or v == \"android/filterfw/format/PrimitiveFormat\"\n or v == \"android/filterfw/format/ObjectFormat\"\n or v == \"android/filterfw/format/ImageFormat\"\n or v == \"android/filterfw/geometry/Quad\"\n or v == \"android/filterfw/geometry/Point\"\n or v == \"android/filterfw/geometry/Rectangle\"\n ]\n )\n " + "predicate": "\n FunctionCall fc:\n function is [Function:\n name == \"FindClass\"\n and enclosingClass.supers contains [Class:\n name == \"JNIEnv_\"\n ]\n ]\n and (\n /* Interal APIs */\n arguments[0].constantValue matches \".*/internal/.*\"\n /* Hidden APIs */\n or arguments[0].constantValue is [String v:\n v == \"android/net/wifi/ActionListener\"\n or v == \"android/net/wifi/TxPacketCountListener\"\n or v == \"android/net/wifi/LocalOnlyHotspotSubscription\"\n or v == \"android/net/wifi/LocalOnlyHotspotObserver\"\n or v == \"android/net/wifi/WifiScanner\"\n or v == \"android/net/wifi/ActionListener\"\n or v == \"android/net/wifi/HiddenNetwork\"\n or v == \"android/net/wifi/PnoSettings\"\n or v == \"android/net/wifi/PnoNetwork\"\n or v == \"android/net/wifi/PnoScanListener\"\n or v == \"android/net/wifi/WifiChangeSettings\"\n or v == \"android/net/wifi/HotlistSettings\"\n or v == \"android/net/wifi/OperationResult\"\n or v == \"android/net/wifi/RssiPacketCountInfo\"\n or v == \"android/net/wifi/WifiWakeReasonAndCounts\"\n or v == \"android/net/wifi/RttManager\"\n or v == \"android/net/wifi/RttClient\"\n or v == \"android/net/wifi/WifiNetworkScoreCache\"\n or v == \"android/net/wifi/aware/WifiAwareNetworkSpecifier\"\n or v == \"android/net/wifi/aware/WifiAwareUtils\"\n or v == \"android/net/wifi/aware/TlvBufferUtils\"\n or v == \"android/net/wifi/aware/WifiAwareAgentNetworkSpecifier\"\n or v == \"android/net/wifi/aware/ConfigRequest\"\n or v == \"android/net/wifi/ParcelUtil\"\n or v == \"android/net/wifi/WifiSsid\"\n or v == \"android/net/wifi/WifiNetworkConnectionStatistics\"\n or v == \"android/net/wifi/BatchedScanResult\"\n or v == \"android/net/wifi/WifiLinkLayerStats\"\n or v == \"android/net/wifi/EAPConstants\"\n or v == \"android/net/wifi/SupplicantSaver\"\n or v == \"android/net/wifi/SupplicantLoader\"\n or v == \"android/net/wifi/PasspointManagementObjectDefinition\"\n or v == \"android/net/wifi/Visibility\"\n or v == \"android/net/wifi/NetworkSelectionStatus\"\n or v == \"android/net/wifi/RecentFailure\"\n or v == \"android/net/wifi/WifiConnectionStatistics\"\n or v == \"android/net/wifi/WifiActivityEnergyInfo\"\n or v == \"android/net/wifi/p2p/WifiP2pWfdInfo\"\n or v == \"android/net/wifi/p2p/PersistentGroupInfoListener\"\n or v == \"android/net/wifi/p2p/HandoverMessageListener\"\n or v == \"android/net/wifi/p2p/WifiP2pProvDiscEvent\"\n or v == \"android/net/wifi/p2p/WifiP2pGroupList\"\n or v == \"android/net/wifi/p2p/nsd/WifiP2pServiceResponse\"\n or v == \"android/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse\"\n or v == \"android/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse\"\n or v == \"android/net/wifi/WifiChannel\"\n or v == \"android/net/wifi/hotspot2/omadm/XMLNode\"\n or v == \"android/net/wifi/hotspot2/omadm/XMLParser\"\n or v == \"android/net/wifi/hotspot2/OsuProvider\"\n or v == \"android/net/wifi/hotspot2/pps/UpdateParameter\"\n or v == \"android/net/wifi/hotspot2/pps/Policy\"\n or v == \"android/net/wifi/ScanSettings\"\n or v == \"android/net/wifi/WpsResult\"\n or v == \"android/net/wifi/InformationElement\"\n or v == \"android/net/wifi/AnqpInformationElement\"\n or v == \"android/drm/DrmOutputStream\"\n or v == \"junit/framework/ComparisonCompactor\"\n or v == \"com/google/vr/platform/DeviceInfo\"\n or v == \"com/google/vr/platform/Dvr\"\n or v == \"org/apache/http/conn/ssl/AndroidDistinguishedNameParser\"\n or v == \"android/metrics/LogMaker\"\n or v == \"android/metrics/MetricsReader\"\n or v == \"android/metrics/Event\"\n or v == \"android/metrics/LogReader\"\n or v == \"android/database/CursorWindowAllocationException\"\n or v == \"android/database/BulkCursorDescriptor\"\n or v == \"android/database/BulkCursorNative\"\n or v == \"android/database/sqlite/SQLiteDebug\"\n or v == \"android/database/sqlite/SQLiteStatementInfo\"\n or v == \"android/database/sqlite/SQLiteDirectCursorDriver\"\n or v == \"android/database/sqlite/SQLiteGlobal\"\n or v == \"android/database/sqlite/CustomFunction\"\n or v == \"android/database/sqlite/SQLiteDatabaseConfiguration\"\n or v == \"android/database/sqlite/SQLiteCustomFunction\"\n or v == \"android/database/sqlite/SQLiteSession\"\n or v == \"android/database/sqlite/DatabaseObjectNotClosedException\"\n or v == \"android/database/sqlite/SQLiteConnectionPool\"\n or v == \"android/database/sqlite/SQLiteConnection\"\n or v == \"android/database/CursorToBulkCursorAdaptor\"\n or v == \"android/database/IBulkCursor\"\n or v == \"android/database/BulkCursorToCursorAdaptor\"\n or v == \"android/transition/AnimationInfo\"\n or v == \"android/transition/ChangeText\"\n or v == \"android/transition/Rotate\"\n or v == \"android/transition/Crossfade\"\n or v == \"android/transition/TransitionUtils\"\n or v == \"android/transition/Recolor\"\n or v == \"android/webkit/JsDialogHelper\"\n or v == \"android/webkit/WebViewFactory\"\n or v == \"android/webkit/TokenBindingService\"\n or v == \"android/webkit/WebViewDelegate\"\n or v == \"android/webkit/WebViewProviderInfo\"\n or v == \"android/webkit/UrlInterceptRegistry\"\n or v == \"android/webkit/Plugin\"\n or v == \"android/webkit/DefaultClickHandler\"\n or v == \"android/webkit/WebViewUpdateService\"\n or v == \"android/webkit/UrlInterceptHandler\"\n or v == \"android/webkit/WebViewProvider\"\n or v == \"android/webkit/PrivateAccess\"\n or v == \"android/webkit/ResultReceiver\"\n or v == \"android/webkit/WebViewProviderResponse\"\n or v == \"android/webkit/WebViewZygote\"\n or v == \"android/webkit/WebViewFactoryProvider\"\n or v == \"android/webkit/PluginList\"\n or v == \"android/webkit/FindAddress\"\n or v == \"android/webkit/FindActionModeCallback\"\n or v == \"android/webkit/PluginData\"\n or v == \"android/webkit/UserPackage\"\n or v == \"android/webkit/LegacyErrorStrings\"\n or v == \"android/printservice/recommendation/RecommendationInfo\"\n or v == \"android/printservice/recommendation/RecommendationService\"\n or v == \"android/printservice/PrintServiceInfo\"\n or v == \"android/hardware/SerialPort\"\n or v == \"android/hardware/soundtrigger/SoundTrigger\"\n or v == \"android/hardware/soundtrigger/KeyphraseEnrollmentInfo\"\n or v == \"android/hardware/soundtrigger/SoundTriggerModule\"\n or v == \"android/hardware/soundtrigger/KeyphraseMetadata\"\n or v == \"android/hardware/radio/RadioManager\"\n or v == \"android/hardware/radio/RadioMetadata\"\n or v == \"android/hardware/radio/Clock\"\n or v == \"android/hardware/radio/ProgramSelector\"\n or v == \"android/hardware/radio/RadioTuner\"\n or v == \"android/hardware/fingerprint/EnrollmentCallback\"\n or v == \"android/hardware/fingerprint/RemovalCallback\"\n or v == \"android/hardware/fingerprint/EnumerateCallback\"\n or v == \"android/hardware/fingerprint/LockoutResetCallback\"\n or v == \"android/hardware/fingerprint/Fingerprint\"\n or v == \"android/hardware/SystemSensorManager\"\n or v == \"android/hardware/input/InputDeviceIdentifier\"\n or v == \"android/hardware/input/TouchCalibration\"\n or v == \"android/hardware/input/OnTabletModeChangedListener\"\n or v == \"android/hardware/input/KeyboardLayout\"\n or v == \"android/hardware/input/InputManagerInternal\"\n or v == \"android/hardware/CameraStatus\"\n or v == \"android/hardware/location/GeofenceHardwareRequestParcelable\"\n or v == \"android/hardware/location/NanoApp\"\n or v == \"android/hardware/location/GeofenceHardwareRequest\"\n or v == \"android/hardware/location/ActivityRecognitionEvent\"\n or v == \"android/hardware/location/GeofenceHardwareCallback\"\n or v == \"android/hardware/location/GeofenceHardwareService\"\n or v == \"android/hardware/location/ContextHubInfo\"\n or v == \"android/hardware/location/NanoAppFilter\"\n or v == \"android/hardware/location/NanoAppInstanceInfo\"\n or v == \"android/hardware/location/ActivityRecognitionHardware\"\n or v == \"android/hardware/location/GeofenceHardwareMonitorEvent\"\n or v == \"android/hardware/location/GeofenceHardware\"\n or v == \"android/hardware/location/GeofenceHardwareImpl\"\n or v == \"android/hardware/location/GeofenceHardwareMonitorCallback\"\n or v == \"android/hardware/location/ContextHubMessage\"\n or v == \"android/hardware/location/ActivityChangedEvent\"\n or v == \"android/hardware/location/ContextHubManager\"\n or v == \"android/hardware/location/ICallback\"\n or v == \"android/hardware/location/MemoryRegion\"\n or v == \"android/hardware/hdmi/HdmiClient\"\n or v == \"android/hardware/hdmi/HdmiControlManager\"\n or v == \"android/hardware/hdmi/HdmiTimerRecordSources\"\n or v == \"android/hardware/hdmi/TimeUnit\"\n or v == \"android/hardware/hdmi/Time\"\n or v == \"android/hardware/hdmi/Duration\"\n or v == \"android/hardware/hdmi/TimerInfo\"\n or v == \"android/hardware/hdmi/TimerRecordSource\"\n or v == \"android/hardware/hdmi/HdmiTvClient\"\n or v == \"android/hardware/hdmi/HdmiHotplugEvent\"\n or v == \"android/hardware/hdmi/HdmiRecordSources\"\n or v == \"android/hardware/hdmi/RecordSource\"\n or v == \"android/hardware/hdmi/OwnSource\"\n or v == \"android/hardware/hdmi/AribData\"\n or v == \"android/hardware/hdmi/AtscData\"\n or v == \"android/hardware/hdmi/DvbData\"\n or v == \"android/hardware/hdmi/DigitalChannelData\"\n or v == \"android/hardware/hdmi/DigitalServiceSource\"\n or v == \"android/hardware/hdmi/AnalogueServiceSource\"\n or v == \"android/hardware/hdmi/ExternalPlugData\"\n or v == \"android/hardware/hdmi/ExternalPhysicalAddress\"\n or v == \"android/hardware/hdmi/HdmiPlaybackClient\"\n or v == \"android/hardware/hdmi/HdmiDeviceInfo\"\n or v == \"android/hardware/hdmi/HdmiRecordListener\"\n or v == \"android/hardware/hdmi/TimerStatusData\"\n or v == \"android/hardware/hdmi/HdmiPortInfo\"\n or v == \"android/hardware/usb/UsbPortStatus\"\n or v == \"android/hardware/usb/UsbPort\"\n or v == \"android/hardware/display/DisplayManagerInternal\"\n or v == \"android/hardware/display/DisplayManagerGlobal\"\n or v == \"android/hardware/display/WifiDisplayStatus\"\n or v == \"android/hardware/display/WifiDisplaySessionInfo\"\n or v == \"android/hardware/display/DisplayViewport\"\n or v == \"android/hardware/display/WifiDisplay\"\n or v == \"android/hardware/SerialManager\"\n or v == \"android/hardware/CameraInfo\"\n or v == \"android/hardware/LegacySensorManager\"\n or v == \"android/hardware/camera2/impl/ICameraDeviceUserWrapper\"\n or v == \"android/hardware/camera2/impl/CaptureResultExtras\"\n or v == \"android/hardware/camera2/utils/LongParcelable\"\n or v == \"android/hardware/camera2/utils/UncheckedThrow\"\n or v == \"android/hardware/camera2/utils/SubmitInfo\"\n or v == \"android/hardware/camera2/params/StreamConfigurationDuration\"\n or v == \"android/hardware/camera2/params/ReprocessFormatsMap\"\n or v == \"android/hardware/camera2/params/HighSpeedVideoConfiguration\"\n or v == \"android/hardware/camera2/params/VendorTagDescriptorCache\"\n or v == \"android/hardware/camera2/params/VendorTagDescriptor\"\n or v == \"android/hardware/camera2/params/StreamConfiguration\"\n or v == \"android/net/NetworkStatsHistory\"\n or v == \"android/net/metrics/RaEvent\"\n or v == \"android/net/metrics/DefaultNetworkEvent\"\n or v == \"android/net/metrics/WakeupEvent\"\n or v == \"android/net/metrics/ConnectStats\"\n or v == \"android/net/metrics/IpConnectivityLog\"\n or v == \"android/net/metrics/DhcpClientEvent\"\n or v == \"android/net/metrics/DnsEvent\"\n or v == \"android/net/metrics/ValidationProbeEvent\"\n or v == \"android/net/metrics/NetworkMetrics\"\n or v == \"android/net/metrics/DhcpErrorEvent\"\n or v == \"android/net/metrics/IpManagerEvent\"\n or v == \"android/net/metrics/IpReachabilityEvent\"\n or v == \"android/net/metrics/WakeupStats\"\n or v == \"android/net/metrics/ApfProgramEvent\"\n or v == \"android/net/metrics/ApfStats\"\n or v == \"android/net/metrics/NetworkEvent\"\n or v == \"android/net/Status\"\n or v == \"android/net/PacketKeepaliveCallback\"\n or v == \"android/net/PacketKeepalive\"\n or v == \"android/net/OnStartTetheringCallback\"\n or v == \"android/net/Errors\"\n or v == \"android/net/TooManyRequestsException\"\n or v == \"android/net/DataUsageRequest\"\n or v == \"android/net/IpConfiguration\"\n or v == \"android/net/InterfaceConfiguration\"\n or v == \"android/net/SntpClient\"\n or v == \"android/net/IpSecTransformResponse\"\n or v == \"android/net/ScoredNetwork\"\n or v == \"android/net/NetworkKey\"\n or v == \"android/net/NetworkIdentity\"\n or v == \"android/net/NetworkPolicy\"\n or v == \"android/net/NetworkUtils\"\n or v == \"android/net/DhcpResults\"\n or v == \"android/net/StaticIpConfiguration\"\n or v == \"android/net/MatchAllNetworkSpecifier\"\n or v == \"android/net/NetworkPolicyManager\"\n or v == \"android/net/NetworkScoreManager\"\n or v == \"android/net/StringNetworkSpecifier\"\n or v == \"android/net/MobileLinkQualityInfo\"\n or v == \"android/net/LinkQualityInfo\"\n or v == \"android/net/NetworkConfig\"\n or v == \"android/net/NetworkStats\"\n or v == \"android/net/RssiCurve\"\n or v == \"android/net/PacProxySelector\"\n or v == \"android/net/EthernetManager\"\n or v == \"android/net/UidRange\"\n or v == \"android/net/IpSecSpiResponse\"\n or v == \"android/net/NetworkTemplate\"\n or v == \"android/net/NetworkState\"\n or v == \"android/net/WifiLinkQualityInfo\"\n or v == \"android/net/NetworkQuotaInfo\"\n or v == \"android/net/WifiKey\"\n or v == \"android/net/wimax/WimaxManagerConstants\"\n or v == \"android/net/NetworkMisc\"\n or v == \"android/net/ConnectivityMetricsEvent\"\n or v == \"android/net/ConnectivityThread\"\n or v == \"android/net/NetworkAgent\"\n or v == \"android/net/IpSecUdpEncapResponse\"\n or v == \"android/net/CompareResult\"\n or v == \"android/net/IpSecConfig\"\n or v == \"android/net/NetworkRecommendationProvider\"\n or v == \"android/net/NetworkScorerAppData\"\n or v == \"android/net/nsd/DnsSdTxtRecord\"\n or v == \"android/net/NetworkFactory\"\n or v == \"android/app/ActivityManagerNative\"\n or v == \"android/app/BackStackRecord\"\n or v == \"android/app/PackageInstallObserver\"\n or v == \"android/app/LoadedApk\"\n or v == \"android/app/StackId\"\n or v == \"android/app/TaskThumbnailInfo\"\n or v == \"android/app/TaskThumbnail\"\n or v == \"android/app/TaskSnapshot\"\n or v == \"android/app/StackInfo\"\n or v == \"android/app/OnUidImportanceListener\"\n or v == \"android/app/assist/AutofillOverlay\"\n or v == \"android/app/TranslucentConversionListener\"\n or v == \"android/app/ActivityManagerInternal\"\n or v == \"android/app/ApplicationPackageManager\"\n or v == \"android/app/MoveCallbackDelegate\"\n or v == \"android/app/WaitResult\"\n or v == \"android/app/UiAutomationConnection\"\n or v == \"android/app/timezone/RulesManager\"\n or v == \"android/app/timezone/RulesState\"\n or v == \"android/app/timezone/Callback\"\n or v == \"android/app/timezone/DistroFormatVersion\"\n or v == \"android/app/timezone/DistroRulesVersion\"\n or v == \"android/app/timezone/RulesUpdaterContract\"\n or v == \"android/app/VrManager\"\n or v == \"android/app/ActivityView\"\n or v == \"android/app/ActivityThread\"\n or v == \"android/app/ContentProviderHolder\"\n or v == \"android/app/BroadcastOptions\"\n or v == \"android/app/JobSchedulerImpl\"\n or v == \"android/app/ResultInfo\"\n or v == \"android/app/TvExtender\"\n or v == \"android/app/UserSwitchObserver\"\n or v == \"android/app/admin/PasswordMetrics\"\n or v == \"android/app/admin/PolicyInfo\"\n or v == \"android/app/admin/DevicePolicyManagerInternal\"\n or v == \"android/app/ResourcesManager\"\n or v == \"android/app/PackageOps\"\n or v == \"android/app/OpEntry\"\n or v == \"android/app/OnOpChangedInternalListener\"\n or v == \"android/app/QueuedWork\"\n or v == \"android/app/ServiceStartArgs\"\n or v == \"android/app/usage/TimeSparseArray\"\n or v == \"android/app/usage/UsageStatsManagerInternal\"\n or v == \"android/app/usage/CacheQuotaService\"\n or v == \"android/app/usage/CacheQuotaHint\"\n or v == \"android/app/TaskStackListener\"\n or v == \"android/app/AppGlobals\"\n or v == \"android/app/StatusBarManager\"\n or v == \"android/app/OnMarshaledListener\"\n or v == \"android/app/ApplicationThreadConstants\"\n or v == \"android/app/EphemeralResolverService\"\n or v == \"android/app/ParcelableCrashInfo\"\n or v == \"android/app/job/JobHandler\"\n or v == \"android/app/Vr2dDisplayProperties\"\n or v == \"android/app/ProfilerInfo\"\n or v == \"android/app/trust/TrustManager\"\n or v == \"android/app/SearchDialog\"\n or v == \"android/app/InstantAppResolverService\"\n or v == \"android/app/OnActivityPausedListener\"\n or v == \"android/app/ActionKeyInfo\"\n or v == \"android/app/backup/BackupHelperDispatcher\"\n or v == \"android/app/backup/BackupManagerMonitor\"\n or v == \"android/app/backup/RestoreDescription\"\n or v == \"android/app/backup/SelectBackupTransportCallback\"\n or v == \"android/app/backup/BackupProgress\"\n or v == \"android/app/backup/AbsoluteFileBackupHelper\"\n or v == \"android/app/backup/FullBackup\"\n or v == \"android/app/backup/RestoreSession\"\n or v == \"android/app/backup/RestoreSet\"\n or v == \"android/app/backup/BlobBackupHelper\"\n or v == \"android/app/backup/BackupObserver\"\n or v == \"android/app/backup/WallpaperBackupHelper\"\n or v == \"android/app/backup/BackupTransport\"\n or v == \"android/app/SynchronousUserSwitchObserver\"\n or v == \"android/app/RecoverableSecurityException\"\n or v == \"android/app/LocalDialog\"\n or v == \"android/app/ApplicationLoaders\"\n or v == \"android/app/PackageDeleteObserver\"\n or v == \"android/app/OnAnimationStartedListener\"\n or v == \"android/app/OnAnimationFinishedListener\"\n or v == \"android/app/VrStateCallback\"\n or v == \"android/widget/SuggestionsAdapter\"\n or v == \"android/widget/DropDownListView\"\n or v == \"android/widget/ActionMenuChildView\"\n or v == \"android/widget/AppSecurityPermissions\"\n or v == \"android/widget/MyPermissionGroupInfo\"\n or v == \"android/widget/MyPermissionInfo\"\n or v == \"android/widget/PermissionItemView\"\n or v == \"android/widget/RadialTimePickerView\"\n or v == \"android/widget/Editor\"\n or v == \"android/widget/RemoteViewsAdapter\"\n or v == \"android/widget/RemoteViewsListAdapter\"\n or v == \"android/widget/MenuItemHoverListener\"\n or v == \"android/widget/MenuPopupWindow\"\n or v == \"android/widget/MenuDropDownListView\"\n or v == \"android/widget/CustomEditText\"\n or v == \"android/widget/TextInputTimePickerView\"\n or v == \"android/widget/ScrollBarDrawable\"\n or v == \"android/widget/SearchAutoComplete\"\n or v == \"android/widget/ActivityChooserView\"\n or v == \"android/widget/ActionMenuPresenter\"\n or v == \"android/widget/DatePickerDelegate\"\n or v == \"android/widget/ValidationCallback\"\n or v == \"android/widget/OnClickHandler\"\n or v == \"android/widget/OnViewAppliedListener\"\n or v == \"android/widget/ForwardingListener\"\n or v == \"android/widget/DateTimeView\"\n or v == \"android/widget/DatePickerController\"\n or v == \"android/widget/TextViewMetrics\"\n or v == \"android/widget/Delayer\"\n or v == \"android/widget/ActivityChooserModel\"\n or v == \"android/widget/SpellChecker\"\n or v == \"android/util/MergedConfiguration\"\n or v == \"android/util/PackageUtils\"\n or v == \"android/util/Spline\"\n or v == \"android/util/LocalLog\"\n or v == \"android/util/apk/ApkSignatureSchemeV2Verifier\"\n or v == \"android/util/proto/ProtoParseException\"\n or v == \"android/util/proto/EncodedBuffer\"\n or v == \"android/util/SuperNotCalledException\"\n or v == \"android/util/BackupUtils\"\n or v == \"android/util/Singleton\"\n or v == \"android/util/jar/StrictJarFile\"\n or v == \"android/util/jar/ZipInflaterInputStream\"\n or v == \"android/util/jar/FDStream\"\n or v == \"android/util/jar/StrictJarManifest\"\n or v == \"android/util/Pools\"\n or v == \"android/util/PrefixPrinter\"\n or v == \"android/util/PathParser\"\n or v == \"android/util/LongArray\"\n or v == \"android/util/MathUtils\"\n or v == \"android/util/FastImmutableArraySet\"\n or v == \"android/util/IntArray\"\n or v == \"android/util/ExceptionUtils\"\n or v == \"android/util/MemoryIntArray\"\n or v == \"android/util/DayOfMonthCursor\"\n or v == \"android/util/TrustedTime\"\n or v == \"android/util/ByteStringUtils\"\n or v == \"android/util/TerribleFailure\"\n or v == \"android/util/TerribleFailureHandler\"\n or v == \"android/util/NtpTrustedTime\"\n or v == \"android/util/TimingsTraceLog\"\n or v == \"android/util/IconDrawableFactory\"\n or v == \"android/util/LongSparseLongArray\"\n or v == \"android/util/RecurrenceRule\"\n or v == \"android/util/Slog\"\n or v == \"android/util/LauncherIcons\"\n or v == \"android/util/LogWriter\"\n or v == \"android/util/MapCollections\"\n or v == \"android/util/TimedRemoteCaller\"\n or v == \"android/util/KeyValueListParser\"\n or v == \"android/security/net/config/ApplicationConfig\"\n or v == \"android/security/net/config/ConfigSource\"\n or v == \"android/security/net/config/UserCertificateSource\"\n or v == \"android/security/net/config/CertificatesEntryRef\"\n or v == \"android/security/net/config/SystemCertificateSource\"\n or v == \"android/security/net/config/NetworkSecurityConfig\"\n or v == \"android/security/net/config/Builder\"\n or v == \"android/security/net/config/TrustAnchor\"\n or v == \"android/security/net/config/NetworkSecurityTrustManager\"\n or v == \"android/security/net/config/XmlConfigSource\"\n or v == \"android/security/net/config/Pin\"\n or v == \"android/security/net/config/ResourceCertificateSource\"\n or v == \"android/security/net/config/RootTrustManager\"\n or v == \"android/security/net/config/ManifestConfigSource\"\n or v == \"android/security/net/config/DirectoryCertificateSource\"\n or v == \"android/security/net/config/CertificateSource\"\n or v == \"android/security/net/config/PinSet\"\n or v == \"android/security/net/config/ConfigNetworkSecurityPolicy\"\n or v == \"android/security/net/config/TrustedCertificateStoreAdapter\"\n or v == \"android/security/net/config/RootTrustManagerFactorySpi\"\n or v == \"android/security/net/config/NetworkSecurityConfigProvider\"\n or v == \"android/security/net/config/Domain\"\n or v == \"android/security/keymaster/KeyCharacteristics\"\n or v == \"android/security/keymaster/KeymasterArguments\"\n or v == \"android/security/keymaster/KeyAttestationApplicationId\"\n or v == \"android/security/keymaster/ExportResult\"\n or v == \"android/security/keymaster/KeymasterDefs\"\n or v == \"android/security/keymaster/KeymasterCertificateChain\"\n or v == \"android/security/keymaster/KeymasterDateArgument\"\n or v == \"android/security/keymaster/KeymasterBooleanArgument\"\n or v == \"android/security/keymaster/KeymasterArgument\"\n or v == \"android/security/keymaster/KeymasterBlob\"\n or v == \"android/security/keymaster/OperationResult\"\n or v == \"android/security/keymaster/KeymasterBlobArgument\"\n or v == \"android/security/keymaster/KeyAttestationPackageInfo\"\n or v == \"android/security/keymaster/KeymasterIntArgument\"\n or v == \"android/security/keymaster/KeymasterLongArgument\"\n or v == \"android/security/FrameworkNetworkSecurityPolicy\"\n or v == \"android/security/KeystoreArguments\"\n or v == \"android/inputmethodservice/CompactExtractEditLayout\"\n or v == \"android/inputmethodservice/SoftInputWindow\"\n or v == \"android/inputmethodservice/ExtractEditLayout\"\n or v == \"android/provider/Presence\"\n or v == \"android/provider/SearchIndexableData\"\n or v == \"android/provider/SearchIndexablesContract\"\n or v == \"android/provider/SearchIndexablesProvider\"\n or v == \"android/provider/SyncConstValue\"\n or v == \"android/provider/OneTimeUseBuilder\"\n or v == \"android/provider/BrowserContract\"\n or v == \"android/provider/BaseSyncColumns\"\n or v == \"android/provider/ChromeSyncColumns\"\n or v == \"android/provider/SyncColumns\"\n or v == \"android/provider/ImageColumns\"\n or v == \"android/provider/Accounts\"\n or v == \"android/provider/Searches\"\n or v == \"android/provider/SyncState\"\n or v == \"android/provider/Combined\"\n or v == \"android/provider/Settings\"\n or v == \"android/provider/SettingsStringUtil\"\n or v == \"android/provider/Impl\"\n or v == \"android/provider/SearchIndexableResource\"\n or v == \"android/provider/MetadataReader\"\n or v == \"android/provider/Authorization\"\n or v == \"android/provider/SyncStateColumns\"\n or v == \"android/provider/PhotoFiles\"\n or v == \"android/provider/PhotoFilesColumns\"\n or v == \"android/provider/MetadataSyncColumns\"\n or v == \"android/provider/MetadataSync\"\n or v == \"android/provider/MetadataSyncStateColumns\"\n or v == \"android/provider/MetadataSyncState\"\n or v == \"android/provider/Validator\"\n or v == \"android/provider/Bookmarks\"\n or v == \"android/provider/TimeZoneRulesDataContract\"\n or v == \"android/provider/ContactsInternal\"\n or v == \"android/provider/CalendarMetaDataColumns\"\n or v == \"android/provider/CalendarMetaData\"\n or v == \"android/provider/EventsRawTimesColumns\"\n or v == \"android/provider/EventsRawTimes\"\n or v == \"android/provider/SystemContract\"\n or v == \"android/animation/AnimationHandler\"\n or v == \"android/animation/AnimationFrameCallbackProvider\"\n or v == \"android/animation/Tuple\"\n or v == \"android/animation/RevealAnimator\"\n or v == \"android/animation/KeyframeSet\"\n or v == \"android/animation/PropertyValues\"\n or v == \"android/animation/Keyframes\"\n or v == \"android/animation/PathKeyframes\"\n or v == \"android/content/pm/MacAuthenticatedInputStream\"\n or v == \"android/content/pm/InstantAppInfo\"\n or v == \"android/content/pm/split/SplitAssetDependencyLoader\"\n or v == \"android/content/pm/split/SplitAssetLoader\"\n or v == \"android/content/pm/split/DefaultSplitAssetLoader\"\n or v == \"android/content/pm/split/SplitDependencyLoader\"\n or v == \"android/content/pm/KeySet\"\n or v == \"android/content/pm/StringParceledListSlice\"\n or v == \"android/content/pm/VerifierInfo\"\n or v == \"android/content/pm/InstantAppRequest\"\n or v == \"android/content/pm/PackageBackwardCompatibility\"\n or v == \"android/content/pm/PackageManagerInternal\"\n or v == \"android/content/pm/InstantAppResolveInfo\"\n or v == \"android/content/pm/InstantAppDigest\"\n or v == \"android/content/pm/BaseParceledListSlice\"\n or v == \"android/content/pm/IntentFilterVerificationInfo\"\n or v == \"android/content/pm/OnPermissionsChangedListener\"\n or v == \"android/content/pm/MoveCallback\"\n or v == \"android/content/pm/LegacyPackageInstallObserver\"\n or v == \"android/content/pm/LegacyPackageDeleteObserver\"\n or v == \"android/content/pm/DexModuleRegisterCallback\"\n or v == \"android/content/pm/AppsQueryHelper\"\n or v == \"android/content/pm/FallbackCategoryProvider\"\n or v == \"android/content/pm/LimitedLengthInputStream\"\n or v == \"android/content/pm/VerificationParams\"\n or v == \"android/content/pm/PackageInfoLite\"\n or v == \"android/content/pm/PackageUserState\"\n or v == \"android/content/pm/SessionCallbackDelegate\"\n or v == \"android/content/pm/AuxiliaryResolveInfo\"\n or v == \"android/content/pm/RegisteredServicesCache\"\n or v == \"android/content/pm/InstantAppIntentFilter\"\n or v == \"android/content/pm/UserInfo\"\n or v == \"android/content/pm/PackageCleanItem\"\n or v == \"android/content/pm/XmlSerializerAndParser\"\n or v == \"android/content/pm/ParceledListSlice\"\n or v == \"android/content/pm/VerifierDeviceIdentity\"\n or v == \"android/content/pm/EphemeralResolveInfo\"\n or v == \"android/content/pm/EphemeralDigest\"\n or v == \"android/content/pm/EphemeralIntentFilter\"\n or v == \"android/content/pm/SELinuxUtil\"\n or v == \"android/content/pm/PackageParserCacheHelper\"\n or v == \"android/content/pm/permission/RuntimePermissionPresenter\"\n or v == \"android/content/pm/permission/RuntimePermissionPresentationInfo\"\n or v == \"android/content/pm/RegisteredServicesCacheListener\"\n or v == \"android/content/pm/PackageParser\"\n or v == \"android/content/pm/NewPermissionInfo\"\n or v == \"android/content/pm/SplitPermissionInfo\"\n or v == \"android/content/pm/ParseComponentArgs\"\n or v == \"android/content/pm/ShortcutServiceInternal\"\n or v == \"android/content/res/ResourcesKey\"\n or v == \"android/content/res/GradientColor\"\n or v == \"android/content/res/ComplexColor\"\n or v == \"android/content/res/ConfigurationBoundResourceCache\"\n or v == \"android/content/res/StringBlock\"\n or v == \"android/content/res/ResourceId\"\n or v == \"android/content/res/ResourcesImpl\"\n or v == \"android/content/res/CompatResources\"\n or v == \"android/content/res/ConstantState\"\n or v == \"android/content/res/XmlBlock\"\n or v == \"android/content/res/FontResourcesParser\"\n or v == \"android/content/res/CompatibilityInfo\"\n or v == \"android/content/res/Translator\"\n or v == \"android/content/OpenResourceIdResult\"\n or v == \"android/content/Transport\"\n or v == \"android/content/ContentInsertHandler\"\n or v == \"android/content/DefaultDataHandler\"\n or v == \"android/content/SyncActivityTooManyDeletes\"\n or v == \"android/content/DatabaseHelper\"\n or v == \"android/content/om/OverlayInfo\"\n or v == \"android/content/SyncStatusInfo\"\n or v == \"android/content/UndoOwner\"\n or v == \"android/content/CursorEntityIterator\"\n or v == \"android/content/ContentProviderNative\"\n or v == \"android/content/IContentProvider\"\n or v == \"android/content/SyncAdaptersCache\"\n or v == \"android/content/UndoManager\"\n or v == \"android/content/UndoOperation\"\n or v == \"android/content/CommandOptionHandler\"\n or v == \"android/print/PrintServiceRecommendationsLoader\"\n or v == \"android/print/PrintJobStateChangeListener\"\n or v == \"android/print/PrintServicesChangeListener\"\n or v == \"android/print/PrintServiceRecommendationsChangeListener\"\n or v == \"android/print/PrintDocumentAdapterDelegate\"\n or v == \"android/print/PrintJobStateChangeListenerWrapper\"\n or v == \"android/print/PrintServicesChangeListenerWrapper\"\n or v == \"android/print/PrintServiceRecommendationsChangeListenerWrapper\"\n or v == \"android/print/PrintFileDocumentAdapter\"\n or v == \"android/print/PrintServicesLoader\"\n or v == \"android/print/PrinterDiscoverySession\"\n or v == \"android/speech/tts/TtsEngines\"\n or v == \"android/preference/SeekBarVolumizer\"\n or v == \"android/preference/SeekBarDialogPreference\"\n or v == \"android/preference/MultiCheckPreference\"\n or v == \"android/preference/OnPreferenceTreeClickListener\"\n or v == \"android/preference/SeekBarPreference\"\n or v == \"android/preference/VolumePreference\"\n or v == \"android/preference/GenericInflater\"\n or v == \"android/preference/PreferenceGroupAdapter\"\n or v == \"android/preference/PreferenceFrameLayout\"\n or v == \"android/permissionpresenterservice/RuntimePermissionPresenterService\"\n or v == \"android/accounts/ChooseAccountTypeActivity\"\n or v == \"android/accounts/GrantCredentialsPermissionActivity\"\n or v == \"android/accounts/ChooseTypeAndAccountActivity\"\n or v == \"android/accounts/AccountManagerInternal\"\n or v == \"android/accounts/AccountManagerResponse\"\n or v == \"android/accounts/AccountAndUser\"\n or v == \"android/accounts/CantAddAccountActivity\"\n or v == \"android/accounts/ChooseAccountActivity\"\n or v == \"android/appwidget/PendingHostUpdate\"\n or v == \"android/nfc/dta/NfcDta\"\n or v == \"android/nfc/BeamShareData\"\n or v == \"android/nfc/cardemulation/ApduServiceInfo\"\n or v == \"android/nfc/cardemulation/AidGroup\"\n or v == \"android/nfc/cardemulation/NfcFServiceInfo\"\n or v == \"android/nfc/NfcUnlockHandler\"\n or v == \"android/nfc/NfcActivityManager\"\n or v == \"android/nfc/TechListParcel\"\n or v == \"android/nfc/ApduList\"\n or v == \"android/nfc/ErrorCodes\"\n or v == \"android/nfc/TransceiveResult\"\n or v == \"android/bluetooth/BluetoothCodecStatus\"\n or v == \"android/bluetooth/SdpRecord\"\n or v == \"android/bluetooth/BluetoothActivityEnergyInfo\"\n or v == \"android/bluetooth/SdpOppOpsRecord\"\n or v == \"android/bluetooth/SdpSapsRecord\"\n or v == \"android/bluetooth/BluetoothUuid\"\n or v == \"android/bluetooth/BluetoothA2dpSink\"\n or v == \"android/bluetooth/BluetoothHeadsetClientCall\"\n or v == \"android/bluetooth/BluetoothHeadsetClient\"\n or v == \"android/bluetooth/BluetoothAvrcpController\"\n or v == \"android/bluetooth/BluetoothPbapClient\"\n or v == \"android/bluetooth/BluetoothMapClient\"\n or v == \"android/bluetooth/UidTraffic\"\n or v == \"android/bluetooth/le/PeriodicAdvertisingManager\"\n or v == \"android/bluetooth/le/PeriodicAdvertisingReport\"\n or v == \"android/bluetooth/le/TruncatedFilter\"\n or v == \"android/bluetooth/le/BluetoothLeUtils\"\n or v == \"android/bluetooth/le/PeriodicAdvertisingCallback\"\n or v == \"android/bluetooth/le/ResultStorageDescriptor\"\n or v == \"android/bluetooth/BluetoothStateChangeCallback\"\n or v == \"android/bluetooth/StateChangeCallbackWrapper\"\n or v == \"android/bluetooth/BluetoothPan\"\n or v == \"android/bluetooth/BluetoothGattIncludedService\"\n or v == \"android/bluetooth/BluetoothAvrcp\"\n or v == \"android/bluetooth/BluetoothAvrcpPlayerSettings\"\n or v == \"android/bluetooth/BluetoothSap\"\n or v == \"android/bluetooth/BluetoothMasInstance\"\n or v == \"android/bluetooth/BluetoothDevicePicker\"\n or v == \"android/bluetooth/BluetoothHidHost\"\n or v == \"android/bluetooth/BluetoothCodecConfig\"\n or v == \"android/bluetooth/SdpMasRecord\"\n or v == \"android/bluetooth/BluetoothPbap\"\n or v == \"android/bluetooth/BluetoothAudioConfig\"\n or v == \"android/bluetooth/BluetoothMap\"\n or v == \"android/bluetooth/SdpPseRecord\"\n or v == \"android/bluetooth/SdpMnsRecord\"\n or v == \"android/bluetooth/OobData\"\n or v == \"android/view/InputFilter\"\n or v == \"android/view/HandlerActionQueue\"\n or v == \"android/view/WindowInfo\"\n or v == \"android/view/inputmethod/FinishedInputEventCallback\"\n or v == \"android/view/inputmethod/InputMethodSubtypeArray\"\n or v == \"android/view/inputmethod/InputMethodManagerInternal\"\n or v == \"android/view/inputmethod/SparseRectFArray\"\n or v == \"android/view/inputmethod/SparseRectFArrayBuilder\"\n or v == \"android/view/inputmethod/InputConnectionInspector\"\n or v == \"android/view/WindowManagerInternal\"\n or v == \"android/view/SurfaceControl\"\n or v == \"android/view/ViewHierarchyEncoder\"\n or v == \"android/view/OnWindowDismissedCallback\"\n or v == \"android/view/OnWindowSwipeDismissedCallback\"\n or v == \"android/view/WindowControllerCallback\"\n or v == \"android/view/InputChannel\"\n or v == \"android/view/InputEventReceiver\"\n or v == \"android/view/OnWindowShownListener\"\n or v == \"android/view/InternalInsetsInfo\"\n or v == \"android/view/OnComputeInternalInsetsListener\"\n or v == \"android/view/OnEnterAnimationCompleteListener\"\n or v == \"android/view/WindowManagerGlobal\"\n or v == \"android/view/textclassifier/TextClassifierConstants\"\n or v == \"android/view/textclassifier/TextClassifierImpl\"\n or v == \"android/view/textclassifier/LinksInfo\"\n or v == \"android/view/textclassifier/EntityConfidence\"\n or v == \"android/view/InputEventSender\"\n or v == \"android/view/FrameInfo\"\n or v == \"android/view/ViewRootImpl\"\n or v == \"android/view/RenderNode\"\n or v == \"android/view/animation/TranslateYAnimation\"\n or v == \"android/view/animation/ClipRectAnimation\"\n or v == \"android/view/animation/TranslateXAnimation\"\n or v == \"android/view/autofill/AutofillPopupWindow\"\n or v == \"android/view/autofill/Helper\"\n or v == \"android/view/autofill/AutofillClient\"\n or v == \"android/view/autofill/ParcelableMap\"\n or v == \"android/view/autofill/AutofillManagerInternal\"\n or v == \"android/view/RecordingCanvas\"\n or v == \"android/view/ThreadedRenderer\"\n or v == \"android/view/DisplayEventReceiver\"\n or v == \"android/view/GhostView\"\n or v == \"android/view/NotificationHeaderView\"\n or v == \"android/view/RenderNodeAnimator\"\n or v == \"android/view/WindowManagerPolicy\"\n or v == \"android/view/FinishedInputEventCallback\"\n or v == \"android/view/WindowCallbackWrapper\"\n or v == \"android/view/FallbackAction\"\n or v == \"android/view/DisplayAdjustments\"\n or v == \"android/view/AppTransitionAnimationSpec\"\n or v == \"android/view/InputEventConsistencyVerifier\"\n or v == \"android/view/KeyboardShortcutsReceiver\"\n or v == \"android/view/FallbackEventHandler\"\n or v == \"android/view/ViewReplaceRunnable\"\n or v == \"android/view/WindowCallbacks\"\n or v == \"android/view/WindowManagerImpl\"\n or v == \"android/view/RenderNodeAnimatorSetHelper\"\n or v == \"android/view/MagnificationSpec\"\n or v == \"android/view/DisplayListCanvas\"\n or v == \"android/view/accessibility/AccessibilityServicesStateChangeListener\"\n or v == \"android/view/accessibility/HighTextContrastChangeListener\"\n or v == \"android/view/accessibility/AccessibilityInteractionClient\"\n or v == \"android/view/accessibility/AccessibilityCache\"\n or v == \"android/view/Estimator\"\n or v == \"android/view/HierarchyHandler\"\n or v == \"android/view/DisplayInfo\"\n or v == \"android/view/HardwareLayer\"\n or v == \"android/view/SurfaceSession\"\n or v == \"android/view/BatchedInputEventReceiver\"\n or v == \"android/view/FrameMetricsObserver\"\n or v == \"android/view/FocusFinderHelper\"\n or v == \"android/view/AccessibilityIterators\"\n or v == \"android/view/TextSegmentIterator\"\n or v == \"android/view/AbstractTextSegmentIterator\"\n or v == \"android/view/SubUiVisibilityListener\"\n or v == \"android/accessibilityservice/CapabilityInfo\"\n or v == \"android/accessibilityservice/TouchPoint\"\n or v == \"android/accessibilityservice/GestureStep\"\n or v == \"android/accessibilityservice/MotionEventGenerator\"\n or v == \"android/accessibilityservice/Callbacks\"\n or v == \"android/accessibilityservice/IAccessibilityServiceClientWrapper\"\n or v == \"android/os/MyReadMapCallback\"\n or v == \"android/os/SynchronousResultReceiver\"\n or v == \"android/os/BatteryProperty\"\n or v == \"android/os/NoImagePreloadHolder\"\n or v == \"android/os/IHwInterface\"\n or v == \"android/os/PerformanceCollector\"\n or v == \"android/os/SystemVibrator\"\n or v == \"android/os/IServiceManager\"\n or v == \"android/os/HidlSupport\"\n or v == \"android/os/ServiceSpecificException\"\n or v == \"android/os/UserEnvironment\"\n or v == \"android/os/AsyncResult\"\n or v == \"android/os/PowerSaveState\"\n or v == \"android/os/Broadcaster\"\n or v == \"android/os/FactoryTest\"\n or v == \"android/os/HwParcel\"\n or v == \"android/os/IHwBinder\"\n or v == \"android/os/ParcelableException\"\n or v == \"android/os/ShellCommand\"\n or v == \"android/os/ServiceManager\"\n or v == \"android/os/ServiceNotFoundException\"\n or v == \"android/os/ProcessStartResult\"\n or v == \"android/os/SELinux\"\n or v == \"android/os/ReadWriteHelper\"\n or v == \"android/os/NoneVibrator\"\n or v == \"android/os/VintfObject\"\n or v == \"android/os/BatteryProperties\"\n or v == \"android/os/HwBinder\"\n or v == \"android/os/HwRemoteBinder\"\n or v == \"android/os/GraphicsEnvironment\"\n or v == \"android/os/ShellCallback\"\n or v == \"android/os/IncidentManager\"\n or v == \"android/os/FileUtils\"\n or v == \"android/os/health/HealthStatsWriter\"\n or v == \"android/os/health/HealthKeys\"\n or v == \"android/os/health/Constants\"\n or v == \"android/os/health/HealthStatsParceler\"\n or v == \"android/os/ParcelableParcel\"\n or v == \"android/os/PowerManagerInternal\"\n or v == \"android/os/Temperature\"\n or v == \"android/os/BatteryStats\"\n or v == \"android/os/ZygoteProcess\"\n or v == \"android/os/ViolationListener\"\n or v == \"android/os/StrictModeViolation\"\n or v == \"android/os/StrictModeNetworkViolation\"\n or v == \"android/os/StrictModeDiskReadViolation\"\n or v == \"android/os/StrictModeDiskWriteViolation\"\n or v == \"android/os/StrictModeCustomViolation\"\n or v == \"android/os/StrictModeResourceMismatchViolation\"\n or v == \"android/os/StrictModeUnbufferedIOViolation\"\n or v == \"android/os/Span\"\n or v == \"android/os/ViolationInfo\"\n or v == \"android/os/storage/StorageManagerInternal\"\n or v == \"android/os/storage/StorageResultCode\"\n or v == \"android/os/storage/VolumeRecord\"\n or v == \"android/os/storage/DiskInfo\"\n or v == \"android/os/storage/VolumeInfo\"\n or v == \"android/os/storage/StorageEventListener\"\n or v == \"android/os/SystemProperties\"\n or v == \"android/os/RemoteCallback\"\n or v == \"android/os/Registrant\"\n or v == \"android/os/RevocableFileDescriptor\"\n or v == \"android/os/UEventObserver\"\n or v == \"android/os/ServiceManagerNative\"\n or v == \"android/os/UpdateEngine\"\n or v == \"android/os/BatteryManagerInternal\"\n or v == \"android/os/UpdateLock\"\n or v == \"android/os/OneShot\"\n or v == \"android/os/Waveform\"\n or v == \"android/os/Prebaked\"\n or v == \"android/os/EnforcingUser\"\n or v == \"android/os/PooledStringReader\"\n or v == \"android/os/CommonClock\"\n or v == \"android/os/IncidentReportArgs\"\n or v == \"android/os/RemoteMailException\"\n or v == \"android/os/CommonTimeConfig\"\n or v == \"android/os/RegistrantList\"\n or v == \"android/os/HwBlob\"\n or v == \"android/os/FileBridge\"\n or v == \"android/os/UserManagerInternal\"\n or v == \"android/os/SystemService\"\n or v == \"android/os/Seccomp\"\n or v == \"android/os/VintfRuntimeInfo\"\n or v == \"android/os/UpdateEngineCallback\"\n or v == \"android/os/TransactionTracker\"\n or v == \"android/os/ConfigUpdate\"\n or v == \"android/os/PooledStringWriter\"\n or v == \"android/text/FontConfig\"\n or v == \"android/text/TextLine\"\n or v == \"android/text/PackedIntVector\"\n or v == \"android/text/PositionIterator\"\n or v == \"android/text/style/AccessibilityClickableSpan\"\n or v == \"android/text/style/SuggestionRangeSpan\"\n or v == \"android/text/style/AccessibilityURLSpan\"\n or v == \"android/text/style/SpellCheckSpan\"\n or v == \"android/text/MeasuredText\"\n or v == \"android/text/AndroidBidi\"\n or v == \"android/text/SpanSet\"\n or v == \"android/text/format/BytesResult\"\n or v == \"android/text/CharSequenceCharacterIterator\"\n or v == \"android/text/Hyphenator\"\n or v == \"android/text/Emoji\"\n or v == \"android/text/GraphicsOperations\"\n or v == \"android/text/method/TransformationMethod2\"\n or v == \"android/text/method/WordIterator\"\n or v == \"android/text/method/AllCapsTransformationMethod\"\n or v == \"android/service/oemlock/OemLockManager\"\n or v == \"android/service/notification/SnoozeCriterion\"\n or v == \"android/service/notification/NotificationRankingUpdate\"\n or v == \"android/service/notification/Adjustment\"\n or v == \"android/service/notification/NotificationListenerWrapper\"\n or v == \"android/service/notification/NotificationAssistantService\"\n or v == \"android/service/notification/ZenModeConfig\"\n or v == \"android/service/gatekeeper/GateKeeperResponse\"\n or v == \"android/service/euicc/GetDownloadableSubscriptionMetadataResult\"\n or v == \"android/service/euicc/GetDefaultDownloadableSubscriptionListResult\"\n or v == \"android/service/euicc/EuiccProfileInfo\"\n or v == \"android/service/euicc/GetEuiccProfileInfoListResult\"\n or v == \"android/service/euicc/EuiccService\"\n or v == \"android/service/autofill/OptionalValidators\"\n or v == \"android/service/autofill/InternalValidator\"\n or v == \"android/service/autofill/RequiredValidators\"\n or v == \"android/service/autofill/AutofillServiceInfo\"\n or v == \"android/service/autofill/ValueFinder\"\n or v == \"android/service/autofill/InternalTransformation\"\n or v == \"android/service/voice/SoundTriggerListener\"\n or v == \"android/service/voice/VoiceInteractionServiceInfo\"\n or v == \"android/service/voice/VoiceInteractionManagerInternal\"\n or v == \"android/service/persistentdata/PersistentDataBlockManager\"\n or v == \"android/service/wallpaper/WallpaperSettingsActivity\"\n or v == \"android/service/trust/TrustAgentService\"\n or v == \"android/service/dreams/Sandman\"\n or v == \"android/service/dreams/DreamManagerInternal\"\n or v == \"android/service/carrier/ICarrierServiceWrapper\"\n or v == \"android/service/carrier/MatchType\"\n or v == \"android/service/resolver/ResolverRankerService\"\n or v == \"android/service/resolver/ResolverTarget\"\n or v == \"android/companion/BluetoothDeviceFilterUtils\"\n or v == \"com/android/server/AppWidgetBackupBridge\"\n or v == \"com/android/server/net/BaseNetworkObserver\"\n or v == \"com/android/server/net/NetlinkTracker\"\n or v == \"com/android/server/WidgetBackupProvider\"\n or v == \"com/android/server/LocalServices\"\n or v == \"android/security/KeyStoreException\"\n or v == \"android/security/keystore/AndroidKeyStoreBCWorkaroundProvider\"\n or v == \"android/security/keystore/AndroidKeyStoreHmacSpi\"\n or v == \"android/security/keystore/AndroidKeyStoreCipherSpiBase\"\n or v == \"android/security/keystore/AndroidKeyStorePublicKey\"\n or v == \"android/security/keystore/AndroidKeyStoreSecretKey\"\n or v == \"android/security/keystore/AndroidKeyStoreECPrivateKey\"\n or v == \"android/security/keystore/AndroidKeyStoreKeyGeneratorSpi\"\n or v == \"android/security/keystore/KeyStoreCryptoOperationChunkedStreamer\"\n or v == \"android/security/keystore/Purpose\"\n or v == \"android/security/keystore/KeyAlgorithm\"\n or v == \"android/security/keystore/BlockMode\"\n or v == \"android/security/keystore/EncryptionPadding\"\n or v == \"android/security/keystore/Digest\"\n or v == \"android/security/keystore/Origin\"\n or v == \"android/security/keystore/DeviceIdAttestationException\"\n or v == \"android/security/keystore/ArrayUtils\"\n or v == \"android/security/keystore/AndroidKeyStoreRSASignatureSpi\"\n or v == \"android/security/keystore/Utils\"\n or v == \"android/security/keystore/AndroidKeyStoreSignatureSpiBase\"\n or v == \"android/security/keystore/AndroidKeyStoreRSAPrivateKey\"\n or v == \"android/security/keystore/AndroidKeyStoreRSACipherSpi\"\n or v == \"android/security/keystore/AndroidKeyStoreECDSASignatureSpi\"\n or v == \"android/security/keystore/AndroidKeyStoreKeyFactorySpi\"\n or v == \"android/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi\"\n or v == \"android/security/keystore/AndroidKeyStoreKeyPairGeneratorSpi\"\n or v == \"android/security/keystore/AndroidKeyStoreSpi\"\n or v == \"android/security/keystore/KeyStoreCryptoOperationUtils\"\n or v == \"android/security/keystore/AttestationUtils\"\n or v == \"android/security/keystore/KeyStoreCryptoOperation\"\n or v == \"android/security/keystore/KeymasterUtils\"\n or v == \"android/security/keystore/AndroidKeyStoreRSAPublicKey\"\n or v == \"android/security/keystore/KeyStoreConnectException\"\n or v == \"android/security/keystore/AndroidKeyStoreECPublicKey\"\n or v == \"android/security/keystore/AndroidKeyStoreKey\"\n or v == \"android/security/keystore/AndroidKeyStoreUnauthenticatedAESCipherSpi\"\n or v == \"android/security/keystore/AndroidKeyStorePrivateKey\"\n or v == \"android/security/keystore/KeyStoreCryptoOperationStreamer\"\n or v == \"android/security/keystore/AndroidKeyStoreProvider\"\n or v == \"android/security/keystore/AndroidKeyStoreSecretKeyFactorySpi\"\n or v == \"android/security/Credentials\"\n or v == \"android/security/KeyChainConnection\"\n or v == \"android/security/GateKeeper\"\n or v == \"android/security/SystemKeyStore\"\n or v == \"android/security/KeyStore\"\n or v == \"android/net/lowpan/Builder\"\n or v == \"android/net/lowpan/LowpanProperty\"\n or v == \"android/net/lowpan/LowpanProperties\"\n or v == \"android/net/lowpan/LowpanStandardProperty\"\n or v == \"android/location/GpsMeasurementsEvent\"\n or v == \"android/location/Listener\"\n or v == \"android/location/LocalListenerHelper\"\n or v == \"android/location/Country\"\n or v == \"android/location/GpsNavigationMessage\"\n or v == \"android/location/GpsClock\"\n or v == \"android/location/GeocoderParams\"\n or v == \"android/location/FusedBatchOptions\"\n or v == \"android/location/GpsNavigationMessageEvent\"\n or v == \"android/location/Listener\"\n or v == \"android/location/BatchedLocationCallback\"\n or v == \"android/location/CountryListener\"\n or v == \"android/location/CountryDetector\"\n or v == \"android/location/Geofence\"\n or v == \"android/location/BatchedLocationCallbackTransport\"\n or v == \"android/location/GnssMeasurementCallbackTransport\"\n or v == \"android/location/LocationRequest\"\n or v == \"android/location/GpsMeasurement\"\n or v == \"android/location/GnssNavigationMessageCallbackTransport\"\n or v == \"javax/obex/HeaderSet\"\n or v == \"javax/obex/BaseStream\"\n or v == \"javax/obex/ClientOperation\"\n or v == \"javax/obex/ServerSession\"\n or v == \"javax/obex/Operation\"\n or v == \"javax/obex/PrivateInputStream\"\n or v == \"javax/obex/PrivateOutputStream\"\n or v == \"javax/obex/ClientSession\"\n or v == \"javax/obex/SessionNotifier\"\n or v == \"javax/obex/ApplicationParameter\"\n or v == \"javax/obex/ServerOperation\"\n or v == \"javax/obex/Authenticator\"\n or v == \"javax/obex/ResponseCodes\"\n or v == \"javax/obex/ObexHelper\"\n or v == \"javax/obex/PasswordAuthentication\"\n or v == \"javax/obex/ObexTransport\"\n or v == \"javax/obex/ServerRequestHandler\"\n or v == \"javax/obex/ObexSession\"\n or v == \"android/net/util/PacketReaderTest\"\n or v == \"android/net/util/ConnectivityPacketSummaryTest\"\n or v == \"android/testing/LayoutInflaterBuilder\"\n or v == \"androidx/media/filterfw/GLToolbox\"\n or v == \"android/security/net/config/TestCertificateSource\"\n or v == \"android/security/net/config/TestConfigSource\"\n or v == \"com/android/uiautomator/core/Tracer\"\n or v == \"com/android/uiautomator/core/AccessibilityNodeInfoDumper\"\n or v == \"com/android/uiautomator/core/UiAutomatorBridge\"\n or v == \"com/android/uiautomator/testrunner/UiAutomatorTestCaseFilter\"\n or v == \"com/android/uiautomator/testrunner/TestCaseCollector\"\n or v == \"com/android/uiautomator/testrunner/UiAutomatorTestRunner\"\n or v == \"com/android/uiautomator/core/ShellUiAutomatorBridge\"\n or v == \"com/android/uiautomator/core/UiAutomationShellWrapper\"\n or v == \"com/android/uiautomator/core/InstrumentationUiAutomatorBridge\"\n or v == \"android/renderscript/ProgramRaster\"\n or v == \"android/renderscript/ProgramVertex\"\n or v == \"android/renderscript/Builder\"\n or v == \"android/renderscript/ProgramFragmentFixedFunction\"\n or v == \"android/renderscript/RenderScriptGL\"\n or v == \"android/renderscript/FileA3D\"\n or v == \"android/renderscript/ProgramVertexFixedFunction\"\n or v == \"android/renderscript/ProgramFragment\"\n or v == \"android/renderscript/Font\"\n or v == \"android/renderscript/RSTextureView\"\n or v == \"android/renderscript/RSSurfaceView\"\n or v == \"android/renderscript/Program\"\n or v == \"android/renderscript/ProgramStore\"\n or v == \"android/renderscript/Mesh\"\n or v == \"android/renderscript/RenderScriptCacheDir\"\n or v == \"android/telephony/ClientRequestStats\"\n or v == \"android/telephony/TelephonyHistogram\"\n or v == \"android/telephony/ModemActivityInfo\"\n or v == \"android/telephony/PreciseDisconnectCause\"\n or v == \"android/telephony/cdma/CdmaSmsCbProgramData\"\n or v == \"android/telephony/cdma/CdmaSmsCbProgramResults\"\n or v == \"android/telephony/PreciseCallState\"\n or v == \"android/telephony/SubscriptionPlan\"\n or v == \"android/telephony/VoLteServiceState\"\n or v == \"android/telephony/DisconnectCause\"\n or v == \"android/telephony/UiccAccessRule\"\n or v == \"android/telephony/euicc/EuiccManager\"\n or v == \"android/telephony/euicc/DownloadableSubscription\"\n or v == \"android/telephony/RadioAccessFamily\"\n or v == \"android/telephony/PcoData\"\n or v == \"android/telephony/Builder\"\n or v == \"android/telephony/WifiCallingChoices\"\n or v == \"android/telephony/ims/ImsService\"\n or v == \"android/telephony/ims/stub/ImsCallSessionListenerImplBase\"\n or v == \"android/telephony/ims/feature/ImsFeature\"\n or v == \"android/telephony/CdmaBands\"\n or v == \"android/telephony/UssdResponse\"\n or v == \"android/telephony/PreciseDataConnectionState\"\n or v == \"android/provider/CarrierColumns\"\n or v == \"android/provider/WordsTable\"\n or v == \"android/provider/CellBroadcasts\"\n or v == \"android/provider/CarrierIdentification\"\n or v == \"android/telephony/data/InterfaceAddress\"\n or v == \"android/telephony/data/DataCallResponse\"\n or v == \"android/telephony/data/DataProfile\"\n or v == \"android/telephony/Rlog\"\n or v == \"android/telephony/ImsiEncryptionInfo\"\n or v == \"android/telephony/mbms/InternalStreamingSessionCallback\"\n or v == \"android/telephony/mbms/MbmsTempFileProvider\"\n or v == \"android/telephony/mbms/OpaqueDataContainer\"\n or v == \"android/telephony/mbms/InternalDownloadSessionCallback\"\n or v == \"android/telephony/mbms/InternalStreamingServiceCallback\"\n or v == \"android/telephony/mbms/UriPathPair\"\n or v == \"android/telephony/mbms/InternalDownloadStateCallback\"\n or v == \"android/telephony/mbms/MbmsUtils\"\n or v == \"android/telephony/mbms/vendor/MbmsDownloadServiceBase\"\n or v == \"android/telephony/mbms/vendor/MbmsStreamingServiceBase\"\n or v == \"android/telephony/mbms/vendor/VendorUtils\"\n or v == \"android/telephony/DataConnectionRealTimeInfo\"\n or v == \"android/telephony/SmsCbLocation\"\n or v == \"android/telephony/SmsCbEtwsInfo\"\n or v == \"android/telephony/SmsCbMessage\"\n or v == \"android/telephony/SmsCbCmasInfo\"\n or v == \"com/android/ims/ImsStreamMediaProfile\"\n or v == \"com/android/ims/ImsReasonInfo\"\n or v == \"com/android/ims/ImsCallForwardInfo\"\n or v == \"com/android/ims/ImsExternalCallState\"\n or v == \"com/android/ims/ImsConfig\"\n or v == \"com/android/ims/ImsException\"\n or v == \"com/android/ims/ImsCallProfile\"\n or v == \"com/android/ims/ImsSuppServiceNotification\"\n or v == \"com/android/ims/ImsUtInterface\"\n or v == \"com/android/ims/ImsConferenceState\"\n or v == \"com/android/ims/ImsSsInfo\"\n or v == \"com/android/ims/ImsSsData\"\n or v == \"com/android/settingslib/NetworkPolicyEditor\"\n or v == \"com/android/sharedstoragebackup/ObbBackupService\"\n or v == \"com/android/providers/settings/SettingsProtoDumpUtil\"\n or v == \"com/android/statementservice/retriever/AndroidPackageInfoFetcher\"\n or v == \"com/android/statementservice/retriever/URLFetcher\"\n or v == \"com/android/statementservice/retriever/WebContent\"\n or v == \"com/android/backupconfirm/BackupRestoreConfirmation\"\n or v == \"com/android/proxyhandler/ProxyServer\"\n or v == \"com/android/proxyhandler/SocketConnect\"\n or v == \"com/android/proxyhandler/ProxyService\"\n or v == \"com/android/pacprocessor/PacNative\"\n or v == \"com/android/systemui/media/NotificationPlayer\"\n or v == \"junit/runner/TestRunListener\"\n or v == \"junit/runner/StandardTestSuiteLoader\"\n or v == \"android/test/LaunchPerformanceBase\"\n or v == \"android/test/NoExecTestResult\"\n or v == \"android/test/ClassPathPackageInfoSource\"\n or v == \"android/test/TestPrinter\"\n or v == \"android/test/suitebuilder/UnitTestSuiteBuilder\"\n or v == \"android/test/suitebuilder/TestGrouping\"\n or v == \"android/test/suitebuilder/TestPredicates\"\n or v == \"android/test/suitebuilder/SmokeTestSuiteBuilder\"\n or v == \"android/test/TestCaseUtil\"\n or v == \"android/test/mock/MockIContentProvider\"\n or v == \"android/telecom/TimedEvent\"\n or v == \"android/telecom/DefaultDialerManager\"\n or v == \"android/telecom/ParcelableRttCall\"\n or v == \"android/telecom/AudioState\"\n or v == \"android/telecom/Phone\"\n or v == \"android/telecom/ParcelableCallAnalytics\"\n or v == \"android/telecom/VideoEvent\"\n or v == \"android/telecom/TelecomAnalytics\"\n or v == \"android/telecom/CallbackRecord\"\n or v == \"android/telecom/Response\"\n or v == \"android/telecom/VideoCallImpl\"\n or v == \"android/telecom/ConnectionServiceAdapter\"\n or v == \"android/telecom/Builder\"\n or v == \"android/telecom/RemoteConnectionService\"\n or v == \"android/telecom/AuthenticatorService\"\n or v == \"android/telecom/Listener\"\n or v == \"android/telecom/ConferenceParticipant\"\n or v == \"android/telecom/ParcelableConnection\"\n or v == \"android/telecom/ParcelableCall\"\n or v == \"android/telecom/Log\"\n or v == \"android/telecom/Listener\"\n or v == \"android/telecom/RttTextStream\"\n or v == \"android/telecom/RemoteConnectionManager\"\n or v == \"android/telecom/ParcelableConference\"\n or v == \"android/telecom/Voicemail\"\n or v == \"android/telecom/ConnectionServiceAdapterServant\"\n or v == \"android/telecom/VideoCallbackServant\"\n or v == \"android/telecom/Listener\"\n or v == \"android/telecom/Logging/TimedEvent\"\n or v == \"android/telecom/Logging/Runnable\"\n or v == \"android/telecom/Logging/Session\"\n or v == \"android/telecom/InCallAdapter\"\n or v == \"android/graphics/GraphicBuffer\"\n or v == \"android/graphics/CanvasProperty\"\n or v == \"android/graphics/drawable/AnimatedRotateDrawable\"\n or v == \"android/graphics/drawable/VectorDrawableAnimatorRT\"\n or v == \"android/graphics/drawable/DrawableInflater\"\n or v == \"android/graphics/Insets\"\n or v == \"android/graphics/BaseCanvas\"\n or v == \"android/graphics/pdf/PdfEditor\"\n or v == \"android/graphics/Renderer\"\n or v == \"android/graphics/LeakyTypefaceStorage\"\n or v == \"android/graphics/TemporaryBuffer\"\n or v == \"android/graphics/InsetStruct\"\n or v == \"android/graphics/LargeBitmap\"\n or v == \"android/graphics/FontListParser\"\n or v == \"android/graphics/FontFamily\"\n or v == \"android/graphics/TableMaskFilter\"\n or v == \"android/net/util/NetworkConstants\"\n or v == \"android/net/util/Stopwatch\"\n or v == \"android/net/util/PrefixUtils\"\n or v == \"android/net/util/NetdService\"\n or v == \"android/net/util/IpUtils\"\n or v == \"android/net/util/VersionedBroadcastListener\"\n or v == \"android/net/util/SharedLog\"\n or v == \"android/net/util/ConnectivityPacketSummary\"\n or v == \"android/net/util/MultinetworkPolicyTracker\"\n or v == \"android/net/util/PacketReader\"\n or v == \"android/net/netlink/StructNlMsgHdr\"\n or v == \"android/net/netlink/StructNdMsg\"\n or v == \"android/net/netlink/StructNlMsgErr\"\n or v == \"android/net/netlink/NetlinkSocket\"\n or v == \"android/net/netlink/StructNlAttr\"\n or v == \"android/net/netlink/NetlinkMessage\"\n or v == \"android/net/netlink/ConntrackMessage\"\n or v == \"android/net/netlink/StructNfGenMsg\"\n or v == \"android/net/netlink/StructNdaCacheInfo\"\n or v == \"android/net/netlink/NetlinkConstants\"\n or v == \"android/net/netlink/NetlinkErrorMessage\"\n or v == \"android/net/netlink/RtNetlinkNeighborMessage\"\n or v == \"android/net/apf/ApfGenerator\"\n or v == \"android/net/apf/ApfCapabilities\"\n or v == \"android/net/apf/ApfFilter\"\n or v == \"android/net/dhcp/DhcpClient\"\n or v == \"android/net/dhcp/DhcpPacket\"\n or v == \"android/net/ip/IpReachabilityMonitor\"\n or v == \"android/net/ip/InterfaceController\"\n or v == \"android/net/ip/IpClient\"\n or v == \"android/net/ip/IpNeighborMonitor\"\n or v == \"android/net/ip/RouterAdvertisementDaemon\"\n or v == \"android/net/ip/ConnectivityPacketTracker\"\n or v == \"com/android/server/pm/PackageManagerServiceUtils\"\n or v == \"com/android/server/pm/BackgroundDexOptService\"\n or v == \"com/android/server/pm/InstructionSets\"\n or v == \"com/android/server/pm/EphemeralResolverConnection\"\n or v == \"com/android/server/pm/SELinuxMMAC\"\n or v == \"com/android/server/pm/OtaDexoptService\"\n or v == \"com/android/server/pm/InstantAppResolver\"\n or v == \"com/android/server/pm/PackageManagerException\"\n or v == \"com/android/server/vr/SettingsObserver\"\n or v == \"com/android/server/vr/VrManagerInternal\"\n or v == \"com/android/server/vr/EnabledComponentsObserver\"\n or v == \"com/android/server/vr/VrManagerService\"\n or v == \"com/android/server/vr/VrStateListener\"\n or v == \"com/android/server/webkit/SystemInterface\"\n or v == \"com/android/server/webkit/WebViewUpdateService\"\n or v == \"com/android/server/webkit/SystemImpl\"\n or v == \"com/android/server/webkit/WebViewUpdateServiceImpl\"\n or v == \"com/android/server/net/NetworkPolicyManagerInternal\"\n or v == \"com/android/server/net/NetworkIdentitySet\"\n or v == \"com/android/server/fingerprint/FingerprintService\"\n or v == \"com/android/server/am/BackupRecord\"\n or v == \"com/android/server/GraphicsStatsService\"\n or v == \"com/android/server/connectivity/Vpn\"\n or v == \"com/android/server/connectivity/IpConnectivityMetrics\"\n or v == \"com/android/server/connectivity/tethering/TetheringConfiguration\"\n or v == \"com/android/server/connectivity/tethering/OffloadHardwareInterface\"\n or v == \"com/android/server/connectivity/tethering/OffloadController\"\n or v == \"com/android/server/connectivity/tethering/TetherInterfaceStateMachine\"\n or v == \"com/android/server/connectivity/tethering/UpstreamNetworkMonitor\"\n or v == \"com/android/server/connectivity/tethering/SimChangeListener\"\n or v == \"com/android/server/connectivity/tethering/IPv6TetheringCoordinator\"\n or v == \"com/android/server/connectivity/tethering/TetheringDependencies\"\n or v == \"com/android/server/connectivity/tethering/IControlsTethering\"\n or v == \"com/android/server/connectivity/PacManager\"\n or v == \"com/android/server/connectivity/NetworkMonitor\"\n or v == \"com/android/server/connectivity/CaptivePortalProbeResult\"\n or v == \"com/android/server/connectivity/IpConnectivityEventBuilder\"\n or v == \"com/android/server/connectivity/NetworkDiagnostics\"\n or v == \"com/android/server/connectivity/Tethering\"\n or v == \"com/android/server/connectivity/PermissionMonitor\"\n or v == \"com/android/server/connectivity/KeepalivePacketData\"\n or v == \"com/android/server/connectivity/DefaultNetworkMetrics\"\n or v == \"com/android/server/connectivity/Nat464Xlat\"\n or v == \"com/android/server/security/KeyAttestationApplicationIdProviderService\"\n or v == \"com/android/server/input/InputWindowHandle\"\n or v == \"com/android/server/input/InputApplicationHandle\"\n or v == \"com/android/server/notification/NotificationManagerService\"\n or v == \"com/android/server/notification/NotificationUsageStats\"\n or v == \"com/android/server/notification/RateEstimator\"\n or v == \"com/android/server/notification/AlertRateLimiter\"\n or v == \"com/android/server/notification/NotificationRecord\"\n or v == \"com/android/server/notification/ValidateNotificationPeople\"\n or v == \"com/android/server/notification/RankingReconsideration\"\n or v == \"com/android/server/camera/CameraServiceProxy\"\n or v == \"com/android/server/location/PassiveProvider\"\n or v == \"com/android/server/location/ActivityRecognitionProxy\"\n or v == \"com/android/server/location/CountryDetectorBase\"\n or v == \"com/android/server/location/GnssLocationProvider\"\n or v == \"com/android/server/location/ContextHubService\"\n or v == \"com/android/server/location/FusedProxy\"\n or v == \"com/android/server/location/GeofenceProxy\"\n or v == \"com/android/server/location/GnssNavigationMessageProvider\"\n or v == \"com/android/server/location/LocationProviderInterface\"\n or v == \"com/android/server/location/GpsXtraDownloader\"\n or v == \"com/android/server/location/FusedLocationHardwareSecure\"\n or v == \"com/android/server/location/FlpHardwareProvider\"\n or v == \"com/android/server/location/GnssMeasurementsProvider\"\n or v == \"com/android/server/location/LocationBasedCountryDetector\"\n or v == \"com/android/server/location/ComprehensiveCountryDetector\"\n or v == \"com/android/server/location/MockProvider\"\n or v == \"com/android/server/wm/WindowManagerService\"\n or v == \"com/android/server/wm/animation/ClipRectLRAnimation\"\n or v == \"com/android/server/wm/ViewServer\"\n or v == \"com/android/server/SystemServiceManager\"\n or v == \"com/android/server/content/SyncStorageEngine\"\n or v == \"com/android/server/content/SyncManager\"\n or v == \"com/android/server/content/ActiveSyncContext\"\n or v == \"com/android/server/content/ContentService\"\n or v == \"com/android/server/content/ObserverCall\"\n or v == \"com/android/server/content/ObserverNode\"\n or v == \"com/android/server/content/SyncOperation\"\n or v == \"com/android/server/utils/ManagedApplicationService\"\n or v == \"com/android/server/utils/PriorityDump\"\n or v == \"com/android/server/utils/PriorityDumper\"\n or v == \"com/android/server/NetworkManagementService\"\n or v == \"com/android/server/tv/TvInputHardwareManager\"\n or v == \"com/android/server/IpSecService\"\n or v == \"com/android/server/ConnectivityService\"\n or v == \"com/android/server/audio/MediaFocusControl\"\n or v == \"com/android/server/audio/FocusRequester\"\n or v == \"com/android/server/audio/AudioService\"\n or v == \"com/android/server/telecom/TelecomLoaderService\"\n or v == \"com/android/server/NetworkScorerAppManager\"\n or v == \"com/android/server/CountryDetectorService\"\n or v == \"com/android/server/accounts/AccountManagerService\"\n or v == \"com/android/server/accounts/IAccountAuthenticatorCache\"\n or v == \"com/android/server/job/JobSchedulerService\"\n or v == \"com/android/server/job/JobSchedulerInternal\"\n or v == \"com/android/server/job/controllers/JobStatus\"\n or v == \"com/android/server/RescueParty\"\n or v == \"com/android/server/NsdService\"\n or v == \"com/android/server/os/SchedulingPolicyService\"\n or v == \"com/android/server/SystemServerInitThreadPool\"\n or v == \"com/android/server/NetworkScoreService\"\n or v == \"com/android/server/locksettings/LockSettingsService\"\n or v == \"com/android/server/dreams/DreamManagerService\"\n or v == \"com/android/server/IntentResolver\"\n or v == \"com/android/server/GestureLauncherService\"\n or v == \"com/android/server/SystemService\"\n or v == \"com/android/server/NetworkManagementInternal\"\n or v == \"com/android/server/policy/keyguard/KeyguardStateMonitor\"\n or v == \"com/android/server/CommonTimeManagementService\"\n or v == \"com/android/server/soundtrigger/SoundTriggerService\"\n or v == \"com/android/server/soundtrigger/SoundTriggerHelper\"\n or v == \"com/android/server/soundtrigger/SoundTriggerDbHelper\"\n or v == \"com/android/server/voiceinteraction/DatabaseHelper\"\n or v == \"com/android/server/usb/descriptors/UsbTerminalTypes\"\n or v == \"com/android/server/usb/descriptors/tree/UsbDescriptorsEndpointNode\"\n or v == \"com/android/server/usb/descriptors/tree/UsbDescriptorsACInterfaceNode\"\n or v == \"com/android/server/usb/descriptors/tree/UsbDescriptorsTreeNode\"\n or v == \"com/android/server/usb/descriptors/tree/UsbDescriptorsTree\"\n or v == \"com/android/server/usb/descriptors/tree/UsbDescriptorsInterfaceNode\"\n or v == \"com/android/server/usb/descriptors/tree/UsbDescriptorsDeviceNode\"\n or v == \"com/android/server/usb/descriptors/tree/UsbDescriptorsConfigNode\"\n or v == \"com/android/server/usb/descriptors/UsbACAudioStreamEndpoint\"\n or v == \"com/android/server/usb/descriptors/UsbBinaryParser\"\n or v == \"com/android/server/usb/descriptors/Usb10ASFormatI\"\n or v == \"com/android/server/usb/descriptors/UsbACAudioControlEndpoint\"\n or v == \"com/android/server/usb/descriptors/UsbConfigDescriptor\"\n or v == \"com/android/server/usb/descriptors/Usb20ACMixerUnit\"\n or v == \"com/android/server/usb/descriptors/UsbMSMidiInputJack\"\n or v == \"com/android/server/usb/descriptors/Usb20ACInputTerminal\"\n or v == \"com/android/server/usb/descriptors/UsbACInterface\"\n or v == \"com/android/server/usb/descriptors/Usb10ACOutputTerminal\"\n or v == \"com/android/server/usb/descriptors/UsbDeviceDescriptor\"\n or v == \"com/android/server/usb/descriptors/Usb10ACHeader\"\n or v == \"com/android/server/usb/descriptors/UsbInterfaceAssoc\"\n or v == \"com/android/server/usb/descriptors/UsbHIDDescriptor\"\n or v == \"com/android/server/usb/descriptors/UsbMSMidiOutputJack\"\n or v == \"com/android/server/usb/descriptors/Usb20ASFormatI\"\n or v == \"com/android/server/usb/descriptors/Usb10ASFormatII\"\n or v == \"com/android/server/usb/descriptors/UsbMSMidiHeader\"\n or v == \"com/android/server/usb/descriptors/Usb20ASFormatIII\"\n or v == \"com/android/server/usb/descriptors/UsbACFeatureUnit\"\n or v == \"com/android/server/usb/descriptors/UsbASFormat\"\n or v == \"com/android/server/usb/descriptors/UsbACEndpoint\"\n or v == \"com/android/server/usb/descriptors/UsbUnknown\"\n or v == \"com/android/server/usb/descriptors/Usb20ACHeader\"\n or v == \"com/android/server/usb/descriptors/UsbInterfaceDescriptor\"\n or v == \"com/android/server/usb/descriptors/UsbDescriptor\"\n or v == \"com/android/server/usb/descriptors/UsbACSelectorUnit\"\n or v == \"com/android/server/usb/descriptors/UsbACHeaderInterface\"\n or v == \"com/android/server/usb/descriptors/UsbEndpointDescriptor\"\n or v == \"com/android/server/usb/descriptors/report/TextReportCanvas\"\n or v == \"com/android/server/usb/descriptors/report/Reporting\"\n or v == \"com/android/server/usb/descriptors/report/ReportCanvas\"\n or v == \"com/android/server/usb/descriptors/report/UsbStrings\"\n or v == \"com/android/server/usb/descriptors/report/HTMLReportCanvas\"\n or v == \"com/android/server/usb/descriptors/Usb10ACInputTerminal\"\n or v == \"com/android/server/usb/descriptors/UsbDescriptorParser\"\n or v == \"com/android/server/usb/descriptors/Usb10ASGeneral\"\n or v == \"com/android/server/usb/descriptors/ByteStream\"\n or v == \"com/android/server/usb/descriptors/UsbACMidiEndpoint\"\n or v == \"com/android/server/usb/descriptors/Usb20ASFormatIIEx\"\n or v == \"com/android/server/usb/descriptors/Usb10ACMixerUnit\"\n or v == \"com/android/server/usb/descriptors/Usb20ASFormatII\"\n or v == \"com/android/server/usb/descriptors/Usb20ACOutputTerminal\"\n or v == \"com/android/server/usb/descriptors/UsbACTerminal\"\n or v == \"com/android/server/usb/descriptors/UsbACInterfaceUnparsed\"\n or v == \"com/android/server/accessibility/TouchExplorer\"\n or v == \"com/android/server/coverage/CoverageService\"\n or v == \"com/android/server/companion/CompanionDeviceManagerService\"\n or v == \"android/opengl/GLWallpaperService\"\n or v == \"android/mtp/MtpDatabase\"\n or v == \"android/mtp/MtpServer\"\n or v == \"android/mtp/MtpStorage\"\n or v == \"android/media/PlayerProxy\"\n or v == \"android/media/MediaScanner\"\n or v == \"android/media/MediaTimeProvider\"\n or v == \"android/media/OnMediaTimeListener\"\n or v == \"android/media/soundtrigger/SoundTriggerDetector\"\n or v == \"android/media/soundtrigger/RecognitionCallback\"\n or v == \"android/media/soundtrigger/SoundTriggerManager\"\n or v == \"android/media/audiofx/OnParameterChangeListener\"\n or v == \"android/media/audiofx/Settings\"\n or v == \"android/media/audiofx/OnServerDiedListener\"\n or v == \"android/media/audiofx/OnParameterChangeListener\"\n or v == \"android/media/MediaFile\"\n or v == \"android/media/PlayerDeathMonitor\"\n or v == \"android/media/RemoteDisplay\"\n or v == \"android/media/AudioPort\"\n or v == \"android/media/SRTRenderer\"\n or v == \"android/media/MiniThumbFile\"\n or v == \"android/media/midi/MidiDeviceServer\"\n or v == \"android/media/TtmlRenderer\"\n or v == \"android/media/TtmlUtils\"\n or v == \"android/media/TtmlCue\"\n or v == \"android/media/TtmlNode\"\n or v == \"android/media/TtmlParser\"\n or v == \"android/media/TtmlNodeListener\"\n or v == \"android/media/TtmlTrack\"\n or v == \"android/media/TtmlRenderingWidget\"\n or v == \"android/media/audiopolicy/AudioPolicyConfig\"\n or v == \"android/media/audiopolicy/AudioMixingRule\"\n or v == \"android/media/audiopolicy/AudioMix\"\n or v == \"android/media/audiopolicy/AudioPolicy\"\n or v == \"android/media/Callback\"\n or v == \"android/media/MediaHTTPConnection\"\n or v == \"android/media/DecoderCapabilities\"\n or v == \"android/media/OnSubtitleDataListener\"\n or v == \"android/media/TimeProvider\"\n or v == \"android/media/MediaHTTPService\"\n or v == \"android/media/AudioManagerInternal\"\n or v == \"android/media/MediaScannerClient\"\n or v == \"android/media/SubtitleTrack\"\n or v == \"android/media/CueList\"\n or v == \"android/media/Cue\"\n or v == \"android/media/Run\"\n or v == \"android/media/VolumePolicy\"\n or v == \"android/media/tv/ProgramColumns\"\n or v == \"android/media/tv/PreviewProgramColumns\"\n or v == \"android/media/tv/WatchedPrograms\"\n or v == \"android/media/tv/TvStreamConfig\"\n or v == \"android/media/tv/TvInputSettings\"\n or v == \"android/media/tv/ITvInputSessionWrapper\"\n or v == \"android/media/tv/DvbDeviceInfo\"\n or v == \"android/media/tv/TvInputHardwareInfo\"\n or v == \"android/media/tv/SessionCallback\"\n or v == \"android/media/tv/HardwareCallback\"\n or v == \"android/media/tv/Session\"\n or v == \"android/media/tv/FinishedInputEventCallback\"\n or v == \"android/media/tv/Hardware\"\n or v == \"android/media/tv/TvContentRatingSystemInfo\"\n or v == \"android/media/BufferingParams\"\n or v == \"android/media/Cea708CaptionRenderer\"\n or v == \"android/media/Cea708CaptionTrack\"\n or v == \"android/media/Cea708CCParser\"\n or v == \"android/media/Const\"\n or v == \"android/media/CaptionColor\"\n or v == \"android/media/CaptionEvent\"\n or v == \"android/media/CaptionPenAttr\"\n or v == \"android/media/CaptionPenColor\"\n or v == \"android/media/CaptionPenLocation\"\n or v == \"android/media/CaptionWindowAttr\"\n or v == \"android/media/CaptionWindow\"\n or v == \"android/media/Cea708CCWidget\"\n or v == \"android/media/ScaledLayout\"\n or v == \"android/media/ScaledLayoutParams\"\n or v == \"android/media/CCLayout\"\n or v == \"android/media/CCHandler\"\n or v == \"android/media/CCWindowLayout\"\n or v == \"android/media/CCView\"\n or v == \"android/media/EncoderCapabilities\"\n or v == \"android/media/AudioFocusInfo\"\n or v == \"android/media/AudioGainConfig\"\n or v == \"android/media/RemoteDisplayState\"\n or v == \"android/media/AudioGain\"\n or v == \"android/media/AmrInputStream\"\n or v == \"android/media/ExternalRingtonesCursorWrapper\"\n or v == \"android/media/WebVttRenderer\"\n or v == \"android/media/TextTrackCueSpan\"\n or v == \"android/media/UnstyledTextExtractor\"\n or v == \"android/media/Tokenizer\"\n or v == \"android/media/TextTrackRegion\"\n or v == \"android/media/TextTrackCue\"\n or v == \"android/media/WebVttParser\"\n or v == \"android/media/WebVttCueListener\"\n or v == \"android/media/WebVttTrack\"\n or v == \"android/media/WebVttRenderingWidget\"\n or v == \"android/media/SubtitleController\"\n or v == \"android/media/AudioSystem\"\n or v == \"android/media/Metadata\"\n or v == \"android/media/AudioRoutesInfo\"\n or v == \"android/media/PlayerBase\"\n or v == \"android/media/CharPos\"\n or v == \"android/media/Justification\"\n or v == \"android/media/Style\"\n or v == \"android/media/Font\"\n or v == \"android/media/Karaoke\"\n or v == \"android/media/HyperText\"\n or v == \"android/media/browse/MediaBrowserUtils\"\n or v == \"android/media/Builder\"\n or v == \"android/media/State\"\n or v == \"android/media/MediaInserter\"\n or v == \"android/media/ClosedCaptionRenderer\"\n or v == \"android/media/Cea608CaptionTrack\"\n or v == \"android/media/ClosedCaptionWidget\"\n or v == \"android/media/ClosedCaptionLayout\"\n or v == \"android/media/Cea608CCParser\"\n or v == \"android/media/MutableBackgroundColorSpan\"\n or v == \"android/media/Cea608CCWidget\"\n or v == \"android/media/MediaRouterClientState\"\n or v == \"android/media/ResampleInputStream\"\n or v == \"android/media/OnAudioPortUpdateListener\"\n or v == \"android/media/CertificateRequest\"\n or v == \"android/media/Certificate\"\n or v == \"android/media/AudioPatch\"\n or v == \"android/media/MediaImage\"\n or v == \"android/media/SubtitleData\"\n or v == \"android/media/projection/Callback\"\n or v == \"android/media/projection/CallbackDelegate\"\n or v == \"android/media/projection/MediaProjectionInfo\"\n or v == \"android/media/session/OnVolumeKeyLongPressListener\"\n or v == \"android/media/session/OnMediaKeyListener\"\n or v == \"android/media/session/Callback\"\n or v == \"android/media/session/MediaSessionLegacyHelper\"\n or v == \"android/media/session/ParcelableVolumeInfo\"\n or v == \"android/media/session/CallbackStub\"\n or v == \"android/media/effect/FilterEffect\"\n or v == \"android/media/effect/FilterGraphEffect\"\n or v == \"android/media/effect/SingleFilterEffect\"\n or v == \"android/media/effect/effects/BrightnessEffect\"\n or v == \"android/media/effect/effects/BitmapOverlayEffect\"\n or v == \"android/media/effect/effects/DuotoneEffect\"\n or v == \"android/media/effect/effects/SharpenEffect\"\n or v == \"android/media/effect/effects/ColorTemperatureEffect\"\n or v == \"android/media/effect/effects/LomoishEffect\"\n or v == \"android/media/effect/effects/SepiaEffect\"\n or v == \"android/media/effect/effects/FlipEffect\"\n or v == \"android/media/effect/effects/VignetteEffect\"\n or v == \"android/media/effect/effects/AutoFixEffect\"\n or v == \"android/media/effect/effects/RotateEffect\"\n or v == \"android/media/effect/effects/SaturateEffect\"\n or v == \"android/media/effect/effects/CrossProcessEffect\"\n or v == \"android/media/effect/effects/BackDropperEffect\"\n or v == \"android/media/effect/effects/TintEffect\"\n or v == \"android/media/effect/effects/PosterizeEffect\"\n or v == \"android/media/effect/effects/GrayscaleEffect\"\n or v == \"android/media/effect/effects/RedEyeEffect\"\n or v == \"android/media/effect/effects/DocumentaryEffect\"\n or v == \"android/media/effect/effects/IdentityEffect\"\n or v == \"android/media/effect/effects/FisheyeEffect\"\n or v == \"android/media/effect/effects/ContrastEffect\"\n or v == \"android/media/effect/effects/StraightenEffect\"\n or v == \"android/media/effect/effects/FillLightEffect\"\n or v == \"android/media/effect/effects/GrainEffect\"\n or v == \"android/media/effect/effects/BlackWhiteEffect\"\n or v == \"android/media/effect/effects/NegativeEffect\"\n or v == \"android/media/effect/SizeChangeEffect\"\n or v == \"android/filterpacks/ui/SurfaceTargetFilter\"\n or v == \"android/filterpacks/ui/SurfaceRenderFilter\"\n or v == \"android/filterpacks/videosrc/MediaSource\"\n or v == \"android/filterpacks/videosrc/CameraSource\"\n or v == \"android/filterpacks/videosrc/SurfaceTextureSource\"\n or v == \"android/filterpacks/videosrc/SurfaceTextureTarget\"\n or v == \"android/filterpacks/videosink/MediaEncoderFilter\"\n or v == \"android/filterpacks/videosink/MediaRecorderStopException\"\n or v == \"android/filterpacks/numeric/SinWaveFilter\"\n or v == \"android/filterpacks/imageproc/ContrastFilter\"\n or v == \"android/filterpacks/imageproc/StraightenFilter\"\n or v == \"android/filterpacks/imageproc/DrawRectFilter\"\n or v == \"android/filterpacks/imageproc/CropRectFilter\"\n or v == \"android/filterpacks/imageproc/ToGrayFilter\"\n or v == \"android/filterpacks/imageproc/AlphaBlendFilter\"\n or v == \"android/filterpacks/imageproc/CropFilter\"\n or v == \"android/filterpacks/imageproc/ImageCombineFilter\"\n or v == \"android/filterpacks/imageproc/RedEyeFilter\"\n or v == \"android/filterpacks/imageproc/ToRGBFilter\"\n or v == \"android/filterpacks/imageproc/SimpleImageFilter\"\n or v == \"android/filterpacks/imageproc/FisheyeFilter\"\n or v == \"android/filterpacks/imageproc/ResizeFilter\"\n or v == \"android/filterpacks/imageproc/FixedRotationFilter\"\n or v == \"android/filterpacks/imageproc/BlendFilter\"\n or v == \"android/filterpacks/imageproc/ToRGBAFilter\"\n or v == \"android/filterpacks/imageproc/DrawOverlayFilter\"\n or v == \"android/filterpacks/imageproc/BitmapSource\"\n or v == \"android/filterpacks/imageproc/ImageEncoder\"\n or v == \"android/filterpacks/imageproc/ToPackedGrayFilter\"\n or v == \"android/filterpacks/imageproc/RotateFilter\"\n or v == \"android/filterpacks/imageproc/BrightnessFilter\"\n or v == \"android/filterpacks/imageproc/BitmapOverlayFilter\"\n or v == \"android/filterpacks/imageproc/Invert\"\n or v == \"android/filterpacks/imageproc/FlipFilter\"\n or v == \"android/filterpacks/text/ToUpperCase\"\n or v == \"android/filterpacks/text/StringSource\"\n or v == \"android/filterpacks/text/StringLogger\"\n or v == \"android/filterpacks/performance/ThroughputFilter\"\n or v == \"android/filterpacks/performance/Throughput\"\n or v == \"android/filterpacks/base/CallbackFilter\"\n or v == \"android/filterpacks/base/NoneFilter\"\n or v == \"android/filterpacks/base/GLTextureSource\"\n or v == \"android/filterpacks/base/FrameBranch\"\n or v == \"android/filterpacks/base/RetargetFilter\"\n or v == \"android/filterpacks/base/GLTextureTarget\"\n or v == \"android/filterpacks/base/FrameFetch\"\n or v == \"android/filterpacks/base/ObjectSource\"\n or v == \"android/filterpacks/base/FrameSource\"\n or v == \"android/filterpacks/base/OutputStreamTarget\"\n or v == \"android/filterpacks/base/InputStreamSource\"\n or v == \"android/filterpacks/base/FrameStore\"\n or v == \"android/filterpacks/videoproc/BackDropperFilter\"\n or v == \"android/filterfw/core/FilterSurfaceView\"\n or v == \"android/filterfw/core/InputPort\"\n or v == \"android/filterfw/core/FieldPort\"\n or v == \"android/filterfw/core/StreamPort\"\n or v == \"android/filterfw/core/FilterContext\"\n or v == \"android/filterfw/core/GLFrame\"\n or v == \"android/filterfw/core/SimpleFrame\"\n or v == \"android/filterfw/core/FilterFactory\"\n or v == \"android/filterfw/core/VertexFrame\"\n or v == \"android/filterfw/core/GraphRunner\"\n or v == \"android/filterfw/core/ProgramPort\"\n or v == \"android/filterfw/core/ShaderProgram\"\n or v == \"android/filterfw/core/NativeAllocatorTag\"\n or v == \"android/filterfw/core/Frame\"\n or v == \"android/filterfw/core/Scheduler\"\n or v == \"android/filterfw/core/SimpleFrameManager\"\n or v == \"android/filterfw/core/KeyValueMap\"\n or v == \"android/filterfw/core/ProgramVariable\"\n or v == \"android/filterfw/core/FinalPort\"\n or v == \"android/filterfw/core/FilterGraph\"\n or v == \"android/filterfw/core/CachedFrameManager\"\n or v == \"android/filterfw/core/RandomScheduler\"\n or v == \"android/filterfw/core/FilterPort\"\n or v == \"android/filterfw/core/MutableFrameFormat\"\n or v == \"android/filterfw/core/FrameManager\"\n or v == \"android/filterfw/core/NativeFrame\"\n or v == \"android/filterfw/core/FilterFunction\"\n or v == \"android/filterfw/core/AsyncRunner\"\n or v == \"android/filterfw/core/ProtocolException\"\n or v == \"android/filterfw/core/FrameFormat\"\n or v == \"android/filterfw/core/NativeBuffer\"\n or v == \"android/filterfw/core/Program\"\n or v == \"android/filterfw/core/RoundRobinScheduler\"\n or v == \"android/filterfw/core/GLEnvironment\"\n or v == \"android/filterfw/core/StopWatch\"\n or v == \"android/filterfw/core/SerializedFrame\"\n or v == \"android/filterfw/core/OneShotScheduler\"\n or v == \"android/filterfw/core/NativeProgram\"\n or v == \"android/filterfw/core/SimpleScheduler\"\n or v == \"android/filterfw/core/Filter\"\n or v == \"android/filterfw/core/OutputPort\"\n or v == \"android/filterfw/core/SyncRunner\"\n or v == \"android/filterfw/io/GraphReader\"\n or v == \"android/filterfw/io/GraphIOException\"\n or v == \"android/filterfw/io/TextGraphReader\"\n or v == \"android/filterfw/io/PatternScanner\"\n or v == \"android/filterfw/GraphEnvironment\"\n or v == \"android/filterfw/MffEnvironment\"\n or v == \"android/filterfw/FilterFunctionEnvironment\"\n or v == \"android/filterfw/format/PrimitiveFormat\"\n or v == \"android/filterfw/format/ObjectFormat\"\n or v == \"android/filterfw/format/ImageFormat\"\n or v == \"android/filterfw/geometry/Quad\"\n or v == \"android/filterfw/geometry/Point\"\n or v == \"android/filterfw/geometry/Rectangle\"\n ]\n )\n " }, { "language": "cpp", @@ -7242,70 +7242,70 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall fc: name matches \"EVP_EncryptInit|EVP_DecryptInit|EVP_CipherInit\"\n and arguments[2] is arguments[3]\n and arguments[3].constantValue.null\n " + "predicate": "\n FunctionCall fc: name matches \"EVP_EncryptInit|EVP_DecryptInit|EVP_CipherInit\"\n and arguments[2] is arguments[3]\n and arguments[3].constantValue.None\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall fc: fc.name matches \"EVP_EncryptInit|EVP_DecryptInit|EVP_CipherInit\" and\n (not arguments[3].constantValue.null\n or (arguments[2].constantValue == arguments[3].constantValue and not arguments[3].constantValue.null))\n " + "predicate": "\n FunctionCall fc: fc.name matches \"EVP_EncryptInit|EVP_DecryptInit|EVP_CipherInit\" and\n (not arguments[3].constantValue.None\n or (arguments[2].constantValue == arguments[3].constantValue and not arguments[3].constantValue.None))\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall fc: name matches \"EVP_EncryptInit_ex|EVP_DecryptInit_ex|EVP_CipherInit_ex|BF_cbc_encrypt|BF_cfb64_encrypt|BF_ofb64_encrypt|DES_ncbc_encrypt|DES_pcbc_encrypt|DES_cfb64_encrypt|DES_ofb64_encrypt|DES_xcbc_encrypt|DES_cbc_cksum|DES_enc_read|DES_enc_write\"\n and arguments[3] is arguments[4]\n and arguments[4].constantValue.null\n " + "predicate": "\n FunctionCall fc: name matches \"EVP_EncryptInit_ex|EVP_DecryptInit_ex|EVP_CipherInit_ex|BF_cbc_encrypt|BF_cfb64_encrypt|BF_ofb64_encrypt|DES_ncbc_encrypt|DES_pcbc_encrypt|DES_cfb64_encrypt|DES_ofb64_encrypt|DES_xcbc_encrypt|DES_cbc_cksum|DES_enc_read|DES_enc_write\"\n and arguments[3] is arguments[4]\n and arguments[4].constantValue.None\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall fc: fc.name matches \"EVP_EncryptInit_ex|EVP_DecryptInit_ex|EVP_CipherInit_ex|BF_cbc_encrypt|BF_cfb64_encrypt|BF_ofb64_encrypt|DES_ncbc_encrypt|DES_pcbc_encrypt|DES_cfb64_encrypt|DES_ofb64_encrypt|DES_xcbc_encrypt|DES_cbc_cksum|DES_enc_read|DES_enc_write\" and\n (not arguments[4].constantValue.null\n or (arguments[3].constantValue == arguments[4].constantValue and not arguments[4].constantValue.null))\n " + "predicate": "\n FunctionCall fc: fc.name matches \"EVP_EncryptInit_ex|EVP_DecryptInit_ex|EVP_CipherInit_ex|BF_cbc_encrypt|BF_cfb64_encrypt|BF_ofb64_encrypt|DES_ncbc_encrypt|DES_pcbc_encrypt|DES_cfb64_encrypt|DES_ofb64_encrypt|DES_xcbc_encrypt|DES_cbc_cksum|DES_enc_read|DES_enc_write\" and\n (not arguments[4].constantValue.None\n or (arguments[3].constantValue == arguments[4].constantValue and not arguments[4].constantValue.None))\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall fc: name matches \"DES_ede2_cbc_encrypt|DES_ede2_cfb64_encrypt|DES_ede2_ofb64_encrypt\"\n and (arguments[3] is arguments[5] or arguments[4] is arguments[5])\n and arguments[5].constantValue.null\n " + "predicate": "\n FunctionCall fc: name matches \"DES_ede2_cbc_encrypt|DES_ede2_cfb64_encrypt|DES_ede2_ofb64_encrypt\"\n and (arguments[3] is arguments[5] or arguments[4] is arguments[5])\n and arguments[5].constantValue.None\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall fc: fc.name matches \"DES_ede2_cbc_encrypt|DES_ede2_cfb64_encrypt|DES_ede2_ofb64_encrypt\" and\n (not arguments[5].constantValue.null\n or (arguments[3].constantValue == arguments[5].constantValue and not arguments[5].constantValue.null)\n or (arguments[4].constantValue == arguments[5].constantValue and not arguments[5].constantValue.null))\n " + "predicate": "\n FunctionCall fc: fc.name matches \"DES_ede2_cbc_encrypt|DES_ede2_cfb64_encrypt|DES_ede2_ofb64_encrypt\" and\n (not arguments[5].constantValue.None\n or (arguments[3].constantValue == arguments[5].constantValue and not arguments[5].constantValue.None)\n or (arguments[4].constantValue == arguments[5].constantValue and not arguments[5].constantValue.None))\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall fc: name matches \"DES_ede3_cbc_encrypt|ES_ede3_cfb64_encrypt|DES_ede3_ofb64_encrypt\"\n and (arguments[3] is arguments[6] or arguments[4] is arguments[6] or arguments[5] is arguments[6])\n and arguments[6].constantValue.null\n " + "predicate": "\n FunctionCall fc: name matches \"DES_ede3_cbc_encrypt|ES_ede3_cfb64_encrypt|DES_ede3_ofb64_encrypt\"\n and (arguments[3] is arguments[6] or arguments[4] is arguments[6] or arguments[5] is arguments[6])\n and arguments[6].constantValue.None\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall fc: fc.name matches \"DES_ede3_cbc_encrypt|ES_ede3_cfb64_encrypt|DES_ede3_ofb64_encrypt\" and\n (not arguments[6].constantValue.null\n or (arguments[3].constantValue == arguments[6].constantValue and not arguments[6].constantValue.null)\n or (arguments[4].constantValue == arguments[6].constantValue and not arguments[6].constantValue.null)\n or (arguments[5].constantValue == arguments[6].constantValue and not arguments[6].constantValue.null))\n " + "predicate": "\n FunctionCall fc: fc.name matches \"DES_ede3_cbc_encrypt|ES_ede3_cfb64_encrypt|DES_ede3_ofb64_encrypt\" and\n (not arguments[6].constantValue.None\n or (arguments[3].constantValue == arguments[6].constantValue and not arguments[6].constantValue.None)\n or (arguments[4].constantValue == arguments[6].constantValue and not arguments[6].constantValue.None)\n or (arguments[5].constantValue == arguments[6].constantValue and not arguments[6].constantValue.None))\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall fc: name matches \"DES_cfb_encrypt|DES_ofb_encrypt\"\n and arguments[4] is arguments[5]\n and arguments[5].constantValue.null\n " + "predicate": "\n FunctionCall fc: name matches \"DES_cfb_encrypt|DES_ofb_encrypt\"\n and arguments[4] is arguments[5]\n and arguments[5].constantValue.None\n " }, { "language": "cpp", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall fc: fc.name matches \"DES_cfb_encrypt|DES_ofb_encrypt\" and\n (not arguments[5].constantValue.null\n or (arguments[4].constantValue == arguments[5].constantValue and not arguments[5].constantValue.null))\n " + "predicate": "\n FunctionCall fc: fc.name matches \"DES_cfb_encrypt|DES_ofb_encrypt\" and\n (not arguments[5].constantValue.None\n or (arguments[4].constantValue == arguments[5].constantValue and not arguments[5].constantValue.None))\n " }, { "language": "cpp", @@ -7353,14 +7353,14 @@ "language": "java", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "XML External Entity Injection", - "vuln_subcategory": null, - "predicate": "\n ReturnStatement rs: rs.enclosingFunction is [\n Function f: f.name == \"resolveEntity\" and f.enclosingClass is [Class c: c.supers contains [Class p: p.name matches \"org\\.xml\\.sax\\.EntityResolver(2)?\"]]\n ] and rs.expression is [Expression e: e.constantValue is [Null: ] ]\n " + "vuln_subcategory": None, + "predicate": "\n ReturnStatement rs: rs.enclosingFunction is [\n Function f: f.name == \"resolveEntity\" and f.enclosingClass is [Class c: c.supers contains [Class p: p.name matches \"org\\.xml\\.sax\\.EntityResolver(2)?\"]]\n ] and rs.expression is [Expression e: e.constantValue is [None: ] ]\n " }, { "language": "java", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site WebSocket Hijacking", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n ReturnStatement rs: rs.expression.constantValue == false and\n rs.enclosingFunction.name == \"checkOrigin\" and\n rs.enclosingFunction.enclosingClass.supers contains [Class c: name == \"javax.websocket.server.ServerEndpointConfig$Configurator\"]\n " }, { @@ -7682,8 +7682,8 @@ "language": "java", "vuln_kingdom": "Errors", "vuln_category": "Poor Error Handling", - "vuln_subcategory": "Program Catches NullPointerException", - "predicate": "\n CatchBlock: exception.type.name == \"java.lang.NullPointerException\"\n " + "vuln_subcategory": "Program Catches NonePointerException", + "predicate": "\n CatchBlock: exception.type.name == \"java.lang.NonePointerException\"\n " }, { "language": "java", @@ -7731,8 +7731,8 @@ "language": "java", "vuln_kingdom": "Code Quality", "vuln_category": "Code Correctness", - "vuln_subcategory": "null Argument To Equivalence Method", - "predicate": "\n FunctionCall: function.name == \"equals\" and arguments.length == 1 and\n (arguments[0] is [NullLiteral:] or arguments[0].constantValue is [Null: ])\n " + "vuln_subcategory": "None Argument To Equivalence Method", + "predicate": "\n FunctionCall: function.name == \"equals\" and arguments.length == 1 and\n (arguments[0] is [NoneLiteral:] or arguments[0].constantValue is [None: ])\n " }, { "language": "java", @@ -7830,14 +7830,14 @@ "vuln_kingdom": "Time and State", "vuln_category": "J2EE Bad Practices", "vuln_subcategory": "Non-Serializable Object Stored in Session", - "predicate": "\n FunctionCall: function is [Function: \n enclosingClass.name matches \"(javax|jakarta)\\.servlet\\.http\\.HttpSession\"\n and (name == \"putValue\" or name == \"setAttribute\")\n ]\n and not (\n arguments[1].type.definition.supers contains [name == \"java.io.Serializable\"]\n or arguments[1].type is [Type: name == \"java.lang.Object\" or name == \"kotlin.Any\"]\n or (\n arguments[1].type.name == \"java.util.Map\" \n and not arguments[1].reachingTypes contains [Type: \n name matches \"java\\.util\\.WeakHashMap|java\\.util\\.jar\\.Attributes|java\\.awt\\.RenderingHints|(javax|jakarta)\\.script\\.SimpleBindings\"\n ]\n )\n or arguments[1].type.name == \"java.util.Set\"\n or arguments[1].type.name == \"java.util.List\"\n or (\n arguments[1].type.name == \"java.util.Queue\" \n and not arguments[1].reachingTypes contains [Type: \n name == \"java.util.concurrent.DelayQueue\"\n ]\n )\n or arguments[1] is [NullLiteral: ]\n /* arrays are serializable */\n or arguments[1].type.arrayDimensions > 0\n /* primitive types are serializable */\n or arguments[1].type.primitive\n )\n " + "predicate": "\n FunctionCall: function is [Function: \n enclosingClass.name matches \"(javax|jakarta)\\.servlet\\.http\\.HttpSession\"\n and (name == \"putValue\" or name == \"setAttribute\")\n ]\n and not (\n arguments[1].type.definition.supers contains [name == \"java.io.Serializable\"]\n or arguments[1].type is [Type: name == \"java.lang.Object\" or name == \"kotlin.Any\"]\n or (\n arguments[1].type.name == \"java.util.Map\" \n and not arguments[1].reachingTypes contains [Type: \n name matches \"java\\.util\\.WeakHashMap|java\\.util\\.jar\\.Attributes|java\\.awt\\.RenderingHints|(javax|jakarta)\\.script\\.SimpleBindings\"\n ]\n )\n or arguments[1].type.name == \"java.util.Set\"\n or arguments[1].type.name == \"java.util.List\"\n or (\n arguments[1].type.name == \"java.util.Queue\" \n and not arguments[1].reachingTypes contains [Type: \n name == \"java.util.concurrent.DelayQueue\"\n ]\n )\n or arguments[1] is [NoneLiteral: ]\n /* arrays are serializable */\n or arguments[1].type.arrayDimensions > 0\n /* primitive types are serializable */\n or arguments[1].type.primitive\n )\n " }, { "language": "java", "vuln_kingdom": "Time and State", "vuln_category": "J2EE Bad Practices", "vuln_subcategory": "Non-Serializable Object Stored in Session", - "predicate": "\n FunctionCall: function is\n [enclosingClass.name == \"javax.servlet.http.HttpSession\"\n and (name == \"putValue\" or name == \"setAttribute\")]\n and not (arguments[1].type.definition.supers contains [name == \"java.io.Serializable\"]\n or arguments[1].type is [Type: name == \"java.lang.Object\" or name == \"kotlin.Any\"]\n or arguments[1].type.name == \"java.util.Map\"\n or arguments[1].type.name == \"java.util.Set\"\n or arguments[1].type.name == \"java.util.List\"\n or arguments[1].type.name == \"java.util.Queue\"\n or arguments[1] is [NullLiteral: ]\n /* arrays are serializable */\n or arguments[1].type.arrayDimensions > 0\n /* primitive types are serializable */\n or arguments[1].type.primitive)\n " + "predicate": "\n FunctionCall: function is\n [enclosingClass.name == \"javax.servlet.http.HttpSession\"\n and (name == \"putValue\" or name == \"setAttribute\")]\n and not (arguments[1].type.definition.supers contains [name == \"java.io.Serializable\"]\n or arguments[1].type is [Type: name == \"java.lang.Object\" or name == \"kotlin.Any\"]\n or arguments[1].type.name == \"java.util.Map\"\n or arguments[1].type.name == \"java.util.Set\"\n or arguments[1].type.name == \"java.util.List\"\n or arguments[1].type.name == \"java.util.Queue\"\n or arguments[1] is [NoneLiteral: ]\n /* arrays are serializable */\n or arguments[1].type.arrayDimensions > 0\n /* primitive types are serializable */\n or arguments[1].type.primitive)\n " }, { "language": "java", @@ -7914,7 +7914,7 @@ "vuln_kingdom": "Time and State", "vuln_category": "Race Condition", "vuln_subcategory": "Format Flaw", - "predicate": "\n FunctionCall fc:\n ( fc.function.name == \"format\" or fc.function.name == \"parse\" ) and\n fc.function.enclosingClass.supers contains [Class: name == \"java.text.Format\"] and\n not fc.function.enclosingClass.supers contains [Class: name matches \"org\\.apache\\.commons\\.lang(3)?\\.time\\.FastDateFormat\"] and\n ( not enclosingFunction.synchronized and\n not in [SynchronizedBlock:] )\n and ( instance.location is [VariableAccess va: va.variable.enclosingFunction.name != fc.enclosingFunction.name] or\n instance.location is [FieldAccess fa:]\n )\n /* EXCEPTION: MessageFormat's static format() method implicitly creates new instance */\n and not (instance.null and function.enclosingClass.supers contains [Class: name == \"java.text.MessageFormat\"])\n " + "predicate": "\n FunctionCall fc:\n ( fc.function.name == \"format\" or fc.function.name == \"parse\" ) and\n fc.function.enclosingClass.supers contains [Class: name == \"java.text.Format\"] and\n not fc.function.enclosingClass.supers contains [Class: name matches \"org\\.apache\\.commons\\.lang(3)?\\.time\\.FastDateFormat\"] and\n ( not enclosingFunction.synchronized and\n not in [SynchronizedBlock:] )\n and ( instance.location is [VariableAccess va: va.variable.enclosingFunction.name != fc.enclosingFunction.name] or\n instance.location is [FieldAccess fa:]\n )\n /* EXCEPTION: MessageFormat's static format() method implicitly creates new instance */\n and not (instance.None and function.enclosingClass.supers contains [Class: name == \"java.text.MessageFormat\"])\n " }, { "language": "java", @@ -7998,7 +7998,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name == \"set\"\n and enclosingClass.supers contains [Class:\n name == \"org.springframework.http.HttpHeaders\"\n ]\n ]\n and arguments[0].constantValue == \"Authorization\"\n and arguments[1] is [Expression e:\n e.constantValue matches \"Basic.*\"\n or e is [Operation:\n op == \"+\"\n and lhs.constantValue matches \"Basic.*\"\n and (\n /* \"Basic \" + new String(base64.encode(\"secret\".getBytes())) */\n rhs is [Allocation:\n constructor is [FunctionCall stringInit:\n function is [Function:\n constructor\n and enclosingClass.name == \"java.lang.String\"\n ]\n and stringInit.arguments[0] is [FunctionCall encode:\n possibleTargets contains [Function:\n name matches \"encode(Base64)?\"\n and enclosingClass.supers contains [Class:\n name == \"org.apache.commons.codec.binary.BaseNCodec\"\n ]\n ]\n and encode.arguments[0] is [FunctionCall:\n function.name == \"getBytes\"\n and instance is [Expression:\n not constantValue.null\n ]*\n ]\n ]\n ]\n ]\n /* \"Basic \" + b64.encodeAsString(\"secret\".getBytes()) */\n or rhs is [FunctionCall:\n possibleTargets contains [Function:\n name matches \"encode(As|To)String\"\n and enclosingClass.supers contains [Class:\n name == \"org.apache.commons.codec.binary.BaseNCodec\"\n ]\n ]\n and arguments[0] is [FunctionCall:\n function.name == \"getBytes\"\n and instance is [Expression:\n not constantValue.null\n ]*\n ]\n ]\n )\n ]\n ]\n " + "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name == \"set\"\n and enclosingClass.supers contains [Class:\n name == \"org.springframework.http.HttpHeaders\"\n ]\n ]\n and arguments[0].constantValue == \"Authorization\"\n and arguments[1] is [Expression e:\n e.constantValue matches \"Basic.*\"\n or e is [Operation:\n op == \"+\"\n and lhs.constantValue matches \"Basic.*\"\n and (\n /* \"Basic \" + new String(base64.encode(\"secret\".getBytes())) */\n rhs is [Allocation:\n constructor is [FunctionCall stringInit:\n function is [Function:\n constructor\n and enclosingClass.name == \"java.lang.String\"\n ]\n and stringInit.arguments[0] is [FunctionCall encode:\n possibleTargets contains [Function:\n name matches \"encode(Base64)?\"\n and enclosingClass.supers contains [Class:\n name == \"org.apache.commons.codec.binary.BaseNCodec\"\n ]\n ]\n and encode.arguments[0] is [FunctionCall:\n function.name == \"getBytes\"\n and instance is [Expression:\n not constantValue.None\n ]*\n ]\n ]\n ]\n ]\n /* \"Basic \" + b64.encodeAsString(\"secret\".getBytes()) */\n or rhs is [FunctionCall:\n possibleTargets contains [Function:\n name matches \"encode(As|To)String\"\n and enclosingClass.supers contains [Class:\n name == \"org.apache.commons.codec.binary.BaseNCodec\"\n ]\n ]\n and arguments[0] is [FunctionCall:\n function.name == \"getBytes\"\n and instance is [Expression:\n not constantValue.None\n ]*\n ]\n ]\n )\n ]\n ]\n " }, { "language": "java", @@ -8061,7 +8061,7 @@ "vuln_kingdom": "API Abuse", "vuln_category": "Mass Assignment", "vuln_subcategory": "Insecure Binder Configuration", - "predicate": "\n Class c:\n directSupers contains [Class:\n name == \"org.springframework.webflow.action.FormAction\"\n ]\n and not functions contains [Function:\n (\n name == \"initBinder\"\n or name == \"doBind\"\n or annotations contains [Annotation:\n type.name == \"org.springframework.web.bind.annotation.InitBinder\"\n and not elements contains [AnnotationElement: ]\n ]\n )\n and contains [FunctionCall:\n function.name matches \"setAllowedFields|setDisallowedFields\"\n and function.enclosingClass.supers contains [Class:\n name == \"org.springframework.validation.DataBinder\"\n ]\n ]\n ]\n and not functions contains [Function:\n annotations contains [Annotation:\n type.name == \"org.springframework.web.bind.annotation.InitBinder\"\n and elements contains [AnnotationElement:\n key == \"value\"\n and not value is [Null:]\n ]\n ]\n ]\n " + "predicate": "\n Class c:\n directSupers contains [Class:\n name == \"org.springframework.webflow.action.FormAction\"\n ]\n and not functions contains [Function:\n (\n name == \"initBinder\"\n or name == \"doBind\"\n or annotations contains [Annotation:\n type.name == \"org.springframework.web.bind.annotation.InitBinder\"\n and not elements contains [AnnotationElement: ]\n ]\n )\n and contains [FunctionCall:\n function.name matches \"setAllowedFields|setDisallowedFields\"\n and function.enclosingClass.supers contains [Class:\n name == \"org.springframework.validation.DataBinder\"\n ]\n ]\n ]\n and not functions contains [Function:\n annotations contains [Annotation:\n type.name == \"org.springframework.web.bind.annotation.InitBinder\"\n and elements contains [AnnotationElement:\n key == \"value\"\n and not value is [None:]\n ]\n ]\n ]\n " }, { "language": "java", @@ -8312,7 +8312,7 @@ "language": "java", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall:\n function is [Function:\n name == \"disable\"\n and enclosingClass.supers contains [Class:\n name == \"org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer\"\n ]\n ]\n and instance.possibleTypes contains [Type:\n definition.supers contains [Class:\n name == \"org.springframework.security.config.annotation.web.configurers.CsrfConfigurer\"\n ]\n ]\n " }, { @@ -8340,14 +8340,14 @@ "language": "java", "vuln_kingdom": "Time and State", "vuln_category": "Session Fixation", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc:\n function is [Function:\n (\n name == \"invalidateHttpSession\"\n or name == \"clearAuthentication\"\n )\n and enclosingClass.supers contains [Class:\n name == \"org.springframework.security.config.annotation.web.configurers.LogoutConfigurer\"\n ]\n ]\n and fc.arguments[0].constantValue is false\n " }, { "language": "java", "vuln_kingdom": "Time and State", "vuln_category": "Session Fixation", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall:\n function is [Function:\n name == \"none\"\n and enclosingClass.supers contains [Class:\n name matches \"org\\.springframework\\.security\\.config\\.annotation\\.web\\.configurers\\.SessionManagementConfigurer(\\.|\\$)SessionFixationConfigurer\"\n ]\n ]\n " }, { @@ -8368,7 +8368,7 @@ "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc:\n possibleTargets contains [Function:\n (constructor or name == \"init^\" or name == \"Pbkdf2\")\n and enclosingClass.supers contains [Class:\n name == \"org.springframework.security.crypto.password.Pbkdf2PasswordEncoder\"\n ]\n ]\n and fc.arguments[3].constantValue is [EnumValue:\n name is [String: == \"PBKDF2WithHmacSHA1\"]\n ]\n " }, { @@ -8634,7 +8634,7 @@ "language": "java", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "XML External Entity Injection", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Function f:\n f.annotations contains [Annotation:\n type.name matches \"org\\.springframework\\.web\\.bind\\.annotation\\.((Request|Get|Post|Delete|Put|Patch)Mapping|ExceptionHandler)\"\n or type.definition.labels contains [String s1: s1 == \"SPRINGMVC_REQUESTMAPPING_CLASS\"]\n ] and\n f.parameters contains [Variable v:\n not v.annotations contains [Annotation: type.name matches \"org\\.springframework\\.web\\.bind\\.annotation\\.ModelAttribute\"] and\n not v.type == T\"java.lang.String\"\n and v.type.definition is [Class m: m.labels contains [String s: s == \"XMLMapped\"] ]*\n ] and\n f.enclosingClass is [Class c: c.annotations contains [Annotation: type.name matches \"org\\.springframework\\.stereotype\\.Controller\"]]\n " }, { @@ -8648,49 +8648,49 @@ "language": "java", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "XML Entity Expansion Injection", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Function f: f.annotations contains [Annotation a:\n a.type.name matches \"org\\.restlet(\\.client)?\\.resource.(Get|Post|Put|Delete)\"\n and a.elements contains [AnnotationElement ae:\n ae.value matches \".*xml.*\"]\n ]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall: name == \"add\"\n and function.enclosingClass.supers contains [Class:\n name == \"org.restlet.util.ServerList\"]\n and arguments[0].location is [FieldAccess f:\n f.type.name matches \"org\\.restlet(\\.client)?\\.data\\.Protocol\"\n and ((f.field.name == \"HTTP\")\n or (f.field.name == \"FTP\")\n or (f.field.name == \"SMTP\")\n or (f.field.name == \"POP\")\n or (f.field.name == \"SIP\"))]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall: name == \"add\"\n and function.enclosingClass.supers contains [Class:\n name == \"org.restlet.util.ServerList\"]\n and arguments[0].location is [FieldAccess f:\n f.type.name matches \"org\\.restlet(\\.client)?\\.data\\.Protocol\"\n and ((f.field.name == \"HTTP\")\n or (f.field.name == \"FTP\")\n or (f.field.name == \"SMTP\")\n or (f.field.name == \"POP\")\n or (f.field.name == \"SIP\"))]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall: (function.constructor or function.name == \"init^\")\n and function.enclosingClass.supers contains [Class: name == \"org.restlet.Server\"]\n and arguments[1].location is [FieldAccess f: f.type.name matches \"org\\.restlet(\\.client)?\\.data\\.Protocol\"\n and ((f.field.name == \"HTTP\") or (f.field.name == \"FTP\") or (f.field.name == \"SMTP\") or (f.field.name == \"POP\") or (f.field.name == \"SIP\"))]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall: (function.constructor or function.name == \"init^\")\n and function.enclosingClass.supers contains [Class: name == \"org.restlet.Server\"]\n and arguments[1].location is [FieldAccess f: f.type.name matches \"org\\.restlet(\\.client)?\\.data\\.Protocol\"\n and ((f.field.name == \"HTTP\") or (f.field.name == \"FTP\") or (f.field.name == \"SMTP\") or (f.field.name == \"POP\") or (f.field.name == \"SIP\"))]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall: (function.constructor or function.name == \"init^\")\n and function.enclosingClass.supers contains [Class: name == \"org.restlet.Server\"]\n and arguments[0].location is [FieldAccess f: f.type.name matches \"org\\.restlet(\\.client)?\\.data\\.Protocol\"\n and ((f.field.name == \"HTTP\") or (f.field.name == \"FTP\") or (f.field.name == \"SMTP\") or (f.field.name == \"POP\") or (f.field.name == \"SIP\"))]\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall: (function.constructor or function.name == \"init^\")\n and function.enclosingClass.supers contains [Class: name == \"org.restlet.Server\"]\n and arguments[0].location is [FieldAccess f: f.type.name matches \"org\\.restlet(\\.client)?\\.data\\.Protocol\"\n and ((f.field.name == \"HTTP\") or (f.field.name == \"FTP\") or (f.field.name == \"SMTP\") or (f.field.name == \"POP\") or (f.field.name == \"SIP\"))]\n " }, { @@ -8746,7 +8746,7 @@ "language": "java", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Insecure Sanitizer Policy", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: fc.function is [Function f: f.name == \"allowElements\"\n and f.enclosingClass.supers contains [Class s: name == \"org.owasp.html.HtmlPolicyBuilder\"]]\n and fc.arguments contains [Expression exp: exp.constantValue matches \"(?i)script|style\"]\n " }, { @@ -8809,7 +8809,7 @@ "language": "java", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "XML External Entity Injection", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Function f: annotations contains [Annotation a: type == T\"javax.ws.rs.Consumes\"\n and elements contains [AnnotationElement e: key == \"value\" and\n (value is [String s: s matches \".*xml.*\"])\n or\n (value is [ConstantArray c: values contains [String s2: s2 matches \".*xml.*\"]])\n ]\n ]\n and f.parameters contains [Variable v:\n not v.type == T\"java.lang.String\"\n and v.type.definition is [Class m: m.annotations contains [Annotation: type.name == \"javax.xml.bind.annotation.XmlRootElement\"]]*\n ]\n " }, { @@ -8922,14 +8922,14 @@ "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", "vuln_subcategory": "Mail Transmission", - "predicate": "\n FunctionCall fc: name == \"URLName\"\n and function.enclosingClass.name == \"jakarta.mail.URLName\"\n and (\n (arguments.length == 6 and not arguments[0].constantValue.null and arguments[0].constantValue matches \"imap|pop3|smtp\")\n or (arguments.length == 1 and arguments[0].constantValue matches \"^(imap|pop3|smtp)\\:.*\")\n )\n " + "predicate": "\n FunctionCall fc: name == \"URLName\"\n and function.enclosingClass.name == \"jakarta.mail.URLName\"\n and (\n (arguments.length == 6 and not arguments[0].constantValue.None and arguments[0].constantValue matches \"imap|pop3|smtp\")\n or (arguments.length == 1 and arguments[0].constantValue matches \"^(imap|pop3|smtp)\\:.*\")\n )\n " }, { "language": "java", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", "vuln_subcategory": "Mail Transmission", - "predicate": "\n FunctionCall fc: name == \"URLName\"\n and function.enclosingClass.name == \"javax.mail.URLName\"\n and (\n (arguments.length == 6 and not arguments[0].constantValue.null and arguments[0].constantValue matches \"imap|pop3|smtp\")\n or (arguments.length == 1 and arguments[0].constantValue matches \"^(imap|pop3|smtp)\\:.*\")\n )\n " + "predicate": "\n FunctionCall fc: name == \"URLName\"\n and function.enclosingClass.name == \"javax.mail.URLName\"\n and (\n (arguments.length == 6 and not arguments[0].constantValue.None and arguments[0].constantValue matches \"imap|pop3|smtp\")\n or (arguments.length == 1 and arguments[0].constantValue matches \"^(imap|pop3|smtp)\\:.*\")\n )\n " }, { "language": "java", @@ -8964,7 +8964,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Insecure SSL", "vuln_subcategory": "Overly Broad Certificate Trust", - "predicate": "\n FunctionCall call: call.function.name == \"trustManager\"\n and call.function.enclosingClass.name == \"io.grpc.TlsChannelCredentials$Builder\"\n and arguments contains [Expression e:\n type.definition.supers contains [Class: name == \"javax.net.ssl.X509TrustManager\"]\n and type.definition contains [Function: name == \"getAcceptedIssuers\" and contains [ReturnStatement: expression is [NullLiteral: ]]]\n ]\n " + "predicate": "\n FunctionCall call: call.function.name == \"trustManager\"\n and call.function.enclosingClass.name == \"io.grpc.TlsChannelCredentials$Builder\"\n and arguments contains [Expression e:\n type.definition.supers contains [Class: name == \"javax.net.ssl.X509TrustManager\"]\n and type.definition contains [Function: name == \"getAcceptedIssuers\" and contains [ReturnStatement: expression is [NoneLiteral: ]]]\n ]\n " }, { "language": "java", @@ -9103,7 +9103,7 @@ "language": "java", "vuln_kingdom": "Code Quality", "vuln_category": "Fortify Internal", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Function:\n annotations contains [Annotation:\n type.name startsWith \"org.apache.struts2.convention.annotation\"\n ]\n " }, { @@ -9145,7 +9145,7 @@ "language": "java", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Denial of Service", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: fc.function.name matches \"set(Long|Int|Double|Boolean)?Parameter\"\n and fc.function.enclosingClass is [Class c:\n c.supers contains [Class:\n name == \"org.apache.http.params.HttpParams\"]\n ]\n and fc.arguments[0] is [FieldAccess fa:\n fa.field is [Field f:\n f.static\n and\n (\n (\n f.enclosingClass.name == \"org.apache.http.conn.params.ConnManagerPNames\"\n and\n (\n f.name == \"MAX_TOTAL_CONNECTIONS\"\n or f.name == \"TIMEOUT\"\n )\n )\n or\n (\n f.enclosingClass.name == \"org.apache.http.params.CoreConnectionPNames\"\n and\n (\n f.name == \"CONNECTION_TIMEOUT\"\n or f.name == \"SO_TIMEOUT\"\n )\n )\n )\n ] ]\n and fc.arguments[1].constantValue == \"0\"\n " }, { @@ -9180,21 +9180,21 @@ "language": "java", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Function f: f.labels contains [String s: s == \"GWTEntryMethod\"]\n and not f.constructor\n and not f.name == \"init^\"\n and not f.initializer\n and not f.destructor\n " }, { "language": "java", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n Function f: f.enclosingClass.supers contains [Class iface: interface and supers contains [Class: name == \"com.google.gwt.user.client.rpc.RemoteService\"]\n and functions contains [Function f2: f2 in f.supers]\n ]\n and not f.enclosingClass.supers contains [Class XSRFiface: interface and supers contains [Class: name == \"com.google.gwt.user.client.rpc.XsrfProtectedService\"]\n and functions contains [Function f3: f3 in f.supers]\n ]\n and not f.annotations contains [Annotation: type.name matches \"com\\.google\\.gwt\\.user\\.server\\.rpc\\.(No?)XsrfProtect\"]\n and not f.supers contains [Function: annotations contains [Annotation: type.name matches \"com\\.google\\.gwt\\.user\\.server\\.rpc\\.(No)?XsrfProtect\"]]\n and not f.enclosingClass.supers contains [Class annXSRFiface: interface and annotations contains [Annotation: type.name matches \"com\\.google\\.gwt\\.user\\.server\\.rpc\\.(No)?XsrfProtect\"]\n and functions contains [Function f4: f4 in f.supers]\n ]\n " }, { "language": "java", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Unsafe JSNI", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall: function is [Function:\n modifiers contains \"native\"\n /* uses of native on GWT applications are JSNI, not JNI */\n and \n (\n (\n enclosingClass.supers contains [Class: name matches \"com\\.google\\.gwt\\..*\"]\n /* but not directly in a GWT class */\n and not enclosingClass.name matches \"com\\.google\\.gwt\\..*\"\n )\n or enclosingClass.functions contains [Function:\n parameters contains [Variable:\n type.definition.enclosingClass.supers contains [Class: name matches \"com\\.google\\.gwt\\..*\"]\n ]\n or contains [FunctionCall:\n function.enclosingClass.supers contains [Class: name matches \"com\\.google\\.gwt\\..*\"]\n ]\n ]\n )\n ]*\n " }, { @@ -9208,14 +9208,14 @@ "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Command Injection", - "vuln_subcategory": null, - "predicate": "\n FunctionCall:\n possibleTargets contains [Function: name == \"exec\"]\n and environment is [FieldAccess:\n instance.possibleTypes contains [Type:\n name == \"ExecFunction\"\n ]\n ]\n and arguments[0] is [Expression:\n /* not a constant */\n constantValue.null\n /* is constant, and contains environment variables */\n or constantValue matches \".*\\$.*|.*%.*%.*\"\n /* is constant, and doesn't contain a full path */\n or not (\n constantValue matches \".+:(/|\\\\).*\"\n or constantValue matches \"(/|\\\\).*\"\n )\n ]*\n " + "vuln_subcategory": None, + "predicate": "\n FunctionCall:\n possibleTargets contains [Function: name == \"exec\"]\n and environment is [FieldAccess:\n instance.possibleTypes contains [Type:\n name == \"ExecFunction\"\n ]\n ]\n and arguments[0] is [Expression:\n /* not a constant */\n constantValue.None\n /* is constant, and contains environment variables */\n or constantValue matches \".*\\$.*|.*%.*%.*\"\n /* is constant, and doesn't contain a full path */\n or not (\n constantValue matches \".+:(/|\\\\).*\"\n or constantValue matches \"(/|\\\\).*\"\n )\n ]*\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Command Injection", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall:\n possibleTargets contains [Function: name == \"exec\"]\n and environment is [FieldAccess:\n instance.possibleTypes contains [Type:\n name == \"ExecFunction\"\n ]\n ]\n " }, { @@ -9223,41 +9223,41 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FunctionCall call: possibleTargets contains [Function: name == \"Sequelize\"]\n and not call.arguments[2].constantValue.null\n and call.arguments[2].constantValue == \"\"\n and call.arguments.length == 3\n " + "predicate": "\n FunctionCall call: possibleTargets contains [Function: name == \"Sequelize\"]\n and not call.arguments[2].constantValue.None\n and call.arguments[2].constantValue == \"\"\n and call.arguments.length == 3\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall call: possibleTargets contains [Function: name == \"Sequelize\"]\n and not call.arguments[2].constantValue.null\n and not call.arguments[2].constantValue is [Null:]\n and not call.arguments[2].constantValue == \"\"\n and call.arguments.length == 3\n " + "predicate": "\n FunctionCall call: possibleTargets contains [Function: name == \"Sequelize\"]\n and not call.arguments[2].constantValue.None\n and not call.arguments[2].constantValue is [None:]\n and not call.arguments[2].constantValue == \"\"\n and call.arguments.length == 3\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FunctionCall call: possibleTargets contains [Function: name == \"Sequelize\"]\n and not call.arguments[2].constantValue.null\n and call.arguments[2].constantValue is [Null:]\n and call.arguments.length == 3\n " + "vuln_subcategory": "None Password", + "predicate": "\n FunctionCall call: possibleTargets contains [Function: name == \"Sequelize\"]\n and not call.arguments[2].constantValue.None\n and call.arguments[2].constantValue is [None:]\n and call.arguments.length == 3\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "SQL Injection", - "vuln_subcategory": null, - "predicate": "\n FunctionCall fc: possibleTargets contains [Function: name == \"query\"\n and (\n enclosingClass.supers contains [Class: name == \"Sequelize\"]\n or fc.instance.possibleTypes contains [Type: name == \"Sequelize\"]\n )\n ]\n and arguments[0] is [Expression arg: arg.constantValue.null]\n " + "vuln_subcategory": None, + "predicate": "\n FunctionCall fc: possibleTargets contains [Function: name == \"query\"\n and (\n enclosingClass.supers contains [Class: name == \"Sequelize\"]\n or fc.instance.possibleTypes contains [Type: name == \"Sequelize\"]\n )\n ]\n and arguments[0] is [Expression arg: arg.constantValue.None]\n " }, { "language": "javascript", "vuln_kingdom": "API Abuse", "vuln_category": "React Bad Practices", "vuln_subcategory": "Dangerously Set InnerHTML", - "predicate": "\n FieldAccess fa: fa.enclosingStatement is [AssignmentStatement as: as.lhs is [FieldAccess: name == \"dangerouslySetInnerHTML\"] and as.rhs is [Expression ex:]]\n and fa.name == \"dangerouslySetInnerHTML\"\n /* double check fa is non-constant, valid value is object with _html key */\n and fa.constantValue.null\n /* double check fa is not function definition which is considered as closure in sca */\n and not fa.isClosure\n /* exclude javascript object by ensuring there are possibleTypes */\n and fa.possibleTypes.length > 0\n " + "predicate": "\n FieldAccess fa: fa.enclosingStatement is [AssignmentStatement as: as.lhs is [FieldAccess: name == \"dangerouslySetInnerHTML\"] and as.rhs is [Expression ex:]]\n and fa.name == \"dangerouslySetInnerHTML\"\n /* double check fa is non-constant, valid value is object with _html key */\n and fa.constantValue.None\n /* double check fa is not function definition which is considered as closure in sca */\n and not fa.isClosure\n /* exclude javascript object by ensuring there are possibleTypes */\n and fa.possibleTypes.length > 0\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "System Information Leak", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name == \"writeHeapSnapshot\"\n and namespace.name == \"v8\"\n ]\n " }, { @@ -9341,21 +9341,21 @@ "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"connect|create(Connection|Server)|request|get\"\n and namespace.name matches \"http|net\"\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: fc.possibleTargets contains [Function f:\n name matches \"connect|create(Connection|Server)|request|get\"\n and f.possibleHeapPaths contains [String str:\n str matches \"http|net\"]\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: fc.possibleTargets contains [Function f:\n name matches \"connect|create(Connection|Server)|request|get\"\n and f.possibleHeapPaths contains [String str:\n str matches \"http|net\"]\n ]\n " }, { @@ -9439,49 +9439,49 @@ "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Denial of Service", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"l?statSync\"\n ]\n and (\n instance.possibleTypes contains [Type:\n definition is [Class:\n name == \"StatSyncFn\"\n and namespace.name == \"fs\"\n ]\n ]\n or environment is [FieldAccess:\n instance.possibleTypes contains [Type:\n definition is [Class:\n name == \"StatSyncFn\"\n and namespace.name == \"fs\"\n ]\n ]\n ]\n )\n and enclosingFunction is [Function: name == \"~file_function\"]\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Denial of Service", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name matches \"(access|appendFile|close|copyFile|cp|exists|link|mkdir|mkdtemp|open|opendir|read|readdir|readFile|readlink|readv|realpath|rename|rm|rmdir|statfs|symlink|unlink|write|writeFile|writev)Sync\"\n and f.namespace.name == \"fs\"\n ]\n and fc.enclosingFunction is [Function: name == \"~file_function\"]\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Denial of Service", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: possibleTargets contains [Function f: name matches \"(rename|link|symlink|readlink|realpath|unlink|rmdir|mkdir|readdir|close|open|fsync|write|read|readFile|writeFile|appendFile|exists|access)Sync\"\n and f.possibleHeapPaths contains [String str: str == \"fs\"]]\n and fc.enclosingFunction is [Function: name == \"~file_function\"]\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Denial of Service", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: possibleTargets contains [Function f: name matches \"(rename|link|symlink|readlink|realpath|unlink|rmdir|mkdir|readdir|close|open|fsync|write|read|readFile|writeFile|appendFile|exists|access)Sync\"\n and f.possibleHeapPaths contains [String str: str == \"fs\"]]\n and fc.enclosingFunction is [Function: name == \"~file_function\"]\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Denial of Service", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name matches \"(f|l)?(chmod|chown|datasync|stat|sync|truncate|utimes)Sync\"\n and not name matches \"l?statSync\"\n and f.namespace.name == \"fs\"\n ]\n and fc.enclosingFunction is [Function: name == \"~file_function\"]\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Denial of Service", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name matches \"(f|l)?(truncate|chown|chmod|stat|utimes)Sync\"\n and f.possibleHeapPaths contains [String str:\n str == \"fs\"]\n ]\n and fc.enclosingFunction is [Function: name == \"~file_function\"]\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Denial of Service", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: possibleTargets contains [Function f:\n name matches \"(f|l)?(truncate|chown|chmod|stat|utimes)Sync\"\n and f.possibleHeapPaths contains [String str:\n str == \"fs\"]\n ]\n and fc.enclosingFunction is [Function: name == \"~file_function\"]\n " }, { @@ -9496,7 +9496,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FunctionCall:\n possibleTargets contains [Function: name == \"unwrapKey\"]\n and possibleHeapPaths contains [String: matches \"(?i)(crypto(\\.webcrypto)?\\.)?subtle\"]\n and arguments[1] is [Expression:\n not constantValue.null\n and not constantValue is [Null:]\n and constantValue != \"\"\n ]*\n " + "predicate": "\n FunctionCall:\n possibleTargets contains [Function: name == \"unwrapKey\"]\n and possibleHeapPaths contains [String: matches \"(?i)(crypto(\\.webcrypto)?\\.)?subtle\"]\n and arguments[1] is [Expression:\n not constantValue.None\n and not constantValue is [None:]\n and constantValue != \"\"\n ]*\n " }, { "language": "javascript", @@ -9523,7 +9523,7 @@ "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall:\n possibleTargets contains [Function: name matches \"(un)?wrapKey\"]\n and possibleHeapPaths contains [String: matches \"(?i)(crypto(\\.webcrypto)?\\.)?subtle\"]\n and arguments[3] is [Expression:\n constantValues contains [String: matches \"(?i)(des|3des|triple[-_]?des|tdea|rc2|rc4).*\"]\n ]*\n " }, { @@ -9551,14 +9551,14 @@ "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall:\n possibleTargets contains [Function: name matches \"encrypt|generateKey\"]\n and possibleHeapPaths contains [String: matches \"(?i)(crypto(\\.webcrypto)?\\.)?subtle\"]\n and arguments[0] is [Expression:\n constantValues contains [String: matches \"(?i)(des|3des|triple[-_]?des|tdea|rc2|rc4).*\"]\n ]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc:\n possibleTargets contains [Function: name == \"digest\"]\n and possibleHeapPaths contains [String: matches \"(?i)(crypto(\\.webcrypto)?\\.)?subtle\"]\n and arguments[0] is [Expression alg:\n constantValues contains [String: matches \"(?i).*\\b(RIPEMD|RMD160|MD[245]|SHA[-_]?1).*\"]\n or (\n enclosingFunction contains [AssignmentStatement:\n lhs is [FieldAccess:\n name == \"name\"\n and instance is alg\n and sourceLocation.startLine <= fc.sourceLocation.startLine\n ]\n and rhs.constantValues contains [String:\n matches \"(?i).*\\b(RIPEMD|RMD160|MD[245]|SHA[-_]?1).*\"\n ]\n ]*\n )\n ]*\n " }, { @@ -9573,7 +9573,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FunctionCall fc:\n possibleTargets contains [Function:\n name == \"checkPrivateKey\"\n and (\n enclosingClass.supers contains [Class:\n name == \"X509Certificate\" and namespace.name == \"crypto\"\n ]\n or fc.instance.possibleTypes contains [Type:\n definition.supers contains [Class:\n name == \"X509Certificate\" and namespace.name == \"crypto\"\n ]\n ]\n )\n ]\n and arguments[0] is [Expression:\n not constantValue.null\n and not constantValue is [Null:]\n and constantValue != \"\"\n ]*\n " + "predicate": "\n FunctionCall fc:\n possibleTargets contains [Function:\n name == \"checkPrivateKey\"\n and (\n enclosingClass.supers contains [Class:\n name == \"X509Certificate\" and namespace.name == \"crypto\"\n ]\n or fc.instance.possibleTypes contains [Type:\n definition.supers contains [Class:\n name == \"X509Certificate\" and namespace.name == \"crypto\"\n ]\n ]\n )\n ]\n and arguments[0] is [Expression:\n not constantValue.None\n and not constantValue is [None:]\n and constantValue != \"\"\n ]*\n " }, { "language": "javascript", @@ -9587,7 +9587,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FunctionCall fc:\n possibleTargets contains [Function:\n name == \"sign\"\n and (\n enclosingClass.supers contains [Class:\n name == \"Sign\" and namespace.name == \"crypto\"\n ]\n or fc.instance.possibleTypes contains [Type:\n definition.supers contains [Class:\n name == \"Sign\" and namespace.name == \"crypto\"\n ]\n ]\n )\n ]\n and arguments[0] is [Expression:\n not constantValue.null\n and not constantValue is [Null:]\n and constantValue != \"\"\n ]*\n " + "predicate": "\n FunctionCall fc:\n possibleTargets contains [Function:\n name == \"sign\"\n and (\n enclosingClass.supers contains [Class:\n name == \"Sign\" and namespace.name == \"crypto\"\n ]\n or fc.instance.possibleTypes contains [Type:\n definition.supers contains [Class:\n name == \"Sign\" and namespace.name == \"crypto\"\n ]\n ]\n )\n ]\n and arguments[0] is [Expression:\n not constantValue.None\n and not constantValue is [None:]\n and constantValue != \"\"\n ]*\n " }, { "language": "javascript", @@ -9608,14 +9608,14 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Empty Encryption Key", - "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"sign|verify\"\n and enclosingClass.null\n and namespace.name == \"crypto\"\n ]\n and arguments[2] is [Expression: constantValue == \"\"]*\n " + "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"sign|verify\"\n and enclosingClass.None\n and namespace.name == \"crypto\"\n ]\n and arguments[2] is [Expression: constantValue == \"\"]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"sign|verify\"\n and enclosingClass.null\n and namespace.name == \"crypto\"\n ]\n and arguments[2] is [Expression:\n not constantValue.null\n and not constantValue is [Null:]\n and constantValue != \"\"\n ]*\n " + "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"sign|verify\"\n and enclosingClass.None\n and namespace.name == \"crypto\"\n ]\n and arguments[2] is [Expression:\n not constantValue.None\n and not constantValue is [None:]\n and constantValue != \"\"\n ]*\n " }, { "language": "javascript", @@ -9629,7 +9629,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"(private|public)(En|De)crypt\"\n and namespace.name == \"crypto\"\n ]\n and arguments[0] is [Expression:\n not constantValue.null\n and not constantValue is [Null:]\n and constantValue != \"\"\n ]*\n " + "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"(private|public)(En|De)crypt\"\n and namespace.name == \"crypto\"\n ]\n and arguments[0] is [Expression:\n not constantValue.None\n and not constantValue is [None:]\n and constantValue != \"\"\n ]*\n " }, { "language": "javascript", @@ -9650,7 +9650,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Predictable Salt", - "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"(pbkdf2|scrypt)(Sync)?\"\n and namespace.name == \"crypto\"\n ]\n and (\n (\n arguments[0].constantValue.null\n and arguments[0] == arguments[1]\n ) or (\n not arguments[0].constantValue.null\n and arguments[0].constantValue == arguments[1].constantValue\n )\n )\n " + "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"(pbkdf2|scrypt)(Sync)?\"\n and namespace.name == \"crypto\"\n ]\n and (\n (\n arguments[0].constantValue.None\n and arguments[0] == arguments[1]\n ) or (\n not arguments[0].constantValue.None\n and arguments[0].constantValue == arguments[1].constantValue\n )\n )\n " }, { "language": "javascript", @@ -9664,7 +9664,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", "vuln_subcategory": "Hardcoded PBE Salt", - "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"(pbkdf2|scrypt)(Sync)?\"\n and namespace.name == \"crypto\"\n ]\n and arguments[1] is [Expression:\n not constantValue.null\n and not constantValue is [Null:]\n and constantValue != \"\"\n ]*\n " + "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"(pbkdf2|scrypt)(Sync)?\"\n and namespace.name == \"crypto\"\n ]\n and arguments[1] is [Expression:\n not constantValue.None\n and not constantValue is [None:]\n and constantValue != \"\"\n ]*\n " }, { "language": "javascript", @@ -9678,7 +9678,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded PBE Password", - "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"(pbkdf2|scrypt)(Sync)?\"\n and namespace.name == \"crypto\"\n ]\n and arguments[0] is [Expression:\n not constantValue.null\n and not constantValue is [Null:]\n and constantValue != \"\"\n ]*\n " + "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"(pbkdf2|scrypt)(Sync)?\"\n and namespace.name == \"crypto\"\n ]\n and arguments[0] is [Expression:\n not constantValue.None\n and not constantValue is [None:]\n and constantValue != \"\"\n ]*\n " }, { "language": "javascript", @@ -9692,7 +9692,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FunctionCall fc:\n possibleTargets contains [Function:\n name matches \"hkdf(Sync)?\"\n and namespace.name == \"crypto\"\n ]\n and arguments contains [Expression arg:\n (arg is fc.arguments[1] or arg is fc.arguments[3])\n and not arg.constantValue.null\n and not arg.constantValue is [Null:]\n and arg.constantValue != \"\"\n ]*\n " + "predicate": "\n FunctionCall fc:\n possibleTargets contains [Function:\n name matches \"hkdf(Sync)?\"\n and namespace.name == \"crypto\"\n ]\n and arguments contains [Expression arg:\n (arg is fc.arguments[1] or arg is fc.arguments[3])\n and not arg.constantValue.None\n and not arg.constantValue is [None:]\n and arg.constantValue != \"\"\n ]*\n " }, { "language": "javascript", @@ -9706,7 +9706,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"create(Private|Secret)Key\"\n and namespace.name == \"crypto\"\n ]\n and arguments[0] is [Expression:\n not constantValue.null\n and not constantValue is [Null:]\n and constantValue != \"\"\n ]*\n " + "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"create(Private|Secret)Key\"\n and namespace.name == \"crypto\"\n ]\n and arguments[0] is [Expression:\n not constantValue.None\n and not constantValue is [None:]\n and constantValue != \"\"\n ]*\n " }, { "language": "javascript", @@ -9720,20 +9720,20 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded HMAC Key", - "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name == \"createHmac\"\n and namespace.name == \"crypto\"\n ]\n and arguments[1] is [Expression:\n not constantValue.null\n and not constantValue is [Null:]\n and constantValue != \"\"\n ]*\n " + "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name == \"createHmac\"\n and namespace.name == \"crypto\"\n ]\n and arguments[1] is [Expression:\n not constantValue.None\n and not constantValue is [None:]\n and constantValue != \"\"\n ]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"create(Hash|Hmac|Sign|Verify)|sign|verify\"\n ]\n and arguments[0] is [Expression:\n constantValues contains [String: matches \"(?i).*\\b(RIPEMD|RMD160|MD[245]|SHA[-_]?1).*\"]\n ]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Weak Cryptographic Hash", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall: possibleTargets contains [Function: name == \"createHash\"] and\n arguments[0].constantValues contains [String: matches \"(?i).*(MD2|MD4|MD5).*|.*SHA((-)?1(WithRSAEncryption)?)?$\"]\n " }, { @@ -9748,14 +9748,14 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"create(Cipher|Decipher)(iv)?\"\n and namespace.name == \"crypto\"\n ]\n and arguments[1] is [Expression:\n not constantValue.null\n and not constantValue is [Null:]\n and not constantValue == \"\"\n ]*\n " + "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"create(Cipher|Decipher)(iv)?\"\n and namespace.name == \"crypto\"\n ]\n and arguments[1] is [Expression:\n not constantValue.None\n and not constantValue is [None:]\n and not constantValue == \"\"\n ]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", "vuln_subcategory": "Insecure Initialization Vector", - "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name == \"createCipheriv\"\n and namespace.name == \"crypto\"\n ]\n and arguments[2] is [Expression:\n not constantValue.null\n and not constantValue is [Null:]\n ]*\n " + "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name == \"createCipheriv\"\n and namespace.name == \"crypto\"\n ]\n and arguments[2] is [Expression:\n not constantValue.None\n and not constantValue is [None:]\n ]*\n " }, { "language": "javascript", @@ -9782,154 +9782,154 @@ "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name == \"createCipheriv\"\n and namespace.name == \"crypto\"\n ]\n and arguments[0] is [Expression:\n constantValues contains [String: matches \"(?i)(des|3des|triple[-_]?des|tdea|rc2|rc4).*\"]\n ]*\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Weak Encryption", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name == \"createCipher\"\n and namespace.name == \"crypto\"\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Command Injection", - "vuln_subcategory": null, - "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f:\n f.name matches \"(exec(File)?|spawn)(Sync)?\"\n and f.namespace.name == \"child_process\"\n ]\n and call.arguments[0] is [Expression e:\n /* not a constant */\n (constantValue.null or\n /* constant that uses environment variable */\n constantValue matches \"(?i).*\\$.*|.*%.*%.*\" or\n /* not hardcoded full path */\n (not constantValue.null and not\n (\n constantValue matches \"(?i)^.+:(/|\\\\).*\" or\n constantValue matches \"(?i)^(/|\\\\).*\"\n )\n )\n )\n ]\n " + "vuln_subcategory": None, + "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f:\n f.name matches \"(exec(File)?|spawn)(Sync)?\"\n and f.namespace.name == \"child_process\"\n ]\n and call.arguments[0] is [Expression e:\n /* not a constant */\n (constantValue.None or\n /* constant that uses environment variable */\n constantValue matches \"(?i).*\\$.*|.*%.*%.*\" or\n /* not hardcoded full path */\n (not constantValue.None and not\n (\n constantValue matches \"(?i)^.+:(/|\\\\).*\" or\n constantValue matches \"(?i)^(/|\\\\).*\"\n )\n )\n )\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Command Injection", - "vuln_subcategory": null, - "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f:\n f.name matches \"(exec(File)?|spawn)(Sync)?\"\n and f.possibleHeapPaths contains [String str:\n str == \"child_process\"]\n ]\n and not call.instance is [Expression:\n possibleTypes contains [Type: name matches \"(X)?RegExp\"]\n // or looks like a RegExp literal\n or constantValue matches \"^/.*/(d|g|i|m|s|u|y)*$\"\n ]\n and call.arguments[0] is [Expression e:\n /* not a constant */\n (constantValue.null or\n /* constant that uses environment variable */\n constantValue matches \"(?i).*\\$.*|.*%.*%.*\" or\n /* not hardcoded full path */\n (not constantValue.null and not\n (\n constantValue matches \"(?i)^.+:(/|\\\\).*\" or\n constantValue matches \"(?i)^(/|\\\\).*\"\n )\n )\n )\n ]\n " + "vuln_subcategory": None, + "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f:\n f.name matches \"(exec(File)?|spawn)(Sync)?\"\n and f.possibleHeapPaths contains [String str:\n str == \"child_process\"]\n ]\n and not call.instance is [Expression:\n possibleTypes contains [Type: name matches \"(X)?RegExp\"]\n // or looks like a RegExp literal\n or constantValue matches \"^/.*/(d|g|i|m|s|u|y)*$\"\n ]\n and call.arguments[0] is [Expression e:\n /* not a constant */\n (constantValue.None or\n /* constant that uses environment variable */\n constantValue matches \"(?i).*\\$.*|.*%.*%.*\" or\n /* not hardcoded full path */\n (not constantValue.None and not\n (\n constantValue matches \"(?i)^.+:(/|\\\\).*\" or\n constantValue matches \"(?i)^(/|\\\\).*\"\n )\n )\n )\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Command Injection", - "vuln_subcategory": null, - "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f:\n f.name matches \"(exec(File)?|spawn)(Sync)?\"\n and f.possibleHeapPaths contains [String str:\n str == \"child_process\"]\n ]\n and not call.instance is [Expression:\n possibleTypes contains [Type: name matches \"(X)?RegExp\"]\n // or looks like a RegExp literal\n or constantValue matches \"^/.*/(d|g|i|m|s|u|y)*$\"\n ]\n and call.arguments[0] is [Expression e:\n /* not a constant */\n (constantValue.null or\n /* constant that uses environment variable */\n constantValue matches \"(?i).*\\$.*|.*%.*%.*\" or\n /* not hardcoded full path */\n (not constantValue.null and not\n (\n constantValue matches \"(?i)^.+:(/|\\\\).*\" or\n constantValue matches \"(?i)^(/|\\\\).*\"\n )\n )\n )\n ]\n " + "vuln_subcategory": None, + "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f:\n f.name matches \"(exec(File)?|spawn)(Sync)?\"\n and f.possibleHeapPaths contains [String str:\n str == \"child_process\"]\n ]\n and not call.instance is [Expression:\n possibleTypes contains [Type: name matches \"(X)?RegExp\"]\n // or looks like a RegExp literal\n or constantValue matches \"^/.*/(d|g|i|m|s|u|y)*$\"\n ]\n and call.arguments[0] is [Expression e:\n /* not a constant */\n (constantValue.None or\n /* constant that uses environment variable */\n constantValue matches \"(?i).*\\$.*|.*%.*%.*\" or\n /* not hardcoded full path */\n (not constantValue.None and not\n (\n constantValue matches \"(?i)^.+:(/|\\\\).*\" or\n constantValue matches \"(?i)^(/|\\\\).*\"\n )\n )\n )\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Command Injection", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f:\n f.name matches \"(exec(File)?|spawn)(Sync)?\"\n and f.namespace.name == \"child_process\"\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Command Injection", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f:\n f.name matches \"(exec(File)?|spawn)(Sync)?\"\n and f.possibleHeapPaths contains [String str:\n str == \"child_process\"]\n ]\n and not call.instance is [Expression:\n possibleTypes contains [Type: name matches \"(X)?RegExp\"]\n // or looks like a RegExp literal\n or constantValue matches \"^/.*/(d|g|i|m|s|u|y)*$\"\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Command Injection", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f:\n f.name matches \"(exec(File)?|spawn)(Sync)?\"\n and f.possibleHeapPaths contains [String str:\n str == \"child_process\"]\n ]\n and not call.instance is [Expression:\n possibleTypes contains [Type: name matches \"(X)?RegExp\"]\n // or looks like a RegExp literal\n or constantValue matches \"^/.*/(d|g|i|m|s|u|y)*$\"\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Time and State", "vuln_category": "Race Condition", - "vuln_subcategory": null, - "predicate": "\n /* find a lambda that calls a function that assigns a value to a field */\n FunctionCall fc: fc.possibleTargets contains [Function: (\n (\n name matches \"send|bind|createSocket|createServer|get|request|addListener|once|resolve(4|6|Cname|Mx|Ns|Soa|Srv|Txt)?|lookup(Service)?|reverse|exec(File)?\"\n and possibleHeapPaths contains [String str: str matches \"dgram(\\.Socket)?|http(s)?|net|tls|dns|child_process\"]\n )\n or\n (\n name == \"on\"\n and not possibleHeapPaths contains [String str2: str2 matches \"HTML[A-z]*Element.*|(\\$)?window|(\\$)?document\"]\n and not fc.instance is [FunctionCall:\n possibleTargets contains [Function: name matches \"jQuery|\\$\" or\n (name == \"constructor\" and possibleHeapPaths contains [String: matches \"(jQuery|\\$)\\.(prototype|fn)\"])\n /* account for jQuery selector filters */\n or name matches \"eq|filter|first|has|is|last|map|not|slice|children|closest|find|((next|prev)(All|Until)?)|offsetParent|parent|parents|parentsUntil|siblings|add|addBack|andSelf|end|not|contents|each\"\n ]\n ]\n and not fc.instance.possibleHeapPaths contains \"angular.element\"\n and fc.arguments.length == 2\n )\n )]\n and fc.arguments contains [Expression e:\n possibleFunctionTargets contains [Function: contains [FunctionCall: function is [Function lambda:\n /* lambda isn't recursive */\n not lambda contains [FunctionCall recursiveFC: recursiveFC == fc or recursiveFC.function contains [FunctionCall: == fc]]\n and lambda contains [Location loc: loc.type.arrayDimensions == 0\n and loc in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === loc.transitiveBase]]\n /* isn't ~parent field that seems to be specified around lambdas */\n and not loc.sourceLocation.null\n /* isn't length field in NST */\n and loc.name != \"length\"\n /* isn't 'this' */\n and loc.name != \"this\"\n and not loc.name startsWith \"~\"\n and fc.enclosingFunction contains [Location loc2: loc2.type.arrayDimensions == 0\n and loc2.name == loc.name\n /* the underlying declaration is the same i.e. the field being accessed is the same field */\n and (\n loc2 is [FieldAccess fa2: loc is [FieldAccess fa:\n not fa2.field.sourceLocation.null\n and not fa.field.sourceLocation.null\n and fa2.field.sourceLocation.startLine == fa.field.sourceLocation.startLine\n and fa.field is [Field:\n /* do not match against the lambda generated fields */\n name != \"~environment\"\n and name != \"~method\"\n and name != \"prototype\"\n ]*\n ]]\n or loc2 is [VariableAccess va2: loc is [VariableAccess va:\n not va2.variable.sourceLocation.null\n and not va.variable.sourceLocation.null\n and va2.variable.sourceLocation.startLine == va.variable.sourceLocation.startLine\n and not va.this\n and not va2.this\n and va.variable is [Variable: not isTemp ]*\n ]]\n )\n /* FieldAccess outside of lambda that isn't another assignment */\n and not loc2 in [AssignmentStatement: lhs.location is [Location: transitiveBase === loc2.transitiveBase]]\n and not loc2.sourceLocation.null\n and not fc.sourceLocation.null\n and loc2.sourceLocation.startLine > fc.sourceLocation.startLine\n ]*\n\n ]*\n ]]*]\n ]\n " + "vuln_subcategory": None, + "predicate": "\n /* find a lambda that calls a function that assigns a value to a field */\n FunctionCall fc: fc.possibleTargets contains [Function: (\n (\n name matches \"send|bind|createSocket|createServer|get|request|addListener|once|resolve(4|6|Cname|Mx|Ns|Soa|Srv|Txt)?|lookup(Service)?|reverse|exec(File)?\"\n and possibleHeapPaths contains [String str: str matches \"dgram(\\.Socket)?|http(s)?|net|tls|dns|child_process\"]\n )\n or\n (\n name == \"on\"\n and not possibleHeapPaths contains [String str2: str2 matches \"HTML[A-z]*Element.*|(\\$)?window|(\\$)?document\"]\n and not fc.instance is [FunctionCall:\n possibleTargets contains [Function: name matches \"jQuery|\\$\" or\n (name == \"constructor\" and possibleHeapPaths contains [String: matches \"(jQuery|\\$)\\.(prototype|fn)\"])\n /* account for jQuery selector filters */\n or name matches \"eq|filter|first|has|is|last|map|not|slice|children|closest|find|((next|prev)(All|Until)?)|offsetParent|parent|parents|parentsUntil|siblings|add|addBack|andSelf|end|not|contents|each\"\n ]\n ]\n and not fc.instance.possibleHeapPaths contains \"angular.element\"\n and fc.arguments.length == 2\n )\n )]\n and fc.arguments contains [Expression e:\n possibleFunctionTargets contains [Function: contains [FunctionCall: function is [Function lambda:\n /* lambda isn't recursive */\n not lambda contains [FunctionCall recursiveFC: recursiveFC == fc or recursiveFC.function contains [FunctionCall: == fc]]\n and lambda contains [Location loc: loc.type.arrayDimensions == 0\n and loc in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === loc.transitiveBase]]\n /* isn't ~parent field that seems to be specified around lambdas */\n and not loc.sourceLocation.None\n /* isn't length field in NST */\n and loc.name != \"length\"\n /* isn't 'this' */\n and loc.name != \"this\"\n and not loc.name startsWith \"~\"\n and fc.enclosingFunction contains [Location loc2: loc2.type.arrayDimensions == 0\n and loc2.name == loc.name\n /* the underlying declaration is the same i.e. the field being accessed is the same field */\n and (\n loc2 is [FieldAccess fa2: loc is [FieldAccess fa:\n not fa2.field.sourceLocation.None\n and not fa.field.sourceLocation.None\n and fa2.field.sourceLocation.startLine == fa.field.sourceLocation.startLine\n and fa.field is [Field:\n /* do not match against the lambda generated fields */\n name != \"~environment\"\n and name != \"~method\"\n and name != \"prototype\"\n ]*\n ]]\n or loc2 is [VariableAccess va2: loc is [VariableAccess va:\n not va2.variable.sourceLocation.None\n and not va.variable.sourceLocation.None\n and va2.variable.sourceLocation.startLine == va.variable.sourceLocation.startLine\n and not va.this\n and not va2.this\n and va.variable is [Variable: not isTemp ]*\n ]]\n )\n /* FieldAccess outside of lambda that isn't another assignment */\n and not loc2 in [AssignmentStatement: lhs.location is [Location: transitiveBase === loc2.transitiveBase]]\n and not loc2.sourceLocation.None\n and not fc.sourceLocation.None\n and loc2.sourceLocation.startLine > fc.sourceLocation.startLine\n ]*\n\n ]*\n ]]*]\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Time and State", "vuln_category": "Race Condition", - "vuln_subcategory": null, - "predicate": "\n /* find a lambda that calls a function that assigns a value to a field */\n FunctionCall fc: fc.possibleTargets contains [Function: (\n (\n name matches \"send|bind|createSocket|createServer|get|request|addListener|once|resolve(4|6|Cname|Mx|Ns|Soa|Srv|Txt)?|lookup(Service)?|reverse|exec(File)?\"\n and possibleHeapPaths contains [String str: str matches \"dgram(\\.Socket)?|http(s)?|net|tls|dns|child_process\"]\n )\n or\n (\n name == \"on\"\n and not possibleHeapPaths contains [String str2: str2 matches \"HTML[A-z]*Element.*|(\\$)?window|(\\$)?document\"]\n and not fc.instance is [FunctionCall:\n possibleTargets contains [Function: name matches \"jQuery|\\$\" or\n (name == \"constructor\" and possibleHeapPaths contains [String: matches \"(jQuery|\\$)\\.(prototype|fn)\"])\n /* account for jQuery selector filters */\n or name matches \"eq|filter|first|has|is|last|map|not|slice|children|closest|find|((next|prev)(All|Until)?)|offsetParent|parent|parents|parentsUntil|siblings|add|addBack|andSelf|end|not|contents|each\"\n ]\n ]\n and not fc.instance.possibleHeapPaths contains \"angular.element\"\n and fc.arguments.length == 2\n )\n )]\n and fc.arguments contains [Expression e:\n possibleFunctionTargets contains [Function: contains [FunctionCall: function is [Function lambda:\n /* lambda isn't recursive */\n not lambda contains [FunctionCall recursiveFC: recursiveFC == fc or recursiveFC.function contains [FunctionCall: == fc]]\n and lambda contains [FieldAccess fa: fa.type.arrayDimensions == 0\n and fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]]\n /* isn't ~parent field that seems to be specified around lambdas */\n and fa.field is [Field f:\n not fa.sourceLocation.null\n and not f.sourceLocation.null\n and fa.sourceLocation.startLine != f.sourceLocation.startLine\n /* isn't length field in NST */\n and f.name != \"length\"\n and fc.enclosingFunction contains [FieldAccess fa2: fa2.type.arrayDimensions == 0\n and fa2.field is f\n /* FieldAccess outside of lambda that isn't another assignment */\n and not fa2 in [AssignmentStatement: lhs.location is [Location: transitiveBase === fa2.transitiveBase]]\n and not fa2.sourceLocation.null\n and not fc.sourceLocation.null\n and fa2.sourceLocation.startLine > fc.sourceLocation.startLine\n ]*\n ]\n ]*\n ]]*]\n ]\n " + "vuln_subcategory": None, + "predicate": "\n /* find a lambda that calls a function that assigns a value to a field */\n FunctionCall fc: fc.possibleTargets contains [Function: (\n (\n name matches \"send|bind|createSocket|createServer|get|request|addListener|once|resolve(4|6|Cname|Mx|Ns|Soa|Srv|Txt)?|lookup(Service)?|reverse|exec(File)?\"\n and possibleHeapPaths contains [String str: str matches \"dgram(\\.Socket)?|http(s)?|net|tls|dns|child_process\"]\n )\n or\n (\n name == \"on\"\n and not possibleHeapPaths contains [String str2: str2 matches \"HTML[A-z]*Element.*|(\\$)?window|(\\$)?document\"]\n and not fc.instance is [FunctionCall:\n possibleTargets contains [Function: name matches \"jQuery|\\$\" or\n (name == \"constructor\" and possibleHeapPaths contains [String: matches \"(jQuery|\\$)\\.(prototype|fn)\"])\n /* account for jQuery selector filters */\n or name matches \"eq|filter|first|has|is|last|map|not|slice|children|closest|find|((next|prev)(All|Until)?)|offsetParent|parent|parents|parentsUntil|siblings|add|addBack|andSelf|end|not|contents|each\"\n ]\n ]\n and not fc.instance.possibleHeapPaths contains \"angular.element\"\n and fc.arguments.length == 2\n )\n )]\n and fc.arguments contains [Expression e:\n possibleFunctionTargets contains [Function: contains [FunctionCall: function is [Function lambda:\n /* lambda isn't recursive */\n not lambda contains [FunctionCall recursiveFC: recursiveFC == fc or recursiveFC.function contains [FunctionCall: == fc]]\n and lambda contains [FieldAccess fa: fa.type.arrayDimensions == 0\n and fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]]\n /* isn't ~parent field that seems to be specified around lambdas */\n and fa.field is [Field f:\n not fa.sourceLocation.None\n and not f.sourceLocation.None\n and fa.sourceLocation.startLine != f.sourceLocation.startLine\n /* isn't length field in NST */\n and f.name != \"length\"\n and fc.enclosingFunction contains [FieldAccess fa2: fa2.type.arrayDimensions == 0\n and fa2.field is f\n /* FieldAccess outside of lambda that isn't another assignment */\n and not fa2 in [AssignmentStatement: lhs.location is [Location: transitiveBase === fa2.transitiveBase]]\n and not fa2.sourceLocation.None\n and not fc.sourceLocation.None\n and fa2.sourceLocation.startLine > fc.sourceLocation.startLine\n ]*\n ]\n ]*\n ]]*]\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Time and State", "vuln_category": "Race Condition", - "vuln_subcategory": null, - "predicate": "\n /* find a lambda that calls a function that assigns a value to a field */\n FunctionCall fc: fc.possibleTargets contains [Function:\n (\n name matches \"send|bind|createSocket|createServer|get|request|addListener|once|resolve(4|6|Cname|Mx|Ns|Soa|Srv|Txt)?|lookup(Service)?|reverse|exec(File)?\"\n and possibleHeapPaths contains [String str: str matches \"dgram(\\.Socket)?|http(s)?|net|tls|dns|child_process\"]\n )\n or\n (\n name == \"on\"\n and not possibleHeapPaths contains [String str2: str2 matches \"HTML[A-z]*Element.*|(\\$)?window|(\\$)?document\"]\n and not fc.instance is [FunctionCall:\n possibleTargets contains [Function: name matches \"jQuery|\\$\" or\n (name == \"constructor\" and possibleHeapPaths contains [String: matches \"(jQuery|\\$)\\.(prototype|fn)\"])\n /* account for jQuery selector filters */\n or name matches \"eq|filter|first|has|is|last|map|not|slice|children|closest|find|((next|prev)(All|Until)?)|offsetParent|parent|parents|parentsUntil|siblings|add|addBack|andSelf|end|not|contents|each\"\n ]\n ]\n and not fc.instance.possibleHeapPaths contains \"angular.element\"\n and fc.arguments.length == 2\n )\n ]\n and fc.arguments contains [Expression e:\n possibleFunctionTargets contains [Function: contains [FunctionCall: function is [Function lambda:\n /* lambda isn't recursive */\n not lambda contains [FunctionCall recursiveFC: recursiveFC == fc or recursiveFC.function contains [FunctionCall: == fc]]\n and lambda contains [Location loc: loc.type.arrayDimensions == 0\n and loc in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === loc.transitiveBase]]\n /* isn't ~parent field that seems to be specified around lambdas */\n and not loc.sourceLocation.null\n /* isn't length field in NST */\n and loc.name != \"length\"\n /* isn't 'this' */\n and loc.name != \"this\"\n /* a separate function is called that reads the field */\n and fc.enclosingFunction contains [FunctionCall fc2: function is [Function func:\n /* function isn't recursive with original function */\n not func contains [FunctionCall recursiveFC2: recursiveFC2 == fc or recursiveFC2.function contains [FunctionCall: == fc]]\n /* the function called isn't called via a lambda */\n and not fc.enclosingFunction contains [FunctionCall: arguments contains [Expression: possibleFunctionTargets contains func]]\n and contains [Location loc2: loc2.type.arrayDimensions == 0\n and loc2.name == loc.name\n /* the underlying declaration is the same i.e. the field being accessed is the same field */\n and (\n loc2 is [FieldAccess fa2: loc is [FieldAccess fa:\n not fa2.field.sourceLocation.null\n and not fa.field.sourceLocation.null\n and fa2.field.sourceLocation.startLine == fa.field.sourceLocation.startLine\n and fa.field is [Field:\n /* do not match against the lambda generated fields */\n name != \"~environment\"\n and name != \"~method\"\n and name != \"prototype\"\n ]*\n ]]\n or loc2 is [VariableAccess va2: loc is [VariableAccess va:\n not va2.variable.sourceLocation.null\n and not va.variable.sourceLocation.null\n and va2.variable.sourceLocation.startLine == va.variable.sourceLocation.startLine\n and not va.this\n and not va2.this\n and va.variable is [Variable: not isTemp ]*\n ]]\n )\n /* not another assignment to the field */\n and not loc2 in [AssignmentStatement: lhs.location is [Location: transitiveBase === loc2.transitiveBase]]\n /* second function call (which includes FieldAccess read) occurs after first function calls lambda (which contains a function call with a FieldAccess write) */\n and not fc2.sourceLocation.null\n and not fc.sourceLocation.null\n and fc2.sourceLocation.startLine > fc.sourceLocation.startLine\n ]*\n ]]*\n ]*\n ]]*]\n ]\n " + "vuln_subcategory": None, + "predicate": "\n /* find a lambda that calls a function that assigns a value to a field */\n FunctionCall fc: fc.possibleTargets contains [Function:\n (\n name matches \"send|bind|createSocket|createServer|get|request|addListener|once|resolve(4|6|Cname|Mx|Ns|Soa|Srv|Txt)?|lookup(Service)?|reverse|exec(File)?\"\n and possibleHeapPaths contains [String str: str matches \"dgram(\\.Socket)?|http(s)?|net|tls|dns|child_process\"]\n )\n or\n (\n name == \"on\"\n and not possibleHeapPaths contains [String str2: str2 matches \"HTML[A-z]*Element.*|(\\$)?window|(\\$)?document\"]\n and not fc.instance is [FunctionCall:\n possibleTargets contains [Function: name matches \"jQuery|\\$\" or\n (name == \"constructor\" and possibleHeapPaths contains [String: matches \"(jQuery|\\$)\\.(prototype|fn)\"])\n /* account for jQuery selector filters */\n or name matches \"eq|filter|first|has|is|last|map|not|slice|children|closest|find|((next|prev)(All|Until)?)|offsetParent|parent|parents|parentsUntil|siblings|add|addBack|andSelf|end|not|contents|each\"\n ]\n ]\n and not fc.instance.possibleHeapPaths contains \"angular.element\"\n and fc.arguments.length == 2\n )\n ]\n and fc.arguments contains [Expression e:\n possibleFunctionTargets contains [Function: contains [FunctionCall: function is [Function lambda:\n /* lambda isn't recursive */\n not lambda contains [FunctionCall recursiveFC: recursiveFC == fc or recursiveFC.function contains [FunctionCall: == fc]]\n and lambda contains [Location loc: loc.type.arrayDimensions == 0\n and loc in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === loc.transitiveBase]]\n /* isn't ~parent field that seems to be specified around lambdas */\n and not loc.sourceLocation.None\n /* isn't length field in NST */\n and loc.name != \"length\"\n /* isn't 'this' */\n and loc.name != \"this\"\n /* a separate function is called that reads the field */\n and fc.enclosingFunction contains [FunctionCall fc2: function is [Function func:\n /* function isn't recursive with original function */\n not func contains [FunctionCall recursiveFC2: recursiveFC2 == fc or recursiveFC2.function contains [FunctionCall: == fc]]\n /* the function called isn't called via a lambda */\n and not fc.enclosingFunction contains [FunctionCall: arguments contains [Expression: possibleFunctionTargets contains func]]\n and contains [Location loc2: loc2.type.arrayDimensions == 0\n and loc2.name == loc.name\n /* the underlying declaration is the same i.e. the field being accessed is the same field */\n and (\n loc2 is [FieldAccess fa2: loc is [FieldAccess fa:\n not fa2.field.sourceLocation.None\n and not fa.field.sourceLocation.None\n and fa2.field.sourceLocation.startLine == fa.field.sourceLocation.startLine\n and fa.field is [Field:\n /* do not match against the lambda generated fields */\n name != \"~environment\"\n and name != \"~method\"\n and name != \"prototype\"\n ]*\n ]]\n or loc2 is [VariableAccess va2: loc is [VariableAccess va:\n not va2.variable.sourceLocation.None\n and not va.variable.sourceLocation.None\n and va2.variable.sourceLocation.startLine == va.variable.sourceLocation.startLine\n and not va.this\n and not va2.this\n and va.variable is [Variable: not isTemp ]*\n ]]\n )\n /* not another assignment to the field */\n and not loc2 in [AssignmentStatement: lhs.location is [Location: transitiveBase === loc2.transitiveBase]]\n /* second function call (which includes FieldAccess read) occurs after first function calls lambda (which contains a function call with a FieldAccess write) */\n and not fc2.sourceLocation.None\n and not fc.sourceLocation.None\n and fc2.sourceLocation.startLine > fc.sourceLocation.startLine\n ]*\n ]]*\n ]*\n ]]*]\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Time and State", "vuln_category": "Race Condition", - "vuln_subcategory": null, - "predicate": "\n /* find a lambda that calls a function that assigns a value to a field */\n FunctionCall fc: fc.possibleTargets contains [Function: (\n (\n name matches \"send|bind|createSocket|createServer|get|request|addListener|once|resolve(4|6|Cname|Mx|Ns|Soa|Srv|Txt)?|lookup(Service)?|reverse|exec(File)?\"\n and possibleHeapPaths contains [String str: str matches \"dgram(\\.Socket)?|http(s)?|net|tls|dns|child_process\"]\n )\n or\n (\n name == \"on\"\n and not possibleHeapPaths contains [String str2: str2 matches \"HTML[A-z]*Element.*|(\\$)?window|(\\$)?document\"]\n and not fc.instance is [FunctionCall:\n possibleTargets contains [Function: name matches \"jQuery|\\$\" or\n (name == \"constructor\" and possibleHeapPaths contains [String: matches \"(jQuery|\\$)\\.(prototype|fn)\"])\n /* account for jQuery selector filters */\n or name matches \"eq|filter|first|has|is|last|map|not|slice|children|closest|find|((next|prev)(All|Until)?)|offsetParent|parent|parents|parentsUntil|siblings|add|addBack|andSelf|end|not|contents|each\"\n ]\n ]\n and not fc.instance.possibleHeapPaths contains \"angular.element\"\n and fc.arguments.length == 2\n )\n )]\n and fc.arguments contains [Expression e:\n possibleFunctionTargets contains [Function: contains [FunctionCall: function is [Function lambda:\n /* lambda isn't recursive */\n not lambda contains [FunctionCall recursiveFC: recursiveFC == fc or recursiveFC.function contains [FunctionCall: == fc]]\n and lambda contains [FieldAccess fa: fa.type.arrayDimensions == 0\n and fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]]\n /* isn't ~parent field that seems to be specified around lambdas */\n and fa.field is [Field f:\n not fa.sourceLocation.null\n and not f.sourceLocation.null\n and fa.sourceLocation.startLine != f.sourceLocation.startLine\n /* isn't length field in NST */\n and f.name != \"length\"\n /* a separate function is called that reads the field */\n and fc.enclosingFunction contains [FunctionCall fc2: function is [Function func:\n /* function isn't recursive with original function */\n not func contains [FunctionCall recursiveFC2: recursiveFC2 == fc or recursiveFC2.function contains [FunctionCall: == fc]]\n /* the function called isn't called via a lambda */\n and not fc.enclosingFunction contains [FunctionCall: arguments contains [Expression: possibleFunctionTargets contains func]]\n and contains [FieldAccess fa2: fa2.type.arrayDimensions == 0\n and fa2.field is f\n /* not another assignment to the field */\n and not fa2 in [AssignmentStatement: lhs.location is [Location: transitiveBase === fa2.transitiveBase]]\n /* second function call (which includes FieldAccess read) occurs after first function calls lambda (which contains a function call with a FieldAccess write) */\n and not fc2.sourceLocation.null\n and not fc.sourceLocation.null\n and fc2.sourceLocation.startLine > fc.sourceLocation.startLine\n ]*]]*\n ]\n ]*\n ]]*]\n ]\n " + "vuln_subcategory": None, + "predicate": "\n /* find a lambda that calls a function that assigns a value to a field */\n FunctionCall fc: fc.possibleTargets contains [Function: (\n (\n name matches \"send|bind|createSocket|createServer|get|request|addListener|once|resolve(4|6|Cname|Mx|Ns|Soa|Srv|Txt)?|lookup(Service)?|reverse|exec(File)?\"\n and possibleHeapPaths contains [String str: str matches \"dgram(\\.Socket)?|http(s)?|net|tls|dns|child_process\"]\n )\n or\n (\n name == \"on\"\n and not possibleHeapPaths contains [String str2: str2 matches \"HTML[A-z]*Element.*|(\\$)?window|(\\$)?document\"]\n and not fc.instance is [FunctionCall:\n possibleTargets contains [Function: name matches \"jQuery|\\$\" or\n (name == \"constructor\" and possibleHeapPaths contains [String: matches \"(jQuery|\\$)\\.(prototype|fn)\"])\n /* account for jQuery selector filters */\n or name matches \"eq|filter|first|has|is|last|map|not|slice|children|closest|find|((next|prev)(All|Until)?)|offsetParent|parent|parents|parentsUntil|siblings|add|addBack|andSelf|end|not|contents|each\"\n ]\n ]\n and not fc.instance.possibleHeapPaths contains \"angular.element\"\n and fc.arguments.length == 2\n )\n )]\n and fc.arguments contains [Expression e:\n possibleFunctionTargets contains [Function: contains [FunctionCall: function is [Function lambda:\n /* lambda isn't recursive */\n not lambda contains [FunctionCall recursiveFC: recursiveFC == fc or recursiveFC.function contains [FunctionCall: == fc]]\n and lambda contains [FieldAccess fa: fa.type.arrayDimensions == 0\n and fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]]\n /* isn't ~parent field that seems to be specified around lambdas */\n and fa.field is [Field f:\n not fa.sourceLocation.None\n and not f.sourceLocation.None\n and fa.sourceLocation.startLine != f.sourceLocation.startLine\n /* isn't length field in NST */\n and f.name != \"length\"\n /* a separate function is called that reads the field */\n and fc.enclosingFunction contains [FunctionCall fc2: function is [Function func:\n /* function isn't recursive with original function */\n not func contains [FunctionCall recursiveFC2: recursiveFC2 == fc or recursiveFC2.function contains [FunctionCall: == fc]]\n /* the function called isn't called via a lambda */\n and not fc.enclosingFunction contains [FunctionCall: arguments contains [Expression: possibleFunctionTargets contains func]]\n and contains [FieldAccess fa2: fa2.type.arrayDimensions == 0\n and fa2.field is f\n /* not another assignment to the field */\n and not fa2 in [AssignmentStatement: lhs.location is [Location: transitiveBase === fa2.transitiveBase]]\n /* second function call (which includes FieldAccess read) occurs after first function calls lambda (which contains a function call with a FieldAccess write) */\n and not fc2.sourceLocation.None\n and not fc.sourceLocation.None\n and fc2.sourceLocation.startLine > fc.sourceLocation.startLine\n ]*]]*\n ]\n ]*\n ]]*]\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Time and State", "vuln_category": "Race Condition", - "vuln_subcategory": null, - "predicate": "\n /* find a lambda that assigns a value to a field */\n FunctionCall fc: fc.possibleTargets contains [Function:\n (\n name matches \"send|bind|createSocket|createServer|get|request|addListener|once|resolve(4|6|Cname|Mx|Ns|Soa|Srv|Txt)?|lookup(Service)?|reverse|exec(File)?\"\n and possibleHeapPaths contains [String str: str matches \"dgram(\\.Socket)?|http(s)?|net|tls|dns|child_process\"]\n )\n or\n (\n name == \"on\"\n and not possibleHeapPaths contains [String str2: str2 matches \"HTML[A-z]*Element.*|(\\$)?window|(\\$)?document\"]\n and not fc.instance is [FunctionCall:\n possibleTargets contains [Function: name matches \"jQuery|\\$\" or\n (\n name == \"constructor\" and possibleHeapPaths contains [String: matches \"(jQuery|\\$)\\.(prototype|fn)\"]\n )\n /* account for jQuery selector filters */\n or name matches \"eq|filter|first|has|is|last|map|not|slice|children|closest|find|((next|prev)(All|Until)?)|offsetParent|parent|parents|parentsUntil|siblings|add|addBack|andSelf|end|not|contents|each\"\n ]\n ]\n and not fc.instance.possibleHeapPaths contains \"angular.element\"\n and fc.arguments.length == 2\n )\n ]\n and fc.arguments contains [Expression e: possibleFunctionTargets contains [Function lambda:\n /* lambda isn't recursive */\n not lambda contains [FunctionCall recursiveFC: recursiveFC == fc or recursiveFC.function contains [FunctionCall: == fc]]\n and lambda contains [Location loc: type.arrayDimensions == 0\n and loc in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === loc.transitiveBase]]\n /* isn't ~parent field that seems to be specified around lambdas */\n and not loc.sourceLocation.null\n /* isn't length field in NST */\n and loc.name != \"length\"\n /* isn't 'this' */\n and loc.name != \"this\"\n and fc.enclosingFunction contains [Location loc2: loc2.type.arrayDimensions == 0\n and loc2.name == loc.name\n /* the underlying declaration is the same i.e. the field being accessed is the same field */\n and (\n loc2 is [FieldAccess fa2: loc is [FieldAccess fa:\n not fa2.field.sourceLocation.null\n and not fa.field.sourceLocation.null\n and fa2.field.sourceLocation.startLine == fa.field.sourceLocation.startLine\n and fa.field is [Field:\n /* do not match against the lambda generated fields */\n name != \"~environment\"\n and name != \"~method\"\n and name != \"prototype\"\n ]*\n ]]\n or loc2 is [VariableAccess va2: loc is [VariableAccess va:\n not va2.variable.sourceLocation.null\n and not va.variable.sourceLocation.null\n and va2.variable.sourceLocation.startLine == va.variable.sourceLocation.startLine\n and not va.this\n and not va2.this\n and va.variable is [Variable: not isTemp ]*\n ]]\n )\n /* FieldAccess outside of lambda that isn't another assignment */\n and not loc2 in [AssignmentStatement: lhs.location is [Location: transitiveBase === loc2.transitiveBase]]\n /* make sure occurs after initial lambda call */\n and not loc2.sourceLocation.null\n and not fc.sourceLocation.null\n and loc2.sourceLocation.startLine > fc.sourceLocation.startLine\n ]*\n ]*\n ]\n ]\n " + "vuln_subcategory": None, + "predicate": "\n /* find a lambda that assigns a value to a field */\n FunctionCall fc: fc.possibleTargets contains [Function:\n (\n name matches \"send|bind|createSocket|createServer|get|request|addListener|once|resolve(4|6|Cname|Mx|Ns|Soa|Srv|Txt)?|lookup(Service)?|reverse|exec(File)?\"\n and possibleHeapPaths contains [String str: str matches \"dgram(\\.Socket)?|http(s)?|net|tls|dns|child_process\"]\n )\n or\n (\n name == \"on\"\n and not possibleHeapPaths contains [String str2: str2 matches \"HTML[A-z]*Element.*|(\\$)?window|(\\$)?document\"]\n and not fc.instance is [FunctionCall:\n possibleTargets contains [Function: name matches \"jQuery|\\$\" or\n (\n name == \"constructor\" and possibleHeapPaths contains [String: matches \"(jQuery|\\$)\\.(prototype|fn)\"]\n )\n /* account for jQuery selector filters */\n or name matches \"eq|filter|first|has|is|last|map|not|slice|children|closest|find|((next|prev)(All|Until)?)|offsetParent|parent|parents|parentsUntil|siblings|add|addBack|andSelf|end|not|contents|each\"\n ]\n ]\n and not fc.instance.possibleHeapPaths contains \"angular.element\"\n and fc.arguments.length == 2\n )\n ]\n and fc.arguments contains [Expression e: possibleFunctionTargets contains [Function lambda:\n /* lambda isn't recursive */\n not lambda contains [FunctionCall recursiveFC: recursiveFC == fc or recursiveFC.function contains [FunctionCall: == fc]]\n and lambda contains [Location loc: type.arrayDimensions == 0\n and loc in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === loc.transitiveBase]]\n /* isn't ~parent field that seems to be specified around lambdas */\n and not loc.sourceLocation.None\n /* isn't length field in NST */\n and loc.name != \"length\"\n /* isn't 'this' */\n and loc.name != \"this\"\n and fc.enclosingFunction contains [Location loc2: loc2.type.arrayDimensions == 0\n and loc2.name == loc.name\n /* the underlying declaration is the same i.e. the field being accessed is the same field */\n and (\n loc2 is [FieldAccess fa2: loc is [FieldAccess fa:\n not fa2.field.sourceLocation.None\n and not fa.field.sourceLocation.None\n and fa2.field.sourceLocation.startLine == fa.field.sourceLocation.startLine\n and fa.field is [Field:\n /* do not match against the lambda generated fields */\n name != \"~environment\"\n and name != \"~method\"\n and name != \"prototype\"\n ]*\n ]]\n or loc2 is [VariableAccess va2: loc is [VariableAccess va:\n not va2.variable.sourceLocation.None\n and not va.variable.sourceLocation.None\n and va2.variable.sourceLocation.startLine == va.variable.sourceLocation.startLine\n and not va.this\n and not va2.this\n and va.variable is [Variable: not isTemp ]*\n ]]\n )\n /* FieldAccess outside of lambda that isn't another assignment */\n and not loc2 in [AssignmentStatement: lhs.location is [Location: transitiveBase === loc2.transitiveBase]]\n /* make sure occurs after initial lambda call */\n and not loc2.sourceLocation.None\n and not fc.sourceLocation.None\n and loc2.sourceLocation.startLine > fc.sourceLocation.startLine\n ]*\n ]*\n ]\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Time and State", "vuln_category": "Race Condition", - "vuln_subcategory": null, - "predicate": "\n /* find a lambda that assigns a value to a field */\n FunctionCall fc: fc.possibleTargets contains [Function: (\n (\n name matches \"send|bind|createSocket|createServer|get|request|addListener|once|resolve(4|6|Cname|Mx|Ns|Soa|Srv|Txt)?|lookup(Service)?|reverse|exec(File)?\"\n and possibleHeapPaths contains [String str: str matches \"dgram(\\.Socket)?|http(s)?|net|tls|dns|child_process\"]\n )\n or\n (\n name == \"on\"\n and not possibleHeapPaths contains [String str2: str2 matches \"HTML[A-z]*Element.*|(\\$)?window|(\\$)?document\"]\n and not fc.instance is [FunctionCall:\n possibleTargets contains [Function: name matches \"jQuery|\\$\" or\n (name == \"constructor\" and possibleHeapPaths contains [String: matches \"(jQuery|\\$)\\.(prototype|fn)\"])\n /* account for jQuery selector filters */\n or name matches \"eq|filter|first|has|is|last|map|not|slice|children|closest|find|((next|prev)(All|Until)?)|offsetParent|parent|parents|parentsUntil|siblings|add|addBack|andSelf|end|not|contents|each\"\n ]\n ]\n and not fc.instance.possibleHeapPaths contains \"angular.element\"\n and fc.arguments.length == 2\n )\n )]\n and fc.arguments contains [Expression e: possibleFunctionTargets contains\n [Function lambda:\n /* lambda isn't recursive */\n not lambda contains [FunctionCall recursiveFC: recursiveFC == fc or recursiveFC.function contains [FunctionCall: == fc]]\n and lambda contains [FieldAccess fa: type.arrayDimensions == 0\n and fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]]\n /* isn't ~parent field that seems to be specified around lambdas */\n and fa.field is [Field f:\n not fa.sourceLocation.null\n and not f.sourceLocation.null\n and fa.sourceLocation.startLine != f.sourceLocation.startLine\n /* isn't length field in NST */\n and f.name != \"length\"\n and fc.enclosingFunction contains [FieldAccess fa2: fa2.type.arrayDimensions == 0\n and fa2.field is f\n /* FieldAccess outside of lambda that isn't another assignment */\n and not fa2 in [AssignmentStatement: lhs.location is [Location: transitiveBase === fa2.transitiveBase]]\n /* make sure occurs after initial lambda call */\n and not fa2.sourceLocation.null\n and not fc.sourceLocation.null\n and fa2.sourceLocation.startLine > fc.sourceLocation.startLine\n ]*\n ]\n ]*]\n ]\n " + "vuln_subcategory": None, + "predicate": "\n /* find a lambda that assigns a value to a field */\n FunctionCall fc: fc.possibleTargets contains [Function: (\n (\n name matches \"send|bind|createSocket|createServer|get|request|addListener|once|resolve(4|6|Cname|Mx|Ns|Soa|Srv|Txt)?|lookup(Service)?|reverse|exec(File)?\"\n and possibleHeapPaths contains [String str: str matches \"dgram(\\.Socket)?|http(s)?|net|tls|dns|child_process\"]\n )\n or\n (\n name == \"on\"\n and not possibleHeapPaths contains [String str2: str2 matches \"HTML[A-z]*Element.*|(\\$)?window|(\\$)?document\"]\n and not fc.instance is [FunctionCall:\n possibleTargets contains [Function: name matches \"jQuery|\\$\" or\n (name == \"constructor\" and possibleHeapPaths contains [String: matches \"(jQuery|\\$)\\.(prototype|fn)\"])\n /* account for jQuery selector filters */\n or name matches \"eq|filter|first|has|is|last|map|not|slice|children|closest|find|((next|prev)(All|Until)?)|offsetParent|parent|parents|parentsUntil|siblings|add|addBack|andSelf|end|not|contents|each\"\n ]\n ]\n and not fc.instance.possibleHeapPaths contains \"angular.element\"\n and fc.arguments.length == 2\n )\n )]\n and fc.arguments contains [Expression e: possibleFunctionTargets contains\n [Function lambda:\n /* lambda isn't recursive */\n not lambda contains [FunctionCall recursiveFC: recursiveFC == fc or recursiveFC.function contains [FunctionCall: == fc]]\n and lambda contains [FieldAccess fa: type.arrayDimensions == 0\n and fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]]\n /* isn't ~parent field that seems to be specified around lambdas */\n and fa.field is [Field f:\n not fa.sourceLocation.None\n and not f.sourceLocation.None\n and fa.sourceLocation.startLine != f.sourceLocation.startLine\n /* isn't length field in NST */\n and f.name != \"length\"\n and fc.enclosingFunction contains [FieldAccess fa2: fa2.type.arrayDimensions == 0\n and fa2.field is f\n /* FieldAccess outside of lambda that isn't another assignment */\n and not fa2 in [AssignmentStatement: lhs.location is [Location: transitiveBase === fa2.transitiveBase]]\n /* make sure occurs after initial lambda call */\n and not fa2.sourceLocation.None\n and not fc.sourceLocation.None\n and fa2.sourceLocation.startLine > fc.sourceLocation.startLine\n ]*\n ]\n ]*]\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Time and State", "vuln_category": "Race Condition", - "vuln_subcategory": null, - "predicate": "\n /* find a lambda that assigns a value to a field */\n FunctionCall fc: fc.possibleTargets contains [Function:\n (\n name matches \"send|bind|createSocket|createServer|get|request|addListener|once|resolve(4|6|Cname|Mx|Ns|Soa|Srv|Txt)?|lookup(Service)?|reverse|exec(File)?\"\n and possibleHeapPaths contains [String str: str matches \"dgram(\\.Socket)?|http(s)?|net|tls|dns|child_process\"]\n )\n or\n (\n name == \"on\"\n and not possibleHeapPaths contains [String str2: str2 matches \"HTML[A-z]*Element.*|(\\$)?window|(\\$)?document\"]\n and not fc.instance is [FunctionCall:\n possibleTargets contains [Function: name matches \"jQuery|\\$\" or\n (name == \"constructor\" and possibleHeapPaths contains [String: matches \"(jQuery|\\$)\\.(prototype|fn)\"])\n /* account for jQuery selector filters */\n or name matches \"eq|filter|first|has|is|last|map|not|slice|children|closest|find|((next|prev)(All|Until)?)|offsetParent|parent|parents|parentsUntil|siblings|add|addBack|andSelf|end|not|contents|each\"\n ]\n ]\n and not fc.instance.possibleHeapPaths contains \"angular.element\"\n and fc.arguments.length == 2\n )\n ]\n and fc.arguments contains [Expression e: possibleFunctionTargets contains [Function lambda:\n /* lambda isn't recursive */\n not lambda contains [FunctionCall recursiveFC: recursiveFC == fc or recursiveFC.function contains [FunctionCall: == fc]]\n and lambda contains [Location loc: loc.type.arrayDimensions == 0\n and loc in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === loc.transitiveBase]]\n and not loc.sourceLocation.null\n and loc.name != \"length\"\n /* isn't 'this' */\n and loc.name != \"this\"\n and fc.enclosingFunction contains [FunctionCall fc2:\n function is [Function func:\n not func contains [FunctionCall recursiveFC2: recursiveFC2 == fc or recursiveFC2.function contains [FunctionCall: == fc]]\n and not fc.enclosingFunction contains [FunctionCall: arguments contains [Expression: possibleFunctionTargets contains func]]\n and contains [Location loc2: loc2.type.arrayDimensions == 0\n and loc2.name == loc.name\n /* the underlying declaration is the same i.e. the field being accessed is the same field */\n and (\n loc2 is [FieldAccess fa2: loc is [FieldAccess fa:\n not fa2.field.sourceLocation.null\n and not fa.field.sourceLocation.null\n and fa2.field.sourceLocation.startLine == fa.field.sourceLocation.startLine\n and fa.field is [Field:\n /* do not match against the lambda generated fields */\n name != \"~environment\"\n and name != \"~method\"\n and name != \"prototype\"\n ]*\n ]]\n or loc2 is [VariableAccess va2: loc is [VariableAccess va:\n not va2.variable.sourceLocation.null\n and not va.variable.sourceLocation.null\n and va2.variable.sourceLocation.startLine == va.variable.sourceLocation.startLine\n and not va.this\n and not va2.this\n and va.variable is [Variable: not isTemp ]*\n ]]\n )\n and not loc2 in [AssignmentStatement: lhs.location is [Location: transitiveBase === loc2.transitiveBase]]\n and not fc2.sourceLocation.null\n and not fc.sourceLocation.null\n and fc2.sourceLocation.startLine > fc.sourceLocation.startLine\n ]*\n ]\n ]*\n ]*\n ]\n ]\n " + "vuln_subcategory": None, + "predicate": "\n /* find a lambda that assigns a value to a field */\n FunctionCall fc: fc.possibleTargets contains [Function:\n (\n name matches \"send|bind|createSocket|createServer|get|request|addListener|once|resolve(4|6|Cname|Mx|Ns|Soa|Srv|Txt)?|lookup(Service)?|reverse|exec(File)?\"\n and possibleHeapPaths contains [String str: str matches \"dgram(\\.Socket)?|http(s)?|net|tls|dns|child_process\"]\n )\n or\n (\n name == \"on\"\n and not possibleHeapPaths contains [String str2: str2 matches \"HTML[A-z]*Element.*|(\\$)?window|(\\$)?document\"]\n and not fc.instance is [FunctionCall:\n possibleTargets contains [Function: name matches \"jQuery|\\$\" or\n (name == \"constructor\" and possibleHeapPaths contains [String: matches \"(jQuery|\\$)\\.(prototype|fn)\"])\n /* account for jQuery selector filters */\n or name matches \"eq|filter|first|has|is|last|map|not|slice|children|closest|find|((next|prev)(All|Until)?)|offsetParent|parent|parents|parentsUntil|siblings|add|addBack|andSelf|end|not|contents|each\"\n ]\n ]\n and not fc.instance.possibleHeapPaths contains \"angular.element\"\n and fc.arguments.length == 2\n )\n ]\n and fc.arguments contains [Expression e: possibleFunctionTargets contains [Function lambda:\n /* lambda isn't recursive */\n not lambda contains [FunctionCall recursiveFC: recursiveFC == fc or recursiveFC.function contains [FunctionCall: == fc]]\n and lambda contains [Location loc: loc.type.arrayDimensions == 0\n and loc in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === loc.transitiveBase]]\n and not loc.sourceLocation.None\n and loc.name != \"length\"\n /* isn't 'this' */\n and loc.name != \"this\"\n and fc.enclosingFunction contains [FunctionCall fc2:\n function is [Function func:\n not func contains [FunctionCall recursiveFC2: recursiveFC2 == fc or recursiveFC2.function contains [FunctionCall: == fc]]\n and not fc.enclosingFunction contains [FunctionCall: arguments contains [Expression: possibleFunctionTargets contains func]]\n and contains [Location loc2: loc2.type.arrayDimensions == 0\n and loc2.name == loc.name\n /* the underlying declaration is the same i.e. the field being accessed is the same field */\n and (\n loc2 is [FieldAccess fa2: loc is [FieldAccess fa:\n not fa2.field.sourceLocation.None\n and not fa.field.sourceLocation.None\n and fa2.field.sourceLocation.startLine == fa.field.sourceLocation.startLine\n and fa.field is [Field:\n /* do not match against the lambda generated fields */\n name != \"~environment\"\n and name != \"~method\"\n and name != \"prototype\"\n ]*\n ]]\n or loc2 is [VariableAccess va2: loc is [VariableAccess va:\n not va2.variable.sourceLocation.None\n and not va.variable.sourceLocation.None\n and va2.variable.sourceLocation.startLine == va.variable.sourceLocation.startLine\n and not va.this\n and not va2.this\n and va.variable is [Variable: not isTemp ]*\n ]]\n )\n and not loc2 in [AssignmentStatement: lhs.location is [Location: transitiveBase === loc2.transitiveBase]]\n and not fc2.sourceLocation.None\n and not fc.sourceLocation.None\n and fc2.sourceLocation.startLine > fc.sourceLocation.startLine\n ]*\n ]\n ]*\n ]*\n ]\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Time and State", "vuln_category": "Race Condition", - "vuln_subcategory": null, - "predicate": "\n /* find a lambda that assigns a value to a field */\n FunctionCall fc: fc.possibleTargets contains [Function: (\n (\n name matches \"send|bind|createSocket|createServer|get|request|addListener|once|resolve(4|6|Cname|Mx|Ns|Soa|Srv|Txt)?|lookup(Service)?|reverse|exec(File)?\"\n and possibleHeapPaths contains [String str: str matches \"dgram(\\.Socket)?|http(s)?|net|tls|dns|child_process\"]\n )\n or\n (\n name == \"on\"\n and not possibleHeapPaths contains [String str2: str2 matches \"HTML[A-z]*Element.*|(\\$)?window|(\\$)?document\"]\n and not fc.instance is [FunctionCall:\n possibleTargets contains [Function: name matches \"jQuery|\\$\" or\n (name == \"constructor\" and possibleHeapPaths contains [String: matches \"(jQuery|\\$)\\.(prototype|fn)\"])\n /* account for jQuery selector filters */\n or name matches \"eq|filter|first|has|is|last|map|not|slice|children|closest|find|((next|prev)(All|Until)?)|offsetParent|parent|parents|parentsUntil|siblings|add|addBack|andSelf|end|not|contents|each\"\n ]\n ]\n and not fc.instance.possibleHeapPaths contains \"angular.element\"\n and fc.arguments.length == 2\n )\n )]\n and fc.arguments contains [Expression e: possibleFunctionTargets contains\n [Function lambda:\n /* lambda isn't recursive */\n not lambda contains [FunctionCall recursiveFC: recursiveFC == fc or recursiveFC.function contains [FunctionCall: == fc]]\n and lambda contains [FieldAccess fa: fa.type.arrayDimensions == 0\n and fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]]\n /* isn't ~parent field that seems to be specified around lambdas */\n and fa.field is [Field f:\n not fa.sourceLocation.null\n and not f.sourceLocation.null\n and fa.sourceLocation.startLine != f.sourceLocation.startLine\n /* isn't length field in NST */\n and f.name != \"length\"\n /* a separate function is called that reads the field */\n and fc.enclosingFunction contains [FunctionCall fc2: function is [Function func:\n /* function isn't recursive with original function */\n not func contains [FunctionCall recursiveFC2: recursiveFC2 == fc or recursiveFC2.function contains [FunctionCall: == fc]]\n /* the function called isn't called via a lambda */\n and not fc.enclosingFunction contains [FunctionCall: arguments contains [Expression: possibleFunctionTargets contains func]]\n and contains [FieldAccess fa2: fa2.type.arrayDimensions == 0\n and fa2.field is f\n /* not another assignment to the field */\n and not fa2 in [AssignmentStatement: lhs.location is [Location: transitiveBase === fa2.transitiveBase]]\n /* second function call (which includes FieldAccess read) occurs after first function calls lambda (which contains FieldAccess write) */\n and not fc2.sourceLocation.null\n and not fc.sourceLocation.null\n and fc2.sourceLocation.startLine > fc.sourceLocation.startLine\n ]*]]*\n ]\n ]*]\n ]\n " + "vuln_subcategory": None, + "predicate": "\n /* find a lambda that assigns a value to a field */\n FunctionCall fc: fc.possibleTargets contains [Function: (\n (\n name matches \"send|bind|createSocket|createServer|get|request|addListener|once|resolve(4|6|Cname|Mx|Ns|Soa|Srv|Txt)?|lookup(Service)?|reverse|exec(File)?\"\n and possibleHeapPaths contains [String str: str matches \"dgram(\\.Socket)?|http(s)?|net|tls|dns|child_process\"]\n )\n or\n (\n name == \"on\"\n and not possibleHeapPaths contains [String str2: str2 matches \"HTML[A-z]*Element.*|(\\$)?window|(\\$)?document\"]\n and not fc.instance is [FunctionCall:\n possibleTargets contains [Function: name matches \"jQuery|\\$\" or\n (name == \"constructor\" and possibleHeapPaths contains [String: matches \"(jQuery|\\$)\\.(prototype|fn)\"])\n /* account for jQuery selector filters */\n or name matches \"eq|filter|first|has|is|last|map|not|slice|children|closest|find|((next|prev)(All|Until)?)|offsetParent|parent|parents|parentsUntil|siblings|add|addBack|andSelf|end|not|contents|each\"\n ]\n ]\n and not fc.instance.possibleHeapPaths contains \"angular.element\"\n and fc.arguments.length == 2\n )\n )]\n and fc.arguments contains [Expression e: possibleFunctionTargets contains\n [Function lambda:\n /* lambda isn't recursive */\n not lambda contains [FunctionCall recursiveFC: recursiveFC == fc or recursiveFC.function contains [FunctionCall: == fc]]\n and lambda contains [FieldAccess fa: fa.type.arrayDimensions == 0\n and fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]]\n /* isn't ~parent field that seems to be specified around lambdas */\n and fa.field is [Field f:\n not fa.sourceLocation.None\n and not f.sourceLocation.None\n and fa.sourceLocation.startLine != f.sourceLocation.startLine\n /* isn't length field in NST */\n and f.name != \"length\"\n /* a separate function is called that reads the field */\n and fc.enclosingFunction contains [FunctionCall fc2: function is [Function func:\n /* function isn't recursive with original function */\n not func contains [FunctionCall recursiveFC2: recursiveFC2 == fc or recursiveFC2.function contains [FunctionCall: == fc]]\n /* the function called isn't called via a lambda */\n and not fc.enclosingFunction contains [FunctionCall: arguments contains [Expression: possibleFunctionTargets contains func]]\n and contains [FieldAccess fa2: fa2.type.arrayDimensions == 0\n and fa2.field is f\n /* not another assignment to the field */\n and not fa2 in [AssignmentStatement: lhs.location is [Location: transitiveBase === fa2.transitiveBase]]\n /* second function call (which includes FieldAccess read) occurs after first function calls lambda (which contains FieldAccess write) */\n and not fc2.sourceLocation.None\n and not fc.sourceLocation.None\n and fc2.sourceLocation.startLine > fc.sourceLocation.startLine\n ]*]]*\n ]\n ]*]\n ]\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "SQL Injection", - "vuln_subcategory": null, - "predicate": "\n\t\t\t\tFunctionCall call: possibleTargets contains [Function f: f.name matches \"query|execute|prepare\"]\n\t\t\t\t\tand call.instance.possibleHeapPaths contains [String s: s matches \"mysql2\\.create(Connection|Pool)\"]\n /* arg0 non-constant */\n\t\t\t\t\tand call.arguments[0] is [Expression e: constantValue.null]\n " + "vuln_subcategory": None, + "predicate": "\n\t\t\t\tFunctionCall call: possibleTargets contains [Function f: f.name matches \"query|execute|prepare\"]\n\t\t\t\t\tand call.instance.possibleHeapPaths contains [String s: s matches \"mysql2\\.create(Connection|Pool)\"]\n /* arg0 non-constant */\n\t\t\t\t\tand call.arguments[0] is [Expression e: constantValue.None]\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "SQL Injection", - "vuln_subcategory": null, - "predicate": "\n\t\t\t\t/* queryAsync is for bluebird, but we don't support bluebird yet */\n\t\t\t\tFunctionCall call: possibleTargets contains [Function f: f.name matches \"query(Async)?\"]\n\t\t\t\t\tand call.instance.possibleHeapPaths contains [String s: s matches \"mysql\\.create(Connection|Pool)\"]\n /* arg0 non-constant */\n\t\t\t\t\tand call.arguments[0] is [Expression e: constantValue.null ]\n " + "vuln_subcategory": None, + "predicate": "\n\t\t\t\t/* queryAsync is for bluebird, but we don't support bluebird yet */\n\t\t\t\tFunctionCall call: possibleTargets contains [Function f: f.name matches \"query(Async)?\"]\n\t\t\t\t\tand call.instance.possibleHeapPaths contains [String s: s matches \"mysql\\.create(Connection|Pool)\"]\n /* arg0 non-constant */\n\t\t\t\t\tand call.arguments[0] is [Expression e: constantValue.None ]\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.name matches \"post|get|getJSON|getScript\" and\n call.instance is [Location l: l.name matches \"jQuery|\\$\"]\n and call.arguments.length > 0\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name matches \"post|get|getJSON|getScript\"] and\n call.instance is [Location l: l.name matches \"jQuery|\\$\"]\n and call.arguments.length > 0\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.possibleTargets contains [Function f: f.name matches \"post|get|getJSON|getScript\"] and\n call.instance is [FieldAccess fa: fa.field.name matches \"jQuery|\\$\"]\n and call.arguments.length > 0\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall call: call.name matches \"post|get|getJSON|getScript\" and\n call.instance is [FieldAccess fa: fa.field.name matches \"jQuery|\\$\"]\n and call.arguments.length > 0\n " }, { @@ -9971,14 +9971,14 @@ "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc:\n possibleTargets contains [Function:\n name matches \"get|post|put|all|delete|head|patch|options\"\n ]\n and instance.possibleTypes contains [Type: definition is\n [Class: name == \"Express\"\n and interface == true\n and filepath matches \"(.*[/\\\\])?express-serve-static-core[/\\\\]index\\.d\\.ts\"\n ]\n ]\n and not fc.arguments contains [Expression inst1: inst1 is [FieldAccess: field.name matches \"(?i).*csrf.*\"]\n or inst1 is [VariableAccess: variable.name matches \"(?i).*csrf.*\"]\n ]\n and fc.arguments.length > 1\n\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name == \"listen\"\n and enclosingClass.name == \"Application\"\n ]\n " }, { @@ -10020,14 +10020,14 @@ "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Command Injection", - "vuln_subcategory": null, - "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"exec(File)?|spawn\"\n and returnType.name == \"ChildProcessPromise\"\n ]\n and arguments[0] is [Expression:\n /* not a constant */\n constantValue.null\n /* is constant, and contains environment variables */\n or constantValue matches \".*\\$.*|.*%.*%.*\"\n /* is constant, and doesn't contain a full path */\n or not (\n constantValue matches \".+:(/|\\\\).*\"\n or constantValue matches \"(/|\\\\).*\"\n )\n ]*\n " + "vuln_subcategory": None, + "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"exec(File)?|spawn\"\n and returnType.name == \"ChildProcessPromise\"\n ]\n and arguments[0] is [Expression:\n /* not a constant */\n constantValue.None\n /* is constant, and contains environment variables */\n or constantValue matches \".*\\$.*|.*%.*%.*\"\n /* is constant, and doesn't contain a full path */\n or not (\n constantValue matches \".+:(/|\\\\).*\"\n or constantValue matches \"(/|\\\\).*\"\n )\n ]*\n " }, { "language": "javascript", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "Command Injection", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall:\n possibleTargets contains [Function:\n name matches \"exec(File)?|spawn\"\n and returnType.name == \"ChildProcessPromise\"\n ]\n " }, { @@ -10035,98 +10035,98 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall fc: fc.possibleTargets contains [Function f: f.name == \"createTableService\"\n and f.possibleHeapPaths contains [String str: str == \"azure-storage\"]]\n and not fc.arguments[1].constantValue.null\n and not fc.arguments[1].constantValue is [Null:]\n and not fc.arguments[1].constantValue == \"\"\n " + "predicate": "\n FunctionCall fc: fc.possibleTargets contains [Function f: f.name == \"createTableService\"\n and f.possibleHeapPaths contains [String str: str == \"azure-storage\"]]\n and not fc.arguments[1].constantValue.None\n and not fc.arguments[1].constantValue is [None:]\n and not fc.arguments[1].constantValue == \"\"\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall fc: fc.possibleTargets contains [Function f: f.name == \"createTableService\"\n and f.possibleHeapPaths contains [String str: str == \"azure-storage\"]]\n and not fc.arguments[1].constantValue.null\n and not fc.arguments[1].constantValue is [Null:]\n and not fc.arguments[1].constantValue == \"\"\n " + "predicate": "\n FunctionCall fc: fc.possibleTargets contains [Function f: f.name == \"createTableService\"\n and f.possibleHeapPaths contains [String str: str == \"azure-storage\"]]\n and not fc.arguments[1].constantValue.None\n and not fc.arguments[1].constantValue is [None:]\n and not fc.arguments[1].constantValue == \"\"\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Cookie Security", "vuln_subcategory": "Overly Broad Path", - "predicate": "\n AccessLocation al: accessName == \"path\" and\n al in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === al.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue == \"/\"]\n and (al.accessInstance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (al.accessInstance is [AccessLocation: accessName == \"defaults\"\n and accessInstance is [Location: name == \"$cookiesProvider\"]])\n )\n " + "predicate": "\n AccessLocation al: accessName == \"path\" and\n al in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === al.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue == \"/\"]\n and (al.accessInstance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (al.accessInstance is [AccessLocation: accessName == \"defaults\"\n and accessInstance is [Location: name == \"$cookiesProvider\"]])\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Cookie Security", "vuln_subcategory": "Overly Broad Path", - "predicate": "\n AccessLocation al: accessName == \"path\" and\n al in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === al.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue == \"/\"]\n and (al.accessInstance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (al.accessInstance is [AccessLocation: accessName == \"defaults\"\n and accessInstance is [Location: name == \"$cookiesProvider\"]])\n )\n " + "predicate": "\n AccessLocation al: accessName == \"path\" and\n al in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === al.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue == \"/\"]\n and (al.accessInstance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (al.accessInstance is [AccessLocation: accessName == \"defaults\"\n and accessInstance is [Location: name == \"$cookiesProvider\"]])\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Cookie Security", "vuln_subcategory": "Overly Broad Path", - "predicate": "\n FieldAccess fa: fa.field.name == \"path\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue == \"/\"]\n and (fa.instance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (fa.instance is [FieldAccess fa2: field.name == \"defaults\"\n and fa2.instance is [FieldAccess fa3: field.name == \"$cookiesProvider\"]])\n )\n " + "predicate": "\n FieldAccess fa: fa.field.name == \"path\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue == \"/\"]\n and (fa.instance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (fa.instance is [FieldAccess fa2: field.name == \"defaults\"\n and fa2.instance is [FieldAccess fa3: field.name == \"$cookiesProvider\"]])\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Cookie Security", "vuln_subcategory": "Overly Broad Domain", - "predicate": "\n AccessLocation al: al.accessName == \"domain\" and \n al in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === al.transitiveBase]\n and not rhs.constantValue.null \n and rhs.constantValue matches \"(?i)^\\.?([a-z0-9\\-]+)\\.[a-z]{1,3}\\.[a-z]{1,3}$\"]\n and (al.accessInstance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (al.accessInstance is [AccessLocation: accessName == \"defaults\"\n and accessInstance is [Location: name == \"$cookiesProvider\"]])\n )\n " + "predicate": "\n AccessLocation al: al.accessName == \"domain\" and \n al in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === al.transitiveBase]\n and not rhs.constantValue.None \n and rhs.constantValue matches \"(?i)^\\.?([a-z0-9\\-]+)\\.[a-z]{1,3}\\.[a-z]{1,3}$\"]\n and (al.accessInstance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (al.accessInstance is [AccessLocation: accessName == \"defaults\"\n and accessInstance is [Location: name == \"$cookiesProvider\"]])\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Cookie Security", "vuln_subcategory": "Overly Broad Domain", - "predicate": "\n AccessLocation al: al.accessName == \"domain\" and\n al in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === al.transitiveBase]\n and not rhs.constantValue.null \n and rhs.constantValue matches \"(?i)^\\.?([a-z0-9\\-]+)\\.([a-z0-9\\-]+)$\"]\n and (al.accessInstance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (al.accessInstance is [AccessLocation: accessName == \"defaults\" \n and accessInstance is [Location: name == \"$cookiesProvider\"]])\n )\n " + "predicate": "\n AccessLocation al: al.accessName == \"domain\" and\n al in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === al.transitiveBase]\n and not rhs.constantValue.None \n and rhs.constantValue matches \"(?i)^\\.?([a-z0-9\\-]+)\\.([a-z0-9\\-]+)$\"]\n and (al.accessInstance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (al.accessInstance is [AccessLocation: accessName == \"defaults\" \n and accessInstance is [Location: name == \"$cookiesProvider\"]])\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Cookie Security", "vuln_subcategory": "Overly Broad Domain", - "predicate": "\n AccessLocation al: al.accessName == \"domain\" and \n al in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === al.transitiveBase]\n and not rhs.constantValue.null \n and rhs.constantValue matches \"(?i)^\\.?([a-z0-9\\-]+)\\.[a-z]{1,3}\\.[a-z]{1,3}$\"]\n and (al.accessInstance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (al.accessInstance is [AccessLocation: accessName == \"defaults\"\n and accessInstance is [Location: name == \"$cookiesProvider\"]])\n )\n " + "predicate": "\n AccessLocation al: al.accessName == \"domain\" and \n al in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === al.transitiveBase]\n and not rhs.constantValue.None \n and rhs.constantValue matches \"(?i)^\\.?([a-z0-9\\-]+)\\.[a-z]{1,3}\\.[a-z]{1,3}$\"]\n and (al.accessInstance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (al.accessInstance is [AccessLocation: accessName == \"defaults\"\n and accessInstance is [Location: name == \"$cookiesProvider\"]])\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Cookie Security", "vuln_subcategory": "Overly Broad Domain", - "predicate": "\n AccessLocation al: al.accessName == \"domain\" and\n al in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === al.transitiveBase]\n and not rhs.constantValue.null \n and rhs.constantValue matches \"(?i)^\\.?([a-z0-9\\-]+)\\.([a-z0-9\\-]+)$\"]\n and (al.accessInstance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (al.accessInstance is [AccessLocation: accessName == \"defaults\" \n and accessInstance is [Location: name == \"$cookiesProvider\"]])\n )\n " + "predicate": "\n AccessLocation al: al.accessName == \"domain\" and\n al in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === al.transitiveBase]\n and not rhs.constantValue.None \n and rhs.constantValue matches \"(?i)^\\.?([a-z0-9\\-]+)\\.([a-z0-9\\-]+)$\"]\n and (al.accessInstance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (al.accessInstance is [AccessLocation: accessName == \"defaults\" \n and accessInstance is [Location: name == \"$cookiesProvider\"]])\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Cookie Security", "vuln_subcategory": "Overly Broad Domain", - "predicate": "\n FieldAccess fa: fa.field.name == \"domain\" and \n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null \n and rhs.constantValue matches \"(?i)^\\.?([a-z0-9\\-]+)\\.[a-z]{1,3}\\.[a-z]{1,3}$\"]\n and (fa.instance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (fa.instance is [FieldAccess fa2: field.name == \"defaults\" \n and fa2.instance is [FieldAccess fa3: field.name == \"$cookiesProvider\"]])\n )\n " + "predicate": "\n FieldAccess fa: fa.field.name == \"domain\" and \n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None \n and rhs.constantValue matches \"(?i)^\\.?([a-z0-9\\-]+)\\.[a-z]{1,3}\\.[a-z]{1,3}$\"]\n and (fa.instance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (fa.instance is [FieldAccess fa2: field.name == \"defaults\" \n and fa2.instance is [FieldAccess fa3: field.name == \"$cookiesProvider\"]])\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Cookie Security", "vuln_subcategory": "Overly Broad Domain", - "predicate": "\n FieldAccess fa: fa.field.name == \"domain\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null\n and rhs.constantValue matches \"(?i)^\\.?([a-z0-9\\-]+)\\.([a-z0-9\\-]+)$\"]\n and (fa.instance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (fa.instance is [FieldAccess fa2: field.name == \"defaults\"\n and fa2.instance is [FieldAccess fa3: field.name == \"$cookiesProvider\"]])\n )\n " + "predicate": "\n FieldAccess fa: fa.field.name == \"domain\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None\n and rhs.constantValue matches \"(?i)^\\.?([a-z0-9\\-]+)\\.([a-z0-9\\-]+)$\"]\n and (fa.instance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (fa.instance is [FieldAccess fa2: field.name == \"defaults\"\n and fa2.instance is [FieldAccess fa3: field.name == \"$cookiesProvider\"]])\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Cookie Security", "vuln_subcategory": "Cookie not Sent Over SSL", - "predicate": "\n AccessLocation al: al.accessName == \"secure\" and\n al in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === al.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue != true]\n and (al.accessInstance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (al.accessInstance is [AccessLocation: name == \"defaults\"\n and accessInstance is [Location: name == \"$cookiesProvider\"]])\n )\n " + "predicate": "\n AccessLocation al: al.accessName == \"secure\" and\n al in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === al.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue != true]\n and (al.accessInstance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (al.accessInstance is [AccessLocation: name == \"defaults\"\n and accessInstance is [Location: name == \"$cookiesProvider\"]])\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Cookie Security", "vuln_subcategory": "Cookie not Sent Over SSL", - "predicate": "\n AccessLocation al: al.accessName == \"secure\" and\n al in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === al.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue != true]\n and (al.accessInstance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (al.accessInstance is [AccessLocation: name == \"defaults\"\n and accessInstance is [Location: name == \"$cookiesProvider\"]])\n )\n " + "predicate": "\n AccessLocation al: al.accessName == \"secure\" and\n al in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === al.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue != true]\n and (al.accessInstance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (al.accessInstance is [AccessLocation: name == \"defaults\"\n and accessInstance is [Location: name == \"$cookiesProvider\"]])\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Cookie Security", "vuln_subcategory": "Cookie not Sent Over SSL", - "predicate": "\n FieldAccess fa: fa.field.name == \"secure\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.null and rhs.constantValue != true]\n and (fa.instance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (fa.instance is [FieldAccess fa2: field.name == \"defaults\"\n and fa2.instance is [FieldAccess fa3: field.name == \"$cookiesProvider\"]])\n )\n " + "predicate": "\n FieldAccess fa: fa.field.name == \"secure\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase]\n and not rhs.constantValue.None and rhs.constantValue != true]\n and (fa.instance.possibleHeapPaths contains \"$cookiesProvider.defaults\"\n or\n (fa.instance is [FieldAccess fa2: field.name == \"defaults\"\n and fa2.instance is [FieldAccess fa3: field.name == \"$cookiesProvider\"]])\n )\n " }, { "language": "javascript", @@ -10147,7 +10147,7 @@ "vuln_kingdom": "Security Features", "vuln_category": "AngularJS Misconfiguration", "vuln_subcategory": "Strict Contextual Escaping Disabled", - "predicate": "\n FunctionCall: possibleTargets contains [Function: name == \"enabled\"\n and possibleHeapPaths contains \"$sceProvider\"]\n and (arguments[0].constantValue.null\n or arguments[0].constantValue == false\n or arguments[0].constantValue == 0\n )\n " + "predicate": "\n FunctionCall: possibleTargets contains [Function: name == \"enabled\"\n and possibleHeapPaths contains \"$sceProvider\"]\n and (arguments[0].constantValue.None\n or arguments[0].constantValue == false\n or arguments[0].constantValue == 0\n )\n " }, { "language": "javascript", @@ -10160,28 +10160,28 @@ "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: fc.possibleTargets contains [Function f:\n f.name == \"$http\"]\n and fc.arguments.length == 1\n /* configuration object doesn't contain xsrfCookieName or xsrfHeaderName setting */\n and not fc.arguments[0].type.definition.fields contains [Field:\n name matches \"xsrf(Cookie|Header)Name\"]\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: fc.possibleTargets contains [Function f:\n f.name == \"$http\"]\n and fc.arguments.length == 1\n /* configuration object doesn't contain xsrfCookieName or xsrfHeaderName setting */\n and not fc.arguments[0].type.definition.fields contains [Field:\n name matches \"xsrf(Cookie|Header)Name\"]\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: fc.possibleTargets contains [Function f:\n f.name == \"get\"\n ]\n /* possibleHeapPaths matching too broadly */\n and fc.instance is [Location: name == \"$http\"]\n and (\n /* no configuration object set */\n fc.arguments.length == 1\n /* or configuration object set, and doesn't contain xsrfCookieName or xsrfHeaderName setting */\n or not fc.arguments[1].type.definition.fields contains [Field: name matches \"xsrf(Cookie|Header)Name\"]\n )\n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: fc.possibleTargets contains [Function f:\n f.name == \"get\"\n ]\n /* possibleHeapPaths matching too broadly */\n and fc.instance is [FieldAccess: field.name == \"$http\"]\n and (\n /* no configuration object set */\n fc.arguments.length == 1\n /* or configuration object set, and doesn't contain xsrfCookieName or xsrfHeaderName setting */\n or not fc.arguments[1].type.definition.fields contains [Field: name matches \"xsrf(Cookie|Header)Name\"]\n )\n " }, { @@ -10210,27 +10210,27 @@ "vuln_kingdom": "Security Features", "vuln_category": "AngularJS Misconfiguration", "vuln_subcategory": "Strict Contextual Escaping Disabled", - "predicate": "\n FunctionCall: possibleTargets contains [Function: name == \"enabled\"\n and possibleHeapPaths contains \"$sceProvider\"]\n and (arguments[0].constantValue.null\n or arguments[0].constantValue == false\n or arguments[0].constantValue == 0\n )\n " + "predicate": "\n FunctionCall: possibleTargets contains [Function: name == \"enabled\"\n and possibleHeapPaths contains \"$sceProvider\"]\n and (arguments[0].constantValue.None\n or arguments[0].constantValue == false\n or arguments[0].constantValue == 0\n )\n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n \n FunctionCall fc: fc.possibleTargets contains [Function : name == \"request\"]\n and instance.possibleTypes contains [Type: name == \"@angular/common/http.HttpClient\"]\n and fc.arguments[1] is [Expression: constantValue matches \"(?i)http://[^\\s/$.?#][^\\s]*\" ]\n\n \n " }, { "language": "javascript", "vuln_kingdom": "Security Features", "vuln_category": "Insecure Transport", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n \n FunctionCall fc: fc.possibleTargets contains [Function : name matches \"get|head|jsonp|options|patch|post|put\"]\n and instance.possibleTypes contains [Type: name == \"@angular/common/http.HttpClient\"]\n and fc.arguments[0] is [Expression: constantValue matches \"(?i)http://[^\\s/$.?#][^\\s]*\" ]\n\n \n " }, { "language": "javascript", "vuln_kingdom": "Encapsulation", "vuln_category": "Cross-Site Request Forgery", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: fc.possibleTargets contains [Function f:\n name == \"withNoXsrfProtection\"\n ]\n " }, { @@ -10244,43 +10244,43 @@ "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pass(wd|word)\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pass(wd|word)\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "jsp", @@ -10343,63 +10343,63 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"PUT_REGEX_HERE\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"PUT_REGEX_HERE\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"PUT_REGEX_HERE\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"PUT_REGEX_HERE\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\"\n ))\n " + "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"PUT_REGEX_HERE\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"PUT_REGEX_HERE\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"PUT_REGEX_HERE\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"PUT_REGEX_HERE\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\"\n ))\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"PUT_REGEX_HERE\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"PUT_REGEX_HERE\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"PUT_REGEX_HERE\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"PUT_REGEX_HERE\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\"\n ))\n " + "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"PUT_REGEX_HERE\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"PUT_REGEX_HERE\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"PUT_REGEX_HERE\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"PUT_REGEX_HERE\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\"\n ))\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"(?i)pass(wd|word)\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"(?i)pass(wd|word)\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"(?i)pass(wd|word)\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"(?i)pass(wd|word)\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\"\n ))\n " + "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"(?i)pass(wd|word)\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"(?i)pass(wd|word)\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"(?i)pass(wd|word)\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"(?i)pass(wd|word)\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\"\n ))\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\"\n ] and fa.field is [Field f:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\"\n ] and fa.field is [Field f:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\"\n ] and fa.field is [Field f:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pass(wd|word)\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pass(wd|word)\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "jsp", @@ -10426,43 +10426,43 @@ "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pwd.*\" and\n not fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pwd.*\" and\n not fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pwd\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pwd\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pwd.*\" and va.variable.isTemp == false and\n not va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pwd.*\" and va.variable.isTemp == false and\n not va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and va.variable.isTemp == false and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Password", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and va.variable.isTemp == false and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "jsp", @@ -10511,105 +10511,105 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"(?i).*pwd.*\" and not val.variable.name matches \"(?i)pwd\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"(?i).*pwd.*\" and not var.variable.name matches \"(?i)pwd\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"(?i).*pwd.*\" and not fal.field.name matches \"(?i)pwd\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"(?i).*pwd.*\" and not far.field.name matches \"(?i)pwd\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\"\n ))\n " + "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"(?i).*pwd.*\" and not val.variable.name matches \"(?i)pwd\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"(?i).*pwd.*\" and not var.variable.name matches \"(?i)pwd\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"(?i).*pwd.*\" and not fal.field.name matches \"(?i)pwd\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"(?i).*pwd.*\" and not far.field.name matches \"(?i)pwd\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\"\n ))\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"(?i)pwd\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"(?i)pwd\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"(?i)pwd\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"(?i)pwd\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\"\n ))\n " + "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"(?i)pwd\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"(?i)pwd\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"(?i)pwd\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"(?i)pwd\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\"\n ))\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\"\n ] and fa.field is [Field f:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pwd.*\" and\n not fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pwd.*\" and\n not fa.field.name matches \"(?i)pwd\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\"\n ] and fa.field is [Field f:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pwd\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)pwd\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pwd.*\" and va.variable.isTemp == false and\n not va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pwd.*\" and va.variable.isTemp == false and\n not va.variable.name matches \"(?i)pwd\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"(?i).*pass(wd|word).*\" and not val.variable.name matches \"(?i)pass(wd|word)\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"(?i).*pass(wd|word).*\" and not var.variable.name matches \"(?i)pass(wd|word)\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"(?i).*pass(wd|word).*\" and not fal.field.name matches \"(?i)pass(wd|word)\"] and\n not operation.rhs.constantValue.null and\n not operation.rhs.constantValue is [Null:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"(?i).*pass(wd|word).*\" and not far.field.name matches \"(?i)pass(wd|word)\"] and\n not operation.lhs.constantValue.null and\n not operation.lhs.constantValue is [Null:] and\n not operation.lhs.constantValue == \"\"\n ))\n " + "predicate": "\n Operation operation: (operation.op matches \"[!=><]=\" or operation.op matches \"[<>]\") and\n ((operation.lhs.location is\n [VariableAccess val: val.variable is [Variable vl: ]* and val.variable.name matches \"(?i).*pass(wd|word).*\" and not val.variable.name matches \"(?i)pass(wd|word)\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [VariableAccess var: var.variable is [Variable vr: ]* and var.variable.name matches \"(?i).*pass(wd|word).*\" and not var.variable.name matches \"(?i)pass(wd|word)\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\"\n ) or\n (operation.lhs.location is\n [FieldAccess fal: fal.field is [Field fl: ]* and fal.field.name matches \"(?i).*pass(wd|word).*\" and not fal.field.name matches \"(?i)pass(wd|word)\"] and\n not operation.rhs.constantValue.None and\n not operation.rhs.constantValue is [None:] and\n not operation.rhs.constantValue == \"\"\n ) or\n (operation.rhs.location is\n [FieldAccess far: far.field is [Field fr: ]* and far.field.name matches \"(?i).*pass(wd|word).*\" and not far.field.name matches \"(?i)pass(wd|word)\"] and\n not operation.lhs.constantValue.None and\n not operation.lhs.constantValue is [None:] and\n not operation.lhs.constantValue == \"\"\n ))\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*pass(wd|word).*\" and\n not fa.field.name matches \"(?i)pass(wd|word)\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\"\n ] and fa.field is [Field f:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and va.variable.isTemp == false and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*pass(wd|word).*\" and va.variable.isTemp == false and\n not va.variable.name matches \"(?i)pass(wd|word)\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "jsp", @@ -10658,56 +10658,56 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\"\n ] and fa.field is [Field f:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"PUT_REGEX_HERE\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\"\n ] and fa.field is [Field f:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\"\n ] and fa.field is [Field f:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"PUT_REGEX_HERE\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and va.variable.isTemp == false and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and fa.field is [Field f:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n rhs.constantValue is [None:]\n ] and fa.field is [Field f:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", - "vuln_subcategory": "Null Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and va.variable.isTemp == false and\n not va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [Null:]\n ] and va.variable is [Variable v:]*\n " + "vuln_subcategory": "None Encryption Key", + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and va.variable.isTemp == false and\n not va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n rhs.constantValue is [None:]\n ] and va.variable is [Variable v:]*\n " }, { "language": "jsp", @@ -10728,14 +10728,14 @@ "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\"\n ] and fa.field is [Field f:]*\n " + "predicate": "\n FieldAccess fa: fa.field.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and\n not fa.field.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n fa in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === fa.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\"\n ] and fa.field is [Field f:]*\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Key Management", "vuln_subcategory": "Hardcoded Encryption Key", - "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and va.variable.isTemp == false and\n not va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.null and\n not rhs.constantValue is [Null:] and\n not rhs.constantValue == \"\"\n ] and va.variable is [Variable v:]*\n " + "predicate": "\n VariableAccess va: va.variable.name matches \"(?i).*((enc|dec)(?!e|o|y)(ryption|rypt)?|crypto).*key.*|.*passphrase.*\" and va.variable.isTemp == false and\n not va.variable.name matches \"(?i)((enc|dec)(ryption|rypt)?|crypto)?(_)?key|passphrase\" and\n va in [AssignmentStatement: lhs.location is [Location l: l.transitiveBase === va.transitiveBase] and\n not rhs.constantValue.None and\n not rhs.constantValue is [None:] and\n not rhs.constantValue == \"\"\n ] and va.variable is [Variable v:]*\n " }, { "language": "jsp", @@ -10783,7 +10783,7 @@ "language": "jsp", "vuln_kingdom": "Encapsulation", "vuln_category": "System Information Leak", - "vuln_subcategory": null, + "vuln_subcategory": None, "predicate": "\n FunctionCall fc: function.name matches \"_jspService|execute\"\n and function.enclosingClass.name is \"http://jakarta.apache.org/taglibs/log-1.0/dump\"\n and namedParameters contains [\n NamedParameter: name matches \"jspBody|body\" and\n expression is [Expression body: ]\n ]\n and namedParameters contains [\n NamedParameter: name matches \"jspContext|context\" and\n expression is [Expression context: ]\n ]\n " }, { @@ -10791,35 +10791,35 @@ "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Hardcoded Password", - "predicate": "\n FunctionCall fc: function.name matches \"_jspService|execute\"\n and function.enclosingClass.name matches \"http://(java.sun.com|xmlns.jcp.org)/(jsp/)?jstl/sql(_rt)?/setDataSource\"\n and namedParameters contains [\n NamedParameter: name matches \"jspBody|body\" and\n expression is [Expression body: ]\n ]\n and namedParameters contains [\n NamedParameter: name matches \"jspContext|context\" and\n expression is [Expression context: ]\n ]\n and namedParameters contains [\n NamedParameter: name is \"password\"\n and not expression.constantValue.null and not expression.constantValue == \"\" and not expression.constantValue is [Null: ]\n ]\n " + "predicate": "\n FunctionCall fc: function.name matches \"_jspService|execute\"\n and function.enclosingClass.name matches \"http://(java.sun.com|xmlns.jcp.org)/(jsp/)?jstl/sql(_rt)?/setDataSource\"\n and namedParameters contains [\n NamedParameter: name matches \"jspBody|body\" and\n expression is [Expression body: ]\n ]\n and namedParameters contains [\n NamedParameter: name matches \"jspContext|context\" and\n expression is [Expression context: ]\n ]\n and namedParameters contains [\n NamedParameter: name is \"password\"\n and not expression.constantValue.None and not expression.constantValue == \"\" and not expression.constantValue is [None: ]\n ]\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", "vuln_subcategory": "Empty Password", - "predicate": "\n FunctionCall fc: function.name matches \"_jspService|execute\"\n and function.enclosingClass.name matches \"http://(java.sun.com|xmlns.jcp.org)/(jsp/)?jstl/sql(_rt)?/setDataSource\"\n and namedParameters contains [\n NamedParameter: name matches \"jspBody|body\" and\n expression is [Expression body: ]\n ]\n and namedParameters contains [\n NamedParameter: name matches \"jspContext|context\" and\n expression is [Expression context: ]\n ]\n and namedParameters contains [\n NamedParameter: name is \"password\"\n and not expression.constantValue.null and expression.constantValue == \"\"\n ]\n " + "predicate": "\n FunctionCall fc: function.name matches \"_jspService|execute\"\n and function.enclosingClass.name matches \"http://(java.sun.com|xmlns.jcp.org)/(jsp/)?jstl/sql(_rt)?/setDataSource\"\n and namedParameters contains [\n NamedParameter: name matches \"jspBody|body\" and\n expression is [Expression body: ]\n ]\n and namedParameters contains [\n NamedParameter: name matches \"jspContext|context\" and\n expression is [Expression context: ]\n ]\n and namedParameters contains [\n NamedParameter: name is \"password\"\n and not expression.constantValue.None and expression.constantValue == \"\"\n ]\n " }, { "language": "jsp", "vuln_kingdom": "Security Features", "vuln_category": "Password Management", - "vuln_subcategory": "Null Password", - "predicate": "\n FunctionCall fc: function.name matches \"_jspService|execute\"\n and function.enclosingClass.name matches \"http://(java.sun.com|xmlns.jcp.org)/(jsp/)?jstl/sql(_rt)?/setDataSource\"\n and namedParameters contains [\n NamedParameter: name matches \"jspBody|body\" and\n expression is [Expression body: ]\n ]\n and namedParameters contains [\n NamedParameter: name matches \"jspContext|context\" and\n expression is [Expression context: ]\n ]\n and namedParameters contains [\n NamedParameter: name is \"password\"\n and not expression.constantValue.null and expression.constantValue is [Null: ]\n ]\n " + "vuln_subcategory": "None Password", + "predicate": "\n FunctionCall fc: function.name matches \"_jspService|execute\"\n and function.enclosingClass.name matches \"http://(java.sun.com|xmlns.jcp.org)/(jsp/)?jstl/sql(_rt)?/setDataSource\"\n and namedParameters contains [\n NamedParameter: name matches \"jspBody|body\" and\n expression is [Expression body: ]\n ]\n and namedParameters contains [\n NamedParameter: name matches \"jspContext|context\" and\n expression is [Expression context: ]\n ]\n and namedParameters contains [\n NamedParameter: name is \"password\"\n and not expression.constantValue.None and expression.constantValue is [None: ]\n ]\n " }, { "language": "jsp", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "SQL Injection", - "vuln_subcategory": null, - "predicate": "\n FunctionCall fc: function.name matches \"_jspService|execute\"\n and function.enclosingClass.name matches \"http://(java.sun.com|xmlns.jcp.org)/(jsp/)?jstl/sql(_rt)?/update\"\n and namedParameters contains [\n NamedParameter: name matches \"jspBody|body\" and\n expression is [Expression body: ]\n ]\n and namedParameters contains [\n NamedParameter: name matches \"jspContext|context\" and\n expression is [Expression context: ]\n ]\n and namedParameters contains [\n NamedParameter: name is \"sql\"\n and (expression.constantValue.null or expression.constantValue is [Null: ])\n ]\n " + "vuln_subcategory": None, + "predicate": "\n FunctionCall fc: function.name matches \"_jspService|execute\"\n and function.enclosingClass.name matches \"http://(java.sun.com|xmlns.jcp.org)/(jsp/)?jstl/sql(_rt)?/update\"\n and namedParameters contains [\n NamedParameter: name matches \"jspBody|body\" and\n expression is [Expression body: ]\n ]\n and namedParameters contains [\n NamedParameter: name matches \"jspContext|context\" and\n expression is [Expression context: ]\n ]\n and namedParameters contains [\n NamedParameter: name is \"sql\"\n and (expression.constantValue.None or expression.constantValue is [None: ])\n ]\n " }, { "language": "jsp", "vuln_kingdom": "Input Validation and Representation", "vuln_category": "SQL Injection", - "vuln_subcategory": null, - "predicate": "\n FunctionCall fc: function.name matches \"_jspService|execute\"\n and function.enclosingClass.name matches \"http://(java.sun.com|xmlns.jcp.org)/(jsp/)?jstl/sql(_rt)?/query\"\n and namedParameters contains [\n NamedParameter: name matches \"jspBody|body\" and\n expression is [Expression body: ]\n ]\n and namedParameters contains [\n NamedParameter: name matches \"jspContext|context\" and\n expression is [Expression context: ]\n ]\n and namedParameters contains [\n NamedParameter: name is \"sql\"\n and (expression.constantValue.null or expression.constantValue is [Null: ])\n ]\n " + "vuln_subcategory": None, + "predicate": "\n FunctionCall fc: function.name matches \"_jspService|execute\"\n and function.enclosingClass.name matches \"http://(java.sun.com|xmlns.jcp.org)/(jsp/)?jstl/sql(_rt)?/query\"\n and namedParameters contains [\n NamedParameter: name matches \"jspBody|body\" and\n expression is [Expression body: ]\n ]\n and namedParameters contains [\n NamedParameter: name matches \"jspContext|context\" and\n expression is [Expression context: ]\n ]\n and namedParameters contains [\n NamedParameter: name is \"sql\"\n and (expression.constantValue.None or expression.constantValue is [None: ])\n ]\n " }, { "language": "jsp", diff --git a/logger/__init__.py b/logger/__init__.py index 7bb79a1..965fb1d 100644 --- a/logger/__init__.py +++ b/logger/__init__.py @@ -1,40 +1,46 @@ +import time from datetime import datetime - LOG_COLORS = { - 'DEBUG': '\033[94m', # 蓝色 - 'INFO': '\033[92m', # 绿色 + 'DEBUG': '\033[94m', # 蓝色 + 'INFO': '\033[92m', # 绿色 'WARNING': '\033[93m', # 黄色 - 'ERROR': '\033[91m', # 红色 + 'ERROR': '\033[91m', # 红色 'CRITICAL': '\033[95m' # 紫色 } RESET_COLOR = '\033[0m' -def log_with_color(level, message): - color = LOG_COLORS.get(level, RESET_COLOR) - prefix = f"[{level}]" - date = datetime.now().strftime('%Y-%m-%d %H:%M:%S') - formatted_message = f"{color}{date} {prefix} {message}{RESET_COLOR}" - - print(formatted_message) - - class Logger: - def __init__(self, name): + def __init__(self, name, callback): + self.name = name + self.callback = callback pass def debug(self, message): - log_with_color("DEBUG", message) + self.log_with_color("DEBUG", message) def info(self, message): - log_with_color("INFO", message) + self.log_with_color("INFO", message) def warning(self, message): - log_with_color("WARNING", message) + self.log_with_color("WARNING", message) def error(self, message): - log_with_color("ERROR", message) + self.log_with_color("ERROR", message) def critical(self, message): - log_with_color("CRITICAL", message) + self.log_with_color("CRITICAL", message) + + def log_with_color(self, level, message): + color = LOG_COLORS.get(level, RESET_COLOR) + date = datetime.now().strftime('%H:%M:%S') + + prefix = f"[{date}]" + formatted_message = f"{color}{prefix} {message}{RESET_COLOR}" + + print(formatted_message) + if self.callback: + self.callback(formatted_message) + + time.sleep(0.1) diff --git a/main.py b/main.py index 145781a..6f8489a 100644 --- a/main.py +++ b/main.py @@ -1,26 +1,24 @@ -import json -import os -import warnings -from audit import Audit +import sys +from PyQt6.QtWidgets import QApplication +from app import load_config +from app.ui import MainWindow + +app = QApplication(sys.argv) -warnings.simplefilter('ignore', FutureWarning) - -os.environ['OPENAI_API_BASE'] = 'https://yunwu.ai/v1' -os.environ['OPENAI_API_KEY'] = 'sk-FdKVL1IiRCMhTVScD4iIEfE2U7978rKuAQhPl0Gbr55l6fDD' - -fortify_rules = json.load(open('fortify_rules.json', 'r', encoding='utf-8')) - - -def result_callback(result): - pass +def main(): + try: + app.exec() + return 0 + except Exception as e: + print(e) + return 1 if __name__ == '__main__': - src_root = r'C:\Users\yvling\Desktop\PHP-Vuln' - language = 'php' + load_config() - audit = Audit(fortify_rules) - audit.load_source_files(src_root, language) - audit.audit(result_callback) + window = MainWindow() + window.show() + sys.exit(main()) diff --git a/requirements.txt b/requirements.txt index 24201a55b45bb8fc231802b22f3419e25318d36d..0bd5dd8e5d9cf05cedab37cff5dc142d55ebdb03 100644 GIT binary patch delta 36 ocmeyzKTBZ4KXw^j1}=sGhDwG&h7txdhB^jYAgRY-0mOz30IL-T8UO$Q delta 7 OcmbOw@Q;7PKXw2O;sb2}