webfinger.js is vulnerable to Blind SSRF attacks through localhost
webfinger.js is a TypeScript-based WebFinger client that runs in both browsers and Node.js environments. In versions 2.8.0 and below, the lookup function accepts user addresses for account checking. However, the ActivityPub specification requires preventing access to localhost services in production. This library does not prevent localhost access, only checking for hosts that start with "localhost" and end with a port. Users can exploit this by creating servers that send GET requests with controlled host, path, and port parameters to query services on the instance's host or local network, enabling blind SSRF attacks. This is fixed in version 2.8.1.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2025-54590
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 7 Nov 2026, 09:05 UTC · Revision 1
Source evidence
webfinger.js is vulnerable to Blind SSRF attacks through localhost
core-osv · Original sourcePublished 1 Aug 2025, 18:03 UTC
webfinger.js is a TypeScript-based WebFinger client that runs in both browsers and Node.js environments. In versions 2.8.0 and below, the lookup function accepts user addresses for account checking. However, the ActivityPub specification requires preventing access to localhost services in production. This library does not prevent localhost access, only checking for hosts that start with "localhost" and end with a port. Users can exploit this by creating servers that send GET requests with controlled host, path, and port parameters to query services on the instance's host or local network, enabling blind SSRF attacks. This is fixed in version 2.8.1.
osv:CVE-2025-54590
Complete source record
{
"id": "a1f36afe4440b585207ce8a50722370f424a59ebdf4c7e9608dcd3d9657a5f1a",
"url": "https://osv.dev/vulnerability/CVE-2025-54590",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "webfinger.js is vulnerable to Blind SSRF attacks through localhost",
"summary": "webfinger.js is a TypeScript-based WebFinger client that runs in both browsers and Node.js environments. In versions 2.8.0 and below, the lookup function accepts user addresses for account checking. However, the ActivityPub specification requires preventing access to localhost services in production. This library does not prevent localhost access, only checking for hosts that start with \"localhost\" and end with a port. Users can exploit this by creating servers that send GET requests with controlled host, path, and port parameters to query services on the instance's host or local network, enabling blind SSRF attacks. This is fixed in version 2.8.1.",
"evidence": "osv:CVE-2025-54590",
"products": [],
"severity": "medium",
"structured": {
"id": "CVE-2025-54590",
"aliases": [
"CVE-2025-54590",
"GHSA-8xq3-w9fx-74rv"
],
"metrics": [
{
"type": "CVSS_V4",
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/silverbucket/webfinger.js",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "c01379e671123d03732a5b5568b34256c79aad02"
},
{
"fixed": "b5f2f2c957297d25f4d76072963fccaee2e3095a"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "2.8.1"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"fixed": "b5f2f2c957297d25f4d76072963fccaee2e3095a"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "c01379e671123d03732a5b5568b34256c79aad02"
}
],
"source": "REFERENCES_TAG",
"original_tag": "v2.8.1"
}
]
}
}
],
"versions": [
"v2.8.0",
"v2.1.1",
"v2.7.1",
"v2.7.0",
"v2.6.6",
"v2.6.5",
"v2.6.4",
"v2.6.3",
"v2.6.2",
"v2.6.1",
"v2.6.0",
"v2.5.0",
"v2.4.2",
"v2.4.1",
"v2.4.0",
"v2.3.2",
"v2.3.1",
"v2.3.0",
"v2.2.1",
"v2.2.0",
"v2.1.4",
"v2.1.3",
"v2.1.2",
"v2.1.0",
"v2.0.5",
"v2.0.4",
"v2.0.3",
"v2.0.2",
"v2.0.1",
"v2.0.0",
"v1.1.1",
"v1.0.2",
"v1.0.1",
"v0.1.5",
"v0.1.4",
"v0.1.3",
"v0.1.2"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-54590.json"
}
}
],
"modified": "2026-10-28T02:30:50.199641675Z",
"provider": "osv",
"references": [
"https://github.com/silverbucket/webfinger.js/releases/tag/v2.8.1",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/54xxx/CVE-2025-54590.json",
"https://github.com/silverbucket/webfinger.js/security/advisories/GHSA-8xq3-w9fx-74rv",
"https://nvd.nist.gov/vuln/detail/CVE-2025-54590",
"https://github.com/silverbucket/webfinger.js/commit/b5f2f2c957297d25f4d76072963fccaee2e3095a"
],
"provider_metadata": {
"cwe_ids": [
"CWE-918"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/54xxx/CVE-2025-54590.json"
}
},
"related_cves": [
{
"value": "CVE-2025-54590",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 518839,
"published_at": "2025-08-01T18:03:41.619+00:00"
}