Problem
Server-Tokens werden aktuell im App-Group UserDefaults gespeichert (SharedConfig.sharedDefaults). Das ist unsicher — jeder Prozess mit App-Group-Zugriff (Share Extension, FinderSync) kann die Tokens lesen, und sie liegen unverschlüsselt auf der Platte.
Lösung
HostProfile.serverToken bei Persistierung in die macOS Keychain migrieren (kSecClassGenericPassword)
- Keychain-Item mit
kSecAttrAccessGroup für App-Group-Zugriff (Share Extension)
- Einmalige Migration: bestehende Tokens aus UserDefaults → Keychain, danach aus UserDefaults löschen
HostProfile Decoder/Encoder anpassen: Token nicht mehr in JSON, sondern per id aus Keychain laden
- Keychain-Wrapper als
KeychainManager in ClawsyShared
Betroffene Dateien
Sources/ClawsyShared/HostProfile.swift — Encoder/Decoder
Sources/ClawsyShared/HostManager.swift — addHost/updateHost/removeHost
Sources/ClawsyShared/SharedConfig.swift — Migration
- Neu:
Sources/ClawsyShared/KeychainManager.swift
Hinweise
- Share Extension braucht
kSecAttrAccessGroup mit Team-ID-Prefix
SecItemAdd / SecItemCopyMatching / SecItemUpdate / SecItemDelete
- Beim Löschen eines Hosts: Keychain-Eintrag mitlöschen
Aus Codebase-Review Finding #6 (HIGH)
Problem
Server-Tokens werden aktuell im App-Group
UserDefaultsgespeichert (SharedConfig.sharedDefaults). Das ist unsicher — jeder Prozess mit App-Group-Zugriff (Share Extension, FinderSync) kann die Tokens lesen, und sie liegen unverschlüsselt auf der Platte.Lösung
HostProfile.serverTokenbei Persistierung in die macOS Keychain migrieren (kSecClassGenericPassword)kSecAttrAccessGroupfür App-Group-Zugriff (Share Extension)HostProfileDecoder/Encoder anpassen: Token nicht mehr in JSON, sondern peridaus Keychain ladenKeychainManagerin ClawsySharedBetroffene Dateien
Sources/ClawsyShared/HostProfile.swift— Encoder/DecoderSources/ClawsyShared/HostManager.swift— addHost/updateHost/removeHostSources/ClawsyShared/SharedConfig.swift— MigrationSources/ClawsyShared/KeychainManager.swiftHinweise
kSecAttrAccessGroupmit Team-ID-PrefixSecItemAdd/SecItemCopyMatching/SecItemUpdate/SecItemDeleteAus Codebase-Review Finding #6 (HIGH)