mal-2026-13487
Vulnerability from ossf_malicious_packages
Published
2026-08-07 07:01
Modified
2026-08-07 12:25
Summary
Malicious code in flasq (PyPI)
Details

-= Per source details. Do not edit below this line.=-

Source: amazon-inspector (79bdf17d9c07586ddc0b7121037c2c10019d7be01d2dd49685680a8e876342c6)

setup.py registers a custom install cmdclass whose post-install hook is stored as a base64-encoded blob and decoded+exec'd at install time. On Linux, the decoded hook uses urllib.request.urlretrieve to download a binary from https://github.com/totti2188/8gp1Q7iZD3h4VW/releases/download/v1.3A/something, writes it to /tmp/something, chmods it 0755, and spawns it detached via subprocess.Popen(..., start_new_session=True). The download source is an unrelated personal GitHub account; there is no hash or signature verification; and the base64-obfuscation of an install-time code path is an evasion signal. The package advertises itself as 'HTTP client utilities' — this behavior is unrelated to that purpose. The setup.py also defaults the published PyPI name to 'requestss' (name=os.environ.get('PYPI_PACKAGE_NAME', 'requestss')), a one-character typosquat of the popular 'requests' package, indicating the artifact is intended to reach developers mistyping 'requests'.

Source: kam193 (2498f9d207b216ad7438cd262c9136cc5453d288f97a74d4cd44a9a2accf9141)

Package imitates name of a popula library. During installation, obfuscated code downloads a malicious executable and starts it. It then exfiltrates at least cryptocurrency wallet data, probably more.


Category: MALICIOUS - The campaign has clearly malicious intent, like infostealers.

Campaign: 2026-08-flasq

Reasons (based on the campaign):

  • typosquatting

  • The package overrides the install command in setup.py to execute malicious code during installation.

  • exfiltration-generic

  • Downloads and executes a remote executable.

  • obfuscation

  • exfiltration-crypto

CWE
  • CWE-506 - The product contains code that appears to be malicious in nature.
  • CWE-506 - The product contains code that appears to be malicious in nature.
  • CWE-506 - The product contains code that appears to be malicious in nature.
  • CWE-506 - The product contains code that appears to be malicious in nature.

{
  "affected": [
    {
      "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"
          },
          {
            "cweId": "CWE-506",
            "description": "The product contains code that appears to be malicious in nature.",
            "name": "Embedded Malicious Code"
          }
        ],
        "indicators": {
          "evidence_files": [
            {
              "path": "setup.py",
              "sha256": "8b7df77bb56304e04f1444a15847079398b0e864171717028dcef5f9a02d431e",
              "tlsh": "fe21756a8e2111b46c14c3855953401b166baba66c2074e4beae33642b8d25dca7f097"
            }
          ],
          "package_integrity": [
            {
              "filename": "flasq-0.1.2.tar.gz",
              "hashes": {
                "blake2b_256": "57b640d6584cf9deb2c23f204533e6346b62c51109df65dd12445f148eed6970",
                "md5": "f338d6c62df6cb2d45b7afb6a23440ac",
                "sha256": "8330ef9d021a8b140698877ea764ad5ad8d829c587cf387132904883d4193a7d"
              }
            }
          ]
        }
      },
      "package": {
        "ecosystem": "PyPI",
        "name": "flasq"
      },
      "versions": [
        "0.1.1",
        "0.1.2",
        "0.2.0",
        "0.3.0"
      ]
    }
  ],
  "credits": [
    {
      "contact": [
        "inspector-research@amazon.com"
      ],
      "name": "Amazon Inspector",
      "type": "FINDER"
    },
    {
      "contact": [
        "https://github.com/kam193",
        "https://bad-packages.kam193.eu/"
      ],
      "name": "Kamil Ma\u0144kowski (kam193)",
      "type": "REPORTER"
    }
  ],
  "database_specific": {
    "iocs": {
      "ips": [
        "193.70.34.101"
      ],
      "urls": [
        "https://github.com/totti2188/8gp1Q7iZD3h4VW/releases/download/v1.3A/something"
      ]
    },
    "malicious-packages-origins": [
      {
        "id": "pypi/2026-08-flasq/flasq",
        "import_time": "2026-08-07T07:35:19.073935153Z",
        "modified_time": "2026-08-07T07:01:59.251929Z",
        "sha256": "2498f9d207b216ad7438cd262c9136cc5453d288f97a74d4cd44a9a2accf9141",
        "source": "kam193",
        "versions": [
          "0.1.1",
          "0.1.2",
          "0.2.0",
          "0.3.0"
        ]
      },
      {
        "id": "pypi/2026-08-flasq/flasq",
        "import_time": "2026-08-07T08:57:13.351596016Z",
        "modified_time": "2026-08-07T07:01:59.251929Z",
        "sha256": "584cd0b30cef0f0b35b72eb0276753fbcb00f15c0ff9ee3cb8555ceba377aa2a",
        "source": "kam193",
        "versions": [
          "0.1.1",
          "0.1.2",
          "0.2.0",
          "0.3.0"
        ]
      },
      {
        "id": "IN-MAL-2026-016911",
        "import_time": "2026-08-07T12:23:26.874312598Z",
        "modified_time": "2026-08-07T12:16:32Z",
        "sha256": "1ef5028c7103dbeab8de4e17eabb8a98a2491cb51ceeaa574029f7aea58dfa98",
        "source": "amazon-inspector",
        "versions": [
          "0.1.2"
        ]
      },
      {
        "id": "IN-MAL-2026-016914",
        "import_time": "2026-08-07T12:23:26.984676821Z",
        "modified_time": "2026-08-07T12:16:57Z",
        "sha256": "79bdf17d9c07586ddc0b7121037c2c10019d7be01d2dd49685680a8e876342c6",
        "source": "amazon-inspector",
        "versions": [
          "0.1.1"
        ]
      },
      {
        "id": "IN-MAL-2026-016890",
        "import_time": "2026-08-07T12:23:25.898770608Z",
        "modified_time": "2026-08-07T12:13:29Z",
        "sha256": "816f21881e18843f9a15e72f820abb56e7e171c9779ed64bcd6b03ab10f4811b",
        "source": "amazon-inspector",
        "versions": [
          "0.2.0"
        ]
      },
      {
        "id": "IN-MAL-2026-016910",
        "import_time": "2026-08-07T12:23:26.845984476Z",
        "modified_time": "2026-08-07T12:16:23Z",
        "sha256": "8ae342e7be11cf89cf0473d0bbf83dbbc8eb6f88e7bf45605f4e89ff54674147",
        "source": "amazon-inspector",
        "versions": [
          "0.3.0"
        ]
      }
    ]
  },
  "details": "\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (79bdf17d9c07586ddc0b7121037c2c10019d7be01d2dd49685680a8e876342c6)\nsetup.py registers a custom install cmdclass whose post-install hook is stored as a base64-encoded blob and decoded+exec\u0027d at install time. On Linux, the decoded hook uses urllib.request.urlretrieve to download a binary from https://github.com/totti2188/8gp1Q7iZD3h4VW/releases/download/v1.3A/something, writes it to /tmp/something, chmods it 0755, and spawns it detached via subprocess.Popen(..., start_new_session=True). The download source is an unrelated personal GitHub account; there is no hash or signature verification; and the base64-obfuscation of an install-time code path is an evasion signal. The package advertises itself as \u0027HTTP client utilities\u0027 \u2014 this behavior is unrelated to that purpose. The setup.py also defaults the published PyPI name to \u0027requestss\u0027 (name=os.environ.get(\u0027PYPI_PACKAGE_NAME\u0027, \u0027requestss\u0027)), a one-character typosquat of the popular \u0027requests\u0027 package, indicating the artifact is intended to reach developers mistyping \u0027requests\u0027.\n\n## Source: kam193 (2498f9d207b216ad7438cd262c9136cc5453d288f97a74d4cd44a9a2accf9141)\nPackage imitates name of a popula library. During installation, obfuscated code downloads a malicious executable and starts it. It then exfiltrates at least cryptocurrency wallet data, probably more.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-08-flasq\n\n\nReasons (based on the campaign):\n\n\n - typosquatting\n\n\n - The package overrides the install command in setup.py to execute malicious code during installation.\n\n\n - exfiltration-generic\n\n\n - Downloads and executes a remote executable.\n\n\n - obfuscation\n\n\n - exfiltration-crypto\n",
  "id": "MAL-2026-13487",
  "modified": "2026-08-07T12:25:23.074140736Z",
  "published": "2026-08-07T07:01:59Z",
  "references": [
    {
      "type": "EVIDENCE",
      "url": "https://www.virustotal.com/gui/file/425f5336182e359211b5d751786d2ce1d31a673ea9c82107358a888803742649/detection"
    },
    {
      "type": "WEB",
      "url": "https://bad-packages.kam193.eu/pypi/package/flasq"
    },
    {
      "type": "EVIDENCE",
      "url": "https://tria.ge/260807-fkycrazzg1/behavioral1"
    },
    {
      "type": "PACKAGE",
      "url": "https://pypi.org/project/flasq/0.1.2/"
    },
    {
      "type": "PACKAGE",
      "url": "https://pypi.org/project/flasq/0.1.1/"
    },
    {
      "type": "PACKAGE",
      "url": "https://pypi.org/project/flasq/0.2.0/"
    },
    {
      "type": "PACKAGE",
      "url": "https://pypi.org/project/flasq/0.3.0/"
    }
  ],
  "schema_version": "1.7.4",
  "summary": "Malicious code in flasq (PyPI)"
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…