[PATCH v2 0/5] smb: server: Clear sensitive data before freeing it

Thomas Huth posted 5 patches 1 month, 2 weeks ago
fs/smb/server/auth.c              | 12 ++++++++++--
fs/smb/server/connection.c        |  6 +++---
fs/smb/server/mgmt/user_config.c  |  6 +++---
fs/smb/server/mgmt/user_session.c |  4 ++--
fs/smb/server/smb2pdu.c           |  4 ++--
5 files changed, 20 insertions(+), 12 deletions(-)
[PATCH v2 0/5] smb: server: Clear sensitive data before freeing it
Posted by Thomas Huth 1 month, 2 weeks ago
Sensitive data like keys that are stored in stack-local arrays could be
leaked via the stack to the calling functions, or via the heap when using
only normal kfree() functions.

It's good security practice to clear sensitive data on the stack first
with memzero_explicit() before leaving the context, and to use
kfree_sensitive() for data that is returned to the heap.

Disclaimer: The spots that need clearing have been identified with AI,
but the patches have been created manually (for double-checking whether
the findings really make sense). Anyway, I'm not very familiar with the
smb code, so please review carefully. Thanks!

v2:
- Calculate proper size for the kvfree_sensitive() in the first patch
- Add "kfree_sensitive(target)" hunk to the connection.c patch
- Add patch to clear Preauth_HashValue in smb2pdu.c

Thomas Huth (5):
  smb: server: Clear sensitive stack and heap data in auth.c
  smb: server: Make sure that passkey is not leaked on the heap in
    user_config.c
  smb: server: Free session data in user_session.c with
    kfree_sensitive()
  smb: server: Free sensitive data in connection.c with
    kfree_sensitive()
  smb: server: Clear Preauth_HashValue in smb2pdu.c with
    kfree_sensitive()

 fs/smb/server/auth.c              | 12 ++++++++++--
 fs/smb/server/connection.c        |  6 +++---
 fs/smb/server/mgmt/user_config.c  |  6 +++---
 fs/smb/server/mgmt/user_session.c |  4 ++--
 fs/smb/server/smb2pdu.c           |  4 ++--
 5 files changed, 20 insertions(+), 12 deletions(-)

-- 
2.55.0
Re: [PATCH v2 0/5] smb: server: Clear sensitive data before freeing it
Posted by Namjae Jeon 1 month, 2 weeks ago
On Wed, Aug 12, 2026 at 12:46 AM Thomas Huth <thuth@redhat.com> wrote:
>
> Sensitive data like keys that are stored in stack-local arrays could be
> leaked via the stack to the calling functions, or via the heap when using
> only normal kfree() functions.
>
> It's good security practice to clear sensitive data on the stack first
> with memzero_explicit() before leaving the context, and to use
> kfree_sensitive() for data that is returned to the heap.
>
> Disclaimer: The spots that need clearing have been identified with AI,
> but the patches have been created manually (for double-checking whether
> the findings really make sense). Anyway, I'm not very familiar with the
> smb code, so please review carefully. Thanks!
>
> v2:
> - Calculate proper size for the kvfree_sensitive() in the first patch
> - Add "kfree_sensitive(target)" hunk to the connection.c patch
> - Add patch to clear Preauth_HashValue in smb2pdu.c
Applied them to #ksmbd-for-next-next.
Thanks!