fix(security): IPC hardening + clipboard/backup/gitignore (audit giu-2026)#51
Merged
Conversation
…2026) Audit di sicurezza post v2.0.0. Il nucleo crypto era solido; questi fix chiudono le superfici residue, soprattutto sul canale IPC verso le estensioni. IPC (BrowserIpcService + estensioni chrome/firefox): - Rimosso il fallback in PLAINTEXT di get-credential-password: la password viene ora SEMPRE cifrata AES-GCM con la chiave della sessione ECDH. Un client che salta l'handshake riceve "no-session" anziché il segreto in chiaro. - La sessione è legata alla richiesta tramite SessionId nel payload (GetCredentialPasswordRequest.SessionId) invece di "una sessione valida qualsiasi". Aggiornate entrambe le estensioni per inviarlo. - Throttling su unlock-vault: lockout 30s dopo 5 tentativi falliti. - Cap di 32 sessioni ECDH con evict del più vecchio (anti-DoS memoria). - Diagnostica Debug nei catch finora silenziosi. Altri fix: - ClipboardService: Flush() solo per contenuti non sensibili, così le password non sopravvivono alla chiusura dell'app (oltre all'auto-clear 30s). - BackupFileService: rotazione auto-backup (mantiene gli ultimi 10). - .gitignore: ignora *.pkbak/*.autobak/passkey.db e artefatti locali, per evitare il commit accidentale di vault cifrati reali. Build: 0 errori/0 warning. Test: 222/222 passati. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… change) The get-credential-password wire protocol now requires sessionId and drops the plaintext fallback; extensions and Desktop must ship together. Bump both Chrome and Firefox manifests so the updated build is published to the stores. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Contesto
Audit di sicurezza completo del codebase PK4 (branch
main, post v2.0.0). Il nucleo crittografico è risultato solido (AES-256-GCM, Argon2id/PBKDF2 600k, DEK inPinnedSecureBuffer, SQLite parametrizzato, ECDH P-256+HKDF coerente JS↔.NET) — nessun finding Critico. Questa PR chiude le superfici d'attacco residue, concentrate sul canale IPC verso le estensioni browser.Modifiche
IPC (
BrowserIpcService+ estensionichrome/firefox)get-credential-password: la password è ora sempre cifrata AES-GCM con la chiave della sessione ECDH. Un client che salta l'handshake riceveno-session, non il segreto in chiaro.SessionIdnel payload (GetCredentialPasswordRequest.SessionId), al posto di "una sessione valida qualsiasi". Entrambe le estensioni aggiornate per inviarlo e per rifiutare risposte prive di nonce.unlock-vault: lockout di 30s dopo 5 tentativi falliti.Debug.WriteLineneicatchfinora silenziosi.Altri fix
Flush()solo per contenuti non sensibili → le password non sopravvivono alla chiusura dell'app (oltre all'auto-clear a 30s)..autobak..gitignore: ignora*.pkbak,*.autobak,passkey.dbe artefatti locali, per evitare il commit accidentale di vault cifrati reali su repo pubblico.Non incluso (con motivazione)
dotnet list --vulnerableè pulito e SkiaSharp non è referenziato in alcun.cs→ advisory NU1903 non più attivo, nessun bump.http://*/*: lasciato, rimuoverlo degraderebbe l'autofill su siti intranet/HTTP (trade-off documentato).Compatibilità
Cambio di protocollo IPC: Desktop ed estensioni vanno rilasciati insieme (entrambi i lati aggiornati qui). Il
BrowserHostinoltra l'envelope invariato e non è stato toccato.Verifica
🤖 Generated with Claude Code