HabrSeptember 19, 2026🇷🇺Translated from Russian

Dependency Confusion Attacks Let Attackers Hijack Internal Library Names in Corporate Builds

A build of an internal library suddenly took minutes instead of seconds and began making unexpected outbound connections. All dependencies were internal and the component had no reason to reach the internet.

Initial suspicion fell on the proxy repository cache, yet its configuration was correct. Investigation revealed that the package manager was querying the company’s own package not only from the internal proxy but also from the public registry because a second source had been added to the settings.

Internal libraries are named with ordinary strings such as billing-common or auth-client. In most ecosystems a package is identified solely by this string; the first party to register the name on the public registry owns it. Because these human-readable names are rarely claimed publicly, they remain available for anyone to take.

When a package with the internal name and a deliberately high version such as 99.0.0 is published, the build system selects it over the legitimate internal version. Alex Birsan proved the attack in February 2021 by collecting internal names from public repositories and error logs, publishing high-version packages under those names, and waiting. The packages reached builds at more than 35 large organizations, including Microsoft, Apple, PayPal, Shopify, Netflix, Tesla and Uber.

Execution occurs at install time. In Python, setup.py runs when a source distribution is built; in npm, lifecycle scripts execute by default. Both run with the build agent’s privileges, granting access to tokens, signing keys and the internal network even if the resulting artifact is never promoted to production.

Effective defenses include using a single internal proxy repository that never mixes public answers for internal names, registering scoped namespaces such as @company and binding them to the private registry, maintaining lock files with content hashes, and disabling install scripts with flags such as --ignore-scripts.

Related articles

HabrSupply Chain & Open Source

NEOMSA ESB Release Strengthens Supply Chain Security Through SBOM and Dependency Hardening

Neoflex has released a new version of its NEOMSA ESB integration platform with a primary focus on cleaning up the software bill of materials and eliminating critical and high-severity vulnerabilities. The team automated SBOM generation using CycloneDX, ran SCA scans with Grype and OWASP Dependency-Check, and performed SAST and secret scanning across all build pipelines. Instead of blindly updating to the latest versions, engineers applied minimal fixed versions for each advisory while handling complex cases involving transitive dependencies, locked files, and deprecated build tools. The effort reduced the total package count from 5,872 to 1,683 after migrating the frontend build to Vite in Camel Karavan 4.18. Remaining medium and low findings were tracked in DefectDojo with clear remediation timelines. The changes deliver measurable risk reduction for on-premise deployments in critical infrastructure and financial organizations.

AntiMalwareSupply Chain & Open Source

CodeScoring Launches CodeScoring.Save Artifact Repository for Secure Enterprise Development

CodeScoring has introduced its own artifact storage solution called CodeScoring.Save, designed to handle packages, libraries, container images, and other software components used in development. The product targets corporate users of any size seeking a predictable and resilient repository that integrates security checks directly into storage and distribution workflows. Built in Go for modern Kubernetes environments, Save supports multiple package formats including Maven, npm, NuGet, PyPI, Go Modules, Docker/OCI, DEB, and RPM while providing proxy access to external repositories. It features role-based access, auditing, independent scaling of compute and storage layers, and native integration with CodeScoring.OSA to surface vulnerability data inside the repository itself. The company positions Save as a standalone local deployment option that can operate independently or alongside its existing OSA Proxy module to block malicious components at the repository level. Future plans include support for AI models as artifacts, starting with storage and distribution for ecosystems such as Hugging Face, along with certification for Russian secure development requirements.

AntiMalwareSupply Chain & Open Source

WordPress to Automatically Block High-Risk Plugin Updates Before Distribution

WordPress is introducing an automated security screening process for every new plugin release before it reaches millions of sites through the WordPress.org API. Updates flagged with high risk will be blocked from automatic installation, giving developers time to address issues. Previously, only initial plugin submissions were reviewed, while subsequent versions could introduce vulnerabilities, backdoors, or malicious ownership changes without checks. Each release now undergoes a six-hour delay under the Protect The Shire initiative, where multiple AI models and Jetpack Scan analyze changes to produce a combined risk score. High-risk updates are withheld from auto-updates, and developers receive detailed reports. The system has already proven effective by catching a backdoor in a plugin with around 20,000 active installations on July 28, preventing distribution after Wordfence notification. Developers can fix problems and resubmit, or appeal results, though fixing is usually faster than manual review.

HispasecSupply Chain & Open Source

Twitch Enhanced Viewer Extension Leaks OAuth Tokens From Nearly 31,000 Users

The browser extension Twitch Enhanced Viewer | JeetBot, available in the official Chrome Web Store and Mozilla Add-ons, secretly forwarded OAuth session tokens to proxies controlled by its operator. These bearer tokens allow full account takeover without passwords or second-factor authentication, enabling actions such as reading and sending whispers, posting in chat, and modifying account settings. The issue surfaced prominently in the v85.x branch where tokens were appended as the &auth= query parameter during network redirects to operator-controlled proxy servers, exposing them in clear text within proxy logs. Earlier v4.x versions had already transmitted tokens via POST requests to a set-token endpoint and backup servers on deno.dev and deno.net. A fix appeared in Firefox version 85.8.7 that stops token exfiltration by altering playlist retrieval, while a Chrome patch is in preparation. Users are advised to uninstall the extension immediately, revoke all active Twitch sessions, and review recent account activity for signs of unauthorized use.