Supply chain · npm · High
Malicious npm package @airbnb-extended/typescript-config poses supply-chain risk
Threat Engine Auto-Feed · data current as of 2026-09-25
A malicious npm package, `@airbnb-extended/typescript-config` version `99.9.1`, was identified containing code that pulls an external dependency from an unpinned, non-registry URL. This package mimics a legitimate one and uses an implausibly high version number, suggesting a dependency confusion or lure attempt. Organizations using this package are exposed to arbitrary code execution during installation.
- Package: npm / @airbnb-extended/typescript-config
- Affected versions: = 99.9.1
- Severity: critical
- Reach: unknown
- Exposure: 65/100 (High)
What happened — Malicious package
The npm package `@airbnb-extended/typescript-config` version `99.9.1` was found to declare a dependency, `ltidisafe`, sourced from a bare HTTPS tarball URL (https://ltidi.storage.googleapis.com/depenconf/ltidisafe-3.7.8.tgz) instead of a standard registry. During `npm install`, the npm client fetches and installs the content from this URL, executing any lifecycle scripts within the fetched tarball. The source URL is not pinned by an integrity hash, is not from the npm registry, and is unrelated to any official Airbnb infrastructure. The package name and high version number (`99.9.1`) are designed to mimic the legitimate `@airbnb/typescript-config` package, likely to exploit dependency confusion or act as a lure. The content at the tarball URL is mutable, meaning the payload delivered can change at any time.
How the attack works
This is a malicious package attack leveraging dependency confusion and a mutable external dependency. An attacker publishes a package with a name similar to a popular or internal package, often with a higher version number. When a build system or developer installs dependencies, the malicious package might be resolved and installed instead of the intended one. The malicious package then fetches and executes arbitrary code from an external, unverified source during its installation lifecycle, allowing the attacker to run commands on the system where the package is installed.
Who's exposed
Profiles most at risk
- Development teams using the npm ecosystem
- Organizations with CI/CD pipelines that pull npm packages
- Developers who might mistakenly install lookalike packages
Conditions that increase exposure
- Unpinned dependency versions (e.g., using `*` or `latest`)
- Lack of `package-lock.json` or `npm-shrinkwrap.json` to lock down dependency trees
- Use of internal npm mirrors or registries that might not filter malicious packages
- Developers manually installing packages without verifying source or integrity
Blast-radius scenarios
- If the package is installed, an attacker can execute arbitrary code on the build machine or developer workstation.
- Compromise of developer credentials or access tokens.
- Injection of further malicious code into downstream applications or artifacts.
- Exfiltration of sensitive data from the build environment.
What to do (defensive)
Detect
- Scan `package.json` and `package-lock.json` files for `@airbnb-extended/typescript-config` version `99.9.1`.
- Monitor network traffic during `npm install` for connections to unusual or unapproved domains, especially `ltidi.storage.googleapis.com`.
- Review build logs for unexpected script execution or package installation warnings.
- Utilize software composition analysis (SCA) tools to identify known malicious packages and their dependencies.
Contain
- Immediately remove `@airbnb-extended/typescript-config@99.9.1` from all `package.json` files.
- Update `package-lock.json` or `npm-shrinkwrap.json` to reflect the removal and ensure integrity hashes are used for all dependencies.
- Block network access to `ltidi.storage.googleapis.com` from build environments and developer machines.
- Isolate and review any systems where this package was installed for signs of compromise.
Remediate
- Replace the malicious package with the legitimate `@airbnb/typescript-config` or an approved alternative, ensuring correct versioning.
- Force all dependencies to be pinned to specific versions and use integrity hashes.
- Implement strict `package-lock.json` or `npm-shrinkwrap.json` usage in CI/CD to prevent unexpected dependency resolution.
- Educate developers on identifying lookalike packages and verifying package sources before installation.
- Rotate credentials for any systems or services that may have been exposed if the package was installed.
Frontier verdict — High
Prioritize immediate removal and system review due to critical arbitrary code execution risk from a malicious npm package.
Sources
For detection-engineering and awareness only · point-in-time · not security advice · sourced from the GitHub Advisory Database.