CVE-2022-39367 (GCVE-0-2022-39367)
Vulnerability from cvelistv5 – Published: 2022-10-28 00:00 – Updated: 2025-04-22 17:16
VLAI?
Title
Vulnerability in handling of uploaded QTI ZIP files
Summary
QTIWorks is a software suite for standards-based assessment delivery. Prior to version 1.0-beta15, the QTIWorks Engine allows users to upload QTI content packages as ZIP files. The ZIP handling code does not sufficiently check the paths of files contained within ZIP files, so can insert files into other locations in the filesystem if they are writable by the process running the QTIWorks Engine. In extreme cases, this could allow anonymous users to change files in arbitrary locations in the filesystem. In normal QTIWorks Engine deployments, the impact is somewhat reduced because the default QTIWorks configuration does not enable the public demo functionality, so ZIP files can only be uploaded by users with "instructor" privileges. This vulnerability is fixed in version 1.0-beta15. There are no database configuration changes required when upgrading to this version. No known workarounds for this issue exist.
Severity ?
8.6 (High)
CWE
- CWE-22 - Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
Assigner
References
Impacted products
| Vendor | Product | Version | ||
|---|---|---|---|---|
| davemckain | qtiworks |
Affected:
< 1.0-beta15
|
{
"containers": {
"adp": [
{
"providerMetadata": {
"dateUpdated": "2024-08-03T12:00:44.195Z",
"orgId": "af854a3a-2127-422b-91ae-364da2661108",
"shortName": "CVE"
},
"references": [
{
"tags": [
"x_transferred"
],
"url": "https://github.com/davemckain/qtiworks/security/advisories/GHSA-xrjg-59rc-4j42"
},
{
"tags": [
"x_transferred"
],
"url": "https://github.com/davemckain/qtiworks/pull/81"
},
{
"tags": [
"x_transferred"
],
"url": "https://github.com/davemckain/qtiworks/commit/1a46d6d842877ba2b824d5c269845827e2e0ccac"
}
],
"title": "CVE Program Container"
},
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2022-39367",
"options": [
{
"Exploitation": "poc"
},
{
"Automatable": "yes"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2025-04-22T15:39:23.099348Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2025-04-22T17:16:46.394Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "qtiworks",
"vendor": "davemckain",
"versions": [
{
"status": "affected",
"version": "\u003c 1.0-beta15"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "QTIWorks is a software suite for standards-based assessment delivery. Prior to version 1.0-beta15, the QTIWorks Engine allows users to upload QTI content packages as ZIP files. The ZIP handling code does not sufficiently check the paths of files contained within ZIP files, so can insert files into other locations in the filesystem if they are writable by the process running the QTIWorks Engine. In extreme cases, this could allow anonymous users to change files in arbitrary locations in the filesystem. In normal QTIWorks Engine deployments, the impact is somewhat reduced because the default QTIWorks configuration does not enable the public demo functionality, so ZIP files can only be uploaded by users with \"instructor\" privileges. This vulnerability is fixed in version 1.0-beta15. There are no database configuration changes required when upgrading to this version. No known workarounds for this issue exist."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 8.6,
"baseSeverity": "HIGH",
"confidentialityImpact": "NONE",
"integrityImpact": "HIGH",
"privilegesRequired": "NONE",
"scope": "CHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:N",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-22",
"description": "CWE-22: Improper Limitation of a Pathname to a Restricted Directory (\u0027Path Traversal\u0027)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2022-10-28T00:00:00.000Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"url": "https://github.com/davemckain/qtiworks/security/advisories/GHSA-xrjg-59rc-4j42"
},
{
"url": "https://github.com/davemckain/qtiworks/pull/81"
},
{
"url": "https://github.com/davemckain/qtiworks/commit/1a46d6d842877ba2b824d5c269845827e2e0ccac"
}
],
"source": {
"advisory": "GHSA-xrjg-59rc-4j42",
"discovery": "UNKNOWN"
},
"title": "Vulnerability in handling of uploaded QTI ZIP files"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2022-39367",
"datePublished": "2022-10-28T00:00:00.000Z",
"dateReserved": "2022-09-02T00:00:00.000Z",
"dateUpdated": "2025-04-22T17:16:46.394Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.1",
"vulnerability-lookup:meta": {
"epss": {
"cve": "CVE-2022-39367",
"date": "2026-04-28",
"epss": "0.00431",
"percentile": "0.6267"
},
"nvd": "{\"cve\":{\"id\":\"CVE-2022-39367\",\"sourceIdentifier\":\"security-advisories@github.com\",\"published\":\"2022-10-28T16:15:16.287\",\"lastModified\":\"2024-11-21T07:18:08.767\",\"vulnStatus\":\"Modified\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"QTIWorks is a software suite for standards-based assessment delivery. Prior to version 1.0-beta15, the QTIWorks Engine allows users to upload QTI content packages as ZIP files. The ZIP handling code does not sufficiently check the paths of files contained within ZIP files, so can insert files into other locations in the filesystem if they are writable by the process running the QTIWorks Engine. In extreme cases, this could allow anonymous users to change files in arbitrary locations in the filesystem. In normal QTIWorks Engine deployments, the impact is somewhat reduced because the default QTIWorks configuration does not enable the public demo functionality, so ZIP files can only be uploaded by users with \\\"instructor\\\" privileges. This vulnerability is fixed in version 1.0-beta15. There are no database configuration changes required when upgrading to this version. No known workarounds for this issue exist.\"},{\"lang\":\"es\",\"value\":\"QTIWorks es un paquete de software para la entrega de evaluaciones basadas en est\u00e1ndares. Antes de la versi\u00f3n 1.0-beta15, QTIWorks Engine permit\u00eda a los usuarios cargar paquetes de contenido QTI como archivos ZIP. El c\u00f3digo de manejo ZIP no verifica suficientemente las rutas de los archivos contenidos dentro de los archivos ZIP, por lo que puede insertar archivos en otras ubicaciones en el sistema de archivos si el proceso que ejecuta QTIWorks Engine puede escribirlos. En casos extremos, esto podr\u00eda permitir a usuarios an\u00f3nimos cambiar archivos en ubicaciones arbitrarias del sistema de archivos. En implementaciones normales de QTIWorks Engine, el impacto se reduce un poco porque la configuraci\u00f3n predeterminada de QTIWorks no habilita la funcionalidad de demostraci\u00f3n p\u00fablica, por lo que los archivos ZIP solo pueden ser cargados por usuarios con privilegios de \\\"\\\"instructor\\\"\\\". Esta vulnerabilidad se solucion\u00f3 en la versi\u00f3n 1.0-beta15. No se requieren cambios en la configuraci\u00f3n de la base de datos al actualizar a esta versi\u00f3n. No existen soluciones alternativas conocidas para este problema.\\n\"}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"security-advisories@github.com\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:N\",\"baseScore\":8.6,\"baseSeverity\":\"HIGH\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"scope\":\"CHANGED\",\"confidentialityImpact\":\"NONE\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"NONE\"},\"exploitabilityScore\":3.9,\"impactScore\":4.0},{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N\",\"baseScore\":6.5,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"NONE\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"NONE\"},\"exploitabilityScore\":2.8,\"impactScore\":3.6}]},\"weaknesses\":[{\"source\":\"security-advisories@github.com\",\"type\":\"Secondary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-22\"}]},{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-22\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:qtiworks_project:qtiworks:*:*:*:*:*:*:*:*\",\"versionEndExcluding\":\"1.0\",\"matchCriteriaId\":\"D5D10056-0835-4246-A694-E5F3EFBCEFAB\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:qtiworks_project:qtiworks:1.0:-:*:*:*:*:*:*\",\"matchCriteriaId\":\"7C2DB04F-A30B-4BA8-8C9B-58F447BB8953\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:qtiworks_project:qtiworks:1.0:beta1:*:*:*:*:*:*\",\"matchCriteriaId\":\"F4FA5FC7-446E-4DB0-9FC1-3EAE141CC4CC\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:qtiworks_project:qtiworks:1.0:beta10:*:*:*:*:*:*\",\"matchCriteriaId\":\"9CD6D802-69DA-445D-91BF-B68F0C2F3187\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:qtiworks_project:qtiworks:1.0:beta11:*:*:*:*:*:*\",\"matchCriteriaId\":\"F834A302-473A-4D0A-9960-99D5BF1CA689\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:qtiworks_project:qtiworks:1.0:beta12:*:*:*:*:*:*\",\"matchCriteriaId\":\"9A132D79-F228-4CAF-AA34-B1E7EDE24F1D\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:qtiworks_project:qtiworks:1.0:beta13:*:*:*:*:*:*\",\"matchCriteriaId\":\"0F03E83F-D91C-4A5E-971D-A85A4C3DC788\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:qtiworks_project:qtiworks:1.0:beta14:*:*:*:*:*:*\",\"matchCriteriaId\":\"668010D7-8B1E-436A-8A70-D4F4A30BA6B1\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:qtiworks_project:qtiworks:1.0:beta2:*:*:*:*:*:*\",\"matchCriteriaId\":\"0A95CEFD-5EC8-4CB5-9559-B5FED6F4B004\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:qtiworks_project:qtiworks:1.0:beta3:*:*:*:*:*:*\",\"matchCriteriaId\":\"65BED771-1834-41F0-ABF7-3F94B6C26B0C\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:qtiworks_project:qtiworks:1.0:beta4:*:*:*:*:*:*\",\"matchCriteriaId\":\"82430ECA-C619-4749-ACDA-A9314038E376\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:qtiworks_project:qtiworks:1.0:beta5:*:*:*:*:*:*\",\"matchCriteriaId\":\"C6ACEF3D-3C46-4383-9EE3-E35BF0BF5CC5\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:qtiworks_project:qtiworks:1.0:beta6:*:*:*:*:*:*\",\"matchCriteriaId\":\"72A683FD-E26D-44F6-BA3A-E6C52A93F1B2\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:qtiworks_project:qtiworks:1.0:beta7:*:*:*:*:*:*\",\"matchCriteriaId\":\"0C90E360-3AC1-41C3-BF14-E2579A5DCBC3\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:qtiworks_project:qtiworks:1.0:beta8:*:*:*:*:*:*\",\"matchCriteriaId\":\"22EDB2AE-B5D5-4805-94B2-AEA0CF9D4B61\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:qtiworks_project:qtiworks:1.0:beta9:*:*:*:*:*:*\",\"matchCriteriaId\":\"9B9022F1-FA79-4579-B677-84902089EECA\"}]}]}],\"references\":[{\"url\":\"https://github.com/davemckain/qtiworks/commit/1a46d6d842877ba2b824d5c269845827e2e0ccac\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Patch\",\"Third Party Advisory\"]},{\"url\":\"https://github.com/davemckain/qtiworks/pull/81\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Exploit\",\"Third Party Advisory\"]},{\"url\":\"https://github.com/davemckain/qtiworks/security/advisories/GHSA-xrjg-59rc-4j42\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Third Party Advisory\"]},{\"url\":\"https://github.com/davemckain/qtiworks/commit/1a46d6d842877ba2b824d5c269845827e2e0ccac\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\",\"Third Party Advisory\"]},{\"url\":\"https://github.com/davemckain/qtiworks/pull/81\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Exploit\",\"Third Party Advisory\"]},{\"url\":\"https://github.com/davemckain/qtiworks/security/advisories/GHSA-xrjg-59rc-4j42\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Third Party Advisory\"]}]}}",
"vulnrichment": {
"containers": "{\"cna\": {\"title\": \"Vulnerability in handling of uploaded QTI ZIP files\", \"providerMetadata\": {\"orgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"shortName\": \"GitHub_M\", \"dateUpdated\": \"2022-10-28T00:00:00.000Z\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"QTIWorks is a software suite for standards-based assessment delivery. Prior to version 1.0-beta15, the QTIWorks Engine allows users to upload QTI content packages as ZIP files. The ZIP handling code does not sufficiently check the paths of files contained within ZIP files, so can insert files into other locations in the filesystem if they are writable by the process running the QTIWorks Engine. In extreme cases, this could allow anonymous users to change files in arbitrary locations in the filesystem. In normal QTIWorks Engine deployments, the impact is somewhat reduced because the default QTIWorks configuration does not enable the public demo functionality, so ZIP files can only be uploaded by users with \\\"instructor\\\" privileges. This vulnerability is fixed in version 1.0-beta15. There are no database configuration changes required when upgrading to this version. No known workarounds for this issue exist.\"}], \"affected\": [{\"vendor\": \"davemckain\", \"product\": \"qtiworks\", \"versions\": [{\"version\": \"\u003c 1.0-beta15\", \"status\": \"affected\"}]}], \"references\": [{\"url\": \"https://github.com/davemckain/qtiworks/security/advisories/GHSA-xrjg-59rc-4j42\"}, {\"url\": \"https://github.com/davemckain/qtiworks/pull/81\"}, {\"url\": \"https://github.com/davemckain/qtiworks/commit/1a46d6d842877ba2b824d5c269845827e2e0ccac\"}], \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.1\", \"vectorString\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:N\", \"attackVector\": \"NETWORK\", \"attackComplexity\": \"LOW\", \"privilegesRequired\": \"NONE\", \"userInteraction\": \"NONE\", \"scope\": \"CHANGED\", \"confidentialityImpact\": \"NONE\", \"integrityImpact\": \"HIGH\", \"availabilityImpact\": \"NONE\", \"baseScore\": 8.6, \"baseSeverity\": \"HIGH\"}}], \"problemTypes\": [{\"descriptions\": [{\"type\": \"CWE\", \"lang\": \"en\", \"description\": \"CWE-22: Improper Limitation of a Pathname to a Restricted Directory (\u0027Path Traversal\u0027)\", \"cweId\": \"CWE-22\"}]}], \"source\": {\"advisory\": \"GHSA-xrjg-59rc-4j42\", \"discovery\": \"UNKNOWN\"}}, \"adp\": [{\"providerMetadata\": {\"orgId\": \"af854a3a-2127-422b-91ae-364da2661108\", \"shortName\": \"CVE\", \"dateUpdated\": \"2024-08-03T12:00:44.195Z\"}, \"title\": \"CVE Program Container\", \"references\": [{\"url\": \"https://github.com/davemckain/qtiworks/security/advisories/GHSA-xrjg-59rc-4j42\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://github.com/davemckain/qtiworks/pull/81\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://github.com/davemckain/qtiworks/commit/1a46d6d842877ba2b824d5c269845827e2e0ccac\", \"tags\": [\"x_transferred\"]}]}, {\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2022-39367\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"poc\"}, {\"Automatable\": \"yes\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2025-04-22T15:39:23.099348Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2025-04-22T15:39:24.832Z\"}}]}",
"cveMetadata": "{\"state\": \"PUBLISHED\", \"cveId\": \"CVE-2022-39367\", \"assignerOrgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"assignerShortName\": \"GitHub_M\", \"dateUpdated\": \"2025-04-22T17:16:46.394Z\", \"dateReserved\": \"2022-09-02T00:00:00.000Z\", \"datePublished\": \"2022-10-28T00:00:00.000Z\"}",
"dataType": "CVE_RECORD",
"dataVersion": "5.1"
}
}
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Loading…
Loading…