CVE-2023-39070
An issue in Cppcheck 2.12 dev allows a local attacker to execute arbitrary code via the...
An issue in Cppcheck 2.12 dev allows a local attacker to execute arbitrary code via the removeContradiction parameter in token.cpp:1934.
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
- High
- Availability
- High
Exploit likelihood
What each source reports
NVD Score used
7.8
An issue in Cppcheck 2.12 dev allows a local attacker to execute arbitrary code via the removeContradiction parameter in token.cpp:1934.
- Record
CVE-2023-39070- 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 - Weakness
- CWE-416
- Updated
- 2026-11-02
CVE List No score
An issue in Cppcheck 2.12 dev allows a local attacker to execute arbitrary code via the removeContradiction parameter in token.cpp:1934.
- Record
CVE-2023-39070- Updated
- 2026-11-02
EUVDEUVD-2023-42817 No score
An issue in Cppcheck 2.12 dev allows a local attacker to execute arbitrary code via the removeContradiction parameter in token.cpp:1934.
- Record
EUVD-2023-42817- Updated
- 2026-11-03
GitHub AdvisoriesGHSA-8mw5-fw53-vq24
7.8
An issue in Cppcheck 2.12 dev allows a local attacker to execute arbitrary code via the...
An issue in Cppcheck 2.12 dev allows a local attacker to execute arbitrary code via the removeContradiction parameter in token.cpp:1934.
- Record
GHSA-8mw5-fw53-vq24- 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 - Weakness
- CWE-416
- Updated
- 2026-11-02
OSVAZL-43537
7.8
CVE-2023-39070 affecting package cppcheck 2.7-2
An issue in Cppcheck 2.12 dev allows a local attacker to execute arbitrary code via the removeContradiction parameter in token.cpp:1934.
- Record
AZL-43537- 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
OSVAZL-45396
7.8
CVE-2023-39070 affecting package cppcheck for versions less than 2.18.3-1
An issue in Cppcheck 2.12 dev allows a local attacker to execute arbitrary code via the removeContradiction parameter in token.cpp:1934.
- Record
AZL-45396- 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 5 moreShow less
OSVDEBIAN-CVE-2023-39070
7.8
An issue in Cppcheck 2.12 dev allows a local attacker to execute arbitrary code via the removeContradiction parameter in token.cpp:1934.
- Record
DEBIAN-CVE-2023-39070- 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
OSVUBUNTU-CVE-2023-39070
7.8
An issue in Cppcheck 2.12 dev allows a local attacker to execute arbitrary code via the removeContradiction parameter in token.cpp:1934.
- Record
UBUNTU-CVE-2023-39070- 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
OSV No score
An issue in Cppcheck 2.12 dev allows a local attacker to execute arbitrary code via the removeContradiction parameter in token.cpp:1934.
- Record
CVE-2023-39070- Updated
- 2026-11-02
OSVopenSUSE-SU-2023:0413-1 No score
Security update for cppcheck
This update for cppcheck fixes the following issues:
-
CVE-2023-39070: Fixed heap use-after-free in removeContradiction() (boo#1215233)
-
update to 2.12.1:
- Support importing projects with project-name
-
update to 2.12.0:
- uselessOverride finds overriding functions that either duplicate code from or delegate back to the base class implementation
- knownPointerToBool finds pointer to bool conversions that are always true or false
- truncLongCastAssignment and truncLongCastReturn check additional types, including float/double/long double
- duplInheritedMember also reports duplicated member functions
- constParameter*/constVariable* checks find more instances of pointers/references that can be const, e.g. when calling library functions
- Write how many checkers was activated after a run
- Added --checkers-report that can be used to generate a report in a file that shows what checkers was activated and disabled
- The qmake build system has been deprecated and will be removed in a future version.
- Command-line option '--template
-
update to 2.11:
- pop_back on empty container is UB
- Improve useStlAlgorithm check to handle many more conditions in the loop for any_of, all_of and none_of algorithms
- ValueFlow can evaluate the return value of functions even when conditionals are used
- ValueFlow will now forward the container sizes being returned from a function
- ValueFlow can infer possible values from possible symbolic values
- Improve valueflow after pushing to container
- The new option --check-level= has been added that controls how much checking is made by Cppcheck. The default checking level is 'normal'. If you feel that you can wait longer on results you can use --check-level=exhaustive.
- It is no longer necessary to run '--check-config' to get detailed 'missingInclude' and 'missingIncludeSystem' messages. They will always be issued in the regular analysis if 'missingInclude' is enabled.
- 'missingInclude' and 'missingIncludeSystem' are reported with '-j' is > 1 and processes are used in the backend (default in non-Windows binaries)
- 'missingInclude' and 'missingIncludeSystem' will now cause the '--error-exitcode' to be applied
- '--enable=information' will no longer implicitly enable 'missingInclude' starting with 2.16. Please enable it explicitly if you require it.
- The
constParameterandconstVariablechecks have been split into 3 different IDs based on if the variable is a pointer, a reference, or local. The different IDs will allow users to suppress different const warning based on variable type. constParameterconstParameterReferenceconstParameterPointerconstVariableconstVariableReferenceconstVariablePointer- More command-line parameters will now check if the given integer argument is actually valid. Several other internal string-to-integer conversions will now be error checked.
- scanning projects (with -j1) will now defer the analysis of markup files until the whole code was processed
-
update to 2.10.3:
- SymbolDatabase: Fix handling of function pointer arguments
-
update to 2.10.2:
-
GUI: Set proper title for compliance report dialog
-
GUI: Generate compliance report
-
Tokenizer: tweaked simplification of function pointers
-
fix whole program analysis
-
Import Project: Fix problem with define value with space
-
Fix execution of executable addons from GUI
-
fix for windows installer, no other changes
-
Fixes when importing AST from clang
-
comments can be added at end of suppression in suppressions file is similar to GCC. If you want to get warnings in the old
-
Added Cppcheck annotations cppcheck_low(VALUE) and
-
Added API01-C: Avoid laying out strings in memory directly
-
Duplicate expression for condition and assignment: if (x==3) x=3;
-
Patch was…
-
- Record
openSUSE-SU-2023:0413-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2024:13526-1 No score
cppcheck-2.12.1-3.1 on GA media
These are all security issues fixed in the cppcheck-2.12.1-3.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2024:13526-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
cppcheckAzure Linux:2 |
through 2.7-2 | None known |
cppcheckAzure Linux:3 |
before 2.18.3-1 | 2.18.3-1 |
cppcheckDebian:12 |
All versions, plus listed versions 2.10-22.11-12.11-22.11-32.12.0-1 Show 17 moreShow less2.13.0-12.13.0-22.14.0-12.15.0-12.16.0-12.17.1-12.17.1-22.18.0-12.18.0-22.18.0-2~bpo13+12.19.0-12.19.0-22.19.0-32.20.0-12.20.0-22.21.0-12.22.0-1 |
None known |
cppcheckDebian:13 |
All versions, plus listed versions 2.17.1-22.18.0-12.18.0-22.18.0-2~bpo13+12.19.0-1 Show 6 moreShow less2.19.0-22.19.0-32.20.0-12.20.0-22.21.0-12.22.0-1 |
None known |
cppcheckDebian:14 |
All versions, plus listed versions 2.17.1-22.18.0-12.18.0-22.18.0-2~bpo13+12.19.0-1 Show 6 moreShow less2.19.0-22.19.0-32.20.0-12.20.0-22.21.0-12.22.0-1 |
None known |
cppcheckUbuntu:14.04:LTS |
All versions, plus listed versions 1.60.1-11.61-1 |
None known |
cppcheckUbuntu:16.04:LTS |
All versions, plus listed versions 1.69-1build11.70-21.71-11.72-1 |
None known |
cppcheckUbuntu:18.04:LTS |
All versions, plus listed versions 1.80-11.81-11.81-1build11.82-1 |
None known |
cppcheckUbuntu:20.04:LTS |
All versions, plus listed versions 1.88-11.89-41.90-11.90-21.90-31.90-41.90-4build1 |
None known |
cppcheckUbuntu:22.04:LTS |
All versions, plus listed versions 2.3-12.6-12.6-22.7-1 |
None known |
Show 7 moreShow less
| Package | Affected | Fixed |
|---|---|---|
cppcheckUbuntu:24.04:LTS |
All versions, plus listed versions 2.11-32.12.0-12.13.0-22.13.0-2ubuntu12.13.0-2ubuntu22.13.0-2ubuntu3 |
None known |
cppcheckUbuntu:25.10 |
All versions, plus listed versions 2.17.1-12.17.1-22.17.1-2build1 |
None known |
cppcheckUbuntu:26.10 |
All versions, plus listed versions 2.19.0-32.20.0-22.21.0-1 |
None known |
cppcheckUbuntu:26.04:LTS |
All versions, plus listed versions 2.17.1-2build12.18.0-22.19.0-3 |
None known |
cppcheckSUSE:Package Hub 15 SP5 |
before 2.12.1-bp155.2.3.1 | 2.12.1-bp155.2.3.1 |
cppcheckopenSUSE:Leap 15.5 |
before 2.12.1-bp155.2.3.1 | 2.12.1-bp155.2.3.1 |
cppcheckopenSUSE:Tumbleweed |
before 2.12.1-3.1 | 2.12.1-3.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2023-39070 is a high vulnerability (CVSS 7.8) in Cppchecksolutions Cppcheck, published September 11, 2023. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.28%, the 20th percentile. Fixed in cppcheck 2.18.3-1.
References
sourceforge.net/p/cppcheck/discussion/general/thread/fa43fb8ab1
nvd.nist.gov/vuln/detail/CVE-2023-39070
github.com/advisories/GHSA-8mw5-fw53-vq24
github.com/CVEProject/cvelistV5/tree/main/cves/2023/39xxx/CVE-2023-39070.json
security-tracker.debian.org/tracker/CVE-2023-39070
ubuntu.com/security/CVE-2023-39070
Left out here: the rest of 1 source description. The JSON record has them.