Reachable CVEs Aren’t Always Exploitable: How App Context Changes Risk

Summary
An explainer distinguishes code reachability from exploitability, showing how attacker-controlled input, configuration, privileges and deployment affect CVE risk. Lodash examples illustrate different outcomes; Aikido also describes its exploitability-analysis product.
Key points
- Reachability analysis checks whether code can call a vulnerable package or function; it does not establish that an attacker can exploit the flaw.
- Exploitability depends on factors such as attacker-controlled input, required configuration, privileges, user interaction, deployment context and existing mitigations.
- For CVE-2021-23337 in Lodash, an app that never calls _.template may be cleared by reachability analysis, while an app using developer-controlled template options may be reachable but less exploitable.
- An app that passes request data into the vulnerable template option may remain high priority because attacker input can reach it.
- The article says Lodash's fix for CVE-2021-23337 missed options.imports key names, which feed the same Function() constructor; that path later became CVE-2026-4800, fixed in Lodash 4.18.0.
- The article says exploitability verdicts reflect current code and deployment, and may change with new call sites, input paths, configuration or base images.
- Aikido says its CVE Exploitability Analysis reviews repository and container context and can recommend triage actions with written reasoning for reviewer approval.
Article Details
- Topic
- How application-specific exploitability analysis extends dependency reachability analysis, illustrated by Lodash vulnerabilities.
CVE
CVE-2021-23337CVE-2021-23337 is a command injection in the JavaScript utility library, Lodash. The vulnerability lives in lodash's _.template affecting versions before 4.17.21. lodash inserts a value into the function’s source codeCVE-2026-4800Lodash's 2021 fix added validation for the variable option but missed options.imports key names, which feed the same Function() constructor. That second path became CVE-2026-4800, fixed in lodash 4.18.0.
Vendors
Products
Aikido Agentcontext, including the Dockerfile, base image, distro, and how the container is running. It uses Aikido Agent, which reads how the vulnerable package is used in your code or container image and decides whetherCVE Exploitability AnalysisAikido’s CVE Exploitability Analysis reads the repository code along with linked container context, including the Dockerfile, base image, distro, and how the container is running. It uses Aikido Agent, which reads howLodashReachability vs exploitability in one lodash CVE
