Malicious code in journey-test-helloshell (PyPI)
--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (0203fffc73ebe748d6defab0472b648408b29c959a9c6813f966df48cfafb21b) setup.py registers a custom install command (cmdclass install hook) and also fires at module import that connects to the hardcoded bare-IP endpoint 137.131.233.62:8080 and bridges a /bin/bash -i subprocess over the socket, giving the operator interactive shell access on the installer's host. Before opening the shell, the code POSTs host identifiers (hostname, uid, JCX_ENVIRONMENT) over plaintext HTTP to http://137.131.233.62:443/shell-beacon. The install hook double-forks, calls setsid, redirects stdio to /dev/null, and enters an infinite reconnect loop with a 60-second sleep, persisting the backdoor beyond the pip install process. A /tmp/.jcx_channel.done guard file is used to coordinate the channel. Destination is a bare IP unrelated to any publisher domain. ## Source: kam193 (bdf4549e34df1c1c7dfd704454011cf0a26ea5807948e917d7bc65f130182fc9) In specific environments, package starts a reverse shell during installation. --- Category: MALICIOUS - The campaign has clearly malicious intent, like infostealers. Campaign: 2026-10-journey-test-helloshell Reasons (based on the campaign): - The package contains code to create a reverse shell, allowing an attacker to execute any commands on the victim's machine. - The package overrides the install command in setup.py to execute malicious code during installation. - targetted-attack
- Products
- journey-test-helloshell
- Affected versions
- 0.2.0
- Fixed versions
- Not specified
- CVEs
- Not specified
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 31 Oct 2026, 16:37 UTC · Revision 1
Source evidence
Malicious code in journey-test-helloshell (PyPI)
core-osv · Original sourcePublished 21 Oct 2026, 18:30 UTC
--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (0203fffc73ebe748d6defab0472b648408b29c959a9c6813f966df48cfafb21b) setup.py registers a custom install command (cmdclass install hook) and also fires at module import that connects to the hardcoded bare-IP endpoint 137.131.233.62:8080 and bridges a /bin/bash -i subprocess over the socket, giving the operator interactive shell access on the installer's host. Before opening the shell, the code POSTs host identifiers (hostname, uid, JCX_ENVIRONMENT) over plaintext HTTP to http://137.131.233.62:443/shell-beacon. The install hook double-forks, calls setsid, redirects stdio to /dev/null, and enters an infinite reconnect loop with a 60-second sleep, persisting the backdoor beyond the pip install process. A /tmp/.jcx_channel.done guard file is used to coordinate the channel. Destination is a bare IP unrelated to any publisher domain. ## Source: kam193 (bdf4549e34df1c1c7dfd704454011cf0a26ea5807948e917d7bc65f130182fc9) In specific environments, package starts a reverse shell during installation. --- Category: MALICIOUS - The campaign has clearly malicious intent, like infostealers. Campaign: 2026-10-journey-test-helloshell Reasons (based on the campaign): - The package contains code to create a reverse shell, allowing an attacker to execute any commands on the victim's machine. - The package overrides the install command in setup.py to execute malicious code during installation. - targetted-attack
osv:MAL-2026-18124
journey-test-helloshell
Fixed versions: Not specified
Complete source record
{
"id": "91f5ad32b900068c043997708f5d45c001aedf8ed74f8b65e3a232eb334a2f23",
"url": "https://osv.dev/vulnerability/MAL-2026-18124",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Malicious code in journey-test-helloshell (PyPI)",
"summary": "--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (0203fffc73ebe748d6defab0472b648408b29c959a9c6813f966df48cfafb21b) setup.py registers a custom install command (cmdclass install hook) and also fires at module import that connects to the hardcoded bare-IP endpoint 137.131.233.62:8080 and bridges a /bin/bash -i subprocess over the socket, giving the operator interactive shell access on the installer's host. Before opening the shell, the code POSTs host identifiers (hostname, uid, JCX_ENVIRONMENT) over plaintext HTTP to http://137.131.233.62:443/shell-beacon. The install hook double-forks, calls setsid, redirects stdio to /dev/null, and enters an infinite reconnect loop with a 60-second sleep, persisting the backdoor beyond the pip install process. A /tmp/.jcx_channel.done guard file is used to coordinate the channel. Destination is a bare IP unrelated to any publisher domain. ## Source: kam193 (bdf4549e34df1c1c7dfd704454011cf0a26ea5807948e917d7bc65f130182fc9) In specific environments, package starts a reverse shell during installation. --- Category: MALICIOUS - The campaign has clearly malicious intent, like infostealers. Campaign: 2026-10-journey-test-helloshell Reasons (based on the campaign): - The package contains code to create a reverse shell, allowing an attacker to execute any commands on the victim's machine. - The package overrides the install command in setup.py to execute malicious code during installation. - targetted-attack",
"evidence": "osv:MAL-2026-18124",
"products": [
{
"name": {
"value": "journey-test-helloshell",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "0.2.0",
"evidence": "/affected/0/versions"
}
]
}
],
"severity": "unknown",
"structured": {
"id": "MAL-2026-18124",
"aliases": [
"MAL-2026-18124"
],
"affected": [
{
"package": {
"name": "journey-test-helloshell",
"purl": "pkg:pypi/journey-test-helloshell",
"ecosystem": "PyPI"
},
"versions": [
"0.2.0"
],
"database_specific": {
"cwes": [
{
"name": "Embedded Malicious Code",
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature."
}
],
"source": "https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/journey-test-helloshell/MAL-2026-18124.json",
"indicators": {
"evidence_files": [
{
"path": "setup.py",
"tlsh": "9de18546ed696471d383d29444328094a7b5bf17aa12a8b87eecd3087fce035c1f87e9",
"sha256": "96c8e2608f8bfbaafd226bef8a4e3f405fc1d1ff4dfc76d7724719f3badea586"
}
],
"package_integrity": [
{
"hashes": {
"md5": "171fc938ad2c138479c652d2ac7975d0",
"sha256": "b753d8125d22b8ebaefde52da76fdd47a75c25fdbbdded7e790fce67a49a6bb6",
"blake2b_256": "24630d199ea7fbc9a2eed448c9b5d766e50a38dc38bd533549b7e719f015177c"
},
"filename": "journey_test_helloshell-0.2.0.tar.gz"
}
]
}
}
}
],
"modified": "2026-10-21T22:45:05.191813107Z",
"provider": "osv",
"references": [
"https://bad-packages.kam193.eu/pypi/package/journey-test-helloshell",
"https://pypi.org/project/journey-test-helloshell/0.2.0/"
],
"provider_metadata": {
"iocs": {
"ips": [
"137.131.233.62"
],
"urls": [
"http://137.131.233.62:443/shell-beacon"
]
},
"malicious-packages-origins": [
{
"id": "pypi/2026-10-journey-test-helloshell/journey-test-helloshell",
"sha256": "bdf4549e34df1c1c7dfd704454011cf0a26ea5807948e917d7bc65f130182fc9",
"source": "kam193",
"versions": [
"0.2.0"
],
"import_time": "2026-10-21T19:14:47.748725857Z",
"modified_time": "2026-10-21T18:30:25.356628Z"
},
{
"id": "IN-MAL-2026-021558",
"sha256": "0203fffc73ebe748d6defab0472b648408b29c959a9c6813f966df48cfafb21b",
"source": "amazon-inspector",
"versions": [
"0.2.0"
],
"import_time": "2026-10-21T22:41:19.834574184Z",
"modified_time": "2026-10-21T22:19:50Z"
}
]
}
},
"related_cves": [],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 401012,
"published_at": "2026-10-21T18:30:25+00:00"
}