ID CVE-2022-36114
Summary Cargo is a package manager for the rust programming language. It was discovered that Cargo did not limit the amount of data extracted from compressed archives. An attacker could upload to an alternate registry a specially crafted package that extracts way more data than its size (also known as a "zip bomb"), exhausting the disk space on the machine using Cargo to download the package. Note that by design Cargo allows code execution at build time, due to build scripts and procedural macros. The vulnerabilities in this advisory allow performing a subset of the possible damage in a harder to track down way. Your dependencies must still be trusted if you want to be protected from attacks, as it's possible to perform the same attacks with build scripts and procedural macros. The vulnerability is present in all versions of Cargo. Rust 1.64, to be released on September 22nd, will include a fix for it. Since the vulnerability is just a more limited way to accomplish what a malicious build scripts or procedural macros can do, we decided not to publish Rust point releases backporting the security fix. Patch files are available for Rust 1.63.0 are available in the wg-security-response repository for people building their own toolchain. We recommend users of alternate registries to excercise care in which package they download, by only including trusted dependencies in their projects. Please note that even with these vulnerabilities fixed, by design Cargo allows arbitrary code execution at build time thanks to build scripts and procedural macros: a malicious dependency will be able to cause damage regardless of these vulnerabilities. crates.io implemented server-side checks to reject these kinds of packages years ago, and there are no packages on crates.io exploiting these vulnerabilities. crates.io users still need to excercise care in choosing their dependencies though, as the same concerns about build scripts and procedural macros apply here.
References
Vulnerable Configurations
  • cpe:2.3:a:rust-lang:cargo:0.1.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.1.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.2.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.2.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.3.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.3.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.4.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.4.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.5.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.5.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.6.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.6.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.6.1:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.6.1:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.6.5:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.6.5:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.7.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.7.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.8.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.8.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.9.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.9.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.10.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.10.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.11.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.11.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.12.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.12.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.13.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.13.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.14.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.14.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.15.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.15.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.16.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.16.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.17.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.17.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.18.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.18.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.19.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.19.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.20.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.20.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.21.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.21.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.21.1:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.21.1:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.22.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.22.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.23.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.23.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.24.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.24.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.25.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.25.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.26.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.26.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.27.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.27.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.28.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.28.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.29.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.29.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.30.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.30.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.31.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.31.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.31.1:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.31.1:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.32.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.32.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.33.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.33.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.34.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.34.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.35.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.35.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.36.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.36.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.37.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.37.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.38.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.38.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.39.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.39.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.40.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.40.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.41.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.41.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.42.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.42.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.43.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.43.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.43.1:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.43.1:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.44.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.44.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.44.1:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.44.1:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.45.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.45.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.46.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.46.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.46.1:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.46.1:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.47.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.47.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.49.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.49.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.50.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.50.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.50.1:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.50.1:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.51.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.51.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.52.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.52.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.53.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.53.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.54.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.54.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.55.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.55.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.56.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.56.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.57.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.57.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.58:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.58:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.58.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.58.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.59.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.59.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.60.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.60.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.61.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.61.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.61.1:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.61.1:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.62.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.62.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.63.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.63.0:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.63.1:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.63.1:*:*:*:*:rust:*:*
  • cpe:2.3:a:rust-lang:cargo:0.64.0:*:*:*:*:rust:*:*
    cpe:2.3:a:rust-lang:cargo:0.64.0:*:*:*:*:rust:*:*
CVSS
Base: None
Impact:
Exploitability:
CWE CWE-400
CAPEC
  • XML Entity Expansion
    An attacker submits an XML document to a target application where the XML document uses nested entity expansion to produce an excessively large output XML. XML allows the definition of macro-like structures that can be used to simplify the creation of complex structures. However, this capability can be abused to create excessive demands on a processor's CPU and memory. A small number of nested expansions can result in an exponential growth in demands on memory.
  • Regular Expression Exponential Blowup
    An adversary may execute an attack on a program that uses a poor Regular Expression(Regex) implementation by choosing input that results in an extreme situation for the Regex. A typical extreme situation operates at exponential time compared to the input size. This is due to most implementations using a Nondeterministic Finite Automaton(NFA) state machine to be built by the Regex algorithm since NFA allows backtracking and thus more complex regular expressions. The algorithm builds a finite state machine and based on the input transitions through all the states until the end of the input is reached. NFA engines may evaluate each character in the input string multiple times during the backtracking. The algorithm tries each path through the NFA one by one until a match is found; the malicious input is crafted so every path is tried which results in a failure. Exploitation of the Regex results in programs hanging or taking a very long time to complete. These attacks may target various layers of the Internet due to regular expressions being used in validation.
  • XML Ping of the Death
    An attacker initiates a resource depletion attack where a large number of small XML messages are delivered at a sufficiently rapid rate to cause a denial of service or crash of the target. Transactions such as repetitive SOAP transactions can deplete resources faster than a simple flooding attack because of the additional resources used by the SOAP protocol and the resources necessary to process SOAP messages. The transactions used are immaterial as long as they cause resource utilization on the target. In other words, this is a normal flooding attack augmented by using messages that will require extra processing on the target.
Access
VectorComplexityAuthentication
Impact
ConfidentialityIntegrityAvailability
Last major update 14-08-2023 - 17:15
Published 14-09-2022 - 18:15
Last modified 14-08-2023 - 17:15
Back to Top