
Cloud Vulnerability DB
A community-led vulnerabilities database
Deep-Diff-Forge (DDF) reviews a patch so that a person or an automated gate can decide whether to apply it. In the cases below, DDF showed one change while git apply makes a different one. An attacker who writes the patch can use this to get a change to a sensitive file, such as a CI workflow or an executable script, reviewed as a harmless one.
copy to header. Git takes a copy's new path from its last copy to line. DDF reviewed the copy under the diff --git or +++ name instead. For example, a section diff --git a/README.md b/docs/README-copy.md with copy to .github/workflows/pwn.yml and a hunk was reviewed as a documentation copy (exit 0, in the CLI, rpc and the MCP review_outline tool). git apply wrote .github/workflows/pwn.yml with the hunk's content.---/+++ names (high). If -p1 strips nothing usable from a ---/+++ name in a Git section, Git treats it as no name and uses the diff --git path. For example, diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml with --- README / +++ README changed the workflow, but DDF reviewed README.Binary files … differ or GIT binary patch line; DDF read on. For example, diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml with an index line, Binary files … differ, then copy from docs/logo.png / copy to docs/logo-copy.png was reviewed as a binary copy of a logo, while git apply rewrote the workflow from the index line's blob (which only has to be in the local object database, for example from any fetched branch). A rename from/rename to pair after the binary line did the same, and mode lines there showed a mode change Git never makes.rename to/copy to name only up to a carriage return, so rename to build.rs\rdocs/notes.md created build.rs while DDF showed the whole line (with a control-character hazard, but not the build-script signal).index line as the old mode. DDF read the first. So old mode 100755 / new mode 100755 / index … 100644 made a script executable, but DDF showed no mode change.
All of these are in every release up to and including v0.8.1. This includes the 0.2.0 crates on crates.io. The results above were measured on v0.8.0 and v0.8.1 against Git 2.56.Fixed in v0.8.2 (the GitHub release):
copy to path, which is where Git writes it.---/+++ name that -p1 strips to nothing.index line that has a mode.---/+++ or hunk after it is refused. So are GIT binary patch with trailing text, Binary files without differ, and a binary patch with no literal or delta line.+++ name that differs from the rename to or copy to name;+++ name, or a deleted file's --- name, that differs from the diff --git name;---/+++ pair before a section's first hunk.
The differential test against git apply now compares --summary as well as --numstat. It inserts each kind of extended header at every position in its sample sections.
v0.8.2 is not yet published to crates.io. Until it is, build from the v0.8.2 tag or use the release binaries.git apply --summary --numstat on the same patch, and refuse it if the paths or modes differ from what DDF reviewed.copy from/copy to headers, ---/+++ names without a directory prefix inside a diff --git section, any extended header after a Binary files or GIT binary patch line, or a control character in a move name.docs/PRODUCTION_READINESS.md, assessments of 2026-11-09 (findings N1–N3 on v0.8.1; F1–F2 on the untagged 0.8.2).Source: NVD
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."