YesWiki: Unauthenticated Server-Side Request Forgery via ActivityPub `Signature.keyId`
YesWiki is a wiki system written in PHP. From version 4.6.2 to before version 4.6.6, the POST /api/forms/{formId}/actor/inbox route - exposed publicly with acl:"public" - accepts an HTTP Signature header whose keyId parameter is a URL. HttpSignatureService::verifySignature() parses the header and immediately makes a server-side HTTP GET to that URL, before any cryptographic verification or URL validation. An unauthenticated remote attacker can therefore make YesWiki issue arbitrary outbound HTTP requests to any host the server can reach - internal services, cloud-metadata endpoints (169.254.169.254), intranet-only admin panels, etc. - and read enough back via timing and error-message oracles to scan ports, enumerate services, and (on a real cloud instance) reach IAM metadata. The only deployment-side precondition is that ActivityPub be enabled on at least one Bazar form. This issue has been patched in version 4.6.6.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-52769
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 4 Nov 2026, 23:40 UTC · Revision 1
Source evidence
YesWiki: Unauthenticated Server-Side Request Forgery via ActivityPub `Signature.keyId`
core-osv · Original sourcePublished 4 Sept 2026, 23:40 UTC
YesWiki is a wiki system written in PHP. From version 4.6.2 to before version 4.6.6, the POST /api/forms/{formId}/actor/inbox route - exposed publicly with acl:"public" - accepts an HTTP Signature header whose keyId parameter is a URL. HttpSignatureService::verifySignature() parses the header and immediately makes a server-side HTTP GET to that URL, before any cryptographic verification or URL validation. An unauthenticated remote attacker can therefore make YesWiki issue arbitrary outbound HTTP requests to any host the server can reach - internal services, cloud-metadata endpoints (169.254.169.254), intranet-only admin panels, etc. - and read enough back via timing and error-message oracles to scan ports, enumerate services, and (on a real cloud instance) reach IAM metadata. The only deployment-side precondition is that ActivityPub be enabled on at least one Bazar form. This issue has been patched in version 4.6.6.
osv:CVE-2026-52769
Complete source record
{
"id": "0cd3a7438a77ec2c55064a417af97d583fb0ee34288eac654e9410f7e2d725a9",
"url": "https://osv.dev/vulnerability/CVE-2026-52769",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "YesWiki: Unauthenticated Server-Side Request Forgery via ActivityPub `Signature.keyId`",
"summary": "YesWiki is a wiki system written in PHP. From version 4.6.2 to before version 4.6.6, the POST /api/forms/{formId}/actor/inbox route - exposed publicly with acl:\"public\" - accepts an HTTP Signature header whose keyId parameter is a URL. HttpSignatureService::verifySignature() parses the header and immediately makes a server-side HTTP GET to that URL, before any cryptographic verification or URL validation. An unauthenticated remote attacker can therefore make YesWiki issue arbitrary outbound HTTP requests to any host the server can reach - internal services, cloud-metadata endpoints (169.254.169.254), intranet-only admin panels, etc. - and read enough back via timing and error-message oracles to scan ports, enumerate services, and (on a real cloud instance) reach IAM metadata. The only deployment-side precondition is that ActivityPub be enabled on at least one Bazar form. This issue has been patched in version 4.6.6.",
"evidence": "osv:CVE-2026-52769",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-52769",
"aliases": [
"CVE-2026-52769",
"GHSA-vw42-752g-5mrp"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:L"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/yeswiki/yeswiki",
"type": "GIT",
"events": [
{
"introduced": "396b5fb891fdeca1a010c97d3cfe4d7ff897110b"
},
{
"fixed": "fa81922f4103630911cbea98ead3c4b7bc786e19"
},
{
"fixed": "87e627f33e79879827a3669fee2aa1244612c487"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "4.6.2"
},
{
"fixed": "4.6.6"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"fixed": "fa81922f4103630911cbea98ead3c4b7bc786e19"
}
],
"source": "REFERENCES_TAG",
"original_tag": "v4.6.6"
},
{
"range": [
{
"fixed": "87e627f33e79879827a3669fee2aa1244612c487"
}
],
"source": "REFERENCES_COMMIT"
}
]
}
}
],
"versions": [
"v4.6.5",
"v4.6.4",
"v4.6.3",
"v4.6.2"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-52769.json"
}
}
],
"modified": "2026-10-28T02:30:40.538113799Z",
"provider": "osv",
"references": [
"https://github.com/YesWiki/yeswiki/releases/tag/v4.6.6",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/52xxx/CVE-2026-52769.json",
"https://github.com/YesWiki/yeswiki/security/advisories/GHSA-vw42-752g-5mrp",
"https://nvd.nist.gov/vuln/detail/CVE-2026-52769"
],
"provider_metadata": {
"cwe_ids": [
"CWE-918"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/52xxx/CVE-2026-52769.json"
}
},
"related_cves": [
{
"value": "CVE-2026-52769",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 508078,
"published_at": "2026-09-04T23:40:58.793+00:00"
}