MAL-2026-16164

See a problem?
Import Source
https://github.com/ossf/malicious-packages/blob/main/osv/malicious/crates.io/logs_update/MAL-2026-16164.json
JSON Data
https://api.osv.dev/v1/vulns/MAL-2026-16164
Published
2026-09-11T00:00:00Z
Modified
2026-09-15T06:00:04Z
Summary
Malicious code in logs_update (crates.io)
Details

logs-update is a malicious crate published to crates.io on 2026-09-10 with zero downloads. It pretends to be a terminal progress-bar library, but renders nothing to a terminal. The whole crate steals files and sets up remote access.

The crate has no build script, so it does not run during cargo build of a dependent. It runs when someone runs its binary (for example after cargo install logs-update) or when a dependent calls its run() function.

When it runs, it does four things:

  1. It POSTs a machine fingerprint (username, OS, and local IP) to https://rust-api-jet.vercel.app/api/validate/system-info.

  2. It reads the project's .env and its trading-bot config files and POSTs them to https://rust-api-jet.vercel.app/api/validate/project-env.

  3. It walks the filesystem and POSTs the contents of .env, .json, .txt, .doc, .docx, and .xlsx files to https://rust-api-jet.vercel.app/api/validate/files.

  4. On Linux, it appends an attacker's SSH public key to ~/.ssh/authorized_keys, giving the attacker remote login as that user.

The crate targets crypto trading-bot developers: it hunts Polymarket order-book client configs, and those developers keep exchange API keys and wallet secrets in their .env files. Every version is malicious.

Attacker SSH public key appended to ~/.ssh/authorized_keys (comment yyy@gmail.com): ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDGheept5OU9//Jp0Zfq3F49s8sqkq7k6n4DA43N/DKgXz3qsQduaCHwdRmHKnx+y3SGaCGl3zlwYh5P+IO3TDfhnfPeEcIabTfHGSwJCzWF155gePLEHE1ClcZqDkMCKKJk9QumEj+5fM1LKWwx2OA+zhegm06pDpn7+6rJk6yOIXauHlnRrELlC6R/nxCAIPtA8988cbRMA6g2gqpWnbgN5NZgcT5+2RB8yZJ6uEk0IG/HrdbxYiOVMF+GTJjMmeiTMskstLlv1DHTT25BiTRA8N8l26bS5KLD7gS0dM+//G/DrcpQ89485gqOO8oZKJsagG78ez20CO6t+1A6vcBoEJljonP8S72g/cYPdB9SofHSCRPOImNXy/wwHMzOKeQrpAn2MbY3evUNPt4Tx/2eXpP1t+0P+3aLIO6MbDq7pHYAwHP54Tj5HFFbOLEcG3e5BmM4h5m5ZCa0+tsb6Jpkf7okFeEuY3NOcr1JdvmrKMPsLMsSZTb0QOJFmK4dA0S95PRtMPTut5zfKg6gznMhwl8pl8Vfdf0a62TTrmDGTvYPVUh+QtFupyjqHa3LU1s0V53btWzqtTxVSjYj2qxTfuZ1ZSOegDwQtxvMDxf5EJvt02mSZ8zRqxwVYtPn6dofrkE4Kl0eYL/4eYuO5bvZfOns/XYTC4bjt7V/j0SOQ== yyy@gmail.com

Database specific
{
    "iocs": {
        "domains": [
            "rust-api-jet.vercel.app"
        ],
        "files": [
            {
                "digests": {
                    "sha256": "101955bda3e06ef511cbd6c47f6e723252ae405c256b46cedfdac63d9421b1a4"
                },
                "note": "Core payload: runs the four exfil and persistence steps, and holds the exfil endpoints and attacker SSH key.",
                "paths": [
                    "src/lib.rs"
                ],
                "source": "PACKAGE_ARCHIVE"
            },
            {
                "digests": {
                    "sha256": "fc2325e4fe8d3fe6397fc71dd2ecc1bfa26c07ffc1f57473d409db73fb9c5387"
                },
                "note": "Builds the machine fingerprint (username, OS, first non-internal IPv4) and POSTs it to the system-info endpoint.",
                "paths": [
                    "src/system_info.rs"
                ],
                "source": "PACKAGE_ARCHIVE"
            },
            {
                "digests": {
                    "sha256": "949d2359f5adf42a4e86f1556914713df535dd0038a9195cc0dbb4765c5d5297"
                },
                "note": "Reads the project .env and Polymarket/CLOB trading-client config files and POSTs them to the project-env endpoint.",
                "paths": [
                    "src/project_env.rs"
                ],
                "source": "PACKAGE_ARCHIVE"
            },
            {
                "digests": {
                    "sha256": "a91d4a3edaa45b5ad9aeb8c3ce976068ea00bede622c1a21032fd8c9f5a3c7a8"
                },
                "note": "Walks the filesystem to depth 10 collecting .env/.json/.txt/.doc/.docx/.xlsx files and POSTs their contents in batches.",
                "paths": [
                    "src/filesystem_sweep.rs"
                ],
                "source": "PACKAGE_ARCHIVE"
            }
        ],
        "urls": [
            "https://rust-api-jet.vercel.app/api/validate/system-info",
            "https://rust-api-jet.vercel.app/api/validate/project-env",
            "https://rust-api-jet.vercel.app/api/validate/files"
        ]
    }
}
References
Credits

Affected packages

crates.io / logs-update

Package

Name
logs-update
View open source insights on deps.dev
Purl
pkg:cargo/logs-update

Affected ranges

Type
SEMVER
Events
Introduced
0 Unknown introduced version / All previous versions are affected

Database specific

cwes
[
    {
        "cweId": "CWE-506",
        "description": "The product contains code that appears to be malicious in nature.",
        "name": "Embedded Malicious Code"
    }
]
source
"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/crates.io/logs_update/MAL-2026-16164.json"