164 lines
9.6 KiB
JSON
164 lines
9.6 KiB
JSON
{
|
||
"dataType": "CVE_RECORD",
|
||
"dataVersion": "5.2",
|
||
"cveMetadata": {
|
||
"cveId": "CVE-2026-91012",
|
||
"assignerOrgId": "f0158376-9dc2-43b6-827c-5f631a4d8d09",
|
||
"state": "PUBLISHED",
|
||
"assignerShortName": "apache",
|
||
"dateReserved": "2026-09-14T16:27:00.736Z",
|
||
"datePublished": "2026-09-29T08:34:11.409Z",
|
||
"dateUpdated": "2026-10-01T14:10:47.838Z"
|
||
},
|
||
"containers": {
|
||
"cna": {
|
||
"providerMetadata": {
|
||
"orgId": "f0158376-9dc2-43b6-827c-5f631a4d8d09",
|
||
"shortName": "apache",
|
||
"dateUpdated": "2026-09-29T08:34:11.409Z"
|
||
},
|
||
"title": "Apache Karaf: Path Traversal in Config Service Allows Manager-to-Admin Privilege Escalation",
|
||
"source": {
|
||
"discovery": "EXTERNAL"
|
||
},
|
||
"affected": [
|
||
{
|
||
"vendor": "Apache Software Foundation",
|
||
"product": "Apache Karaf",
|
||
"packageName": "org.apache.karaf.config.core.impl",
|
||
"versions": [
|
||
{
|
||
"status": "affected",
|
||
"version": "0",
|
||
"lessThan": "4.4.12",
|
||
"versionType": "semver"
|
||
}
|
||
],
|
||
"defaultStatus": "unaffected"
|
||
}
|
||
],
|
||
"descriptions": [
|
||
{
|
||
"value": "org.apache.karaf.config.core.impl.ConfigRepositoryImpl#update(pid, properties),\nwhich backs the \"config\" MBean and the config:* shell commands, derives the file\nit writes a configuration to from caller-supplied input without checking that\nthe result stays inside ${karaf.etc}:\n\n * if the submitted property map contains a felix.fileinstall.filename entry, that value is turned directly into a File (getCfgFileFromProperty), so it can point to any absolute path the Karaf process can write to;\n * otherwise the configuration PID is concatenated verbatim into the target file name (generateConfigFilename(): new File(karaf.etc, pid + \".cfg\")), so a PID containing \"..\" segments resolves outside ${karaf.etc}. createFactoryConfiguration() has the same issue via the factory PID/alias.\n\n\nBoth code paths are reachable by any caller holding the \"manager\" role under Karaf's shipped command/JMX ACL (org.apache.karaf.command.acl.conf.cfg: \"update = manager\"). Such a user can therefore write attacker-controlled content to any file the Karaf process can write, including files the same ACL otherwise reserves to \"admin\" (etc/users.properties, etc/*.acl.*.cfg, etc/org.apache.karaf.management.cfg, and similar), allowing a manager-role user to grant themselves the admin role or otherwise take over the container.\n\n\n\n\n\n\nConfigMBeanImpl.install() and the config:install shell command already guarded the equivalent risk on their own code path with a finalname.contains(\"..\") string check, but that check does not stop absolute paths or symlink-based escapes, and it was never applied to ConfigRepositoryImpl.update() / createFactoryConfiguration() at all.",
|
||
"lang": "en",
|
||
"supportingMedia": [
|
||
{
|
||
"type": "text/html",
|
||
"base64": false,
|
||
"value": "<div><span>org.apache.karaf.config.core.impl.ConfigRepositoryImpl#update(pid, properties)</span>,\nwhich backs the \"config\" MBean and the config:* shell commands, derives the file\nit writes a configuration to from caller-supplied input without checking that\nthe result stays inside <code>${karaf.etc}</code>:</div><div><ul><li>if the submitted property map contains a <code>felix.fileinstall.filename</code> entry, that value is turned directly into a <code>File</code> (<code>getCfgFileFromProperty</code>), so it can point to any absolute path the Karaf process can write to;</li><li>otherwise the configuration PID is concatenated verbatim into the target file name (<code>generateConfigFilename(): new File(karaf.etc, pid + \".cfg\")</code>), so a PID containing \"..\" segments resolves outside <code>${karaf.etc}</code>. <code>createFactoryConfiguration()</code> has the same issue via the factory PID/alias.</li></ul><div>Both code paths are reachable by any caller holding the \"manager\" role under Karaf's shipped command/JMX ACL (<code>org.apache.karaf.command.acl.conf.cfg:</code> \"<code>update = manager</code>\"). Such a user can therefore write attacker-controlled content to any file the Karaf process can write, including files the same ACL otherwise reserves to \"<code>admin</code>\" (<code>etc/users.properties</code>, <code>etc/*.acl.*.cfg</code>, <code>etc/org.apache.karaf.management.cfg</code>, and similar), allowing a manager-role user to grant themselves the admin role or otherwise take over the container.</div></div><div><br></div><div><span>ConfigMBeanImpl.install()</span> and the <code>config:install</code> shell command already guarded the equivalent risk on their own code path with a <code>finalname.contains(\"..\")</code> string check, but that check does not stop absolute paths or symlink-based escapes, and it was never applied to <code>ConfigRepositoryImpl.update()</code> / <code>createFactoryConfiguration()</code> at all.</div>"
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"references": [
|
||
{
|
||
"url": "https://lists.apache.org/thread/op8trtz1qxkdwj2rjozhd9yt2yd6nhw4",
|
||
"tags": [
|
||
"vendor-advisory"
|
||
]
|
||
}
|
||
],
|
||
"metrics": [
|
||
{
|
||
"other": {
|
||
"type": "Textual description of severity",
|
||
"content": {
|
||
"text": "important"
|
||
}
|
||
},
|
||
"scenarios": [
|
||
{
|
||
"lang": "en",
|
||
"value": "GENERAL"
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"credits": [
|
||
{
|
||
"lang": "en",
|
||
"value": "n0mi1k <nomilksec@gmail.com>",
|
||
"type": "reporter"
|
||
}
|
||
],
|
||
"x_generator": {
|
||
"engine": "Vulnogram 1.0.3"
|
||
}
|
||
},
|
||
"adp": [
|
||
{
|
||
"title": "CVE Program Container",
|
||
"references": [
|
||
{
|
||
"url": "http://www.openwall.com/lists/oss-security/2026/09/28/8"
|
||
}
|
||
],
|
||
"providerMetadata": {
|
||
"orgId": "af854a3a-2127-422b-91ae-364da2661108",
|
||
"shortName": "CVE",
|
||
"dateUpdated": "2026-09-29T09:15:41.656Z"
|
||
}
|
||
},
|
||
{
|
||
"problemTypes": [
|
||
{
|
||
"descriptions": [
|
||
{
|
||
"type": "CWE",
|
||
"cweId": "CWE-22",
|
||
"lang": "en",
|
||
"description": "CWE-22 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')"
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"metrics": [
|
||
{
|
||
"cvssV3_1": {
|
||
"scope": "UNCHANGED",
|
||
"version": "3.1",
|
||
"baseScore": 9.8,
|
||
"attackVector": "NETWORK",
|
||
"baseSeverity": "CRITICAL",
|
||
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
|
||
"integrityImpact": "HIGH",
|
||
"userInteraction": "NONE",
|
||
"attackComplexity": "LOW",
|
||
"availabilityImpact": "HIGH",
|
||
"privilegesRequired": "NONE",
|
||
"confidentialityImpact": "HIGH"
|
||
}
|
||
},
|
||
{
|
||
"other": {
|
||
"type": "ssvc",
|
||
"content": {
|
||
"timestamp": "2026-10-01T14:10:12.183455Z",
|
||
"id": "CVE-2026-91012",
|
||
"options": [
|
||
{
|
||
"Exploitation": "none"
|
||
},
|
||
{
|
||
"Automatable": "yes"
|
||
},
|
||
{
|
||
"Technical Impact": "total"
|
||
}
|
||
],
|
||
"role": "CISA Coordinator",
|
||
"version": "2.0.3"
|
||
}
|
||
}
|
||
}
|
||
],
|
||
"title": "CISA ADP Vulnrichment",
|
||
"providerMetadata": {
|
||
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
|
||
"shortName": "CISA-ADP",
|
||
"dateUpdated": "2026-10-01T14:10:47.838Z"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
} |