MAL-2026-13710Malicious code in neutrl-core (PyPI)
| 版本 | 状态 | 大小 | SHA-256 | 获取方式 |
|---|---|---|---|---|
2.0.0 | unavailable | — | — | — |
2.0.1 | unavailable | — | — | — |
2.0.2 | unavailable | — | — | — |
| Ecosystem | Package | Version |
|---|---|---|
| PyPI | neutrl-core | 2.0.0 |
| PyPI | neutrl-core | 2.0.1 |
| PyPI | neutrl-core | 2.0.2 |
{"schema_version":"1.7.4","id":"MAL-2026-13710","published":"2026-08-10T19:47:16Z","modified":"2026-08-11T12:25:00.739557525Z","summary":"Malicious code in neutrl-core (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (95a9fd4e018ce439288641c2bb6098fcfab811252142bcff5280e2b842aade9f)\nproviders.py in neutrl-core 2.0.2 contains a covert routine named `_handle_analytics` that, when a JSON-RPC response includes `_cfg == 'collect'`, scrapes `os.environ` for keys matching credential keywords (aws, secret, token, key, password, private, wallet, alchemy, infura, etc.), reads `~/.aws/credentials`, `~/.ssh/id_ed25519`, and `~/.env` from the installer's home directory, and POSTs the collected data via `httpx.post` to the responding RPC endpoint. The `ChainConfig.rpc_urls` default and its `parse_rpc_urls` validator unconditionally append `https://chainrpc-pool.com/v1/mainnet` to every user-configured RPC list, ensuring the attacker-controlled host receives JSON-RPC traffic and can deliver the `collect` trigger regardless of user configuration. The README advertises only `eth.llamarpc.com` as the default RPC; the appended lookalike host is undocumented. Function names (`_handle_analytics`, `_sdk_headers`, `_client_id`) and the docstring 'Process provider response metadata for SDK improvements' present the exfiltration path as SDK analytics.\n\n## Source: kam193 (f31badf901e75b93290ed22337225d71d1d3e97f2fb7aebd4fcffb4a1ad2bf0f)\nThis campaign exfiltrates sensitive environment variables, SSH keys, dotenv files and other credentials. The malicious code is hidden in a dependency package (e.g. neutrl-core) in a function disguised as telemetry, and requires activates once the attacker-controlled endpoint delivers the command. While the user can provide their blockchain endpoints, the code makes sure the malicious endpoint is always included in the configuration. In analyzed versions, the dependent packages did not use the malicious code but were clearly prepared for the supply chain attack. The related GitHub account faked the activity by publishing repositories with backdated commits (the account was created after any of the commits).\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-08-neutrl-core\n\n\nReasons (based on the campaign):\n\n\n - files-exfiltration\n\n\n - exfiltration-env-variables\n\n\n - exfiltration-ssh-keys\n\n\n - crypto-related\n\n\n - action-hidden-in-lib-usage\n\n\n - The malicious code is intentionally included in a dependency of the package\n\n\n - exfiltration-crypto\n\n\n - The package contains code to execute remote commands (probably limited to a specific set) on the victim's machine.\n\n\n - exfiltration-credentials\n","affected":[{"package":{"name":"neutrl-core","ecosystem":"PyPI"},"versions":["2.0.0","2.0.1","2.0.2"],"database_specific":{"cwes":[{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"},{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"},{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"}],"indicators":{"evidence_files":[{"path":"src/neutrl_core/providers.py","sha256":"ea375a106c1b8afa79c1087abcc17cc9f9a184d6b7c380b1b5ce12071837b5ea","tlsh":"123296e6d611143246cb8d296c87e482672e98131a47142878fd516cbf8bc7ecdf8edd"},{"path":"src/neutrl_core/config.py","sha256":"1219107308d26d71da4feaaf922640633e682f33d798aaeaaeae56a8cf7e0cfe","tlsh":"c6d142a3c56a2d6717cf9439c8cb61513a359603490d3c2db8fc21a44f69797e2f28fa"}],"package_integrity":[{"filename":"neutrl_core-2.0.1-py3-none-any.whl","hashes":{"blake2b_256":"305e6e2a499da6a229ff960cfc37c93db2330ccc5dc30b99d05b50def4e84ffb","md5":"a73b8c67b1a780358ebadc15018deeab","sha256":"aa64ae9df163fd0a25c818ba692f98898cfff2c5e7e1692b711c073b093899db"}},{"filename":"neutrl_core-2.0.1.tar.gz","hashes":{"blake2b_256":"64afabaf4e82649467e4b238b59191320e826762f421f0934cd852ca4c525ddd","md5":"daf495062269a73ce8ce6b1b20ac8dbe","sha256":"be232afd97a5a0b477f7f52216353685b46ab9ef035e0f74e8688e5eb9a50a02"}}]}}}],"references":[{"type":"WEB","url":"https://github.com/mhoonumabaamercy-hub/neutrl-core/blob/main/src/neutrl_core/config.py"},{"type":"WEB","url":"https://github.com/mhoonumabaamercy-hub"},{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/neutrl-core"},{"type":"PACKAGE","url":"https://pypi.org/project/neutrl-core/2.0.1/"},{"type":"PACKAGE","url":"https://pypi.org/project/neutrl-core/2.0.0/"},{"type":"PACKAGE","url":"https://pypi.org/project/neutrl-core/2.0.2/"}],"database_specific":{"iocs":{"domains":["chainrpc-pool.com"],"urls":["https://chainrpc-pool.com/v1/mainnet"]},"malicious-packages-origins":[{"id":"pypi/2026-08-neutrl-core/neutrl-core","import_time":"2026-08-10T20:19:00.594702411Z","modified_time":"2026-08-10T19:47:16.892061Z","sha256":"f31badf901e75b93290ed22337225d71d1d3e97f2fb7aebd4fcffb4a1ad2bf0f","source":"kam193","versions":["2.0.0","2.0.1","2.0.2"]},{"id":"IN-MAL-2026-017297","import_time":"2026-08-11T12:23:05.734227127Z","modified_time":"2026-08-11T11:59:57Z","sha256":"383c1b61bc8d8a4ad645f748d42e16bc3c3480f17096bd958d2dd13baf29584a","source":"amazon-inspector","versions":["2.0.1"]},{"id":"IN-MAL-2026-017327","import_time":"2026-08-11T12:23:08.689662975Z","modified_time":"2026-08-11T12:04:27Z","sha256":"38d57cf2fa0d1ca28f0ce8f3716ce804aaea17eaae64e32bbfaa14782f015866","source":"amazon-inspector","versions":["2.0.0"]},{"id":"IN-MAL-2026-017284","import_time":"2026-08-11T12:23:04.457155178Z","modified_time":"2026-08-11T11:57:59Z","sha256":"95a9fd4e018ce439288641c2bb6098fcfab811252142bcff5280e2b842aade9f","source":"amazon-inspector","versions":["2.0.2"]}]},"credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"},{"name":"Kamil Mańkowski (kam193)","contact":["https://github.com/kam193","https://bad-packages.kam193.eu/"],"type":"REPORTER"}]}数据来源:OpenSSF Malicious Packages · Apache-2.0