CWE-436 — Interpretation Conflict
Affected Packages
Vulnerability Analysis
No vulnerability analysis available.
This monthly summary captures what our AI‑powered vulnerability analysis engine reviewed in July 2026, analyzing 8000+ new or updated vulnerabilities across ecosystems and vendors.
This report highlights the 10 high‑severity vulnerabilities prioritized by severity, CVSS and potential business impact. Below are this month’s key stats: total analyzed, critical/high counts, average CVSS, and KEV (if present).
CWE-436 — Interpretation Conflict
No vulnerability analysis available.
CWE-1336
jupyter_enterprise_gateway (pip) — vulnerable: >= 2.0.0rc2, < 3.3.0 → patched in 3.3.0The vulnerability is a Server-Side Template Injection (SSTI) within the Jupyter Enterprise Gateway. The root cause lies in the _determine_kernel_pod_name function of the KubernetesProcessProxy class, located in enterprise_gateway/services/processproxies/k8s.py. This function processes the KERNEL_POD_NAME environment variable, which can be controlled by a user making an API request to start a new kernel. The vulnerable version of the code directly used the Jinja2 template engine to render this variable without any sanitization. An attacker could provide a malicious payload like {{ cycler.__init__.__globals__.os.popen("hostname").read() }} as the value for KERNEL_POD_NAME. The render method would execute this payload, allowing for remote code execution in the context of the Enterprise Gateway pod. The security patch (commit 1e6b2f35497682e6581c48cc6d273644d32ab89e) addresses this by removing the direct use of the Jinja2 rendering engine and replacing it with a custom, safer function (_safe_template_substitute) that uses a regular expression to perform simple variable substitution, explicitly preventing the evaluation of complex expressions, function calls, or attribute access, thus mitigating the SSTI vulnerability.
KubernetesProcessProxy._determine_kernel_pod_nameThe function _determine_kernel_pod_name was vulnerable to Server-Side Template Injection (SSTI). It took the KERNEL_POD_NAME environment variable from user input and rendered it as a Jinja2 template using env.from_string(pod_name).render(**keywords). This allowed an attacker to embed malicious Jinja2 expressions in the KERNEL_POD_NAME value, leading to arbitrary code execution on the server. The patch replaced the unsafe rendering with a safe substitution function that only allows simple variable replacement.
CWE-20 — Improper Input ValidationCWE-94 — Improper Control of Generation of Code ('Code Injection')CWE-1188 — Initialization of a Resource with an Insecure Default
dbgate-serve (npm) — vulnerable: <= 7.1.8 → patched in 7.1.9The vulnerability is a classic remote code execution caused by improper input validation. User-controlled input, specifically the functionName and variableName parameters in JSON scripts, is directly concatenated into a string that is later executed as JavaScript code by a Node.js child process. The analysis of the patches between the vulnerable version (7.1.8) and the fixed version (7.1.9) confirms this. The core of the fix is the introduction of validation functions, assertValidJsIdentifier and assertValidShellApiFunctionName, which are applied to the user-controlled parameters before they are used in code generation. The vulnerable functions identified are the entry points that receive the malicious data (runners.start, runners.loadReader) and the functions that are directly involved in the insecure code generation (ScriptWriter.assignCore, compileShellApiFunctionName, ScriptWriterEval.assign). An attacker exploiting this vulnerability would cause these functions to appear in a runtime profile.
runners.startThis is the main entry point for the vulnerability. It receives a JSON script from the user. When the script type is 'json', it initiates a code path that dynamically generates and executes a JavaScript file without properly sanitizing user-controlled input in the script, leading to remote code execution.
ScriptWriter.assignCoreThis function is the primary injection sink. It directly interpolates the user-controlled variableName and functionName parameters into a JavaScript code string without proper validation. An attacker can provide a malicious string for these parameters to inject arbitrary code. The patch adds validation for variableName within this function.
compileShellApiFunctionNameThis function processes the user-controlled functionName. The original implementation used a permissive regex that allowed an attacker to inject arbitrary code by including characters like ';'. The patch fixes this by adding strict validation with assertValidShellApiFunctionName and a more restrictive regex.
runners.loadReaderThis function is another entry point for the vulnerability, as mentioned in the advisory. It takes a functionName parameter that is used to generate a script via loaderScriptTemplate. Similar to the start function, it was vulnerable to code injection because the functionName was not validated before being used in script generation.
ScriptWriterEval.assignThis function in the ScriptWriterEval class was also vulnerable. It takes variableName and functionName from user input. The patch adds calls to assertValidJsIdentifier and assertValidShellApiFunctionName, which indicates that these inputs were previously used without validation, leading to a code injection vulnerability.
CWE-78 — Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')
github.com/nuclio/nuclio (go) — vulnerable: < 0.0.0-20260601075854-3356b86a8bfa → patched in 0.0.0-20260601075854-3356b86a8bfaThe analysis of the provided security advisory and the associated patch commit 3356b86a8bfab3f960aa420310ebff765df9dede clearly indicates that the vulnerability is located in the generateCronTriggerCronJobSpec function within the pkg/platform/kube/functionres/lazy.go file. The vulnerability stems from the improper construction of a shell command that is used to create a Kubernetes CronJob. The function takes unsanitized user input from the event.headers and event.body of a cron trigger and includes it in a curl command string. This string is then executed by /bin/sh -c. The patch rectifies this by removing the shell (/bin/sh -c) entirely and instead building an argument list for curl to be executed directly. This prevents any user-supplied data from being interpreted as shell commands. Therefore, the generateCronTriggerCronJobSpec function is the exact location of the vulnerability.
lazyClient.generateCronTriggerCronJobSpecThe function generateCronTriggerCronJobSpec constructs a shell command string by concatenating user-supplied values from cron trigger events (event.headers and event.body) without proper sanitization. The headerKey is interpolated directly into a double-quoted shell argument, allowing an attacker to break out of the quoting context with a ". The event.body is processed with strconv.Quote, which does not escape shell command substitution characters like $(). The resulting command string is then executed via /bin/sh -c, leading to remote code execution.
CWE-74 — Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')
prestashop/ps_facetedsearch (composer) — vulnerable: >= 3.0.0, < 4.0.4 → patched in 4.0.4The vulnerability is a PHP Object Injection in the ps_facetedsearch module of PrestaShop. The analysis of the security advisory and the associated patch commit 9ca839fac68a60641d8187a3ff9730ab09af33cb confirms that the vulnerability is located in the getFromCache method of the PrestaShop\Module\FacetedSearch\Filters\Block class. The method insecurely deserializes cached data using unserialize(). An attacker can craft a malicious payload in the search filter parameters of a URL, which then gets stored in the cache. When the getFromCache function is executed, it deserializes this payload, leading to the execution of arbitrary code. The patch mitigates this by replacing the call to unserialize() with Tools::unSerialize(), which is a safer alternative that validates the serialized data.
PrestaShop\Module\FacetedSearch\Filters\Block::getFromCacheThe function getFromCache is vulnerable because it uses the insecure unserialize() function on cached data which can be controlled by an attacker via URL parameters. This allows for a PHP Object Injection attack, leading to Remote Code Execution.
CWE-94 — Improper Control of Generation of Code ('Code Injection')
langroid (pip) — vulnerable: <= 0.65.1 → patched in 0.65.2The vulnerability exists in two locations within the langroid library where the eval() function is used to execute code derived from user input. The advisory points out that TableChatAgent.pandas_eval and a function in VectorStore (which the patch reveals to be VectorStore.compute_from_docs) are affected. The core of the vulnerability is that eval() was called with an empty locals dictionary ({}), which was intended to act as a sandbox. However, the globals dictionary passed to eval() was not sanitized. When Python's eval() does not find a __builtins__ key in the globals dictionary, it automatically injects the full builtins module, which includes dangerous functions like __import__, open, and exec. An attacker could craft input that causes the Large Language Model (LLM) to generate Python code containing a payload like __import__('os').system('command'). This payload would then be executed by eval(), resulting in Remote Code Execution (RCE) on the host system. The patch addresses this by introducing a new function, safe_eval_globals, which creates a globals dictionary with a heavily restricted __builtins__ set, removing access to these dangerous functions.
TableChatAgent.pandas_evalThe function pandas_eval in TableChatAgent uses eval on user-provided code. The globals argument to eval was not properly sanitized, allowing access to Python's __builtins__ module. This enables an attacker to execute arbitrary system commands via functions like __import__('os').system().
VectorStore.compute_from_docsThe function compute_from_docs in VectorStore uses eval on user-provided code. The globals argument to eval was not properly sanitized, allowing access to Python's __builtins__ module. This enables an attacker to execute arbitrary system commands via functions like __import__('os').system().
CWE-1392 — Use of Default Credentials
pheditor/pheditor (composer) — vulnerable: < 2.0.8 → patched in 2.0.8The vulnerability is an authentication bypass in Pheditor's forced password-change mechanism. The root cause lies in the main script, pheditor.php, where the application checks if the instance is still using the default password ('admin'). The original code, if (PASSWORD == hash('sha512', 'admin')), only verified the stored password hash, but critically, it did not validate the password provided by the user in the $_POST['pheditor_password'] field. This flaw allows an attacker to send any non-empty password to the login form. If the server still has the default password, the check passes, and the attacker is presented with the password change form, allowing them to set a new password and gain administrative access without ever knowing the original one. The fixing commit 0978bcda644832b67357340e2f271e32d86fdf86 addresses this by adding a check to ensure the submitted password's hash matches the stored password hash: if (PASSWORD == hash('sha512', 'admin') && $submitted_hash === PASSWORD). Since the vulnerable logic is in the global scope of pheditor.php and not within a defined function, the file itself is the runtime indicator.
pheditor.phpThe vulnerability exists in the main script file pheditor.php within the global scope. The script checks if the stored password is the default 'admin' password to force a password change. However, it fails to verify that the password submitted by the user in the POST request actually matches the current default password. This allows an unauthenticated attacker to trigger the forced password-change flow and set a new administrator password, leading to a full authentication bypass. The vulnerable code is not encapsulated within a specific function but is part of the script's main execution logic that handles authentication.
CWE-94 — Improper Control of Generation of Code ('Code Injection')CWE-1336 — Improper Neutralization of Special Elements Used in a Template Engine
@prompty/core (npm) — vulnerable: <= 0.1.4 → patched in 0.1.5@prompty/core (npm) — vulnerable: >= 2.0.0-alpha.1, <= 2.0.0-beta.4 → patched in 2.0.0-beta.5The vulnerability exists in the NunjucksRenderer.render function within @prompty/core. The function directly rendered Nunjucks templates without sanitizing the input data or restricting the execution environment. This allowed for Server-Side Template Injection (SSTI), enabling an attacker to execute arbitrary JavaScript code by accessing and manipulating object prototypes through crafted template syntax. The provided patch addresses this by introducing several security controls:
sanitizeInputs function recursively cleans the data passed to the template, removing any properties that are not own-properties and preventing prototype traversal.safeMemberLookup function is injected into the Nunjucks runtime to explicitly block access to sensitive properties like __proto__, constructor, and prototype.safeCallWrap function is used to completely disable the ability to call functions from within the template.The render method was modified to use a new renderSafely function, which orchestrates these security measures before rendering the template. The vulnerable function is NunjucksRenderer.render as it was the entry point for the untrusted data into the template engine.
NunjucksRenderer.renderThe render method of the NunjucksRenderer class was vulnerable to Server-Side Template Injection. Before the patch, it directly used env.renderString with user-provided inputs without proper sanitization. This allowed an attacker to craft a malicious template that could access and manipulate object prototypes (__proto__, constructor, prototype), leading to arbitrary code execution in the Node.js process. The patch mitigates this by introducing input sanitization and a safe rendering wrapper that restricts access to dangerous properties and disallows function calls within the template.
CWE-1287
github.com/rancher/fleet (go) — vulnerable: >= 0.15.0, < 0.15.2 → patched in 0.15.2github.com/rancher/fleet (go) — vulnerable: >= 0.14.0, < 0.14.6 → patched in 0.14.6github.com/rancher/fleet (go) — vulnerable: >= 0.13.0, < 0.13.11 → patched in 0.13.11github.com/rancher/fleet (go) — vulnerable: >= 0.12.0, < 0.12.15 → patched in 0.12.15The vulnerability in Rancher Fleet (GHSA-xr65-5cpm-g36x) allowed for cross-namespace secret and configmap disclosure. This was due to the Helm deployer using the Fleet controller's own privileged Kubernetes client when processing valuesFrom references in GitRepo or HelmOp resources. An attacker could craft a resource that referenced a secret in any namespace, and the controller would fetch and expose its contents.
The root cause was traced to the internal/helmdeployer package. Specifically, the getValues function used the controller's client instead of a client scoped to the permissions of the service account specified for the deployment. The fix, identified in commit 190f2815a2f6bb208d7ffd3b7da1c9f942716cc0, involved a chain of modifications:
createCfg function was updated to accept a RESTClientGetter, allowing it to create Helm configurations with specific, non-privileged credentials.install function was changed to generate a correctly-scoped Kubernetes client based on the deployment's serviceAccount.getValues function was modified to use this passed-in, scoped client for all Kubernetes API calls, thereby enforcing RBAC policies correctly.A new Policy custom resource was introduced as a defense-in-depth measure, allowing administrators to define explicit restrictions on what resources can be accessed. However, the core vulnerability fix was the correct scoping of the client used for valuesFrom lookups.
Helm.getValuesThis function resolves valuesFrom references by fetching Kubernetes ConfigMaps and Secrets. Before the patch, it used the Fleet controller's internal, privileged Kubernetes client (h.client). This allowed a malicious user to specify a valuesFrom reference to a resource in any namespace, and the controller would fetch it, bypassing RBAC and disclosing the resource's content. The patch changes the function to accept and use a kubeClient that is scoped to the permissions of the service account designated for the deployment, thus enforcing proper authorization.
Helm.installThis function orchestrates the Helm chart installation process. It was part of the vulnerable call chain because it invoked getValues without providing a properly scoped Kubernetes client. The patch modifies this function to first create a Helm configuration (cfg) and a kubeClient that honors the serviceAccount specified in the deployment options. This correctly-scoped client is then passed to getValues, ensuring that all subsequent Kubernetes API calls for valuesFrom are properly authorized.
Helm.createCfgThis function is responsible for creating the Helm action configuration used for deployments. The vulnerability existed because this function was hardcoded to use the controller's default REST client getter (h.getter), which has elevated privileges. This meant that all Helm operations, including valuesFrom lookups, were performed with the controller's identity. The patch refactors this function to accept a getter parameter, allowing the caller to supply a RESTClientGetter that is configured for the specific service account of the tenant, thereby ensuring operations are performed with the correct, limited permissions.
CWE-89 — Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')CWE-918 — Server-Side Request Forgery (SSRF)
facturascripts/facturascripts (composer) — vulnerable: <= 2026.1 → patched in NoneThe vulnerability is a SQL injection in the FacturaScripts REST API. The root cause is in the FacturaScripts\Core\Where::sqlColumn function, which improperly handles field names containing parentheses, bypassing SQL escaping. This flaw is exploitable through the API because several getWhereValues functions in API controllers (APIModel, ApiAttachedFiles, ApiProductoImagen) did not validate the filter parameter from user requests. An attacker could craft a malicious filter key with parentheses to inject arbitrary SQL, as demonstrated by the provided PoC. The identified patch, commit 03e282e88b8a0ae1a639c878469d040729f344e2, mitigates the vulnerability by adding strict validation to the getWhereValues functions, ensuring that only valid column names are processed. This prevents malicious input from reaching the vulnerable sqlColumn function through the API.
FacturaScripts\Core\Where::sqlColumnThe function sqlColumn in Core/Where.php is vulnerable to SQL injection. It exempts any field name that contains both ( and ) from identifier escaping, returning the raw string. This allows an attacker to inject arbitrary SQL by crafting a filter key with parentheses.
FacturaScripts\Core\Lib\API\APIModel::getWhereValuesThe getWhereValues function in Core/Lib/API/APIModel.php was vulnerable because it took a raw request key from the filter parameter and passed it to DataBaseWhere without any validation. This allowed an attacker to pass a malicious SQL expression to the sqlColumn function. The patch mitigates this by adding a regex validation to ensure the field name is a simple identifier.
FacturaScripts\Core\Controller\ApiAttachedFiles::getWhereValuesSimilar to APIModel::getWhereValues, this function in Core/Controller/ApiAttachedFiles.php was vulnerable because it did not validate the filter parameter from the user request. This allowed an attacker to exploit the SQL injection vulnerability in sqlColumn. The patch adds the same regex validation as a mitigation.
FacturaScripts\Core\Controller\ApiProductoImagen::getWhereValuesThis function in Core/Controller/ApiProductoImagen.php was also vulnerable due to the lack of input validation on the filter parameter, making it another entry point for the SQL injection in sqlColumn. The patch applies the same regex validation to prevent the exploit.