ID CVE-2022-41903
Summary Git is distributed revision control system. `git log` can display commits in an arbitrary format using its `--format` specifiers. This functionality is also exposed to `git archive` via the `export-subst` gitattribute. When processing the padding operators, there is a integer overflow in `pretty.c::format_and_pad_commit()` where a `size_t` is stored improperly as an `int`, and then added as an offset to a `memcpy()`. This overflow can be triggered directly by a user running a command which invokes the commit formatting machinery (e.g., `git log --format=...`). It may also be triggered indirectly through git archive via the export-subst mechanism, which expands format specifiers inside of files within the repository during a git archive. This integer overflow can result in arbitrary heap writes, which may result in arbitrary code execution. The problem has been patched in the versions published on 2023-01-17, going back to v2.30.7. Users are advised to upgrade. Users who are unable to upgrade should disable `git archive` in untrusted repositories. If you expose git archive via `git daemon`, disable it by running `git config --global daemon.uploadArch false`.
References
Vulnerable Configurations
  • cpe:2.3:a:git-scm:git:1.0.0:-:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:1.0.0:-:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:1.3.0:-:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:1.3.0:-:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:1.4.0:-:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:1.4.0:-:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:1.4.1:-:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:1.4.1:-:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:1.4.2:-:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:1.4.2:-:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:1.4.3:-:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:1.4.3:-:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:1.4.4:-:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:1.4.4:-:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:1.5.0:-:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:1.5.0:-:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:1.5.1:-:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:1.5.1:-:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:1.5.2:-:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:1.5.2:-:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:1.5.3:-:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:1.5.3:-:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:1.5.5:rc1:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:1.5.5:rc1:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.31.0:-:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.31.0:-:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.31.0:rc0:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.31.0:rc0:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.31.0:rc1:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.31.0:rc1:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.31.0:rc2:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.31.0:rc2:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.31.1:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.31.1:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.31.2:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.31.2:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.31.3:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.31.3:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.31.4:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.31.4:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.32.0:-:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.32.0:-:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.32.0:rc0:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.32.0:rc0:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.32.0:rc1:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.32.0:rc1:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.32.0:rc2:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.32.0:rc2:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.32.0:rc3:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.32.0:rc3:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.32.1:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.32.1:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.32.2:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.32.2:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.32.3:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.32.3:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.32.4:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.32.4:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.33.0:-:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.33.0:-:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.33.0:rc0:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.33.0:rc0:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.33.0:rc1:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.33.0:rc1:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.33.0:rc2:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.33.0:rc2:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.33.1:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.33.1:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.33.2:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.33.2:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.33.3:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.33.3:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.33.4:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.33.4:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.34.0:rc0:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.34.0:rc0:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.34.0:rc1:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.34.0:rc1:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.34.0:rc2:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.34.0:rc2:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.34.2:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.34.2:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.34.3:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.34.3:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.34.4:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.34.4:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.35.0:-:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.35.0:-:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.35.0:rc0:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.35.0:rc0:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.35.0:rc1:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.35.0:rc1:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.35.0:rc2:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.35.0:rc2:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.35.1:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.35.1:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.35.2:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.35.2:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.35.3:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.35.3:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.35.4:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.35.4:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.36.0:-:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.36.0:-:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.36.1:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.36.1:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.36.2:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.36.2:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.37.4:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.37.4:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.38.0:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.38.0:*:*:*:*:*:*:*
  • cpe:2.3:a:git-scm:git:2.39.0:*:*:*:*:*:*:*
    cpe:2.3:a:git-scm:git:2.39.0:*:*:*:*:*:*:*
CVSS
Base: None
Impact:
Exploitability:
CWE CWE-190
CAPEC
  • Forced Integer Overflow
    This attack forces an integer variable to go out of range. The integer variable is often used as an offset such as size of memory allocation or similarly. The attacker would typically control the value of such variable and try to get it out of range. For instance the integer in question is incremented past the maximum possible value, it may wrap to become a very small, or negative number, therefore providing a very incorrect value which can lead to unexpected behavior. At worst the attacker can execute arbitrary code.
Access
VectorComplexityAuthentication
Impact
ConfidentialityIntegrityAvailability
Last major update 27-12-2023 - 10:15
Published 17-01-2023 - 23:15
Last modified 27-12-2023 - 10:15
Back to Top