CVE-2021-23521
Link Following
This affects the package juce-framework/JUCE before 6.1.5. This vulnerability is triggered when a malicious archive is crafted with an entry containing a symbolic link. When extracted, the symbolic link is followed outside of the target dir allowing writing arbitrary files on the target host. In some cases, this can allow an attacker to execute arbitrary code. The vulnerable code is in the ZipFile::uncompressEntry function in juce_ZipFile.cpp and is executed when the archive is extracted upon calling uncompressTo() on a ZipFile object.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- Low
- Privileges needed
- Low
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
5.5
Link Following
This affects the package juce-framework/JUCE before 6.1.5. This vulnerability is triggered when a malicious archive is crafted with an entry containing a symbolic link. When extracted, the symbolic link is followed outside of the target dir allowing writing arbitrary files on the target host. In some cases, this can allow an attacker to execute arbitrary code. The vulnerable code is in the ZipFile::uncompressEntry function in juce_ZipFile.cpp and is executed when the archive is extracted upon calling uncompressTo() on a ZipFile object.
- Record
CVE-2021-23521- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
EUVDEUVD-2021-10488
5.5
This affects the package juce-framework/JUCE before 6.1.5. This vulnerability is triggered when a malicious archive is crafted with an entry containing a symbolic link. When extracted, the symbolic link is followed outside of the target dir allowing writing arbitrary files on the target host. In some cases, this can allow an attacker to execute arbitrary code. The vulnerable code is in the ZipFile::uncompressEntry function in juce_ZipFile.cpp and is executed when the archive is extracted upon calling uncompressTo() on a ZipFile object.
- Record
EUVD-2021-10488- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-03
GitHub AdvisoriesGHSA-cv9m-jw92-c3v3 No score
This affects the package juce-framework/JUCE before 6.1.5. This vulnerability is triggered when a...
This affects the package juce-framework/JUCE before 6.1.5. This vulnerability is triggered when a malicious archive is crafted with an entry containing a symbolic link. When extracted, the symbolic link is followed outside of the target dir allowing writing arbitrary files on the target host. In some cases, this can allow an attacker to execute arbitrary code. The vulnerable code is in the ZipFile::uncompressEntry function in juce_ZipFile.cpp and is executed when the archive is extracted upon calling uncompressTo() on a ZipFile object.
- Record
GHSA-cv9m-jw92-c3v3- Weakness
- CWE-59
- Updated
- 2026-11-02
NVD
5.5
This affects the package juce-framework/JUCE before 6.1.5. This vulnerability is triggered when a malicious archive is crafted with an entry containing a symbolic link. When extracted, the symbolic link is followed outside of the target dir allowing writing arbitrary files on the target host. In some cases, this can allow an attacker to execute arbitrary code. The vulnerable code is in the ZipFile::uncompressEntry function in juce_ZipFile.cpp and is executed when the archive is extracted upon calling uncompressTo() on a ZipFile object.
- Record
CVE-2021-23521- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N - CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - CVSS 2.0
- 4.6 Medium
AV:L/AC:L/Au:N/C:P/I:P/A:P - Weakness
- CWE-59
- Updated
- 2026-11-02
OSV
7.8
This affects the package juce-framework/JUCE before 6.1.5. This vulnerability is triggered when a malicious archive is crafted with an entry containing a symbolic link. When extracted, the symbolic link is followed outside of the target dir allowing writing arbitrary files on the target host. In some cases, this can allow an attacker to execute arbitrary code. The vulnerable code is in the ZipFile::uncompressEntry function in juce_ZipFile.cpp and is executed when the archive is extracted upon calling uncompressTo() on a ZipFile object.
- Record
CVE-2021-23521- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVDEBIAN-CVE-2021-23521
7.8
This affects the package juce-framework/JUCE before 6.1.5. This vulnerability is triggered when a malicious archive is crafted with an entry containing a symbolic link. When extracted, the symbolic link is followed outside of the target dir allowing writing arbitrary files on the target host. In some cases, this can allow an attacker to execute arbitrary code. The vulnerable code is in the ZipFile::uncompressEntry function in juce_ZipFile.cpp and is executed when the archive is extracted upon calling uncompressTo() on a ZipFile object.
- Record
DEBIAN-CVE-2021-23521- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
Show 4 moreShow less
OSVUBUNTU-CVE-2021-23521
5.5
This affects the package juce-framework/JUCE before 6.1.5. This vulnerability is triggered when a malicious archive is crafted with an entry containing a symbolic link. When extracted, the symbolic link is followed outside of the target dir allowing writing arbitrary files on the target host. In some cases, this can allow an attacker to execute arbitrary code. The vulnerable code is in the ZipFile::uncompressEntry function in juce_ZipFile.cpp and is executed when the archive is extracted upon calling uncompressTo() on a ZipFile object.
- Record
UBUNTU-CVE-2021-23521- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N - CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVCLSA-2023-1677095411 No score
git: Fix of 6 CVEs
- CVE-2022-41903: fix out-of-bounds write caused by integer overflow
- CVE-2021-40330: forbid newlines in host and path
- CVE-2022-39260: reject too long command line strings
- CVE-2021-23521: implement size checks for .gitattributes
- CVE-2023-22490: prevent arbitrary path exfiltration when using non-local transports
- CVE-2023-23946: prevent git-apply from writing behind newly created symbolic links
- Record
CLSA-2023-1677095411- Updated
- 2026-11-02
OSVCLSA-2023-1677095961 No score
git: Fix of 6 CVEs
- CVE-2022-41903: fix out-of-bounds write caused by integer overflow
- CVE-2021-40330: forbid newlines in host and path
- CVE-2022-39260: reject too long command line strings
- CVE-2021-23521: implement size checks for .gitattributes
- CVE-2023-22490: prevent arbitrary path exfiltration when using non-local transports
- CVE-2023-23946: prevent git-apply from writing behind newly created symbolic links
- Record
CLSA-2023-1677095961- Updated
- 2026-11-02
OSVCLSA-2023-1677096675 No score
Fix of 5 CVEs
- SECURITY UPDATE: out-of-bounds write caused by integer overflow
- debian/patches/CVE-2022-41903.patch: use 'size_t' instead of 'int' to track the string lengths and so allow >2GB input sizes.
- CVE-2022-41903
- t-mark-submodule-clean-test-as-known-failure.patch: mark submodule clean test as known failure and so pass 'make test'.
- SECURITY UPDATE: possible cross-protocol requests
- debian/patches/CVE-2021-40330.patch: forbid newlines in host and path.
- CVE-2021-40330
- SECURITY UPDATE: out-of-bounds write and possible RCE caused by
integer overflow
- debian/patches/CVE-2022-39260.patch: reject too long command line strings in split_cmdline().
- CVE-2022-39260
- SECURITY UPDATE: out-of-bounds write when reading an unreasonably
large .gitattributes file
- debian/patches/CVE-2021-23521.patch: implement line and overall size checks for .gitattributes files.
- CVE-2021-23521
- SECURITY UPDATE: possible write outside of the repository's
working directory
- debian/patches/CVE-2023-23946.patch: prevent git-apply from writing behind newly created symbolic links.
- CVE-2023-23946
- Record
CLSA-2023-1677096675- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
gitTuxCare:CentOS:8.4 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
git-allTuxCare:CentOS:8.4 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
git-coreTuxCare:CentOS:8.4 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
git-core-docTuxCare:CentOS:8.4 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
git-credential-libsecretTuxCare:CentOS:8.4 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
git-daemonTuxCare:CentOS:8.4 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
git-emailTuxCare:CentOS:8.4 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
git-guiTuxCare:CentOS:8.4 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
git-instawebTuxCare:CentOS:8.4 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
git-subtreeTuxCare:CentOS:8.4 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
Show 47 moreShow less
| Package | Affected | Fixed |
|---|---|---|
git-svnTuxCare:CentOS:8.4 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
gitkTuxCare:CentOS:8.4 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
gitwebTuxCare:CentOS:8.4 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
perl-GitTuxCare:CentOS:8.4 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
perl-Git-SVNTuxCare:CentOS:8.4 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
gitTuxCare:CentOS:8.5 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
git-allTuxCare:CentOS:8.5 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
git-coreTuxCare:CentOS:8.5 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
git-core-docTuxCare:CentOS:8.5 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
git-credential-libsecretTuxCare:CentOS:8.5 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
git-daemonTuxCare:CentOS:8.5 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
git-emailTuxCare:CentOS:8.5 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
git-guiTuxCare:CentOS:8.5 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
git-instawebTuxCare:CentOS:8.5 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
git-subtreeTuxCare:CentOS:8.5 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
git-svnTuxCare:CentOS:8.5 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
gitkTuxCare:CentOS:8.5 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
gitwebTuxCare:CentOS:8.5 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
perl-GitTuxCare:CentOS:8.5 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
perl-Git-SVNTuxCare:CentOS:8.5 From an advisory covering 6 CVEs |
before 2.27.0-1.el8.tuxcare.els1 | 2.27.0-1.el8.tuxcare.els1 |
gitTuxCare:Ubuntu:16.04 From an advisory covering 5 CVEs |
before 1:2.7.4-0ubuntu1.10+tuxcare.els1 | 1:2.7.4-0ubuntu1.10+tuxcare.els1 |
git-allTuxCare:Ubuntu:16.04 From an advisory covering 5 CVEs |
before 1:2.7.4-0ubuntu1.10+tuxcare.els1 | 1:2.7.4-0ubuntu1.10+tuxcare.els1 |
git-archTuxCare:Ubuntu:16.04 From an advisory covering 5 CVEs |
before 1:2.7.4-0ubuntu1.10+tuxcare.els1 | 1:2.7.4-0ubuntu1.10+tuxcare.els1 |
git-coreTuxCare:Ubuntu:16.04 From an advisory covering 5 CVEs |
before 1:2.7.4-0ubuntu1.10+tuxcare.els1 | 1:2.7.4-0ubuntu1.10+tuxcare.els1 |
git-cvsTuxCare:Ubuntu:16.04 From an advisory covering 5 CVEs |
before 1:2.7.4-0ubuntu1.10+tuxcare.els1 | 1:2.7.4-0ubuntu1.10+tuxcare.els1 |
git-daemon-runTuxCare:Ubuntu:16.04 From an advisory covering 5 CVEs |
before 1:2.7.4-0ubuntu1.10+tuxcare.els1 | 1:2.7.4-0ubuntu1.10+tuxcare.els1 |
git-daemon-sysvinitTuxCare:Ubuntu:16.04 From an advisory covering 5 CVEs |
before 1:2.7.4-0ubuntu1.10+tuxcare.els1 | 1:2.7.4-0ubuntu1.10+tuxcare.els1 |
git-docTuxCare:Ubuntu:16.04 From an advisory covering 5 CVEs |
before 1:2.7.4-0ubuntu1.10+tuxcare.els1 | 1:2.7.4-0ubuntu1.10+tuxcare.els1 |
git-elTuxCare:Ubuntu:16.04 From an advisory covering 5 CVEs |
before 1:2.7.4-0ubuntu1.10+tuxcare.els1 | 1:2.7.4-0ubuntu1.10+tuxcare.els1 |
git-emailTuxCare:Ubuntu:16.04 From an advisory covering 5 CVEs |
before 1:2.7.4-0ubuntu1.10+tuxcare.els1 | 1:2.7.4-0ubuntu1.10+tuxcare.els1 |
git-guiTuxCare:Ubuntu:16.04 From an advisory covering 5 CVEs |
before 1:2.7.4-0ubuntu1.10+tuxcare.els1 | 1:2.7.4-0ubuntu1.10+tuxcare.els1 |
git-manTuxCare:Ubuntu:16.04 From an advisory covering 5 CVEs |
before 1:2.7.4-0ubuntu1.10+tuxcare.els1 | 1:2.7.4-0ubuntu1.10+tuxcare.els1 |
git-mediawikiTuxCare:Ubuntu:16.04 From an advisory covering 5 CVEs |
before 1:2.7.4-0ubuntu1.10+tuxcare.els1 | 1:2.7.4-0ubuntu1.10+tuxcare.els1 |
git-svnTuxCare:Ubuntu:16.04 From an advisory covering 5 CVEs |
before 1:2.7.4-0ubuntu1.10+tuxcare.els1 | 1:2.7.4-0ubuntu1.10+tuxcare.els1 |
gitkTuxCare:Ubuntu:16.04 From an advisory covering 5 CVEs |
before 1:2.7.4-0ubuntu1.10+tuxcare.els1 | 1:2.7.4-0ubuntu1.10+tuxcare.els1 |
gitwebTuxCare:Ubuntu:16.04 From an advisory covering 5 CVEs |
before 1:2.7.4-0ubuntu1.10+tuxcare.els1 | 1:2.7.4-0ubuntu1.10+tuxcare.els1 |
juceDebian:12 |
before 6.1.5~ds0-1 | 6.1.5~ds0-1 |
juceDebian:13 |
before 6.1.5~ds0-1 | 6.1.5~ds0-1 |
juceDebian:14 |
before 6.1.5~ds0-1 | 6.1.5~ds0-1 |
juceUbuntu:16.04:LTS |
All versions, plus listed versions 4.1.0+repack-3 |
None known |
juceUbuntu:18.04:LTS |
All versions, plus listed versions 4.3.0~repack-15.2.0~repack-15.2.0~repack-25.2.0~repack-35.2.1~repack-15.2.1~repack-2 |
None known |
juceUbuntu:20.04:LTS |
All versions, plus listed versions 5.4.4~repack0-35.4.5~ds0-15.4.6~ds0-15.4.7~ds0-1 |
None known |
juceUbuntu:22.04:LTS |
All versions, plus listed versions 5.4.7~ds0-26.1.3~ds0-16.1.4~ds0-16.1.5~ds0-1 |
None known |
juceUbuntu:24.04:LTS |
All versions, plus listed versions 7.0.5+ds-17.0.5+ds-1build17.0.5+ds-1build27.0.5+ds-2 |
None known |
juceUbuntu:25.10 |
All versions, plus listed versions 8.0.6+ds-2 |
None known |
juceUbuntu:26.10 |
All versions, plus listed versions 8.0.12+ds-18.0.13+ds-18.0.14+ds-1 |
None known |
juceUbuntu:26.04:LTS |
All versions, plus listed versions 8.0.6+ds-28.0.12+ds-1 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| aliases, published | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2021-23521 is a medium vulnerability (CVSS 5.5) in Juce, published January 31, 2022. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.54%, the 45th percentile. Fixed in juce 6.1.5~ds0-1.
References
github.com/juce-framework/JUCE/commit/2e874e80cba0152201aff6a4d0dc407997d10a7f
snyk.io/vuln/SNYK-UNMANAGED-JUCEFRAMEWORKJUCE-2388608
nvd.nist.gov/vuln/detail/CVE-2021-23521
github.com/advisories/GHSA-cv9m-jw92-c3v3
errata.cloudlinux.com/centos8.4-els/CLSA-2023-1677095411.html
errata.cloudlinux.com/centos8.5-els/CLSA-2023-1677095961.html