Security advisory
A Cross-site Scripting (XSS) vulnerability exists in janeczku/calibre-web, specifically in the file `edit_books.js`. The vulnerability occurs when editing book properties, such as uploading a cover or a format. The affected code directly inserts user input into the DOM without proper sanitization, allowing attackers to execute arbitrary JavaScript code. This can lead to various attacks, including stealing cookies. The issue is present in the code handling the `#btn-upload-cover` change event.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2021-3988
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 31 Oct 2026, 11:19 UTC · Revision 1
Source evidence
A Cross-site Scripting (XSS) vulnerability exists in janeczku/calibre-web, specifically in the file `edit_books.js`. The vulnerability occurs when editing book properties, such as uploading a cover or a format. The affected code directly inserts user input into the DOM without proper sanitization, allowing attackers to execute arbitrary JavaScript code. This can lead to various attacks, including stealing cookies. The issue is present in the code handling the `#btn-upload-cover` change event.
osv:CVE-2021-3988
Complete source record
{
"id": "232f2f88130038651d1efe382b0c0cf0f4a09847fafe0889fdc8fe7b909c0135",
"url": "https://osv.dev/vulnerability/CVE-2021-3988",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "CVE-2021-3988",
"summary": "A Cross-site Scripting (XSS) vulnerability exists in janeczku/calibre-web, specifically in the file `edit_books.js`. The vulnerability occurs when editing book properties, such as uploading a cover or a format. The affected code directly inserts user input into the DOM without proper sanitization, allowing attackers to execute arbitrary JavaScript code. This can lead to various attacks, including stealing cookies. The issue is present in the code handling the `#btn-upload-cover` change event.",
"evidence": "osv:CVE-2021-3988",
"products": [],
"severity": "medium",
"structured": {
"id": "CVE-2021-3988",
"aliases": [
"CVE-2021-3988",
"GHSA-r735-9gc6-2hvq",
"PYSEC-2026-1236"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/janeczku/calibre-web",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "b564a97cdfc22c0e31e0ae18c6ed2b4320b40e50"
},
{
"fixed": "7ad419dc8c12180e842a82118f4866ac3d074bc5"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:janeczku:calibre-web:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "0"
},
{
"fixed": "0.6.15"
}
],
"source": "CPE_RANGE"
},
{
"range": [
{
"fixed": "7ad419dc8c12180e842a82118f4866ac3d074bc5"
}
],
"source": "REFERENCES_COMMIT"
}
]
}
}
],
"versions": [
"0.6.14",
"0.6.13",
"0.6.12",
"0.6.11",
"0.6.10",
"0.6.9",
"0.6.8",
"0.6.7",
"0.6.6",
"0.6.5",
"0.6.3",
"0.6.2",
"0.6.0"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2021-3988.json"
}
}
],
"modified": "2026-10-20T10:53:53.299373956Z",
"provider": "osv",
"references": [
"https://github.com/janeczku/calibre-web/commit/7ad419dc8c12180e842a82118f4866ac3d074bc5",
"https://huntr.com/bounties/fa4c8fd1-7846-4dad-9112-2c07461f0609"
],
"provider_metadata": {}
},
"related_cves": [
{
"value": "CVE-2021-3988",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 384728,
"published_at": "2024-11-15T11:15:06.877+00:00"
}