ScanCode.io command injection in docker image fetch process
ScanCode.io is a server to script and automate software composition analysis with ScanPipe pipelines. Prior to version 32.5.1, the software has a possible command injection vulnerability in the docker fetch process as it allows to append malicious commands in the `docker_reference` parameter. In the function `scanpipe/pipes/fetch.py:fetch_docker_image` the parameter `docker_reference` is user controllable. The `docker_reference` variable is then passed to the vulnerable function `get_docker_image_platform`. However, the `get_docker_image_plaform` function constructs a shell command with the passed `docker_reference`. The `pipes.run_command` then executes the shell command without any prior sanitization, making the function vulnerable to command injections. A malicious user who is able to create or add inputs to a project can inject commands. Although the command injections are blind and the user will not receive direct feedback without logs, it is still possible to cause damage to the server/container. The vulnerability appears for example if a malicious user adds a semicolon after the input of `docker://;`, it would allow appending malicious commands. Version 32.5.1 contains a patch for this issue. The `docker_reference` input should be sanitized to avoid command injections and, as a workaround, one may avoid creating commands with user controlled input directly.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2023-39523
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 3 Nov 2026, 15:51 UTC · Revision 1
Source evidence
ScanCode.io command injection in docker image fetch process
core-osv · Original sourcePublished 7 Aug 2023, 20:55 UTC
ScanCode.io is a server to script and automate software composition analysis with ScanPipe pipelines. Prior to version 32.5.1, the software has a possible command injection vulnerability in the docker fetch process as it allows to append malicious commands in the `docker_reference` parameter. In the function `scanpipe/pipes/fetch.py:fetch_docker_image` the parameter `docker_reference` is user controllable. The `docker_reference` variable is then passed to the vulnerable function `get_docker_image_platform`. However, the `get_docker_image_plaform` function constructs a shell command with the passed `docker_reference`. The `pipes.run_command` then executes the shell command without any prior sanitization, making the function vulnerable to command injections. A malicious user who is able to create or add inputs to a project can inject commands. Although the command injections are blind and the user will not receive direct feedback without logs, it is still possible to cause damage to the server/container. The vulnerability appears for example if a malicious user adds a semicolon after the input of `docker://;`, it would allow appending malicious commands. Version 32.5.1 contains a patch for this issue. The `docker_reference` input should be sanitized to avoid command injections and, as a workaround, one may avoid creating commands with user controlled input directly.
osv:CVE-2023-39523
Complete source record
{
"id": "7290e29e82cfb488ef4eacd6d3be43023607c2b63bf99f17cf0b049a176bcc5b",
"url": "https://osv.dev/vulnerability/CVE-2023-39523",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "ScanCode.io command injection in docker image fetch process",
"summary": "ScanCode.io is a server to script and automate software composition analysis with ScanPipe pipelines. Prior to version 32.5.1, the software has a possible command injection vulnerability in the docker fetch process as it allows to append malicious commands in the `docker_reference` parameter. In the function `scanpipe/pipes/fetch.py:fetch_docker_image` the parameter `docker_reference` is user controllable. The `docker_reference` variable is then passed to the vulnerable function `get_docker_image_platform`. However, the `get_docker_image_plaform` function constructs a shell command with the passed `docker_reference`. The `pipes.run_command` then executes the shell command without any prior sanitization, making the function vulnerable to command injections. A malicious user who is able to create or add inputs to a project can inject commands. Although the command injections are blind and the user will not receive direct feedback without logs, it is still possible to cause damage to the server/container. The vulnerability appears for example if a malicious user adds a semicolon after the input of `docker://;`, it would allow appending malicious commands. Version 32.5.1 contains a patch for this issue. The `docker_reference` input should be sanitized to avoid command injections and, as a workaround, one may avoid creating commands with user controlled input directly.",
"evidence": "osv:CVE-2023-39523",
"products": [],
"severity": "medium",
"structured": {
"id": "CVE-2023-39523",
"aliases": [
"CVE-2023-39523",
"GHSA-2ggp-cmvm-f62f",
"PYSEC-2026-1904"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:A/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/aboutcode-org/scancode.io",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "8bbf0c08f2a95b8f0bba051f549e2b3d298b6383"
},
{
"fixed": "07ec0de1964b14bf085a1c9a27ece2b61ab6105c"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:nexb:scancode.io:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "0"
},
{
"fixed": "32.5.1"
}
],
"source": "CPE_RANGE"
},
{
"range": [
{
"fixed": "07ec0de1964b14bf085a1c9a27ece2b61ab6105c"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "8bbf0c08f2a95b8f0bba051f549e2b3d298b6383"
}
],
"source": "REFERENCES_TAG",
"original_tag": "v32.5.1"
}
]
}
}
],
"versions": [
"v32.5.0",
"v32.4.0",
"v32.3.0",
"v32.2.0",
"v32.1.0",
"v32.0.1",
"v32.0.0",
"v31.0.0",
"v30.2.0",
"v21.6.10",
"v21.5.12",
"v21.4.28",
"v21.4.14",
"21.4.5",
"1.1.0",
"1.0.7",
"1.0.6",
"1.0.5",
"1.0.4",
"1.0.3",
"1.0.2",
"1.0.1",
"1.0.0"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2023-39523.json"
}
}
],
"modified": "2026-10-28T02:30:30.189817992Z",
"provider": "osv",
"references": [
"https://github.com/nexB/scancode.io/blob/main/scanpipe/pipes/fetch.py#L185",
"https://github.com/nexB/scancode.io/releases/tag/v32.5.1",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/39xxx/CVE-2023-39523.json",
"https://github.com/nexB/scancode.io/security/advisories/GHSA-2ggp-cmvm-f62f",
"https://nvd.nist.gov/vuln/detail/CVE-2023-39523",
"https://github.com/nexB/scancode.io/commit/07ec0de1964b14bf085a1c9a27ece2b61ab6105c"
],
"provider_metadata": {
"cwe_ids": [
"CWE-77"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/39xxx/CVE-2023-39523.json"
}
},
"related_cves": [
{
"value": "CVE-2023-39523",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 497018,
"published_at": "2023-08-07T20:55:46.855+00:00"
}