diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-316.json b/data/Packagist/DRUPAL-CONTRIB-2026-316.json new file mode 100644 index 0000000000..b058e0c5e1 --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-316.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-316","published":"2026-11-11T17:38:07Z","modified":"2026-11-11T18:45:04.718012941Z","aliases":["CVE-2026-126725"],"details":"This module provides a configurable GraphQL schema generator for Drupal entities and fields, along with optional schema extensions for common tasks such as user login and password management.\n\nThe module doesn't sufficiently check access when changing a user's password through the GraphQL API. A user who can view another user's account can change that account's password, including on administrator accounts. This can lead to a full account takeover.\n\nThis vulnerability is mitigated by the fact that the *User Login* schema extension must be enabled on a GraphQL server.","affected":[{"package":{"name":"drupal/graphql_core_schema","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/graphql_core_schema?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.0.29"}],"database_specific":{"constraint":"<1.0.29"}}],"database_specific":{"affected_versions":"<1.0.29","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/graphql_core_schema/DRUPAL-CONTRIB-2026-316.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-316"}],"credits":[{"name":"fabianrichter","contact":["https://www.drupal.org/u/fabianrichter"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-317.json b/data/Packagist/DRUPAL-CONTRIB-2026-317.json new file mode 100644 index 0000000000..27d47f19df --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-317.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-317","published":"2026-11-11T17:39:31Z","modified":"2026-11-11T18:45:03.127207631Z","aliases":["CVE-2026-126726"],"details":"Paragraphs Edit adds contextual edit, clone, and delete links, along with the required routes, to individual Paragraphs.\n\nThe module doesn't sufficiently check access on the edit and delete routes for a paragraph.\n\nThis vulnerability is mitigated by the fact that an attacker must have an account on the site and must know or guess the ID of the paragraph. No special permission is required.","affected":[{"package":{"name":"drupal/paragraphs_edit","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/paragraphs_edit?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.0.2"}],"database_specific":{"constraint":"<3.0.2"}}],"database_specific":{"affected_versions":"<3.0.2","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/paragraphs_edit/DRUPAL-CONTRIB-2026-317.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-317"}],"credits":[{"name":"hans rossel (hansrossel)","contact":["https://www.drupal.org/u/hansrossel"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-318.json b/data/Packagist/DRUPAL-CONTRIB-2026-318.json new file mode 100644 index 0000000000..9db32d14b7 --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-318.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-318","published":"2026-11-11T17:41:15Z","modified":"2026-11-11T18:45:04.103584095Z","aliases":["CVE-2026-126727"],"details":"The Texts module provides key-based strings and translations for Drupal, including Twig filters for displaying translated text.\n\nThe module does not sufficiently validate translation HTML and can display stored translations without sufficient filtering. A user who can create or edit string translations could inject JavaScript into pages that render those translations.\n\nThis vulnerability is mitigated by the fact that an attacker must have the \"Create string translation\" or \"Edit string translation\" permission, and a site must render the affected text using the module’s Twig filters.","affected":[{"package":{"name":"drupal/texts","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/texts?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.0.17"}],"database_specific":{"constraint":"<1.0.17"}}],"database_specific":{"affected_versions":"<1.0.17","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/texts/DRUPAL-CONTRIB-2026-318.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-318"}],"credits":[{"name":"Jens Vranckx (vrancje)","contact":["https://www.drupal.org/u/vrancje"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-319.json b/data/Packagist/DRUPAL-CONTRIB-2026-319.json new file mode 100644 index 0000000000..327feb5343 --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-319.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-319","published":"2026-11-11T17:42:35Z","modified":"2026-11-11T18:45:03.700379549Z","aliases":["CVE-2026-126728"],"details":"The Texts module provides key-based strings and translations for Drupal and tools for managing them.\n\nThe module does not sufficiently protect an action to restore a duplicate translation. A crafted request can cause a user with access to the translation overview to overwrite an existing translation and delete the duplicate, even if that user cannot edit or delete translations.\n\nThis vulnerability is mitigated by the fact that an attacker must first create a suitable duplicate translation and induce a user with access to the translation overview to open the crafted request.","affected":[{"package":{"name":"drupal/texts","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/texts?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.0.13"},{"fixed":"1.0.17"}],"database_specific":{"constraint":">=1.0.13 <1.0.17"}}],"database_specific":{"affected_versions":">=1.0.13 <1.0.17","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/texts/DRUPAL-CONTRIB-2026-319.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-319"}],"credits":[{"name":"Jens Vranckx (vrancje)","contact":["https://www.drupal.org/u/vrancje"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-320.json b/data/Packagist/DRUPAL-CONTRIB-2026-320.json new file mode 100644 index 0000000000..6389ce167e --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-320.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-320","published":"2026-11-11T17:43:46Z","modified":"2026-11-11T18:45:04.067224343Z","aliases":["CVE-2026-126729"],"details":"This module enables you to require a second authentication factor (a time-based one-time password from an authenticator app) when users log in.\n\nThe module doesn't sufficiently enforce the second factor for authentication providers that authenticate every request on their own. An attacker who knows the password of an account with two-factor authentication enabled can use that account's permissions through routes that accept such a provider, without providing the second factor.\n\nThis vulnerability is mitigated by the fact that the attacker must know the account's password, a per-request authentication provider (such as the the HTTP Basic Authentication module) must be enabled, and an alternate authentication method (such as JSON:API or REST) must be enabled.","affected":[{"package":{"name":"drupal/auth_login_plus","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/auth_login_plus?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.0.3"}],"database_specific":{"constraint":"<1.0.3"}}],"database_specific":{"affected_versions":"<1.0.3","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/auth_login_plus/DRUPAL-CONTRIB-2026-320.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-320"}],"credits":[{"name":"Conrad Lara (cmlara)","contact":["https://www.drupal.org/u/cmlara"]},{"name":"Jürgen Haas (jurgenhaas)","contact":["https://www.drupal.org/u/jurgenhaas"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-321.json b/data/Packagist/DRUPAL-CONTRIB-2026-321.json new file mode 100644 index 0000000000..b88fa37245 --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-321.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-321","published":"2026-11-11T17:44:57Z","modified":"2026-11-11T18:45:04.717967417Z","aliases":["CVE-2026-126730"],"details":"This module enables you to require a second authentication factor (a time-based one-time password from an authenticator app) when users log in.\n\nThe module does not enforce the second authentication factor correctly. As a result, an attacker who has only the first factor for an account with 2FA (for example, a valid one-time login link) could trigger actions that should only follow a fully authenticated login. These include updating the account's last login time, (which also invalidates other one-time login links) and running other modules' login hooks.\n\nThe vulnerability is mitigated by the fact that the attacker must already have the account's first factor (a valid one-time login link, or a login through another module), and the impact depends on which other modules react to user logins.","affected":[{"package":{"name":"drupal/auth_login_plus","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/auth_login_plus?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.0.3"}],"database_specific":{"constraint":"<1.0.3"}}],"database_specific":{"affected_versions":"<1.0.3","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/auth_login_plus/DRUPAL-CONTRIB-2026-321.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-321"}],"credits":[{"name":"Jürgen Haas (jurgenhaas)","contact":["https://www.drupal.org/u/jurgenhaas"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-322.json b/data/Packagist/DRUPAL-CONTRIB-2026-322.json new file mode 100644 index 0000000000..08bac027e4 --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-322.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-322","published":"2026-11-11T17:46:11Z","modified":"2026-11-11T18:45:04.013871285Z","aliases":["CVE-2026-126731"],"details":"This module enables you to require a second authentication factor (a time-based one-time password from an authenticator app) when users log in.\n\nUnder certain circumstances, an attacker can make the module treat a login as having passed the password check when it did not, or reach the two-factor setup page of another account. Depending on the site's configuration, this can allow the attacker to take over an account that has 2FA enabled without knowing its password or its second factor.\n\nThis vulnerability is mitigated by the fact that the attacker must have an account of their own on the site, must already control the victim's email address or know the victim's password, and must win a timing-dependent race.","affected":[{"package":{"name":"drupal/auth_login_plus","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/auth_login_plus?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.0.3"}],"database_specific":{"constraint":"<1.0.3"}}],"database_specific":{"affected_versions":"<1.0.3","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/auth_login_plus/DRUPAL-CONTRIB-2026-322.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-322"}],"credits":[{"name":"Jürgen Haas (jurgenhaas)","contact":["https://www.drupal.org/u/jurgenhaas"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-323.json b/data/Packagist/DRUPAL-CONTRIB-2026-323.json new file mode 100644 index 0000000000..f90cfa7e40 --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-323.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-323","published":"2026-11-11T17:47:32Z","modified":"2026-11-11T18:45:02.725360393Z","aliases":["CVE-2026-126732"],"details":"This module enables you to sell licenses that grant access to resources (such as roles) through Drupal Commerce.\n\nThe module doesn't sufficiently validate the license referenced by an order item, allowing an attacker to take over another user's license.\n\nThis vulnerability is mitigated by the fact that JSON:API or REST must be configured to allow writes to order items, which is not the default.","affected":[{"package":{"name":"drupal/commerce_license","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/commerce_license?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.1.2"}],"database_specific":{"constraint":"<3.1.2"}}],"database_specific":{"affected_versions":"<3.1.2","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/commerce_license/DRUPAL-CONTRIB-2026-323.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-323"}],"credits":[{"name":"Jakub Piasecki (zaporylie)","contact":["https://www.drupal.org/u/zaporylie"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-324.json b/data/Packagist/DRUPAL-CONTRIB-2026-324.json new file mode 100644 index 0000000000..ed3df272ba --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-324.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-324","published":"2026-11-11T17:48:46Z","modified":"2026-11-11T18:45:03.685123507Z","aliases":["CVE-2026-126733"],"details":"This module enables you to sell licenses (such as roles or files) using Drupal Commerce.\n\nThe module doesn't sufficiently validate license order items, which under certain conditions could allow a customer to obtain a license without paying its full price.\n\nThis vulnerability is mitigated by the fact that the site must expose order items to modification outside of the standard cart form.","affected":[{"package":{"name":"drupal/commerce_license","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/commerce_license?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.1.2"}],"database_specific":{"constraint":"<3.1.2"}}],"database_specific":{"affected_versions":"<3.1.2","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/commerce_license/DRUPAL-CONTRIB-2026-324.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-324"}],"credits":[{"name":"Whippet (VenusTech ADLab) (whippet)","contact":["https://www.drupal.org/u/whippet"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-325.json b/data/Packagist/DRUPAL-CONTRIB-2026-325.json new file mode 100644 index 0000000000..991858fbc8 --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-325.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-325","published":"2026-11-11T17:49:56Z","modified":"2026-11-11T18:45:02.723438162Z","aliases":["CVE-2026-126734"],"details":"This module enables you to provide a way to embed parapraphs in any rich-text field using the WYSIWYG editor.\n\nThe module doesn't sufficiently filter for malicious text in the autocomplete search filter, leading to a cross-site scripting vulnerability.\n\nThis vulnerability is mitigated by the fact that an attacker must have permission to edit the label of the paragraph entity.","affected":[{"package":{"name":"drupal/paragraphs_entity_embed","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/paragraphs_entity_embed?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"4.0.1"}],"database_specific":{"constraint":"<4.0.1"}}],"database_specific":{"affected_versions":"<4.0.1","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/paragraphs_entity_embed/DRUPAL-CONTRIB-2026-325.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-325"}],"credits":[{"name":"Conrad Lara (cmlara)","contact":["https://www.drupal.org/u/cmlara"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-326.json b/data/Packagist/DRUPAL-CONTRIB-2026-326.json new file mode 100644 index 0000000000..8d67e1f7d7 --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-326.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-326","published":"2026-11-11T17:51:14Z","modified":"2026-11-11T18:45:02.707585180Z","aliases":["CVE-2026-126735"],"details":"This module integrates the Campaign Monitor API into Drupal so that users can subscribe and unsubscribe for your Campaign Monitor. It manages lists through a block on your Drupal site.\n\nThe module doesn't sufficiently protect against cross-site request forgery (CSRF) on its admin routes.\n\nThis vulnerability is mitigated by the fact that an attacker must craft and embed into a Drupal site a link with exact ID of a Campaign Monitor list for user with *administer campaignmonitor* permission to click.","affected":[{"package":{"name":"drupal/campaignmonitor","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/campaignmonitor?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.0.3"}],"database_specific":{"constraint":"<3.0.3"}}],"database_specific":{"affected_versions":"<3.0.3","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/campaignmonitor/DRUPAL-CONTRIB-2026-326.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-326"}],"credits":[{"name":"Juraj Nemec (poker10)","contact":["https://www.drupal.org/u/poker10"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-327.json b/data/Packagist/DRUPAL-CONTRIB-2026-327.json new file mode 100644 index 0000000000..b32f8f3ffb --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-327.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-327","published":"2026-11-11T17:53:56Z","modified":"2026-11-11T18:45:02.713482712Z","aliases":["CVE-2026-126736"],"details":"This module enables you to print and export Drupal entities to PDF and other formats, using print engines such as Dompdf.\n\nWhen generating a PDF for a page that contains third-party resources, the module sends several kinds of private data to the third-party server (including the user's session cookie and their Dompdf HTTP authentication credentials), regardless of the host those resources are loaded from. A third-party site referenced in printed content can therefore obtain the session data of users printing that content and use it to impersonate them.\n\nThis vulnerability is mitigated by the fact that to deliberately exploit this vulnerability, an attacker must be able to create or edit content using a text format that allows images or stylesheets from arbitrary sites (such as \"Full HTML\").","affected":[{"package":{"name":"drupal/entity_print","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/entity_print?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.20.0"}],"database_specific":{"constraint":"<2.20.0"}}],"database_specific":{"affected_versions":"<2.20.0","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/entity_print/DRUPAL-CONTRIB-2026-327.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-327"}],"credits":[{"name":"Rodrigo Cabo (Igneva)","contact":["https://www.drupal.org/u/rodrigo-cabo"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-328.json b/data/Packagist/DRUPAL-CONTRIB-2026-328.json new file mode 100644 index 0000000000..47aa160739 --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-328.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-328","published":"2026-11-11T17:55:05Z","modified":"2026-11-11T18:45:02.851237041Z","aliases":["CVE-2026-126737"],"details":"This module enables you to accept online payments on your website using Mollie.\n\nThis module doesn't sufficiently validate an incoming webhook call, allowing payments to be applied incorrectly.","affected":[{"package":{"name":"drupal/mollie","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/mollie?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.3.2"}],"database_specific":{"constraint":"<2.3.2"}}],"database_specific":{"affected_versions":"<2.3.2","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/mollie/DRUPAL-CONTRIB-2026-328.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-328"}],"credits":[{"name":"hans rossel (hansrossel)","contact":["https://www.drupal.org/u/hansrossel"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-329.json b/data/Packagist/DRUPAL-CONTRIB-2026-329.json new file mode 100644 index 0000000000..dc7bd27a15 --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-329.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-329","published":"2026-11-11T17:56:20Z","modified":"2026-11-11T18:45:03.693343349Z","aliases":["CVE-2026-126738"],"details":"This module enables you to accept online payments on your website using Mollie.\n\nIn some cases the Mollie secret token can be exposed.\n\nThis vulnerability is mitigated by the fact that the `mollie_webform` submodule must be enabled.","affected":[{"package":{"name":"drupal/mollie","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/mollie?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.3.2"}],"database_specific":{"constraint":"<2.3.2"}}],"database_specific":{"affected_versions":"<2.3.2","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/mollie/DRUPAL-CONTRIB-2026-329.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-329"}],"credits":[{"name":"hans rossel (hansrossel)","contact":["https://www.drupal.org/u/hansrossel"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-330.json b/data/Packagist/DRUPAL-CONTRIB-2026-330.json new file mode 100644 index 0000000000..a08af0130a --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-330.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-330","published":"2026-11-11T17:57:27Z","modified":"2026-11-11T18:45:02.714971855Z","aliases":["CVE-2026-126739"],"details":"This module enables you to create custom pages and to override existing paths, such as node or user pages, with variants that are selected by conditions.\n\nThe Page Manager UI submodule doesn't sufficiently protect against cross-site request forgery (CSRF). An attacker could trick a user with permission to administer pages into enabling or disabling a page without their knowledge.\n\nThis vulnerability is mitigated by the fact that the Page Manager UI submodule must be enabled, and the targeted user must have the \"administer pages\" permission.","affected":[{"package":{"name":"drupal/page_manager","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/page_manager?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"4.1.0"}],"database_specific":{"constraint":"<4.1.0"}}],"database_specific":{"affected_versions":"<4.1.0","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/page_manager/DRUPAL-CONTRIB-2026-330.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-330"}],"credits":[{"name":"Maksim Hayder (tr_jan)","contact":["https://www.drupal.org/u/tr_jan"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-331.json b/data/Packagist/DRUPAL-CONTRIB-2026-331.json new file mode 100644 index 0000000000..9db498b96b --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-331.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-331","published":"2026-11-11T17:58:48Z","modified":"2026-11-11T18:45:02.708934989Z","aliases":["CVE-2026-126740"],"details":"This module tracks file downloads for private files and provides reports about them.\n\nThe module provides the permissions that are never actually checked. A user with only the *View download counts* permission could export the download log and delete all download records.\n\nThis vulnerability is mitigated by the fact that an attacker must have an account with the *View download counts* permission.","affected":[{"package":{"name":"drupal/download_count","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/download_count?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.5"}],"database_specific":{"constraint":"<2.2.5"}},{"type":"ECOSYSTEM","events":[{"introduced":"3.0.0"},{"fixed":"3.0.2"}],"database_specific":{"constraint":">=3.0.0 <3.0.2"}}],"database_specific":{"affected_versions":"<2.2.5 || >=3.0.0 <3.0.2","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/download_count/DRUPAL-CONTRIB-2026-331.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-331"}],"credits":[{"name":"Rodel Duterte (rduterte)","contact":["https://www.drupal.org/u/rduterte"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-332.json b/data/Packagist/DRUPAL-CONTRIB-2026-332.json new file mode 100644 index 0000000000..8117842c4a --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-332.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-332","published":"2026-11-11T18:00:00Z","modified":"2026-11-11T18:45:05.030358314Z","aliases":["CVE-2026-126741"],"details":"This module implements a field formatter for text fields that improves the *Summary or Trimmed* formatter built into Drupal core.\n\nThe module doesn't sufficiently escape unsafe HTML when passed through the module's Twig filter.\n\nThis vulnerability is mitigated by the fact that an attacker must have a role with the ability to post content that gets passed through a Twig template with one of the `|smart_trim_*` filters provided by this module.\n\nIf a site uses only use the field formatter without the Twig filter, it is not vulnerable.","affected":[{"package":{"name":"drupal/smart_trim","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/smart_trim?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.2"}],"database_specific":{"constraint":"<2.2.2"}},{"type":"ECOSYSTEM","events":[{"introduced":"2.3.0"},{"fixed":"2.3.2"}],"database_specific":{"constraint":">=2.3.0 <2.3.2"}}],"database_specific":{"affected_versions":"<2.2.2 || >=2.3.0 <2.3.2","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/smart_trim/DRUPAL-CONTRIB-2026-332.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-332"}],"credits":[{"name":"Pierre Rudloff (prudloff)","contact":["https://www.drupal.org/u/prudloff"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-333.json b/data/Packagist/DRUPAL-CONTRIB-2026-333.json new file mode 100644 index 0000000000..9e56c575e4 --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-333.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-333","published":"2026-11-11T18:01:27Z","modified":"2026-11-11T18:45:02.712087818Z","aliases":["CVE-2026-126742"],"details":"The Commerce sermpea module provides Commerce support for Spanish banks that use Sermepa/Redsys systems.\n\nThe module does not verify that a Redsys payment response belongs to the order it is processed for, which can lead to incorrect order payment status.","affected":[{"package":{"name":"drupal/commerce_sermepa","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/commerce_sermepa?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.5.0"}],"database_specific":{"constraint":"<2.5.0"}}],"database_specific":{"affected_versions":"<2.5.0","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/commerce_sermepa/DRUPAL-CONTRIB-2026-333.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-333"}],"credits":[{"name":"Ra Mänd (ram4nd)","contact":["https://www.drupal.org/u/ram4nd"]},{"name":"Whippet (VenusTech ADLab) (whippet)","contact":["https://www.drupal.org/u/whippet"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-334.json b/data/Packagist/DRUPAL-CONTRIB-2026-334.json new file mode 100644 index 0000000000..fb8f14040d --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-334.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-334","published":"2026-11-11T18:02:50Z","modified":"2026-11-11T18:45:03.698656607Z","details":"This module enables you to manage user consent for external services, such as embedded videos. The COOKiES Video submodule blocks external video elements until the visitor accepts the consent banner, then re-enables them.\n\nThe module doesn't sufficiently check the value of the `data-cookies-video-blazy-src` attribute when it converts it back to a `src` attribute for Blazy iframes. The protocol check added in [SA-CONTRIB-2025-092](https://www.drupal.org/sa-contrib-2025-092) covered the other conversion paths but missed this one.\n\nThis vulnerability is mitigated by the fact that an attacker must have the correct permissions to have a specific HTML element display for all users, and that element must have a specific class set.","affected":[{"package":{"name":"drupal/cookies","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/cookies?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.2.17"}],"database_specific":{"constraint":"<1.2.17"}}],"database_specific":{"affected_versions":"<1.2.17","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/cookies/DRUPAL-CONTRIB-2026-334.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-334"}],"credits":[{"name":"Whippet (VenusTech ADLab) (whippet)","contact":["https://www.drupal.org/u/whippet"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-335.json b/data/Packagist/DRUPAL-CONTRIB-2026-335.json new file mode 100644 index 0000000000..43535dc80c --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-335.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-335","published":"2026-11-11T18:04:01Z","modified":"2026-11-11T18:45:04.224974662Z","aliases":["CVE-2026-126744"],"details":"This module renders Layout Builder forms inside an iframe in a modal dialog, using the admin theme.\n\nThe module provides its own Ajax command to open the iframe dialog. This command does not sanitize the dialog options the same way Drupal core does since [SA-CORE-2026-001](https://www.drupal.org/sa-core-2026-001), which can lead to a cross-site scripting (XSS) vulnerability.\n\nThis vulnerability is mitigated by the fact that an attacker must be able to control the Ajax response, or be able to add markup with specific attributes to a page.","affected":[{"package":{"name":"drupal/layout_builder_iframe_modal","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/layout_builder_iframe_modal?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.3.9"}],"database_specific":{"constraint":"<1.3.9"}}],"database_specific":{"affected_versions":"<1.3.9","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/layout_builder_iframe_modal/DRUPAL-CONTRIB-2026-335.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-335"}],"credits":[{"name":"Pierre Rudloff (prudloff)","contact":["https://www.drupal.org/u/prudloff"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-336.json b/data/Packagist/DRUPAL-CONTRIB-2026-336.json new file mode 100644 index 0000000000..78e938a3b5 --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-336.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-336","published":"2026-11-11T18:05:10Z","modified":"2026-11-11T18:45:04.722784002Z","aliases":["CVE-2026-126745"],"details":"This module enables you to display users by a configurable \"real name\" pattern built from tokens, instead of by their username.\n\nThe module does not sufficiently sanitize user input used in name patterns. \nA user can place Twig syntax in their own profile data and have it evaluated when their name is displayed.\n\nThis vulnerability is mitigated by the fact that the site must be configured with a real name pattern that includes user-supplied data, and the attacker must be able to edit that data on their own account.","affected":[{"package":{"name":"drupal/realname","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/realname?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.0.1"}],"database_specific":{"constraint":"<2.0.1"}}],"database_specific":{"affected_versions":"<2.0.1","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/realname/DRUPAL-CONTRIB-2026-336.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-336"}],"credits":[{"name":"Shawn Smiley (shawn_smiley)","contact":["https://www.drupal.org/u/shawn_smiley"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-337.json b/data/Packagist/DRUPAL-CONTRIB-2026-337.json new file mode 100644 index 0000000000..1ed15927de --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-337.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-337","published":"2026-11-11T18:06:21Z","modified":"2026-11-11T18:45:03.690818272Z","aliases":["CVE-2026-126746"],"details":"The S3 File System CORS Upload module lets users upload files straight from the browser to Amazon S3 (or an S3-compatible service), using a file widget on entity forms.\n\nThe module doesn't sufficiently restrict the upload permission it gives the browser. A user who can upload through the widget can overwrite other files already stored in the bucket, including files they couldn't otherwise replace.\n\nThis vulnerability is mitigated by the fact that an attacker must have access to a form that uses the S3 File System CORS Upload widget.","affected":[{"package":{"name":"drupal/s3fs_cors","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/s3fs_cors?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.4.0"}],"database_specific":{"constraint":"<1.4.0"}}],"database_specific":{"affected_versions":"<1.4.0","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/s3fs_cors/DRUPAL-CONTRIB-2026-337.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-337"}],"credits":[{"name":"Lucas Hedding (heddn)","contact":["https://www.drupal.org/u/heddn"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-338.json b/data/Packagist/DRUPAL-CONTRIB-2026-338.json new file mode 100644 index 0000000000..8595e9f581 --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-338.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-338","published":"2026-11-11T18:06:58Z","modified":"2026-11-11T18:45:02.700825353Z","aliases":["CVE-2026-126747"],"details":"This module adds large file, multiple file, and resumable uploads to the File and Image field widgets.\n\nThe module doesn't sufficiently check access to resumable upload forms. This allows an unauthenticated user to start uploads against forms they are not permitted to use, and to store partial upload data on the server.\n\nThis vulnerability is mitigated by the fact that partial upload data is only attached to content through the normal entity form, which enforces its own access checks, and that stored partial upload data is not executable by the web server.","affected":[{"package":{"name":"drupal/file_resup","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/file_resup?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.0.6"}],"database_specific":{"constraint":"<2.0.6"}}],"database_specific":{"affected_versions":"<2.0.6","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/file_resup/DRUPAL-CONTRIB-2026-338.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-338"}],"credits":[{"name":"Hien Doan (Uney) (caphe_phin)","contact":["https://www.drupal.org/u/caphe_phin"]}]} \ No newline at end of file diff --git a/data/Packagist/DRUPAL-CONTRIB-2026-339.json b/data/Packagist/DRUPAL-CONTRIB-2026-339.json new file mode 100644 index 0000000000..0a34b9aefe --- /dev/null +++ b/data/Packagist/DRUPAL-CONTRIB-2026-339.json @@ -0,0 +1 @@ +{"schema_version":"1.9.2","id":"DRUPAL-CONTRIB-2026-339","published":"2026-11-11T18:08:08Z","modified":"2026-11-11T18:45:03.731521667Z","aliases":["CVE-2026-126760"],"details":"This module provides a field type for storing structured data with multiple sub-fields, along with several widgets including a *Search - autocomplete* widget.\n\nThe module’s autocomplete endpoint does not sufficiently escape stored field values before returning them as suggestion labels, which can allow cross-site scripting.\n\nThis vulnerability is mitigated by the fact that the attacker must have permission to edit an entity carrying a Data Field field. The *Search - autocomplete* widget must also be configured on that field.","affected":[{"package":{"name":"drupal/datafield","ecosystem":"Packagist:https://packages.drupal.org/8","purl":"pkg:composer/drupal/datafield?repository_url=https:%2F%2Fpackages.drupal.org%2F8"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.0.15"}],"database_specific":{"constraint":"<2.0.15"}},{"type":"ECOSYSTEM","events":[{"introduced":"3.0.0"},{"fixed":"3.0.1"}],"database_specific":{"constraint":">=3.0.0 <3.0.1"}}],"database_specific":{"affected_versions":"<2.0.15 || >=3.0.0 <3.0.1","source":"https://github.com/DrupalSecurityTeam/drupal-advisory-database/blob/main/advisories/datafield/DRUPAL-CONTRIB-2026-339.json"}}],"references":[{"type":"WEB","url":"https://www.drupal.org/sa-contrib-2026-339"}],"credits":[{"name":"Drew Webber (mcdruid)","contact":["https://www.drupal.org/u/mcdruid"]}]} \ No newline at end of file diff --git a/data/PyPI/MAL-2026-18430.json b/data/PyPI/MAL-2026-18430.json index f0364cd744..9760aa4a8b 100644 --- a/data/PyPI/MAL-2026-18430.json +++ b/data/PyPI/MAL-2026-18430.json @@ -1 +1 @@ -{"schema_version":"1.9.2","id":"MAL-2026-18430","published":"2026-10-31T13:39:43Z","modified":"2026-10-31T14:15:03.920887883Z","summary":"Malicious code in doctreelstm (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: kam193 (9609b278449fb9d196f4929f422f22288aa202df7b8417d91053ab0180711bb8)\nInstalling the package or importing the module exfiltrates basic information about the host, and the package has no other purpose.\n\n\n---\n\nCategory: PROBABLY_PENTEST - Packages looking like typical pentest packages, but also anything that looks like testing, exploring pre-prepared kits, research & co, with clearly low-harm possibilities.\n\n\nCampaign: GENERIC-standard-pypi-install-pentest\n\n\nReasons (based on the campaign):\n\n\n - The package contains code to exfiltrate basic data from the system, like IP or username. It has a limited risk.\n\n\n - The package overrides the install command in setup.py to execute malicious code during installation.\n","affected":[{"package":{"name":"doctreelstm","ecosystem":"PyPI","purl":"pkg:pypi/doctreelstm"},"versions":["1.0.0","10.0.0"],"database_specific":{"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/doctreelstm/MAL-2026-18430.json"}}],"references":[{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/doctreelstm"}],"database_specific":{"malicious-packages-origins":[{"id":"pypi/GENERIC-standard-pypi-install-pentest/doctreelstm","import_time":"2026-10-31T14:10:13.667064497Z","modified_time":"2026-10-31T13:39:43.559865Z","sha256":"9609b278449fb9d196f4929f422f22288aa202df7b8417d91053ab0180711bb8","source":"kam193","versions":["1.0.0","10.0.0"]}]},"credits":[{"name":"Kamil Mańkowski (kam193)","contact":["https://github.com/kam193","https://bad-packages.kam193.eu/"],"type":"REPORTER"}]} \ No newline at end of file +{"schema_version":"1.9.2","id":"MAL-2026-18430","published":"2026-10-31T13:39:43Z","modified":"2026-11-11T23:45:03.352016020Z","summary":"Malicious code in doctreelstm (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (89260928fc4083b0e6164b6ea05203462456b98e3b181a44527f1a9afc1f6004)\nsetup.py performs an unconditional HTTP GET at install time to the hardcoded bare IP http://38.242.235.206/depconf/doctreelstm/setup-py, sending the installer's username (USER/USERNAME env), hostname (socket.gethostname()), and current working directory as query parameters. The destination is a cleartext bare-IP endpoint, not a first-party registry or vendor host, and the beacon fires on `pip install` with no documentation, no opt-out, and no caller configuration. The package ships no functional code and self-describes as a defensive placeholder squatting an internal project name, but that framing is author-controlled and does not change that installer identity + host + cwd leave the machine to an attacker-controlled destination on install.\n\n## Source: kam193 (9609b278449fb9d196f4929f422f22288aa202df7b8417d91053ab0180711bb8)\nInstalling the package or importing the module exfiltrates basic information about the host, and the package has no other purpose.\n\n\n---\n\nCategory: PROBABLY_PENTEST - Packages looking like typical pentest packages, but also anything that looks like testing, exploring pre-prepared kits, research & co, with clearly low-harm possibilities.\n\n\nCampaign: GENERIC-standard-pypi-install-pentest\n\n\nReasons (based on the campaign):\n\n\n - The package contains code to exfiltrate basic data from the system, like IP or username. It has a limited risk.\n\n\n - The package overrides the install command in setup.py to execute malicious code during installation.\n","affected":[{"package":{"name":"doctreelstm","ecosystem":"PyPI","purl":"pkg:pypi/doctreelstm"},"versions":["1.0.0","10.0.0"],"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"}],"indicators":{"evidence_files":[{"path":"setup.py","sha256":"64c17fffa2ce33f8e7c7810cfbfb11de8894dadf981b0d9aae6af913c4a5ddac","tlsh":"8611ed52d8016616a59370b0dc2698bc332391172f356aa0388d068d3f8e9d2d6315b8"}],"package_integrity":[{"filename":"doctreelstm-1.0.0.tar.gz","hashes":{"blake2b_256":"bd6aa6e607dbb88ee73c66223e7f59ced88b07c737493b9e1b825e877d54fc48","md5":"00f6b876e0a81085bf338d6a3d106d9d","sha256":"450db6f385d05d0108d5d622c35f7837c3dba4383525fd3aa1aa858bd9ac5dcd"}}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/doctreelstm/MAL-2026-18430.json"}}],"references":[{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/doctreelstm"},{"type":"PACKAGE","url":"https://pypi.org/project/doctreelstm/1.0.0/"},{"type":"PACKAGE","url":"https://pypi.org/project/doctreelstm/10.0.0/"}],"database_specific":{"malicious-packages-origins":[{"id":"pypi/GENERIC-standard-pypi-install-pentest/doctreelstm","import_time":"2026-10-31T14:10:13.667064497Z","modified_time":"2026-10-31T13:39:43.559865Z","sha256":"9609b278449fb9d196f4929f422f22288aa202df7b8417d91053ab0180711bb8","source":"kam193","versions":["1.0.0","10.0.0"]},{"id":"IN-MAL-2026-022618","import_time":"2026-11-11T23:36:06.331069711Z","modified_time":"2026-11-11T23:15:39Z","sha256":"35691c952231d08c013724cb252cb621c9712202ba448ae4b2f2ce6ceb3fd501","source":"amazon-inspector","versions":["1.0.0"]},{"id":"IN-MAL-2026-022619","import_time":"2026-11-11T23:36:06.459345905Z","modified_time":"2026-11-11T23:15:46Z","sha256":"89260928fc4083b0e6164b6ea05203462456b98e3b181a44527f1a9afc1f6004","source":"amazon-inspector","versions":["10.0.0"]}]},"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"}]} \ No newline at end of file diff --git a/data/PyPI/MAL-2026-18704.json b/data/PyPI/MAL-2026-18704.json index 81e67f4408..da31cc89a1 100644 --- a/data/PyPI/MAL-2026-18704.json +++ b/data/PyPI/MAL-2026-18704.json @@ -1 +1 @@ -{"schema_version":"1.9.2","id":"MAL-2026-18704","published":"2026-11-05T06:58:26Z","modified":"2026-11-05T07:45:03.288490024Z","summary":"Malicious code in dbt-adapter (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: kam193 (baabd8e63cd4f6ad9e5a4ff9c2575b965d85030868aa31cc485902475b26465e)\nInstalling the package or importing the module exfiltrates basic information about the host, and the package has no other purpose.\n\n\n---\n\nCategory: PROBABLY_PENTEST - Packages looking like typical pentest packages, but also anything that looks like testing, exploring pre-prepared kits, research & co, with clearly low-harm possibilities.\n\n\nCampaign: GENERIC-standard-pypi-install-pentest\n\n\nReasons (based on the campaign):\n\n\n - The package contains code to exfiltrate basic data from the system, like IP or username. It has a limited risk.\n\n\n - The package overrides the install command in setup.py to execute malicious code during installation.\n","affected":[{"package":{"name":"dbt-adapter","ecosystem":"PyPI","purl":"pkg:pypi/dbt-adapter"},"versions":["0.0.0","0.1.0a2"],"database_specific":{"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/dbt-adapter/MAL-2026-18704.json"}}],"references":[{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/dbt-adapter"}],"database_specific":{"malicious-packages-origins":[{"id":"pypi/GENERIC-standard-pypi-install-pentest/dbt-adapter","import_time":"2026-11-05T07:37:15.063901065Z","modified_time":"2026-11-05T06:58:26.430765Z","sha256":"baabd8e63cd4f6ad9e5a4ff9c2575b965d85030868aa31cc485902475b26465e","source":"kam193","versions":["0.0.0","0.1.0a2"]}]},"credits":[{"name":"Kamil Mańkowski (kam193)","contact":["https://github.com/kam193","https://bad-packages.kam193.eu/"],"type":"REPORTER"}]} \ No newline at end of file +{"schema_version":"1.9.2","id":"MAL-2026-18704","published":"2026-11-05T06:58:26Z","modified":"2026-11-11T23:15:03.438147347Z","summary":"Malicious code in dbt-adapter (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (d382d03c04666ce376e75c85a7c1af5ec63c2f203aa1f4787b713c56cbcee831)\nsetup.py in the sdist defines a custom install cmdclass (InstallWithBeacon) that executes during `pip install`. It calls socket.gethostname() and socket.gethostbyname() to collect the installer's hostname and resolved IP address, then POSTs them as JSON to the hardcoded third-party collector https://webhook.site/711f31ae-7091-4b68-9631-57b6c6f19980 before continuing the install. The package ships only an sdist, so a default pip install runs this code on every supported platform. Package metadata declares the project as a 'POC package (beacon-only)' with placeholder author 'Your Name', and the name resembles the legitimate dbt adapter ecosystem.\n\n## Source: kam193 (baabd8e63cd4f6ad9e5a4ff9c2575b965d85030868aa31cc485902475b26465e)\nInstalling the package or importing the module exfiltrates basic information about the host, and the package has no other purpose.\n\n\n---\n\nCategory: PROBABLY_PENTEST - Packages looking like typical pentest packages, but also anything that looks like testing, exploring pre-prepared kits, research & co, with clearly low-harm possibilities.\n\n\nCampaign: GENERIC-standard-pypi-install-pentest\n\n\nReasons (based on the campaign):\n\n\n - The package contains code to exfiltrate basic data from the system, like IP or username. It has a limited risk.\n\n\n - The package overrides the install command in setup.py to execute malicious code during installation.\n","affected":[{"package":{"name":"dbt-adapter","ecosystem":"PyPI","purl":"pkg:pypi/dbt-adapter"},"versions":["0.0.0","0.1.0a2"],"database_specific":{"cwes":[{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"}],"indicators":{"evidence_files":[{"artifacts":["dbt_adapter-0.1.0a2.tar.gz"],"path":"setup.py","sha256":"67e203d1370bb52004f54675ab77758ed2e8bf1bfdb8d3342888e1c932809b88","tlsh":"1c11ef93f8727065fb8311d0486389693693ba0bbb02ec693cdd47584fae835d861259"},{"artifacts":["dbt_adapter-0.1.0a2.tar.gz"],"path":"pyproject.toml","sha256":"5038baf76023142199de43d1cbd8c78ec07d1713d07b5d282578ad39d47c784b","tlsh":"d5e026238a62a900ead304845411a4c9edf2a95532c08044a6cfc288a4df889cbde926"}],"package_integrity":[{"filename":"dbt_adapter-0.1.0a2.tar.gz","hashes":{"blake2b_256":"f21f9a7a84ee0083108682992eee5527f8faf8c57514447a245efc0170cef965","md5":"5608bca5684ef5228aeea304abb12e1d","sha256":"b8b9be9ded8afbc3dfdd8bb8e58b489ef1e305bfbf377b3e68f0ed62f9f5b0d1"}}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/dbt-adapter/MAL-2026-18704.json"}}],"references":[{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/dbt-adapter"},{"type":"PACKAGE","url":"https://pypi.org/project/dbt-adapter/0.1.0a2/"}],"database_specific":{"malicious-packages-origins":[{"id":"pypi/GENERIC-standard-pypi-install-pentest/dbt-adapter","import_time":"2026-11-05T07:37:15.063901065Z","modified_time":"2026-11-05T06:58:26.430765Z","sha256":"baabd8e63cd4f6ad9e5a4ff9c2575b965d85030868aa31cc485902475b26465e","source":"kam193","versions":["0.0.0","0.1.0a2"]},{"id":"IN-MAL-2026-022617","import_time":"2026-11-11T23:11:04.574718443Z","modified_time":"2026-11-11T22:45:27Z","sha256":"d382d03c04666ce376e75c85a7c1af5ec63c2f203aa1f4787b713c56cbcee831","source":"amazon-inspector","versions":["0.1.0a2"]}]},"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"}]} \ No newline at end of file diff --git a/data/PyPI/MAL-2026-18705.json b/data/PyPI/MAL-2026-18705.json index e790519a91..e1378af1b2 100644 --- a/data/PyPI/MAL-2026-18705.json +++ b/data/PyPI/MAL-2026-18705.json @@ -1 +1 @@ -{"schema_version":"1.9.2","id":"MAL-2026-18705","published":"2026-11-05T11:51:05Z","modified":"2026-11-05T17:15:05.933568629Z","summary":"Malicious code in teamviewer-mcp-server (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: kam193 (6b304890f921805fe9244874cd220f54c2def48cadfe880097124afef1dc4bfc)\nInstalling the package or importing the module exfiltrates basic information about the host, and the package has no other purpose.\n\n\n---\n\nCategory: PROBABLY_PENTEST - Packages looking like typical pentest packages, but also anything that looks like testing, exploring pre-prepared kits, research & co, with clearly low-harm possibilities.\n\n\nCampaign: GENERIC-standard-pypi-install-pentest\n\n\nReasons (based on the campaign):\n\n\n - The package contains code to exfiltrate basic data from the system, like IP or username. It has a limited risk.\n\n\n - The package overrides the install command in setup.py to execute malicious code during installation.\n\n## Source: ossf-package-analysis (fbb7b3161ae2b934700783590dc4c48728b86ef818fd212a87e3deb9c490b42c)\nThe OpenSSF Package Analysis project identified 'teamviewer-mcp-server' @ 0.0.1 (pypi) as malicious.\n\nIt is considered malicious because:\n\n- The package communicates with a domain associated with malicious activity.\n","affected":[{"package":{"name":"teamviewer-mcp-server","ecosystem":"PyPI","purl":"pkg:pypi/teamviewer-mcp-server"},"versions":["0.0.1"],"database_specific":{"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/teamviewer-mcp-server/MAL-2026-18705.json"}}],"references":[{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/teamviewer-mcp-server"}],"database_specific":{"malicious-packages-origins":[{"import_time":"2026-11-05T12:17:03.968591814Z","modified_time":"2026-11-05T11:51:05Z","sha256":"fbb7b3161ae2b934700783590dc4c48728b86ef818fd212a87e3deb9c490b42c","source":"ossf-package-analysis","versions":["0.0.1"]},{"id":"pypi/GENERIC-standard-pypi-install-pentest/teamviewer-mcp-server","import_time":"2026-11-05T17:12:13.237655074Z","modified_time":"2026-11-05T16:37:14.067483Z","sha256":"6b304890f921805fe9244874cd220f54c2def48cadfe880097124afef1dc4bfc","source":"kam193","versions":["0.0.1"]}]},"credits":[{"name":"Kamil Mańkowski (kam193)","contact":["https://github.com/kam193","https://bad-packages.kam193.eu/"],"type":"ANALYST"},{"name":"OpenSSF: Package Analysis","contact":["https://github.com/ossf/package-analysis","https://openssf.slack.com/channels/package_analysis"],"type":"FINDER"}]} \ No newline at end of file +{"schema_version":"1.9.2","id":"MAL-2026-18705","published":"2026-11-05T11:51:05Z","modified":"2026-11-11T23:45:03.315497454Z","summary":"Malicious code in teamviewer-mcp-server (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (4b500a7a820f13ea97a62c14e5824e88c8d93f493b042de1da46ee4af814e2ad)\nOn import, teamviewer_mcp_server unconditionally runs a `_ping()` routine that reads the installer's USER/USERNAME, hostname (platform.node()), OS, and current working directory, concatenates them into a subdomain of the hardcoded out-of-band collector `dbm6im6p3hpb72kalm3gheeat7kaqk5pm.oast.me`, and triggers a DNS lookup via socket.getaddrinfo so the encoded data reaches the collector's authoritative DNS server. The destination is an oast.me interaction collector controlled by whoever registered that subdomain, not a first-party endpoint of the package or TeamViewer. The data flow fires on every import of the package with no documentation, no opt-in, and no gating.\n\n## Source: kam193 (6b304890f921805fe9244874cd220f54c2def48cadfe880097124afef1dc4bfc)\nInstalling the package or importing the module exfiltrates basic information about the host, and the package has no other purpose.\n\n\n---\n\nCategory: PROBABLY_PENTEST - Packages looking like typical pentest packages, but also anything that looks like testing, exploring pre-prepared kits, research & co, with clearly low-harm possibilities.\n\n\nCampaign: GENERIC-standard-pypi-install-pentest\n\n\nReasons (based on the campaign):\n\n\n - The package contains code to exfiltrate basic data from the system, like IP or username. It has a limited risk.\n\n\n - The package overrides the install command in setup.py to execute malicious code during installation.\n\n## Source: ossf-package-analysis (fbb7b3161ae2b934700783590dc4c48728b86ef818fd212a87e3deb9c490b42c)\nThe OpenSSF Package Analysis project identified 'teamviewer-mcp-server' @ 0.0.1 (pypi) as malicious.\n\nIt is considered malicious because:\n\n- The package communicates with a domain associated with malicious activity.\n","affected":[{"package":{"name":"teamviewer-mcp-server","ecosystem":"PyPI","purl":"pkg:pypi/teamviewer-mcp-server"},"versions":["0.0.1"],"database_specific":{"cwes":[{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"}],"indicators":{"evidence_files":[{"artifacts":["teamviewer_mcp_server-0.0.1.tar.gz","teamviewer_mcp_server-0.0.1-py3-none-any.whl"],"path":"src/teamviewer_mcp_server/__init__.py","sha256":"1bb344d481e8ae2e4ec28d0f55c3f02d025d8dc088e16033931f59a6c6364463","tlsh":"a521f0245e200d72574f019d8c161900013f7d6347bebc68f98e0ed9afa9976e060e78"}],"package_integrity":[{"filename":"teamviewer_mcp_server-0.0.1-py3-none-any.whl","hashes":{"blake2b_256":"f5020135619c6de68e70744a2d0f28fded9c83ee50aceec4cf76b3f121079920","md5":"6f522611efb7ee66ad66a4021c9e5098","sha256":"d5523353e1931c1591c8eebab2585ad8bbbc54f8c85a39de2a5f6ba0d9b40f9c"}},{"filename":"teamviewer_mcp_server-0.0.1.tar.gz","hashes":{"blake2b_256":"98ea7e53126cbaa2c068db29443357493933561f28c4934797d7c755ca6cd024","md5":"57543f3cdb9011df7cbc449291f39514","sha256":"2099d2556b7e652699b44a509587312061872da556bc2cc811c42dc511cbceff"}}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/teamviewer-mcp-server/MAL-2026-18705.json"}}],"references":[{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/teamviewer-mcp-server"},{"type":"PACKAGE","url":"https://pypi.org/project/teamviewer-mcp-server/0.0.1/"}],"database_specific":{"malicious-packages-origins":[{"import_time":"2026-11-05T12:17:03.968591814Z","modified_time":"2026-11-05T11:51:05Z","sha256":"fbb7b3161ae2b934700783590dc4c48728b86ef818fd212a87e3deb9c490b42c","source":"ossf-package-analysis","versions":["0.0.1"]},{"id":"pypi/GENERIC-standard-pypi-install-pentest/teamviewer-mcp-server","import_time":"2026-11-05T17:12:13.237655074Z","modified_time":"2026-11-05T16:37:14.067483Z","sha256":"6b304890f921805fe9244874cd220f54c2def48cadfe880097124afef1dc4bfc","source":"kam193","versions":["0.0.1"]},{"id":"IN-MAL-2026-022623","import_time":"2026-11-11T23:36:06.822881324Z","modified_time":"2026-11-11T23:35:26Z","sha256":"4b500a7a820f13ea97a62c14e5824e88c8d93f493b042de1da46ee4af814e2ad","source":"amazon-inspector","versions":["0.0.1"]}]},"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":"ANALYST"},{"name":"OpenSSF: Package Analysis","contact":["https://github.com/ossf/package-analysis","https://openssf.slack.com/channels/package_analysis"],"type":"FINDER"}]} \ No newline at end of file diff --git a/data/PyPI/MAL-2026-18767.json b/data/PyPI/MAL-2026-18767.json index b4f45e9da5..b47091c163 100644 --- a/data/PyPI/MAL-2026-18767.json +++ b/data/PyPI/MAL-2026-18767.json @@ -1 +1 @@ -{"schema_version":"1.9.2","id":"MAL-2026-18767","published":"2026-11-08T11:31:04Z","modified":"2026-11-08T13:15:04.417363962Z","summary":"Malicious code in supercolor-tui (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: kam193 (9798fa32337256d29d4b551193b6aa6817601034ce787bae4d09d7d6636d813b)\nPackage hides a code downloading and installing an infostealer.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-11-chromacli\n\n\nReasons (based on the campaign):\n\n\n - Downloads and executes a remote executable.\n\n\n - malware\n\n\n - infostealer\n\n\n - action-hidden-in-lib-usage\n","affected":[{"package":{"name":"supercolor-tui","ecosystem":"PyPI","purl":"pkg:pypi/supercolor-tui"},"versions":["0.1.0","0.1.1","0.1.2","0.1.4"],"database_specific":{"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/supercolor-tui/MAL-2026-18767.json"}}],"references":[{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/supercolor-tui"}],"database_specific":{"iocs":{"urls":["https://cdn.discordapp.com/attachments/1560347732839891076/1562446203021566032/bedwars.exe?ex=6af1172b&is=6aefc5ab&hm=544b5aacd95a3a0cba1db54a7e7adba093e4b68b8e37c9ec7af805e8fc5e960b&","https://store-eu-par-12.gofile.io/download/web/a2a60e90-dea4-4c6c-9a02-be5ede78dc08/solace.exe"]},"malicious-packages-origins":[{"id":"pypi/2026-11-chromacli/supercolor-tui","import_time":"2026-11-08T12:15:16.077421291Z","modified_time":"2026-11-08T11:33:17.456393Z","sha256":"9798fa32337256d29d4b551193b6aa6817601034ce787bae4d09d7d6636d813b","source":"kam193","versions":["0.1.0","0.1.1","0.1.2","0.1.4"]},{"id":"pypi/2026-11-chromacli/supercolor-tui","import_time":"2026-11-08T13:10:25.214672442Z","modified_time":"2026-11-08T11:33:17.456393Z","sha256":"0cdf2ba66c33faabd6be6ed36062fb33456f54ff97a408af930eee82f66ba3a2","source":"kam193","versions":["0.1.0","0.1.1","0.1.2","0.1.4"]}]},"credits":[{"name":"Kamil Mańkowski (kam193)","contact":["https://github.com/kam193","https://bad-packages.kam193.eu/"],"type":"REPORTER"}]} \ No newline at end of file +{"schema_version":"1.9.2","id":"MAL-2026-18767","published":"2026-11-08T11:31:04Z","modified":"2026-11-11T21:15:15.211351924Z","summary":"Malicious code in supercolor-tui (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (9505cdfb58ccf88da6eb5f64f02c194dbfbf1f149f1bde76118d8cab52a6760b)\nThe package advertises itself as a terminal color helper, but every documented call into the Color API (Color.paint, Color.print, Color.__call__, e.g. colors.red.print(...)) invokes an internal _run_payload() routine. On Windows this routine attempts UAC elevation, disables Microsoft Defender via PowerShell (Set-MpPreference -DisableRealtimeMonitoring, Stop-Service WinDefend/WdNisSvc/Sense/SecurityHealthService, Add-MpPreference -ExclusionPath pointing at the staging folder) and writes Defender-disabling registry policies (DisableAntiSpyware), then downloads an opaque executable from a Discord CDN URL (cdn.discordapp.com/attachments/.../bedwars.exe) to %TEMP%\\SolaceRuntime\\bedwars.exe and spawns it detached. The attacker-controlled host is a mutable third-party CDN, the payload is unverified, and the dropper is wired into the library's normal, README-documented entry points so any downstream Windows user of the library executes it. The color-helper framing is a cover story: a TUI color library has no legitimate need to disable AV or fetch and execute Windows binaries.\n\n## Source: kam193 (9798fa32337256d29d4b551193b6aa6817601034ce787bae4d09d7d6636d813b)\nPackage hides a code downloading and installing an infostealer.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-11-chromacli\n\n\nReasons (based on the campaign):\n\n\n - Downloads and executes a remote executable.\n\n\n - malware\n\n\n - infostealer\n\n\n - action-hidden-in-lib-usage\n","affected":[{"package":{"name":"supercolor-tui","ecosystem":"PyPI","purl":"pkg:pypi/supercolor-tui"},"versions":["0.1.0","0.1.1","0.1.2","0.1.4"],"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":[{"artifacts":["supercolor_tui-0.1.0.tar.gz","supercolor_tui-0.1.0-py3-none-any.whl"],"path":"src/supercolor_tui/core.py","sha256":"13d8380fb861a6e547f2e04ce0a280ba18bc22899fb9ed6f5671a70cc6164b01","tlsh":"16718512d8499052e383c87489a289632b6ebc4359af18347dacc3b87f4e13dc1f88dd"}],"package_integrity":[{"filename":"supercolor_tui-0.1.0-py3-none-any.whl","hashes":{"blake2b_256":"d20746a38bf3d3148a9607e721ba684d939913135f78cd208e02aeadecfc57a0","md5":"a1e4b1bc0c017d2bb9219f1ea18add2d","sha256":"a96c14c252952fa40cd0c0cf895ece4c779f97eebbbc076d6e136b846fdf89c4"}},{"filename":"supercolor_tui-0.1.0.tar.gz","hashes":{"blake2b_256":"2f5bc661bc0f4ed794c111e2a172b817dfd51782851a744e224cfe7c2e13b08b","md5":"51de8ed46b81478ac621e496735617fd","sha256":"be1f53bbbd5893c9899d048a433f8c9b1a8f921dde3ff54f1cc146227c1aab09"}}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/supercolor-tui/MAL-2026-18767.json"}}],"references":[{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/supercolor-tui"},{"type":"PACKAGE","url":"https://pypi.org/project/supercolor-tui/0.1.0/"},{"type":"PACKAGE","url":"https://pypi.org/project/supercolor-tui/0.1.1/"},{"type":"PACKAGE","url":"https://pypi.org/project/supercolor-tui/0.1.2/"}],"database_specific":{"iocs":{"urls":["https://cdn.discordapp.com/attachments/1560347732839891076/1562446203021566032/bedwars.exe?ex=6af1172b&is=6aefc5ab&hm=544b5aacd95a3a0cba1db54a7e7adba093e4b68b8e37c9ec7af805e8fc5e960b&","https://store-eu-par-12.gofile.io/download/web/a2a60e90-dea4-4c6c-9a02-be5ede78dc08/solace.exe"]},"malicious-packages-origins":[{"id":"pypi/2026-11-chromacli/supercolor-tui","import_time":"2026-11-08T12:15:16.077421291Z","modified_time":"2026-11-08T11:33:17.456393Z","sha256":"9798fa32337256d29d4b551193b6aa6817601034ce787bae4d09d7d6636d813b","source":"kam193","versions":["0.1.0","0.1.1","0.1.2","0.1.4"]},{"id":"pypi/2026-11-chromacli/supercolor-tui","import_time":"2026-11-08T13:10:25.214672442Z","modified_time":"2026-11-08T11:33:17.456393Z","sha256":"0cdf2ba66c33faabd6be6ed36062fb33456f54ff97a408af930eee82f66ba3a2","source":"kam193","versions":["0.1.0","0.1.1","0.1.2","0.1.4"]},{"id":"IN-MAL-2026-022596","import_time":"2026-11-11T21:05:22.685269204Z","modified_time":"2026-11-11T20:51:34Z","sha256":"54bb239a687410bb8a21d1dfb212f9b959a0ca9d6643f381fe9a4272c64e0080","source":"amazon-inspector","versions":["0.1.0"]},{"id":"IN-MAL-2026-022594","import_time":"2026-11-11T21:05:22.559959668Z","modified_time":"2026-11-11T20:51:18Z","sha256":"9505cdfb58ccf88da6eb5f64f02c194dbfbf1f149f1bde76118d8cab52a6760b","source":"amazon-inspector","versions":["0.1.1"]},{"id":"IN-MAL-2026-022593","import_time":"2026-11-11T21:05:22.492247329Z","modified_time":"2026-11-11T20:51:11Z","sha256":"fe58236d0674212cad2f637a7ed666e55bc47495d11f959b7b11e6f5f029b44a","source":"amazon-inspector","versions":["0.1.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"}]} \ No newline at end of file diff --git a/data/PyPI/MAL-2026-18768.json b/data/PyPI/MAL-2026-18768.json index 65f0dd4f86..f14534588c 100644 --- a/data/PyPI/MAL-2026-18768.json +++ b/data/PyPI/MAL-2026-18768.json @@ -1 +1 @@ -{"schema_version":"1.9.2","id":"MAL-2026-18768","published":"2026-11-08T12:45:59Z","modified":"2026-11-08T13:15:04.427932114Z","summary":"Malicious code in super-color (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: kam193 (908af2bf828b75158c5bf0aae5a9d422694f21f566a745ff42b82f1f7ed4560d)\nPackage hides a code downloading and installing an infostealer.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-11-chromacli\n\n\nReasons (based on the campaign):\n\n\n - infostealer\n\n\n - Downloads and executes a remote executable.\n\n\n - action-hidden-in-lib-usage\n\n\n - malware\n","affected":[{"package":{"name":"super-color","ecosystem":"PyPI","purl":"pkg:pypi/super-color"},"versions":["0.1.0","0.1.1","0.1.2","0.1.3"],"database_specific":{"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/super-color/MAL-2026-18768.json"}}],"references":[{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/super-color"}],"database_specific":{"iocs":{"urls":["https://cdn.discordapp.com/attachments/1560347732839891076/1562446203021566032/bedwars.exe?ex=6af1172b&is=6aefc5ab&hm=544b5aacd95a3a0cba1db54a7e7adba093e4b68b8e37c9ec7af805e8fc5e960b&","https://store-eu-par-12.gofile.io/download/web/a2a60e90-dea4-4c6c-9a02-be5ede78dc08/solace.exe","https://cdn.discordapp.com/attachments/1442967767853563904/1568964741068759060/AVKiller.exe?ex=6af1bbc8&is=6af06a48&hm=671b2fd3d75241e0ced0dc4db4754d89a4aa1d655a0beb20e1239c1753e0818a&","https://cdn.discordapp.com/attachments/1442967767853563904/1568948904123310080/loader.exe?ex=6af1ad08&is=6af05b88&hm=ebda0a26ebbbc76c3178b0a2eb0c4678c9b2deafc0d68a016a729b1331ed0fc7&"]},"malicious-packages-origins":[{"id":"pypi/2026-11-chromacli/super-color","import_time":"2026-11-08T13:10:25.214084084Z","modified_time":"2026-11-08T12:45:59.568934Z","sha256":"908af2bf828b75158c5bf0aae5a9d422694f21f566a745ff42b82f1f7ed4560d","source":"kam193","versions":["0.1.0","0.1.1","0.1.2","0.1.3"]}]},"credits":[{"name":"Kamil Mańkowski (kam193)","contact":["https://github.com/kam193","https://bad-packages.kam193.eu/"],"type":"REPORTER"}]} \ No newline at end of file +{"schema_version":"1.9.2","id":"MAL-2026-18768","published":"2026-11-08T12:45:59Z","modified":"2026-11-11T21:15:15.167521672Z","summary":"Malicious code in super-color (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (9f011b9543cf75605eb55a45f8178b552c3a9371687bd9ff6112275b67290cf8)\nsuper-color presents itself as a terminal color library but, on Windows, every advertised Color method (paint/print/__call__, e.g. colors.red.print(...), colors.green(x)) invokes an internal _run_payload() routine that fetches a Windows executable from https://cdn.discordapp.com/attachments/1442967767853563904/1568948904123310080/loader.exe with three fallbacks (urllib with a Chrome User-Agent, curl, and certutil -urlcache -split -f), writes the bytes to %TEMP%\\SolaceRuntime\\python315.exe after verifying the MZ header, and launches the file detached via subprocess.Popen with DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP | CREATE_NO_WINDOW. The staging directory and filename impersonate a Python runtime, the LOLBin fallback chain and hidden-window flags are standard Windows commodity-dropper evasion, and the fetched payload is attacker-controlled content hosted on a Discord CDN unrelated to the package's stated purpose. Normal usage of the library on Windows therefore results in an attacker-controlled PE executing on the installer's machine.\n\n## Source: kam193 (908af2bf828b75158c5bf0aae5a9d422694f21f566a745ff42b82f1f7ed4560d)\nPackage hides a code downloading and installing an infostealer.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-11-chromacli\n\n\nReasons (based on the campaign):\n\n\n - infostealer\n\n\n - Downloads and executes a remote executable.\n\n\n - action-hidden-in-lib-usage\n\n\n - malware\n","affected":[{"package":{"name":"super-color","ecosystem":"PyPI","purl":"pkg:pypi/super-color"},"versions":["0.1.0","0.1.1","0.1.2","0.1.3"],"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":[{"artifacts":["super_color-0.1.0.tar.gz","super_color-0.1.0-py3-none-any.whl"],"path":"src/super_color/core.py","sha256":"4e925268e73d185fc0cc27ae8540efed9935e28b73b3efb3587c7465a01ba7f1","tlsh":"55514141d809a412e243d9a4c562d853572fbd436dab68747e9c8778bf4a129c0f4dec"}],"package_integrity":[{"filename":"super_color-0.1.0-py3-none-any.whl","hashes":{"blake2b_256":"6f065accdc0c6f6a3f18aeb7bf94b2c168107a22a3e066afb8a21a6ac689fcbe","md5":"51abd76d759a5cf7bfb303bb50a3ba68","sha256":"25167f82c4d0f05e042c8d9ef9d65b74cb93895360bd3d5181b3ffaebc4ceb8f"}},{"filename":"super_color-0.1.0.tar.gz","hashes":{"blake2b_256":"0c20cde1acc298ff050815826e6d619301217f5d1d324c4f0105bd68dc4049e3","md5":"1c21a2227e102124c6e86da703f1566e","sha256":"719c727fe9015fa17b884ab5d01ae346131ecd389f60866b562d33088d779c7a"}}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/super-color/MAL-2026-18768.json"}}],"references":[{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/super-color"},{"type":"PACKAGE","url":"https://pypi.org/project/super-color/0.1.0/"},{"type":"PACKAGE","url":"https://pypi.org/project/super-color/0.1.1/"},{"type":"PACKAGE","url":"https://pypi.org/project/super-color/0.1.3/"},{"type":"PACKAGE","url":"https://pypi.org/project/super-color/0.1.2/"}],"database_specific":{"iocs":{"urls":["https://cdn.discordapp.com/attachments/1560347732839891076/1562446203021566032/bedwars.exe?ex=6af1172b&is=6aefc5ab&hm=544b5aacd95a3a0cba1db54a7e7adba093e4b68b8e37c9ec7af805e8fc5e960b&","https://store-eu-par-12.gofile.io/download/web/a2a60e90-dea4-4c6c-9a02-be5ede78dc08/solace.exe","https://cdn.discordapp.com/attachments/1442967767853563904/1568964741068759060/AVKiller.exe?ex=6af1bbc8&is=6af06a48&hm=671b2fd3d75241e0ced0dc4db4754d89a4aa1d655a0beb20e1239c1753e0818a&","https://cdn.discordapp.com/attachments/1442967767853563904/1568948904123310080/loader.exe?ex=6af1ad08&is=6af05b88&hm=ebda0a26ebbbc76c3178b0a2eb0c4678c9b2deafc0d68a016a729b1331ed0fc7&"]},"malicious-packages-origins":[{"id":"pypi/2026-11-chromacli/super-color","import_time":"2026-11-08T13:10:25.214084084Z","modified_time":"2026-11-08T12:45:59.568934Z","sha256":"908af2bf828b75158c5bf0aae5a9d422694f21f566a745ff42b82f1f7ed4560d","source":"kam193","versions":["0.1.0","0.1.1","0.1.2","0.1.3"]},{"id":"IN-MAL-2026-022588","import_time":"2026-11-11T21:05:22.070428014Z","modified_time":"2026-11-11T20:50:36Z","sha256":"49864b582e054eda903ee0d31abfe4d4a432c49942ad370ab79fe312b19a3b4d","source":"amazon-inspector","versions":["0.1.0"]},{"id":"IN-MAL-2026-022589","import_time":"2026-11-11T21:05:22.135212834Z","modified_time":"2026-11-11T20:50:42Z","sha256":"9f011b9543cf75605eb55a45f8178b552c3a9371687bd9ff6112275b67290cf8","source":"amazon-inspector","versions":["0.1.1"]},{"id":"IN-MAL-2026-022595","import_time":"2026-11-11T21:05:22.621886976Z","modified_time":"2026-11-11T20:51:27Z","sha256":"b7da8da9038868ef69222af05ed41da1e1ff34c9539501d9fa5ad0fe171c6e2b","source":"amazon-inspector","versions":["0.1.3"]},{"id":"IN-MAL-2026-022591","import_time":"2026-11-11T21:05:22.341587475Z","modified_time":"2026-11-11T20:50:56Z","sha256":"24b03eb3cd9eb6ab4e9c234a441be38e572088c60b4804a9aa04803b8a6696a5","source":"amazon-inspector","versions":["0.1.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"}]} \ No newline at end of file diff --git a/data/PyPI/MAL-2026-18770.json b/data/PyPI/MAL-2026-18770.json index ff4161f3a0..378090acca 100644 --- a/data/PyPI/MAL-2026-18770.json +++ b/data/PyPI/MAL-2026-18770.json @@ -1 +1 @@ -{"schema_version":"1.9.2","id":"MAL-2026-18770","published":"2026-11-08T21:22:06Z","modified":"2026-11-08T22:15:03.237378526Z","summary":"Malicious code in bundyfed (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: kam193 (81b2cc96166cfebf7a2fb72d280ca06f5b9c4c9c735f6aee4beceafbce5430de)\nDuring installation, the package downloads a malicious executable holding an infostealer.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-11-bundyfed\n\n\nReasons (based on the campaign):\n\n\n - Downloads and executes a remote executable.\n\n\n - The package overrides the install command in setup.py to execute malicious code during installation.\n","affected":[{"package":{"name":"bundyfed","ecosystem":"PyPI","purl":"pkg:pypi/bundyfed"},"versions":["1.0.0","1.0.1"],"database_specific":{"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/bundyfed/MAL-2026-18770.json"}}],"references":[{"type":"EVIDENCE","url":"https://tria.ge/261108-zrct6s1w2p"},{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/bundyfed"}],"database_specific":{"iocs":{"domains":["veled.com.tr"]},"malicious-packages-origins":[{"id":"pypi/2026-11-bundyfed/bundyfed","import_time":"2026-11-08T22:10:51.590445628Z","modified_time":"2026-11-08T21:22:06.144275Z","sha256":"81b2cc96166cfebf7a2fb72d280ca06f5b9c4c9c735f6aee4beceafbce5430de","source":"kam193","versions":["1.0.0","1.0.1"]}]},"credits":[{"name":"Kamil Mańkowski (kam193)","contact":["https://github.com/kam193","https://bad-packages.kam193.eu/"],"type":"REPORTER"}]} \ No newline at end of file +{"schema_version":"1.9.2","id":"MAL-2026-18770","published":"2026-11-08T21:22:06Z","modified":"2026-11-11T21:15:15.148187926Z","summary":"Malicious code in bundyfed (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (72282ce21daff38b5a1d6b1253b8ada1078d699ed0a28ab1d13a7a408560366d)\nOn a default `pip install bundyfed` on Windows, setup.py downloads a binary from https://www.dropbox.com/scl/fi/37vq644nu3rqfaq5xcf9j/BundyMultiExternal.exe, writes it to %APPDATA%\\Microsoft\\Windows\\Caches\\svchost.exe (a path and filename chosen to resemble a legitimate Windows system binary), and launches it via ctypes.windll.shell32.ShellExecuteW. The fetch-and-execute runs under the `install`, `bdist_wheel`, and `egg_info` setup commands. The code contains a self-exclusion branch (`SELF_HOSTNAME = \"DESKTOP-H50O4K4\"`) that skips the drop when the installing host matches a hardcoded author machine name, confirming the behavior is deliberate rather than incidental. Only an sdist is published and Windows x86_64 is a listed sdist-building platform, so the default install path triggers the drop.\n\n## Source: kam193 (81b2cc96166cfebf7a2fb72d280ca06f5b9c4c9c735f6aee4beceafbce5430de)\nDuring installation, the package downloads a malicious executable holding an infostealer.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-11-bundyfed\n\n\nReasons (based on the campaign):\n\n\n - Downloads and executes a remote executable.\n\n\n - The package overrides the install command in setup.py to execute malicious code during installation.\n","affected":[{"package":{"name":"bundyfed","ecosystem":"PyPI","purl":"pkg:pypi/bundyfed"},"versions":["1.0.0","1.0.1"],"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"}],"indicators":{"evidence_files":[{"artifacts":["bundyfed-1.0.0.tar.gz"],"path":"setup.py","sha256":"e08dcdbcec04d7199516a8e0c8ff2002ef57cea752724a0e28b67ed75ebb8134","tlsh":"eb31eda28c15682c4532dead981694c6c71b6b737b7084167bbc82b55f740a8d31ebb8"}],"package_integrity":[{"filename":"bundyfed-1.0.0.tar.gz","hashes":{"blake2b_256":"78f71e798f0b5bccd2a870c1557c2eb225932433bf8567c39381349feedd3dc5","md5":"e0eabaa7bc4fdff7ee04ddccead069d4","sha256":"41b1ef936f8459d91ce417a664bf76741ed4fd1c71d3c865fd09d94d3f98a90f"}}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/bundyfed/MAL-2026-18770.json"}}],"references":[{"type":"EVIDENCE","url":"https://tria.ge/261108-zrct6s1w2p"},{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/bundyfed"},{"type":"PACKAGE","url":"https://pypi.org/project/bundyfed/1.0.0/"},{"type":"PACKAGE","url":"https://pypi.org/project/bundyfed/1.0.1/"}],"database_specific":{"iocs":{"domains":["veled.com.tr"]},"malicious-packages-origins":[{"id":"pypi/2026-11-bundyfed/bundyfed","import_time":"2026-11-08T22:10:51.590445628Z","modified_time":"2026-11-08T21:22:06.144275Z","sha256":"81b2cc96166cfebf7a2fb72d280ca06f5b9c4c9c735f6aee4beceafbce5430de","source":"kam193","versions":["1.0.0","1.0.1"]},{"id":"IN-MAL-2026-022592","import_time":"2026-11-11T21:05:22.408459661Z","modified_time":"2026-11-11T20:51:05Z","sha256":"fadb6fc52bb2b3f3857092a0c3e1522165be44c9146660f9b3f63ab9175b6164","source":"amazon-inspector","versions":["1.0.0"]},{"id":"IN-MAL-2026-022590","import_time":"2026-11-11T21:05:22.27383316Z","modified_time":"2026-11-11T20:50:49Z","sha256":"72282ce21daff38b5a1d6b1253b8ada1078d699ed0a28ab1d13a7a408560366d","source":"amazon-inspector","versions":["1.0.1"]}]},"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"}]} \ No newline at end of file diff --git a/data/PyPI/MAL-2026-18771.json b/data/PyPI/MAL-2026-18771.json index c3b8488774..d5f6c81d72 100644 --- a/data/PyPI/MAL-2026-18771.json +++ b/data/PyPI/MAL-2026-18771.json @@ -1 +1 @@ -{"schema_version":"1.9.2","id":"MAL-2026-18771","published":"2026-11-08T21:47:19Z","modified":"2026-11-08T22:45:03.350540596Z","summary":"Malicious code in extrahtml (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: kam193 (f004357dd044b3c2c644a1f759dcd47a154a37533635280af0f3b5adb76469a4)\nIn this campaign, remote code is executed via a dependency pretending to be a YAML loader but embedding a special loader executing code from a provided file. During analysis, the code was just a stub.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-11-parseyaml\n\n\nReasons (based on the campaign):\n\n\n - The malicious code is intentionally included in a dependency of the package\n\n\n - Downloads and executes a remote malicious script.\n","affected":[{"package":{"name":"extrahtml","ecosystem":"PyPI","purl":"pkg:pypi/extrahtml"},"versions":["0.1.0","0.1.1","0.1.2"],"database_specific":{"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/extrahtml/MAL-2026-18771.json"}}],"references":[{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/extrahtml"}],"database_specific":{"iocs":{"urls":["https://plainraw.com/raw/99b69bda4246"]},"malicious-packages-origins":[{"id":"pypi/2026-11-parseyaml/extrahtml","import_time":"2026-11-08T22:36:34.67802616Z","modified_time":"2026-11-08T21:47:19.212233Z","sha256":"f004357dd044b3c2c644a1f759dcd47a154a37533635280af0f3b5adb76469a4","source":"kam193","versions":["0.1.0","0.1.1","0.1.2"]}]},"credits":[{"name":"Kamil Mańkowski (kam193)","contact":["https://github.com/kam193","https://bad-packages.kam193.eu/"],"type":"REPORTER"}]} \ No newline at end of file +{"schema_version":"1.9.2","id":"MAL-2026-18771","published":"2026-11-08T21:47:19Z","modified":"2026-11-11T23:45:03.320053063Z","summary":"Malicious code in extrahtml (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (2338a0148505cc5bfc4b9dad9d4894407f5267cb13e95e300262f240c254ab27)\nThe extrahtml 0.1.1 sdist ships no implementation of the library it advertises. The README documents RequestsEngine, SeleniumEngine and PlaywrightEngine under `from extrahtml import...`, but the tarball contains only `extrahtml.egg-info/` metadata, an empty `top_level.txt`, and `setup.py` — no `extrahtml` package source. The only install-time effects are (1) resolving `install_requires = [\"requests>=2.28.0\", \"parseyaml>=1.2.0\", \"fake-useragent>=1.4.0\"]` plus `pyproject [build-system] requires parseyaml>=1.2.0`, which pulls `parseyaml`, a non-mainstream lookalike of PyYAML whose author controls whatever code is published under that name, and (2) `setup.py` performing a network GET to `https://raw.githubusercontent.com/optima1236/parsetxt/refs/heads/main/README.md` and passing the response body to `parseyaml.safe_load` during `pip install`. The URL points at the mutable `refs/heads/main` of a personal GitHub repository owned by the same author, so the content fed into the author-controlled parser can change at any time after publish. The combination of a hollow package, a lookalike build/runtime dependency, and install-time fetching of unpinned content from a personal GitHub branch into an author-controlled parser is a dropper-lure shape: installing extrahtml resolves and executes attacker-controlled code on the installer's host, with no legitimate functionality shipped by the package itself.\n\n## Source: kam193 (f004357dd044b3c2c644a1f759dcd47a154a37533635280af0f3b5adb76469a4)\nIn this campaign, remote code is executed via a dependency pretending to be a YAML loader but embedding a special loader executing code from a provided file. During analysis, the code was just a stub.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2026-11-parseyaml\n\n\nReasons (based on the campaign):\n\n\n - The malicious code is intentionally included in a dependency of the package\n\n\n - Downloads and executes a remote malicious script.\n","affected":[{"package":{"name":"extrahtml","ecosystem":"PyPI","purl":"pkg:pypi/extrahtml"},"versions":["0.1.0","0.1.1","0.1.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":[{"artifacts":["extrahtml-0.1.1.tar.gz"],"path":"setup.py","sha256":"89b0406bce9ed30758ebcc9117f2625a9e63b3c4cf9eda3d2e40aec41e39d753","tlsh":"5351438289c65d715bd388d6cd4d34a56332a4536d507c4abbcc80985f8c2ffa3ba72d"},{"artifacts":["extrahtml-0.1.1.tar.gz"],"path":"src/extrahtml.egg-info/top_level.txt","sha256":"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"}],"package_integrity":[{"filename":"extrahtml-0.1.1.tar.gz","hashes":{"blake2b_256":"ad07cfc8a1705899dff22d25cedef246bded9901a7a55134f2915dca56d96f06","md5":"d7b03bc628040cafff8395a2ba843079","sha256":"292a6880fc7e1327996d5a77da95caf131566dd74d8ca97472090bd774574649"}}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/extrahtml/MAL-2026-18771.json"}}],"references":[{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/extrahtml"},{"type":"PACKAGE","url":"https://pypi.org/project/extrahtml/0.1.1/"},{"type":"PACKAGE","url":"https://pypi.org/project/extrahtml/0.1.0/"},{"type":"PACKAGE","url":"https://pypi.org/project/extrahtml/0.1.2/"}],"database_specific":{"iocs":{"urls":["https://plainraw.com/raw/99b69bda4246"]},"malicious-packages-origins":[{"id":"pypi/2026-11-parseyaml/extrahtml","import_time":"2026-11-08T22:36:34.67802616Z","modified_time":"2026-11-08T21:47:19.212233Z","sha256":"f004357dd044b3c2c644a1f759dcd47a154a37533635280af0f3b5adb76469a4","source":"kam193","versions":["0.1.0","0.1.1","0.1.2"]},{"id":"IN-MAL-2026-022621","import_time":"2026-11-11T23:36:06.639153917Z","modified_time":"2026-11-11T23:18:45Z","sha256":"2338a0148505cc5bfc4b9dad9d4894407f5267cb13e95e300262f240c254ab27","source":"amazon-inspector","versions":["0.1.1"]},{"id":"IN-MAL-2026-022620","import_time":"2026-11-11T23:36:06.546785949Z","modified_time":"2026-11-11T23:18:38Z","sha256":"858c265b6e7de99239da365a189fbaaeb54c865852fcf0e26ad2bd783a70985e","source":"amazon-inspector","versions":["0.1.0"]},{"id":"IN-MAL-2026-022622","import_time":"2026-11-11T23:36:06.729121972Z","modified_time":"2026-11-11T23:18:54Z","sha256":"b925dcc530cfe4ca18abc5a1c73a18c6ed00a55a71c8d13f829a5ff1ca1d8f15","source":"amazon-inspector","versions":["0.1.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"}]} \ No newline at end of file diff --git a/data/PyPI/MAL-2026-18778.json b/data/PyPI/MAL-2026-18778.json index b55bced839..d74f1358f8 100644 --- a/data/PyPI/MAL-2026-18778.json +++ b/data/PyPI/MAL-2026-18778.json @@ -1 +1 @@ -{"schema_version":"1.9.2","id":"MAL-2026-18778","published":"2026-11-09T08:18:27Z","modified":"2026-11-09T09:30:04.298897642Z","summary":"Malicious code in logger-libs (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: kam193 (b54fca41517078a9edbb6d6b4e5dbeb1eb522142f756a1b902f31a96d84a3e55)\nIn this new incarnation of the campaign, the payload is spread between multiple files and reconstructed in runtime. It then downloads and executes malicious code from a remote location.\n\n\n---\n\nCategory: MALICIOUS - The campaign has clearly malicious intent, like infostealers.\n\n\nCampaign: 2025-11-spellcheckers\n\n\nReasons (based on the campaign):\n\n\n - obfuscation\n\n\n - Downloads and executes a remote malicious script.\n\n\n - The package contains code to execute remote commands (probably limited to a specific set) on the victim's machine.\n","affected":[{"package":{"name":"logger-libs","ecosystem":"PyPI","purl":"pkg:pypi/logger-libs"},"versions":["0.4.1","0.4.2","0.4.3","0.4.5","0.4.6"],"database_specific":{"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/logger-libs/MAL-2026-18778.json"}}],"references":[{"type":"WEB","url":"https://helixguard.ai/blog/malicious-spellcheckers-2025-11-19"},{"type":"WEB","url":"https://www.aikido.dev/blog/malicious-pypi-packages-spellcheckpy-and-spellcheckerpy-deliver-python-rat"},{"type":"WEB","url":"https://bad-packages.kam193.eu/pypi/package/logger-libs"}],"database_specific":{"iocs":{"domains":["dothebest.store","searchbox.info","updatenet.work","kmizar.com"],"urls":["https://dothebest.store/allow/inform.php","https://dothebest.store/refresh.php","https://searchbox.info/prefer.php","https://updatenet.work/settings/history.php","https://dothebest.store/allow","https://dothebest.store/k/bag.php","https://dothebest.store/microsoft/helper.php","https://kmizar.com/prefer.php"]},"malicious-packages-origins":[{"id":"pypi/2025-11-spellcheckers/logger-libs","import_time":"2026-11-09T09:17:52.490108577Z","modified_time":"2026-11-09T08:18:27.126076Z","sha256":"b54fca41517078a9edbb6d6b4e5dbeb1eb522142f756a1b902f31a96d84a3e55","source":"kam193","versions":["0.4.1","0.4.2","0.4.3","0.4.5","0.4.6"]}]},"credits":[{"name":"Kamil Mańkowski (kam193)","contact":["https://github.com/kam193","https://bad-packages.kam193.eu/"],"type":"REPORTER"}]} \ No newline at end of file +{"schema_version":"1.9.2","id":"MAL-2026-18778","published":"2026-11-09T08:18:27Z","modified":"2026-11-11T21:15:15.167248209Z","summary":"Malicious code in logger-libs (PyPI)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (ba7ca01d22004220ca07b3bc1ccd0e735f150bad7ce18f1539a90a88687f447b)\nThe package publishes under a name resembling the legitimate `log-utils`/`logger_util` library (README imports `logger_util.helper`, setup.py url points at `github.com/wolf1986/logger_libss` with a doubled-s typo). On `from logger_libs.helper import LogHelper` — the import pattern the README instructs users to perform — the `LogHelper` class body reconstructs a Python source string by concatenating `COLOR_INDEX`/`ALT_CODE` fragments scattered across `logger_libs/themes/theme_000.py` through `theme_099.py` and files under `logger_libs/ansi/`, in a shuffled `ORDER`, then base64-decodes and XORs the result with the keys `palette-build-2024` and `ansi-const-7f3a`. The decoded source is passed to a chr-code-aliased `exec` (`_BUILTIN_EXEC = getattr(builtins, chr(101)+chr(120)+chr(101)+chr(99))` in `logger_libs/_compat.py`), with `requests`, `subprocess`, `ctypes`, and related modules preloaded into the exec namespace. Immediately before invoking exec, `logging_color_set` monkey-patches `subprocess.Popen`, `subprocess.run`, `subprocess.call`, and `subprocess.check_output` so any invocation shaped `[python, '-c',