Хранилище секретов: очищать временный plaintext при исключениях и отмене
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 72/100
Direzione di ricerca
Start with src/Bydlo.Platform/SecretStores.cs, focusing on FileSecretStoreBase.SaveAsync, LoadAsync, and AesFileSecretStore.Unprotect; trace which plaintext arrays each operation owns and where cleanup currently happens. Then find the isolated tests for secret stores and add fault-injection coverage using fake IDataProtection for protection, write or cancellation, and deserialization failures. Done means owned temporary buffers are cleared on success and failure, returned values and stored format stay intact, and existing error behavior is preserved.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Проблема
В src/Bydlo.Platform/SecretStores.cs очистка временного plaintext выполняется только на успешном пути:
FileSecretStoreBase.SaveAsync: послеProtectиWriteAllBytesAsync. Ошибка защиты, записи или отмена пропускаетZeroMemory.FileSecretStoreBase.LoadAsync: после десериализации. Ошибка JSON пропускает очистку уже расшифрованного массива.AesFileSecretStore.Unprotect: выделяет plaintext-массив; владение и очистку при ошибке аутентификации необходимо сделать явными, не полагаясь на побочные гарантии конкретного backend.
Это дефект времени жизни временных буферов. Утечка в лог/на диск или возможность чтения чужим процессом этим анализом не доказана. ProfileSecrets возвращает строки: обнуление временного массива не является гарантией стирания всех копий секретов.
Решение
Охватить принадлежащие хранилищу plaintext-массивы try/finally с CryptographicOperations.ZeroMemory, включая исключения и отмену. Успешно возвращаемый буфер передавать следующему владельцу с явным контрактом очистки; не очищать данные вызывающего кода и не менять возвращаемые секреты.
Сохранить текущую семантику ошибок и доработки #344 / PR #375: задача очистки памяти не должна снова превращать нечитаемый обязательный секрет в успешный пустой результат.
Готово, когда
- Синтетические fault-injection тесты проверяют очистку после ошибки защиты, ошибки/отмены записи и ошибки десериализации после расшифровки.
- На успешном пути временные plaintext-буферы очищены, а возвращённые значения и сохраняемый формат не повреждены.
- Тесты используют фейковый
IDataProtection, который позволяет проверить принадлежащий операции массив; не сканируют память и не читают пользовательские секреты. - Поведение DPAPI/AES-хранилищ, атомарной записи и диагностики ошибок не ухудшается; не добавляются секреты в исключения и логи.
Для этой задачи достаточно C#, смена языка и реальных системных хранилищ в тестах не нужна. Все проверки — изолированно, с BYDLO_SAFE_DEV=1, без сетевых движков.
- Lingua principale
- C#
- Stelle
- 5
- Fork
- 1
- Merge medio
- 30m
- PR unite (30g)
- 171
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di endercodezz/BYDLO
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
endercodezz/BYDLO#396 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 38/100
endercodezz/BYDLO#394 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 48/100
endercodezz/BYDLO#393 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
endercodezz/BYDLO#392 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
endercodezz/BYDLO#388 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di endercodezz/BYDLO
Issue simili
-
enhancement needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
microsoft/microsoft-ui-reactor#1460 ·
I maintainer di solito rispondono entro 1 giorno
-
t/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
dotnet/maui#39950 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
CommunityToolkit/Datasync#600 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
NimblePros/deviq-hugo#121 ·
I maintainer di solito rispondono entro 1 giorno
-
RANDOM_REPLACE does not keep the date format when the month abbreviation has a trailing periodAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
philterd/phileas-dotnet#188 ·