0.134.33
Fixed (DEFERRED-задачи §3.6 Channels/Updater/Email, см. docs/audit/backend-2026-06.md §3.6)
- H-CH-14
IsSystemPathне покрывал/Applications/,/Library/,/System/,C:\PROGRAMDATA\— добавлены недостающие prefix’ы. Авто-обновление теперь корректно отключается для бинарников, установленных в системные директории macOS/Windows. - H-CH-11
Installпроверял backup-path строковым сравнением без учёта symlink’ов — атакующий с write-доступом к директории мог подменить бинарник через symlink. Добавленыos.Lstat(проверка на symlink) иfilepath.EvalSymlinksдля корректного сравнения. - H-CH-15
setExecutableделал одинos.Chmod— на NFS/exFAT/сетевых FS это могло упасть сENOTSUP. Добавлен retry-loop (3 попытки × 100ms backoff) с логированием черезslog.Warnпри финальной ошибке. - H-CH-17
PermissionsHandler.Updateне записывал audit-log при изменении разрешений агента. Добавлен вызовCreateAuditLogсaction=permissions.updateи деталями (custom_allow_count, custom_deny_count, sandbox). - H-CH-16 Подтверждено:
customAllowPatternsуже пробрасывается вExecGuardчерезagent/runner.go:717-729. Пометено как FIXED (audit был основан на старом коде). - H-CH-10 TOCTOU между
manifestsnapshot иapplyUpdate—installRunning atomic.Int32заменён наinstallMu sync.Mutex+TryLock().CheckNowиInstallтеперь атомарно сериализованы. - H-CH-18
MatchWhitelistпроверял только envelope-from. Добавлено полеReturnPathвFetchedMessage(парсится изReturn-Pathheader), новая функцияMatchWhitelistDualдля dual-check (envelope-from + Return-Path). - H-CH-4 Нет allowlist для
to/cc(SMTP) — prompt-injection мог отправить на произвольный адрес. Добавлены колонкаallowed_recipients(миграция 073) и проверка получателей вSend/SendWithAttachmentsчерез glob/regex-паттерны. - H-CH-3 Нет TLS pinning для SMTP — MITM-атака при компрометации CA. Добавлены колонка
smtp_tls_pins(миграция 073), методSetTLSPins,VerifyPeerCertificatecallback с SHA-256 SPKI pin match. - H-CH-12
SaveCurrentBinaryAsBackupне верифицировал backup-файл после копирования — race с selfupdate на backup-каталоге. Добавлена проверкаos.Lstat(regular file) послеatomicCopyFile.
Added
- Миграция 073 (
email_security): колонкиsmtp_tls_pins,allowed_recipientsвemail_accounts(SQLite + PostgreSQL). - Методы
SMTPSender.SetAllowedRecipients,SMTPSender.SetTLSPins,SMTPSender.makeTLSConfig,SMTPSender.checkRecipient. - Функция
MatchWhitelistDual(envelopeFrom, returnPath, patterns). - Поле
FetchedMessage.ReturnPath.
Tests
TestIsSystemPath_LinuxDarwin/TestIsSystemPath_Windows/TestIsSystemPath_Normalisation/TestIsSystemPath_CaseSensitive_Darwin(H-CH-14).TestInstall_SymlinkExeRejected/TestInstall_BackupPathEvalSymlinks(H-CH-11).TestMatchWhitelist/TestMatchWhitelistDual/TestMatchWhitelist_EmptyPatterns(H-CH-18).TestCheckRecipient/TestCheckRecipient_NoAllowlist/TestCheckRecipient_Patterns(H-CH-4).TestMakeTLSConfig_NoPins/TestMakeTLSConfig_WithPins/TestTLS_PinVerification_Matches/TestTLS_PinVerification_Mismatch(H-CH-3).