2024-01-18 07:44:29

by Fullway Wang

[permalink] [raw]
Subject: [PATCH] fs: smb: client: Reset password pointer to NULL

ctx->password was freed but not reset to NULL, which may lead to double
free and secrets leak issues.

This is similar to CVE-2023-5345, which was fixed in commit e6e43b8.

Signed-off-by: Fullway Wang <[email protected]>
---
fs/smb/client/connect.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c
index 3052a208c6ca..fb96a234b9b1 100644
--- a/fs/smb/client/connect.c
+++ b/fs/smb/client/connect.c
@@ -4028,6 +4028,7 @@ cifs_construct_tcon(struct cifs_sb_info *cifs_sb, kuid_t fsuid)
out:
kfree(ctx->username);
kfree_sensitive(ctx->password);
+ ctx->password = NULL;
kfree(ctx);

return tcon;
--
2.39.3 (Apple Git-145)



2024-02-10 05:46:41

by Steve French

[permalink] [raw]
Subject: Re: [PATCH] fs: smb: client: Reset password pointer to NULL

On Thu, Jan 18, 2024 at 1:44 AM Fullway Wang <[email protected]> wrote:
>
> ctx->password was freed but not reset to NULL, which may lead to double
> free and secrets leak issues.

But no one else could use this pointer to double free this since it is
allocated in this function, and exits a few lines after it is freed
(and its parent is freed on the next line so the pointer could not be
accessed either)


> This is similar to CVE-2023-5345, which was fixed in commit e6e43b8.
>
> Signed-off-by: Fullway Wang <[email protected]>
> ---
> fs/smb/client/connect.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c
> index 3052a208c6ca..fb96a234b9b1 100644
> --- a/fs/smb/client/connect.c
> +++ b/fs/smb/client/connect.c
> @@ -4028,6 +4028,7 @@ cifs_construct_tcon(struct cifs_sb_info *cifs_sb, kuid_t fsuid)
> out:
> kfree(ctx->username);
> kfree_sensitive(ctx->password);
> + ctx->password = NULL;
> kfree(ctx);
>
> return tcon;
> --
> 2.39.3 (Apple Git-145)
>
>


--
Thanks,

Steve