-- ===================================================================== -- 0005 — Signal Desktop: the uninstall does not uninstall -- -- Observed on the operator's own machine, 2026-10-30 00:24 CDT, while trying -- to use the product for the first time since June. -- -- This is a FINDING, not a score change. It does not move any dimension, -- because local_data_exposure is already at 5 for the plaintext attachment -- behaviour. What it does is replace a rationale with a demonstrated failure. -- -- Artifact: 00-Artifacts/2026/10-Oct/30/clu-signal-startup-failure/ -- ===================================================================== INSERT INTO finding (assessment_id, severity, title, detail, status, disclosed_on) VALUES ( 'A-2026-10-29-SIGNAL-DESKTOP', 'medium', 'Purging the package leaves the database behind, and the next install then fails to start', 'On Linux, Signal keeps its state in ~/.config/Signal. Removing the signal-desktop package does not remove ' || 'that directory. Reinstalling on 2026-10-30 found a 54,214,656-byte sql/db.sqlite last written 2026-06-21 ' || 'and tried to open it. The SQLCipher key recorded in config.json no longer resolved, so every startup ' || 'aborted with SQLITE_NOTADB before the app could reach the linking screen: ' || '"MainSQL: sqlite(SQLITE_NOTADB): file is not a database in PRAGMA journal_mode = WAL", then ' || '"MainSQL: migrateDatabase: Migration without cipher change failed", then ' || '"sql.initialize was unsuccessful; returning early". The user sees a "Can''t Open Signal" dialog ' || 'whose only working option is "Delete data and restart", which discards the retained history. ' || 'The same directory also held 355 received attachments (25 MB) in plaintext, 25 stickers, 189 badge ' || 'files and an encryptedKey, all surviving a four-month-old uninstall. ' || 'The failure is recoverable by moving the configuration directory aside, but nothing in the product ' || 'tells the user that the old database is the cause, and the offered remedy is data loss.', 'open', '2026-10-30' );