{"id":"CVE-2026-121627","kind":"vulnerability","aliases":["CVE-2026-121627"],"related":[],"title":"buku: stored cross-site scripting in bookmark list via unescaped URL","description":"buku 5.0 through 5.1.1 contains a stored cross-site scripting vulnerability in the bukuserver bookmark list that allows attackers to execute script via an unescaped bookmark URL in BookmarkModelView._list_entry(). Attackers can submit a URL containing a double quote and event handler through the unauthenticated /api/bookmarks endpoint to issue same-origin API requests with viewers' credentials.","summary":"Buku is a command-line bookmark manager, and its bukuserver web interface fails to escape bookmark URLs in the bookmark list. An attacker who submits a crafted bookmark URL through the unauthenticated /api/bookmarks endpoint can run script in a viewer's browser and make same-origin API requests using that viewer's credentials.","severity":"medium","cvss":6.1,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["buku","bukuserver","package","python"],"not_affected_if":["bukuserver-not-deployed","cli-only"],"how_to_check":"- Check the installed buku version with `buku --version` or `pip show buku`; the flaw affects versions 5.0 through 5.1.1.\n- Confirm whether bukuserver is running and reachable (the web bookmark list), since the flaw is in that web interface.\n- Check whether /api/bookmarks accepts unauthenticated requests on the deployment.","fix":"- buku: unknown (the sources do not state a fixed version)","status":"open","published_at":"2026-11-03T18:17:58+00:00","first_seen_at":"2026-11-03T18:22:10+00:00","triaged_at":"2026-11-03T18:22:41+00:00","updated_at":"2026-11-03T18:22:41+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-11-03T18:22:41Z","model":"claude-haiku-5-5","output":{"fix":"- buku: unknown (the sources do not state a fixed version)","reach":"internet","title":"buku: stored cross-site scripting in bookmark list via unescaped URL","impact":"medium","summary":"Buku is a command-line bookmark manager, and its bukuserver web interface fails to escape bookmark URLs in the bookmark list. An attacker who submits a crafted bookmark URL through the unauthenticated /api/bookmarks endpoint can run script in a viewer's browser and make same-origin API requests using that viewer's credentials.","audience":"developers","category":"package","nicknames":[],"who_cares":["buku","bukuserver","python"],"confidence":0.6,"fix_status":"unknown","needs_auth":"no","worst_case":"Script runs in viewers' browsers using their session credentials","analyst_note":"Confirm the fixed version of buku/bukuserver and whether /api/bookmarks is unauthenticated by default; check the vulncheck advisory.","how_to_check":"- Check the installed buku version with `buku --version` or `pip show buku`; the flaw affects versions 5.0 through 5.1.1.\n- Confirm whether bukuserver is running and reachable (the web bookmark list), since the flaw is in that web interface.\n- Check whether /api/bookmarks accepts unauthenticated requests on the deployment.","plain_action":"","needs_analyst":true,"not_affected_if":["cli-only","bukuserver-not-deployed"],"who_is_affected":"Deployments that run the bukuserver web interface for buku in versions 5.0 through 5.1.1 are exposed, because the bookmark list renders attacker-supplied URLs without escaping. Command-line-only use of buku does not render the list and is not described as affected. Teams that do not expose bukuserver can likely skip it.","user_interaction":"yes","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.00075,"input_tokens":4196,"output_tokens":660,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-121627':15A,18A '-2026':14A,17A '/api/bookmarks':56B,123C '5.0':79C '5.1.1':81C 'allow':96C 'api':71B,130C 'attack':46B,97C,108C 'bookmark':8A,29B,39B,43B,51B,93C,104C 'bookmarkmodelview._list_entry':107C 'browser':65B 'buku':1A,19B,23B,78C 'bukuserv':20B,33B,92C 'command':27B 'command-lin':26B 'contain':82C,113C 'craft':50B 'credenti':77B,134C 'cross':4A,86C 'cross-sit':3A,85C 'cve':13A,16A 'doubl':115C 'endpoint':57B,124C 'escap':38B 'event':118C 'execut':99C 'fail':36B 'handler':119C 'interfac':35B 'issu':126C 'line':28B 'list':9A,44B,94C 'make':67B 'manag':30B 'origin':70B,129C 'packag':21B 'python':22B 'quot':116C 'request':72B,131C 'run':59B 'same-origin':68B,127C 'script':6A,60B,88C,100C 'site':5A,87C 'store':2A,84C 'submit':48B,110C 'unauthent':55B,122C 'unescap':11A,103C 'url':12A,40B,52B,105C,112C 'use':73B 'via':10A,101C 'viewer':63B,75B,133C 'vulner':89C 'web':34B","nicknames":[],"mitigations":[],"who_affected":"Deployments that run the bukuserver web interface for buku in versions 5.0 through 5.1.1 are exposed, because the bookmark list renders attacker-supplied URLs without escaping. Command-line-only use of buku does not render the list and is not described as affected. Teams that do not expose bukuserver can likely skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"unknown","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["buku","bukuserver","medium","package","python"],"campaign_type":null,"first_public_at":"2026-11-03T18:17:58+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/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","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-121627","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-121627","severity":null,"published_at":"2026-11-03T18:17:58+00:00","modified_at":"2026-11-03T18:17:58+00:00","first_seen_at":"2026-11-03T18:22:10+00:00","fetched_at":"2026-11-03T18:22:10+00:00","note":null}],"documents":[{"id":59649,"url":"https://www.vulncheck.com/advisories/buku-5.0-through-5.1.1-stored-xss-via-bukuserver-bookmark-list-url","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}