{"id":"CVE-2026-91982","kind":"vulnerability","aliases":["CVE-2026-91982","GHSA-88f6-4rjv-x774","GO-2026-6722"],"related":[],"title":"Vikunja: TOTP secret is readable after enrollment, no step-up auth in code.vikunja.io/api","description":"Vikunja: TOTP secret is readable after enrollment, no step-up auth in code.vikunja.io/api.\n\nNOTE: The source advisory for this report contains additional versions that could not be automatically mapped to standard Go module versions.\n\n(If this is causing false-positive reports from vulnerability scanners, please suggest an edit to the report.)\n\nThe additional affected modules and versions are: code.vikunja.io/api before v2.6.0.","summary":"Vikunja's Go API module (code.vikunja.io/api) keeps a user's TOTP two-factor secret readable after enrollment. The code does not require step-up authentication before the secret is returned, so an attacker with access to a logged-in session could read it and generate valid 2FA codes.","severity":"medium","cvss":5.3,"epss":0.00346,"exploited":false,"exploited_at":null,"products":[{"name":"code.vikunja.io/api","fixed":[],"affected":"all versions","ecosystem":"go"}],"ecosystems":["go"],"tags":["go","package","self-hosted","vikunja"],"not_affected_if":["default-config","no-totp-enrollment"],"how_to_check":"Run: go list -m code.vikunja.io/api and check whether the version is below v2.6.0.","fix":"Upgrade code.vikunja.io/api to v2.6.0 or later.","status":"open","published_at":"2026-09-15T16:17:55+00:00","first_seen_at":"2026-10-23T19:13:08+00:00","triaged_at":"2026-10-23T21:49:02+00:00","updated_at":"2026-10-23T21:49:02+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-23T21:49:02Z","model":"claude-haiku-5-5","output":{"fix":"Upgrade code.vikunja.io/api to v2.6.0 or later.\nunknown","reach":"unknown","impact":"medium","summary":"Vikunja's Go API module (code.vikunja.io/api) keeps a user's TOTP two-factor secret readable after enrollment. The code does not require step-up authentication before the secret is returned, so an attacker with access to a logged-in session could read it and generate valid 2FA codes.","category":"package","who_cares":["go","vikunja","self-hosted"],"confidence":0.7,"needs_auth":"yes","worst_case":"Attacker with a session reads the 2FA secret and generates codes.","analyst_note":"","how_to_check":"Run: go list -m code.vikunja.io/api and check whether the version is below v2.6.0.\nunknown","needs_analyst":false,"not_affected_if":["default-config","no-totp-enrollment"],"user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000817,"input_tokens":2951,"output_tokens":1043,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2026':18A,26A,29A '-6722':27A '-91982':19A,30A '/api':16A,33A,157C '/api)':47B '/api.':108C '2fa':91B '4rjv':23A '88f6':22A 'access':78B 'addit':117C,149C 'advisori':112C 'affect':150C 'api':43B 'attack':76B 'auth':12A,104C 'authent':68B 'automat':123C 'caus':133C 'code':61B,92B 'code.vikunja.io':15A,32A,46B,107C,156C 'code.vikunja.io/api':14A,31A,155C 'code.vikunja.io/api)':45B 'code.vikunja.io/api.':106C 'contain':116C 'could':85B,120C 'cve':17A,28A 'edit':144C 'enrol':7A,59B,99C 'factor':55B 'fals':135C 'false-posit':134C 'generat':89B 'ghsa':21A 'ghsa-88f6-4rjv-x774':20A 'go':25A,34B,42B,127C 'host':38B 'keep':48B 'log':82B 'logged-in':81B 'map':124C 'modul':44B,128C,151C 'note':109C 'packag':35B 'pleas':141C 'posit':136C 'read':86B 'readabl':5A,57B,97C 'report':115C,137C,147C 'requir':64B 'return':73B 'scanner':140C 'secret':3A,56B,71B,95C 'self':37B 'self-host':36B 'session':84B 'sourc':111C 'standard':126C 'step':10A,66B,102C 'step-up':9A,65B,101C 'suggest':142C 'totp':2A,52B,94C 'two':54B 'two-factor':53B 'user':50B 'v2.6.0':159C 'valid':90B 'version':118C,129C,153C 'vikunja':1A,39B,40B,93C 'vulner':139C 'x774':24A","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-09-15T16:17:55+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/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":"govuln","external_id":"GO-2026-6722","url":"https://pkg.go.dev/vuln/GO-2026-6722","severity":null,"published_at":"2026-10-19T21:08:26+00:00","modified_at":"2026-10-19T21:08:26+00:00","first_seen_at":"2026-10-23T19:13:08+00:00","fetched_at":"2026-10-23T19:13:08+00:00","note":null},{"source":"epss","external_id":"CVE-2026-91982","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-91982","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-23T19:13:43+00:00","fetched_at":"2026-10-23T19:13:43+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-91982","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-91982","severity":null,"published_at":"2026-09-15T16:17:55+00:00","modified_at":"2026-09-17T16:18:32+00:00","first_seen_at":"2026-10-23T19:35:23+00:00","fetched_at":"2026-10-23T19:35:23+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}