CVE-2020-10770
Server-Side Request Forgery (SSRF) in A flaw was found in Keycloak before 13
Executive Summary
CVE-2020-10770 is a medium severity vulnerability affecting api-security. It is classified as Server-Side Request Forgery. Ensure your systems and dependencies are patched immediately to mitigate exposure risks.
Precogs AI Insight
"Keycloak contains a Server-Side Request Forgery (SSRF) vulnerability. Unauthenticated attackers manipulate OIDC discovery URLs or client registration parameters to force Keycloak to scan internal networks. Precogs API Security Engine intercepts unconstrained outbound HTTP requests."
What is this vulnerability?
CVE-2020-10770 is categorized as a medium Server-Side Request Forgery (SSRF) flaw with a CVSS base score of 5.3. Based on our vulnerability intelligence, this issue occurs when the application fails to securely handle untrusted data boundaries.
A flaw was found in Keycloak before 13.0.0, where it is possible to force the server to call out an unverified URL using the OIDC parameter request_uri. This flaw allows an attacker to use this parameter to execute a Server-side request forgery (SSRF) attack.
This architectural defect enables adversaries to bypass intended security controls, directly manipulating the application's execution state or data layer. Immediate strategic intervention is required.
Risk Assessment
| Metric | Value |
|---|---|
| CVSS Base Score | 5.3 (MEDIUM) |
| Vector String | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N |
| Published | December 15, 2020 |
| Last Modified | November 21, 2024 |
| Related CWEs | CWE-918, CWE-918 |
Impact on Systems
✅ Unauthorized Data Access: Attackers can bypass authorization controls to access other users' data or administrative endpoints.
✅ Account Takeover: Broken authentication or authorization may enable full account compromise without valid credentials.
✅ API Abuse: Exploiting this vulnerability enables mass data harvesting or destructive operations through unprotected API endpoints.
How to Fix and Mitigate CVE-2020-10770
- Apply Vendor Patches: Upgrade affected components to their latest, non-vulnerable versions immediately.
- Implement Input Validation: Ensure all user-supplied data is validated, sanitized, and type-checked before processing.
- Deploy Runtime Protection: Use Precogs continuous monitoring to detect exploitation attempts in real time.
- Audit Dependencies: Review and update all third-party libraries and transitive dependencies.
Defending with Precogs AI
Keycloak contains a Server-Side Request Forgery (SSRF) vulnerability. Unauthenticated attackers manipulate OIDC discovery URLs or client registration parameters to force Keycloak to scan internal networks. Precogs API Security Engine intercepts unconstrained outbound HTTP requests.
Use Precogs to continuously scan your codebase, binaries, APIs, and infrastructure for this vulnerability class and related attack patterns. Our AI-powered detection engine combines static analysis with threat intelligence to identify exploitable weaknesses before attackers do.
Vulnerability Code Signature
Attack Data Flow
| Stage | Detail |
|---|---|
| Source | User-supplied URL parameter |
| Vector | Server fetches the user-controlled URL |
| Sink | HTTP request library (e.g., fetch, axios) |
| Impact | Access to internal services, metadata endpoints, or port scanning |
Vulnerable Code Pattern
// ❌ VULNERABLE: Server-Side Request Forgery
app.get('/proxy', async (req, res) => {
const targetUrl = req.query.url;
// Taint sink: unvalidated outbound request
const response = await fetch(targetUrl);
res.send(await response.text());
});
Secure Code Pattern
// ✅ SECURE: Allowlist validation
const ALLOWED_DOMAINS = ['api.partner.com'];
app.get('/proxy', async (req, res) => {
const targetUrl = new URL(req.query.url);
if (!ALLOWED_DOMAINS.includes(targetUrl.hostname)) {
return res.status(403).send("Domain not allowed");
}
// Sanitized outbound request
const response = await fetch(targetUrl.href);
res.send(await response.text());
});
How Precogs Detects This
Precogs API Security Engine actively detects SSRF vulnerabilities by tracking unvalidated URL sinks and enforcing strict allowlist policies.\n