CVE-2026-118988
Full vulnerability record from the local CVENow database.
Description
CallBackery versions before 0.60.1 for Perl let unauthenticated clients read the POD of any file via path traversal in the /doc route. Every CallBackery application mounts its documentation plugin at /doc, ahead of any session check. The route passes the requested name to Pod::Simple::Search->find without validation. find splits the name on "::" and joins the parts into a file path, so a name such as "..::..::..::etc::motd" escapes @INC. Any file the server process can read is reachable. Only POD is rendered, but a file with a POD directive and no "=cut" is POD to the end of the file.
Severity
Not scored
CVSS score
Not available
Vulnerability status
Received
Source identifier
9b29abf9-4ab0-4765-b253-1875cd9b441e
Published
2026-10-30 13:18:31.647000
Last modified
2026-10-30 13:18:31.647000
View original CVE JSON
{
"id": "CVE-2026-118988",
"sourceIdentifier": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
"published": "2026-10-30T13:18:31.647",
"lastModified": "2026-10-30T13:18:31.647",
"vulnStatus": "Received",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "CallBackery versions before 0.60.1 for Perl let unauthenticated clients read the POD of any file via path traversal in the /doc route.\n\nEvery CallBackery application mounts its documentation plugin at /doc, ahead of any session check. The route passes the requested name to Pod::Simple::Search->find without validation. find splits the name on \"::\" and joins the parts into a file path, so a name such as \"..::..::..::etc::motd\" escapes @INC.\n\nAny file the server process can read is reachable. Only POD is rendered, but a file with a POD directive and no \"=cut\" is POD to the end of the file."
}
],
"affected": [
{
"source": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
"affectedData": [
{
"defaultStatus": "unaffected",
"collectionURL": "https://cpan.org/modules",
"packageName": "CallBackery",
"modules": [
"CallBackery"
],
"programFiles": [
"lib/CallBackery/Plugin/Doc.pm"
],
"programRoutines": [
{
"name": "CallBackery::Plugin::Doc::register"
}
],
"repo": "https://github.com/oetiker/callbackery",
"packageURL": "pkg:cpan/CallBackery",
"versions": [
{
"version": "0",
"lessThan": "0.60.1",
"versionType": "custom",
"status": "affected"
}
]
}
]
}
],
"metrics": {},
"weaknesses": [
{
"source": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-22"
}
]
}
],
"references": [
{
"url": "https://github.com/oetiker/callbackery/commit/128efe804fde41bba9633fe00dc94e30f12087fb.patch",
"source": "9b29abf9-4ab0-4765-b253-1875cd9b441e"
},
{
"url": "https://metacpan.org/release/OETIKER/CallBackery-0.60.1/source/CHANGES",
"source": "9b29abf9-4ab0-4765-b253-1875cd9b441e"
}
]
}