{"dataType":"CVE_RECORD","dataVersion":"1.0","cveMetadata":{"cveId":"GCVE-110-OSM-2026-13976","assignerOrgId":"","assignerShortName":"Vulnetix","state":"PUBLISHED","datePublished":"2026-10-22T09:00:53Z","dateUpdated":"2026-10-22T04:37:14Z","dateReserved":""},"containers":{"cna":{"providerMetadata":null,"title":"","descriptions":[{"lang":"en","value":"This campaign consists of similar loader packages, which provide executing code from a given URL. While they do not contain the malicious payload and the usage remains unknown, they are clearly a coordinated campaign to place multiple deceptive ways to load malicious code.\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\nCampaign: 2026-10-voice-synthesis-profiles\n\nReasons (based on the campaign):\n\n - other\n\n - Downloads and executes a remote malicious script.\n\nJudge assessment: The package implements a remote code loader: on import or explicit call, `spec()` fetches an arbitrary URL (defaulting to the hardcoded example or the `TTSFLOW_URL` environment variable), writes the response to disk under a temp directory, and executes it via `compile()`/`exec()` in a freshly constructed module — a classic staged-payload pattern. The minimal metadata (no description, no repository, no homepage) and the `__init__.py`-level top-level execution path confirm the 'throwaway burner' shape typical of campaign loader packages. The IOC `https://example/internal/spec.py` appears in both the docstring and iocClassifications as a plaintext C2/fetched-payload URL, showing the attacker model explicitly: the payload lives off-package and is swapped at will. The OSV advisory's characterisation of a coordinated loader campaign is consistent with the code's structure — no obfuscation is needed when the malicious payload is remote.\n\nENTRY\n  ttsflow/__init__.py (module-import: 53)\n\nDESTINATION\n  - 1 fetched-payload (urls)\n  (values recorded in verified_iocs)\n\nEXFIL\n  - Network Request in ttsflow/__init__.py: \"urllib.request.urlopen(\"\n\nADDITIONAL FINDINGS\n  - Dynamic Code Execution in ttsflow/__init__.py: \"compile(source, mod.__file__, \"exec\")\"\n\nPAYLOAD FILES\n  ttsflow/__init__.py","supportingMedia":null}],"references":[{"url":"https://opensourcemalware.com/threats/1f8abcb5-7dd1-4b48-9a3a-46d232522103","name":"Malicious pypi package: ttsflow","tags":["advisory"]},{"url":"https://osv.dev/vulnerability/MAL-2026-18170","name":"","tags":["advisory"]},{"url":"https://pypi.org/ttsflow","name":"","tags":["vendor"]}],"metrics":[{"format":"CVSS_V3","scenarios":null,"cvssV2_0":null,"cvssV3_0":null,"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H","baseScore":9.6,"baseSeverity":"CRITICAL"},"cvssV4_0":null,"other":null}],"problemTypes":[{"descriptions":[{"lang":"en","description":"Embedded Malicious Code","cweId":"CWE-506","type":"CWE"}]}],"affected":[{"vendor":"unknown","product":"ttsflow","collectionURL":"https://pypi.org","packageName":"ttsflow","repo":"","defaultStatus":"affected","versions":[{"version":"all","status":"affected","versionType":"","lessThan":"","lessThanOrEqual":"","changes":null}],"cpes":null,"modules":null,"programFiles":null,"platforms":null}],"cpeApplicability":null,"rejectedReasons":null,"replacedBy":null,"x_vulnetix_aliases":{"direct":["MAL-2026-18170"]}},"adp":null}}