CVE-2026-110240
Lancet through 2.3.9 contains an SSRF protection bypass vulnerability in netutil.IsInternalIP that misclassifies IPv6 private, link-local, CGNAT and transition addresses as external. Attackers can supply hostnames resolving to these address forms, including NAT64, 6to4 or Teredo embedding internal IPv4, to reach internal services or cloud metadata endpoints.
CVSS
- Base score
- 6.3
- Version
- 4.0
- Vector
- CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Exploitation probability (EPSS)
- Probability of exploitation in the next 30 days
- 0.33 %
- Percentile among all scored CVEs
- 25
- Score date
- 10/22/2026
EPSS (Exploit Prediction Scoring System, FIRST) estimates how likely a vulnerability is to be exploited in the wild within 30 days. It complements CVSS (impact) and CISA KEV (confirmed exploitation).
ATT&CK techniques
How this vulnerability is exploited and what the attacker gains, in MITRE ATT&CK terms.
- Exploitation
T1190Exploit Public-Facing Applicationinitial access90 % - Primary impact
T1090Proxycommand and control80 % - Secondary impact
T1552.005Cloud Instance Metadata APIcredential access60 %
Vector AV:N/PR:N/UI:N indica explotación remota sin credenciales; el bypass SSRF en IsInternalIP permite alcanzar servicios internos y endpoints de metadatos cloud.
Inferred by our analysis agent from the official description, CVSS vector and CWE, and checked by a supervisor. May contain errors.
ATT&CK mitigations that cover these techniques
Affected technologies (1)
⚠ AI-inferred from the description — NVD hasn't analyzed this CVE yet, these aren't verified CPEs.
CWEs
- CWE-918
References
Show 8 references
- https://github.com/duke-git/lancet
- https://github.com/duke-git/lancet/blob/v1.4.6/netutil/net.go#L158-L170
- https://github.com/duke-git/lancet/blob/v2.3.9/netutil/net.go#L192-L205
- https://github.com/duke-git/lancet/commit/835111c832939a85416d686a1e99d5fe7060c9b4
- https://github.com/duke-git/lancet/issues/356
- https://github.com/duke-git/lancet/pull/357
- https://www.vulncheck.com/advisories/lancet-through-2.3.9-ssrf-protection-bypass-via-netutil-isinternalip
- https://github.com/duke-git/lancet/issues/356
Raw JSON (NVD)
Show
{
"id": "CVE-2026-110240",
"cveTags": [],
"metrics": {
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2026-110240",
"role": "CISA Coordinator",
"options": [
{
"exploitation": "poc"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"version": "2.0.3",
"timestamp": "2026-10-13T19:24:08.615533Z"
}
}
],
"cvssMetricV31": [
{
"type": "Secondary",
"source": "disclosure@vulncheck.com",
"cvssData": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 4.8,
"attackVector": "NETWORK",
"baseSeverity": "MEDIUM",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N",
"integrityImpact": "LOW",
"userInteraction": "NONE",
"attackComplexity": "HIGH",
"availabilityImpact": "NONE",
"privilegesRequired": "NONE",
"confidentialityImpact": "LOW"
},
"impactScore": 2.5,
"exploitabilityScore": 2.2
}
],
"cvssMetricV40": [
{
"type": "Secondary",
"source": "disclosure@vulncheck.com",
"cvssData": {
"Safety": "NOT_DEFINED",
"version": "4.0",
"Recovery": "NOT_DEFINED",
"baseScore": 6.3,
"Automatable": "NOT_DEFINED",
"attackVector": "NETWORK",
"baseSeverity": "MEDIUM",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
"exploitMaturity": "NOT_DEFINED",
"providerUrgency": "NOT_DEFINED",
"userInteraction": "NONE",
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"privilegesRequired": "NONE",
"subIntegrityImpact": "LOW",
"vulnIntegrityImpact": "NONE",
"integrityRequirement": "NOT_DEFINED",
"modifiedAttackVector": "NOT_DEFINED",
"subAvailabilityImpact": "NONE",
"vulnAvailabilityImpact": "NONE",
"availabilityRequirement": "NOT_DEFINED",
"modifiedUserInteraction": "NOT_DEFINED",
"modifiedAttackComplexity": "NOT_DEFINED",
"subConfidentialityImpact": "LOW",
"vulnConfidentialityImpact": "NONE",
"confidentialityRequirement": "NOT_DEFINED",
"modifiedAttackRequirements": "NOT_DEFINED",
"modifiedPrivilegesRequired": "NOT_DEFINED",
"modifiedSubIntegrityImpact": "NOT_DEFINED",
"modifiedVulnIntegrityImpact": "NOT_DEFINED",
"vulnerabilityResponseEffort": "NOT_DEFINED",
"modifiedSubAvailabilityImpact": "NOT_DEFINED",
"modifiedVulnAvailabilityImpact": "NOT_DEFINED",
"modifiedSubConfidentialityImpact": "NOT_DEFINED",
"modifiedVulnConfidentialityImpact": "NOT_DEFINED"
}
}
]
},
"affected": [
{
"source": "disclosure@vulncheck.com",
"affectedData": [
{
"repo": "https://github.com/duke-git/lancet",
"vendor": "duke-git",
"product": "lancet",
"versions": [
{
"status": "affected",
"version": "2.1.2",
"versionType": "semver",
"lessThanOrEqual": "2.3.9"
}
],
"packageURL": "pkg:golang/github.com/duke-git/lancet/v2",
"defaultStatus": "unaffected"
},
{
"repo": "https://github.com/duke-git/lancet",
"vendor": "duke-git",
"product": "lancet",
"versions": [
{
"status": "affected",
"version": "1.3.1",
"versionType": "semver",
"lessThanOrEqual": "1.4.6"
}
],
"packageURL": "pkg:golang/github.com/duke-git/lancet",
"defaultStatus": "unaffected"
}
]
}
],
"published": "2026-10-13T19:18:49.350",
"references": [
{
"url": "https://github.com/duke-git/lancet",
"source": "disclosure@vulncheck.com"
},
{
"url": "https://github.com/duke-git/lancet/blob/v1.4.6/netutil/net.go#L158-L170",
"source": "disclosure@vulncheck.com"
},
{
"url": "https://github.com/duke-git/lancet/blob/v2.3.9/netutil/net.go#L192-L205",
"source": "disclosure@vulncheck.com"
},
{
"url": "https://github.com/duke-git/lancet/commit/835111c832939a85416d686a1e99d5fe7060c9b4",
"source": "disclosure@vulncheck.com"
},
{
"url": "https://github.com/duke-git/lancet/issues/356",
"source": "disclosure@vulncheck.com"
},
{
"url": "https://github.com/duke-git/lancet/pull/357",
"source": "disclosure@vulncheck.com"
},
{
"url": "https://www.vulncheck.com/advisories/lancet-through-2.3.9-ssrf-protection-bypass-via-netutil-isinternalip",
"source": "disclosure@vulncheck.com"
},
{
"url": "https://github.com/duke-git/lancet/issues/356",
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"
}
],
"vulnStatus": "Awaiting Analysis",
"weaknesses": [
{
"type": "Secondary",
"source": "disclosure@vulncheck.com",
"description": [
{
"lang": "en",
"value": "CWE-918"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "Lancet through 2.3.9 contains an SSRF protection bypass vulnerability in netutil.IsInternalIP that misclassifies IPv6 private, link-local, CGNAT and transition addresses as external. Attackers can supply hostnames resolving to these address forms, including NAT64, 6to4 or Teredo embedding internal IPv4, to reach internal services or cloud metadata endpoints."
}
],
"lastModified": "2026-10-13T20:17:28.220",
"sourceIdentifier": "disclosure@vulncheck.com"
}