Skip to content

Commit 84c7706

Browse files
authored
Merge pull request #490 from docker/posixage/zero/out
fix(posixage): zero sensitive byte slices after use
2 parents 0e3df52 + 2384340 commit 84c7706

File tree

2 files changed

+5
-0
lines changed

2 files changed

+5
-0
lines changed

store/posixage/prompt.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ func promptForEncryptionKeys(ctx context.Context, funcs []promptCaller) (map[sec
105105
return nil, err
106106
}
107107
raw = bytes.TrimSpace(raw)
108+
defer clear(raw)
108109
if len(raw) == 0 {
109110
return nil, errors.New("empty key provided on registered callback function")
110111
}

store/posixage/store.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ func (f *fileStore[T]) decryptSecret(ctx context.Context, encryptedSecrets []sec
138138
if err != nil {
139139
return nil, err
140140
}
141+
defer clear(decryptionKey)
141142

142143
identity, err := secretfile.GetIdentity(keyType, string(decryptionKey))
143144
if err != nil {
@@ -214,6 +215,7 @@ func (f *fileStore[T]) Filter(ctx context.Context, pattern store.Pattern) (map[s
214215
if err != nil {
215216
return err
216217
}
218+
defer clear(decryptedSecret)
217219

218220
secret := f.factory(ctx, id)
219221
if err := secret.SetMetadata(metadata); err != nil {
@@ -254,6 +256,7 @@ func (f *fileStore[T]) Get(ctx context.Context, id store.ID) (store.Secret, erro
254256
if err != nil {
255257
return nil, err
256258
}
259+
defer clear(decryptedSecret)
257260

258261
secret := f.factory(ctx, id)
259262
if err := secret.SetMetadata(metadata); err != nil {
@@ -339,6 +342,7 @@ func (f *fileStore[T]) Save(ctx context.Context, id store.ID, s store.Secret) er
339342
if err != nil {
340343
return err
341344
}
345+
defer clear(secret)
342346
metadata := s.Metadata()
343347

344348
var secrets []secretfile.EncryptedSecret

0 commit comments

Comments
 (0)