Vulnerabilities |
7 via 9 paths |
|---|---|
Dependencies |
129 |
Source |
GitHub |
Find, fix and prevent vulnerabilities in your code.
high severity
new
- Vulnerable module: @xmldom/xmldom
- Introduced through: expo-linking@6.3.1
Detailed paths
-
Introduced through: @bluebase/plugin-react-navigation@BlueBaseJS/plugin-react-navigation › expo-linking@6.3.1 › expo-constants@16.0.2 › @expo/config@9.0.4 › @expo/config-plugins@8.0.11 › @expo/plist@0.1.3 › @xmldom/xmldom@0.7.13Remediation: Upgrade to expo-linking@7.1.0.
Overview
@xmldom/xmldom is a javascript ponyfill to provide the following APIs that are present in modern browsers to other runtimes. Since version 0.7.0 this package is published to npm as @xmldom/xmldom and no longer as xmldom
Affected versions of this package are vulnerable to Uncontrolled Recursion in the recursive processing of deeply nested XML documents by several DOM-related operations, including normalize, serializeToString, getElementsByTagName, getElementsByTagNameNS, getElementsByClassName, getElementById, cloneNode, importNode, textContent, and isEqualNode. An attacker can cause the application to crash or become unresponsive by submitting a valid, deeply nested XML payload that triggers uncontrolled recursion and stack exhaustion.
PoC
const { DOMParser, XMLSerializer } = require('@xmldom/xmldom');
const depth = 5000;
const xml = '<a>'.repeat(depth) + '</a>'.repeat(depth);
const doc = new DOMParser().parseFromString(xml, 'text/xml');
new XMLSerializer().serializeToString(doc);
// RangeError: Maximum call stack size exceeded
Remediation
Upgrade @xmldom/xmldom to version 0.8.13, 0.9.10 or higher.
References
high severity
new
- Vulnerable module: @xmldom/xmldom
- Introduced through: expo-linking@6.3.1
Detailed paths
-
Introduced through: @bluebase/plugin-react-navigation@BlueBaseJS/plugin-react-navigation › expo-linking@6.3.1 › expo-constants@16.0.2 › @expo/config@9.0.4 › @expo/config-plugins@8.0.11 › @expo/plist@0.1.3 › @xmldom/xmldom@0.7.13Remediation: Upgrade to expo-linking@7.1.0.
Overview
@xmldom/xmldom is a javascript ponyfill to provide the following APIs that are present in modern browsers to other runtimes. Since version 0.7.0 this package is published to npm as @xmldom/xmldom and no longer as xmldom
Affected versions of this package are vulnerable to XML Injection due to unvalidated comment serialization. When an application uses the package to create an XML comment from untrusted user input, the package fails to sanitize comment-breaking sequences (like -->). An attacker can input --> to terminate the comment prematurely. Once the comment is broken out of, any text the attacker places after the --> is treated as "live" XML markup by the serializer rather than harmless comment text.
PoC
const { DOMImplementation, DOMParser, XMLSerializer } = require('@xmldom/xmldom');
const doc = new DOMImplementation().createDocument(null, 'root', null);
doc.documentElement.appendChild(
doc.createComment('--><injected attr="1"/><!--')
);
const xml = new XMLSerializer().serializeToString(doc);
console.log(xml);
// <root><!----><injected attr="1"/><!----></root>
const reparsed = new DOMParser().parseFromString(xml, 'text/xml');
console.log(reparsed.documentElement.childNodes.item(1).nodeName);
// injected
Remediation
Upgrade @xmldom/xmldom to version 0.8.13, 0.9.10 or higher.
References
high severity
new
- Vulnerable module: @xmldom/xmldom
- Introduced through: expo-linking@6.3.1
Detailed paths
-
Introduced through: @bluebase/plugin-react-navigation@BlueBaseJS/plugin-react-navigation › expo-linking@6.3.1 › expo-constants@16.0.2 › @expo/config@9.0.4 › @expo/config-plugins@8.0.11 › @expo/plist@0.1.3 › @xmldom/xmldom@0.7.13Remediation: Upgrade to expo-linking@7.1.0.
Overview
@xmldom/xmldom is a javascript ponyfill to provide the following APIs that are present in modern browsers to other runtimes. Since version 0.7.0 this package is published to npm as @xmldom/xmldom and no longer as xmldom
Affected versions of this package are vulnerable to XML Injection in the serialization of DocumentType nodes when attacker-controlled values are provided to the publicId, systemId, or internalSubset fields. An attacker can inject arbitrary XML markup into the serialized output by supplying specially crafted input to these fields, potentially leading to the injection of malicious DOCTYPE declarations or markup outside the intended context.
Note:
This is only exploitable if untrusted data is passed programmatically to createDocumentType or written directly to the relevant properties and then serialized without enabling strict validation.
Workaround
This vulnerability can be mitigated by passing the option { requireWellFormed: true } to XMLSerializer.serializeToString() to enforce validation of the affected fields.
Remediation
Upgrade @xmldom/xmldom to version 0.8.13, 0.9.10 or higher.
References
high severity
new
- Vulnerable module: @xmldom/xmldom
- Introduced through: expo-linking@6.3.1
Detailed paths
-
Introduced through: @bluebase/plugin-react-navigation@BlueBaseJS/plugin-react-navigation › expo-linking@6.3.1 › expo-constants@16.0.2 › @expo/config@9.0.4 › @expo/config-plugins@8.0.11 › @expo/plist@0.1.3 › @xmldom/xmldom@0.7.13Remediation: Upgrade to expo-linking@7.1.0.
Overview
@xmldom/xmldom is a javascript ponyfill to provide the following APIs that are present in modern browsers to other runtimes. Since version 0.7.0 this package is published to npm as @xmldom/xmldom and no longer as xmldom
Affected versions of this package are vulnerable to XML Injection via the createProcessingInstruction function. An attacker can inject arbitrary XML nodes into the serialized output by supplying specially crafted data containing the PI-closing sequence, which is not validated or neutralized during serialization. This can alter the structure and meaning of generated XML documents, potentially impacting workflows that store, forward, sign, or parse XML.
Note:
This is only exploitable if the serialization is performed without passing the { requireWellFormed: true } option.
PoC
const { DOMImplementation, XMLSerializer } = require('@xmldom/xmldom');
const doc = new DOMImplementation().createDocument(null, 'r', null);
doc.documentElement.appendChild(
doc.createProcessingInstruction('a', '?><z/><?q ')
);
console.log(new XMLSerializer().serializeToString(doc));
// <r><?a ?><z/><?q ?></r>
// ^^^^ injected <z/> element is active markup
Remediation
Upgrade @xmldom/xmldom to version 0.8.13, 0.9.10 or higher.
References
high severity
- Vulnerable module: @xmldom/xmldom
- Introduced through: expo-linking@6.3.1
Detailed paths
-
Introduced through: @bluebase/plugin-react-navigation@BlueBaseJS/plugin-react-navigation › expo-linking@6.3.1 › expo-constants@16.0.2 › @expo/config@9.0.4 › @expo/config-plugins@8.0.11 › @expo/plist@0.1.3 › @xmldom/xmldom@0.7.13Remediation: Upgrade to expo-linking@7.1.0.
Overview
@xmldom/xmldom is a javascript ponyfill to provide the following APIs that are present in modern browsers to other runtimes. Since version 0.7.0 this package is published to npm as @xmldom/xmldom and no longer as xmldom
Affected versions of this package are vulnerable to XML Injection via the XMLSerializer() function. An attacker can manipulate the structure and integrity of generated XML documents by injecting attacker-controlled markup containing the CDATA terminator ]]> through CDATA section content, which is not properly validated or sanitized during serialization. This can result in unauthorized XML elements or attributes being inserted, potentially leading to business logic manipulation or privilege escalation in downstream consumers.
Remediation
Upgrade @xmldom/xmldom to version 0.8.12, 0.9.9 or higher.
References
medium severity
new
- Vulnerable module: uuid
- Introduced through: expo-linking@6.3.1
Detailed paths
-
Introduced through: @bluebase/plugin-react-navigation@BlueBaseJS/plugin-react-navigation › expo-linking@6.3.1 › expo-constants@16.0.2 › @expo/config@9.0.4 › @expo/config-plugins@8.0.11 › xcode@3.0.1 › uuid@7.0.3
Overview
uuid is a RFC4122 (v1, v4, and v5) compliant UUID library.
Affected versions of this package are vulnerable to Improper Validation of Specified Index, Position, or Offset in Input due to accepting external output buffers but not rejecting out-of-range writes (small buf or large offset). This inconsistency allows silent partial writes into caller-provided buffers.
PoC
cd /home/StrawHat/uuid
npm ci
npm run build
node --input-type=module -e "
import {v4,v5,v6} from './dist-node/index.js';
const ns='6ba7b810-9dad-11d1-80b4-00c04fd430c8';
for (const [name,fn] of [
['v4',()=>v4({},new Uint8Array(8),4)],
['v5',()=>v5('x',ns,new Uint8Array(8),4)],
['v6',()=>v6({},new Uint8Array(8),4)],
]) {
try { fn(); console.log(name,'NO_THROW'); }
catch(e){ console.log(name,'THREW',e.name); }
}"
Remediation
Upgrade uuid to version 11.1.1, 14.0.0 or higher.
References
medium severity
- Vulnerable module: inflight
- Introduced through: expo-linking@6.3.1
Detailed paths
-
Introduced through: @bluebase/plugin-react-navigation@BlueBaseJS/plugin-react-navigation › expo-linking@6.3.1 › expo-constants@16.0.2 › @expo/config@9.0.4 › glob@7.1.6 › inflight@1.0.6
-
Introduced through: @bluebase/plugin-react-navigation@BlueBaseJS/plugin-react-navigation › expo-linking@6.3.1 › expo-constants@16.0.2 › @expo/config@9.0.4 › @expo/config-plugins@8.0.11 › glob@7.1.6 › inflight@1.0.6
-
Introduced through: @bluebase/plugin-react-navigation@BlueBaseJS/plugin-react-navigation › expo-linking@6.3.1 › expo-constants@16.0.2 › @expo/config@9.0.4 › sucrase@3.34.0 › glob@7.1.6 › inflight@1.0.6
Overview
Affected versions of this package are vulnerable to Missing Release of Resource after Effective Lifetime via the makeres function due to improperly deleting keys from the reqs object after execution of callbacks. This behavior causes the keys to remain in the reqs object, which leads to resource exhaustion.
Exploiting this vulnerability results in crashing the node process or in the application crash.
Note: This library is not maintained, and currently, there is no fix for this issue. To overcome this vulnerability, several dependent packages have eliminated the use of this library.
To trigger the memory leak, an attacker would need to have the ability to execute or influence the asynchronous operations that use the inflight module within the application. This typically requires access to the internal workings of the server or application, which is not commonly exposed to remote users. Therefore, “Attack vector” is marked as “Local”.
PoC
const inflight = require('inflight');
function testInflight() {
let i = 0;
function scheduleNext() {
let key = `key-${i++}`;
const callback = () => {
};
for (let j = 0; j < 1000000; j++) {
inflight(key, callback);
}
setImmediate(scheduleNext);
}
if (i % 100 === 0) {
console.log(process.memoryUsage());
}
scheduleNext();
}
testInflight();
Remediation
There is no fixed version for inflight.