- Description: An attacker registers a crate on a public registry (like crates.io) with a name similar to a private or internal dependency used by the target application. During dependency resolution, Cargo might mistakenly download and use this malicious crate instead of the intended private one.
- Impact: Execution of arbitrary malicious code within the application, potentially leading to data breaches, service disruption, or complete system compromise.
- Cargo Component Affected: Dependency Resolution,
Cargo.toml
- Risk Severity: High
- Mitigation Strategies:
- Use explicit and specific dependency versions in
Cargo.toml
. - Utilize private registries or vendoring for internal dependencies.
- Regularly audit dependencies and their sources.
- Implement Software Bill of Materials (SBOM) generation and analysis.
- Use explicit and specific dependency versions in
- Description: An attacker compromises a legitimate crate on a public registry (like crates.io), potentially through account takeover or supply chain injection. When the target application depends on this compromised crate, Cargo will download and use the malicious version.
- Impact: Injection of malicious code into the application, leading to data breaches, service disruption, or system compromise.
- Cargo Component Affected: Dependency Download,
crates.io
(or other registry) - Risk Severity: High
- Mitigation Strategies:
- Carefully review crate maintainers and reputation before using them.
- Use tools like
cargo audit
to scan dependencies for known vulnerabilities. - Pin dependency versions in
Cargo.toml
and regularly update with scrutiny. - Consider using alternative registries with stricter security measures if available and suitable.
Threat: Vulnerable Dependencies
- Description: The application depends on crates that contain known security vulnerabilities. Cargo is used to download and manage these dependencies, making the application vulnerable if these dependencies are exploited.
- Impact: Application compromise through exploitation of known vulnerabilities in dependencies, potentially leading to data breaches, service disruption, or system takeover.
- Cargo Component Affected: Dependency Management, Dependency Tree
- Risk Severity: High
- Mitigation Strategies:
- Regularly use
cargo audit
to identify vulnerable dependencies. - Keep dependencies updated to the latest secure versions.
- Monitor security advisories for crates used in the application.
- Replace vulnerable dependencies with secure alternatives if updates are unavailable.
- Regularly use
- Description: Crates can include
build.rs
files, which are executed as arbitrary Rust code by Cargo during the build process. Attackers can create malicious crates withbuild.rs
scripts designed to perform harmful actions on the build machine when Cargo executes them. - Impact: Compromise of the build environment, potentially leading to data breaches, malware infection of build machines, or injection of malicious code into the final application binaries.
- Cargo Component Affected: Build Process,
build.rs
- Risk Severity: Critical
- Mitigation Strategies:
- Exercise extreme caution when using crates from untrusted sources.
- Review
build.rs
scripts of dependencies before use, especially from less reputable sources. - Sandbox or isolate the build environment to limit the impact of malicious build scripts.
- Disable build script execution for untrusted dependencies if feasible (though might break functionality).