Skip to content
Fencer Intel
low —

GHSA-763j-3p5v-jfc6 json

androidqf: APK download Path Traversal in device APK paths

published 5mo ago modified 4mo ago also GO-2026-5206

cvss
—
not scored
cisa kev
Not listed
not in CISA's catalog
epss
—
no score, EPSS covers CVEs only
public exploits
0
none known

Summary

### Summary During device acquisition, `getPathToLocalCopy()` constructs local filesystem paths for downloaded APKs using a filename component extracted by `extractFileName()`. The extraction splits on `==/` and takes the remainder without sanitization. If a compromised device returns a crafted APK path containing traversal sequences, `filepath.Join` resolves them, allowing the file to be written outside the intended `apks/` directory.

Practical exploitability is limited because Android enforces strict package path formats under `/data/app/` and does not allow apps to register paths containing traversal sequences. Rated Informational as a defense-in-depth concern.

### Impact An attacker with control of the connected device could potentially write files outside the expected output directory on the acquisition workstation, leading to arbitrary file overwrite with attacker-controlled content.

### Patched version [1.8.3](https://github.com/mvt-project/androidqf/releases/tag/v1.8.3)

### Credits - This issue was identified during a security assessment conducted by 0xche. - An additional vulnerability was independently identified by @0x0v1

Patch / fix

  • go github.com/mvt-project/androidqf 1.8.3

Is GHSA-763j-3p5v-jfc6 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.

Check with Fencer

Affected packages

ecosystem package affected fixed in
go github.com/mvt-project/androidqf
<1.8.3
1.8.3

Classification

Weakness
  • CWE-22 Improper Limitation of a Pathname to a Restricted Directory

References

Sources

Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.