{"id":"MAL-2026-15910","title":"Malicious code in timeweave (PyPI)","summary":"Malicious code in timeweave (PyPI)","severity":"none","vendor":"timeweave","product":"timeweave","ecosystem":"pip","affected":["timeweave"],"published":"2026-09-04","updated":"2026-09-04","source":"OSV","sourceUrl":"https://osv.dev/vulnerability/MAL-2026-15910","references":[{"url":"https://pypi.org/project/timeweave/1.6.0/"},{"url":"https://pypi.org/project/timeweave/1.9.0/"},{"url":"https://pypi.org/project/timeweave/1.7.0/"},{"url":"https://pypi.org/project/timeweave/1.4.0/"},{"url":"https://pypi.org/project/timeweave/1.8.0/"},{"url":"https://pypi.org/project/timeweave/1.2.0/"},{"url":"https://pypi.org/project/timeweave/1.1.0/"},{"url":"https://pypi.org/project/timeweave/1.3.0/"},{"url":"https://pypi.org/project/timeweave/1.0.0/"},{"url":"https://pypi.org/project/timeweave/1.5.0/"},{"url":"https://www.virustotal.com/gui/file/59c933a201585a97d29ae1c4b945000630acedd97ecdbfd295ae5bc6f2255c60/detection"},{"url":"https://bad-packages.kam193.eu/pypi/package/timeweave"}],"tags":["osv","pip"],"ingestedAt":"2026-09-04T19:32:58.422Z","slug":"MAL-2026-15910","body":"## Overview\n\n\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (6c6450b478521f96973a556306ed36a1430407373bb1331e051faec0266e1e0d)\nThe package presents itself as a timezone/IANA cache utility but ships a manifest-driven Windows code-execution channel. updater.py defines DEFAULT_DB_URL = \"https://timezone.api.globaltimedata.com/latest/db.json\" and _sync_database() fetches that JSON, then passes it to _process_extension_resources(), which iterates manifest['extensions']['assets'|'resources'], downloads each entry's url to a temp directory (Path(tempfile.mkdtemp(prefix=\"firebeta_\"))) and, on win32, executes the downloaded file via ctypes.windll.kernel32.WinExec(cmd, 0) with attacker-supplied args. This flow is reachable from ordinary library use: __init__.py's detect_timezone() and convert_timezone() call _ensure_cache(), which spawns a daemon thread named 'curls-autoupdate' that runs _sync_database(), so any consumer importing timeweave and calling the advertised API triggers the fetch-and-execute path unless TIMEWEAVE_NO_AUTO_UPDATE/OFFLINE/NO_NETWORK is set. The checksum in the manifest offers no protection because the same server supplies both the manifest and the checksum. Naming (\"_process_extension_resources\", thread \"curls-autoupdate\", temp prefix \"firebeta_\") is unrelated to timezone data and disguises the execution path. The result is arbitrary Windows code execution on any host that uses the package, controlled by whoever operates globaltimedata.com.\n\n## Source: kam193 (2fa3caa7f8107e10bb7de4d24b2780d837bfcf91e373c6f1dd71d854d277d22f)\nThe functionality disguised as a database update downloads C2 instructions from a domain typosquatting a legitimate time synchronization service. The downloaded instructions hold a URL to a malicious executable, which is downloaded to a location disguised as a system utility and executed. The executable appears to be a heavily obfuscated infostealer.\n\nCampaign first discovered by Amazon Inspector. It shares similarities with the campaign 2026-08-envprovision.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-09-timeweave\n\n\nReasons (based on the campaign):\n\n\n - Downloads and executes a remote executable.\n\n\n - action-hidden-in-lib-usage\n\n\n - infostealer\n\n\n## Affected packages\n\n- `timeweave`\n\n## Remediation\n\nRefer to the advisory for the patched release.","depth":"sunlit","depthScore":3,"depthScoreParts":{"impact":2.8,"likelihood":0,"exploitation":0,"ransomware":0},"changes":[]}