{"id":"CVE-2026-116071","kind":"vulnerability","aliases":["CVE-2026-116071"],"related":[],"title":"rotki: weak unsalted key derivation lets attackers crack premium backups","description":"rotki before 1.44.2 contains a weak key derivation vulnerability that allows attackers to brute-force backups because the premium sync key is a single unsalted SHA-256 of the user password. Attackers who obtain an uploaded backup blob can run GPU-parallel offline password guessing and decrypt the database containing exchange API keys, secrets, wallet addresses and transaction history.","summary":"rotki derives its premium sync encryption key as a single unsalted SHA-256 of the user password. An attacker who obtains an uploaded backup can guess passwords offline on GPUs and decrypt the database, which holds exchange API keys, secrets, wallet addresses and transaction history.","severity":"high","cvss":8.2,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["crypto-portfolio","package","premium-sync","rotki"],"not_affected_if":["local-only-use","no-premium-sync"],"how_to_check":"- Check the installed rotki version in the app's About screen or package metadata; versions below `1.44.2` are affected.\n- Check whether premium sync backups have been uploaded from this account, since those are the blobs at risk.","fix":"- Upgrade rotki to `1.44.2` or later.\n- Rotate exchange API keys and secrets that were stored in a synced backup, since the backup may have been decrypted.\n- Use a long, unique password for the rotki premium account.","status":"open","published_at":"2026-10-25T12:16:29+00:00","first_seen_at":"2026-10-25T12:40:44+00:00","triaged_at":"2026-10-25T12:41:24+00:00","updated_at":"2026-10-25T12:41:24+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-25T12:41:24Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade rotki to `1.44.2` or later.\n- Rotate exchange API keys and secrets that were stored in a synced backup, since the backup may have been decrypted.\n- Use a long, unique password for the rotki premium account.","reach":"internet","title":"rotki: weak unsalted key derivation lets attackers crack premium backups","impact":"high","summary":"rotki derives its premium sync encryption key as a single unsalted SHA-256 of the user password. An attacker who obtains an uploaded backup can guess passwords offline on GPUs and decrypt the database, which holds exchange API keys, secrets, wallet addresses and transaction history.","category":"package","nicknames":[],"who_cares":["rotki","crypto-portfolio","premium-sync"],"confidence":0.6,"needs_auth":"unknown","worst_case":"attacker decrypts backups, reads exchange API keys and secrets","analyst_note":"Check the NVD entry and the rotki release notes for the 1.44.2 fix and whether a server-side key exposure is confirmed; sources do not say whether the sync service itself was reachable by others.","how_to_check":"- Check the installed rotki version in the app's About screen or package metadata; versions below `1.44.2` are affected.\n- Check whether premium sync backups have been uploaded from this account, since those are the blobs at risk.","needs_analyst":true,"not_affected_if":["local-only-use","no-premium-sync"],"who_is_affected":"Users of rotki premium sync before `1.44.2` whose encrypted backups are stored on the sync service. Someone who only runs rotki locally without premium sync uploads is not exposed through this path.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.00064,"input_tokens":3345,"output_tokens":610,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-116071':13A,16A '-2026':12A,15A '-256':37B,97C '1.44.2':72C 'address':66B,127C 'allow':80C 'api':62B,123C 'attack':7A,43B,81C,102C 'backup':10A,48B,86C,107C 'blob':108C 'brute':84C 'brute-forc':83C 'contain':73C,121C 'crack':8A 'crypto':18B 'crypto-portfolio':17B 'cve':11A,14A 'databas':58B,120C 'decrypt':56B,118C 'deriv':5A,26B,77C 'encrypt':30B 'exchang':61B,122C 'forc':85C 'gpu':112C 'gpu-parallel':111C 'gpus':54B 'guess':50B,116C 'histori':69B,130C 'hold':60B 'key':4A,31B,63B,76C,91C,124C 'let':6A 'obtain':45B,104C 'offlin':52B,114C 'packag':20B 'parallel':113C 'password':41B,51B,101C,115C 'portfolio':19B 'premium':9A,22B,28B,89C 'premium-sync':21B 'rotki':1A,24B,25B,70C 'run':110C 'secret':64B,125C 'sha':36B,96C 'singl':34B,94C 'sync':23B,29B,90C 'transact':68B,129C 'unsalt':3A,35B,95C 'upload':47B,106C 'user':40B,100C 'vulner':78C 'wallet':65B,126C 'weak':2A,75C","nicknames":[],"mitigations":[],"who_affected":"Users of rotki premium sync before `1.44.2` whose encrypted backups are stored on the sync service. Someone who only runs rotki locally without premium sync uploads is not exposed through this path.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-25T12:16:29+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/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":"nvd","external_id":"CVE-2026-116071","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-116071","severity":null,"published_at":"2026-10-25T12:16:29+00:00","modified_at":"2026-10-25T12:16:29+00:00","first_seen_at":"2026-10-25T12:40:44+00:00","fetched_at":"2026-10-25T12:40:44+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"}