[SRU Jammy 0/3] CVE-2023-32252

Cengiz Can cengiz.can at canonical.com
Mon Nov 27 22:50:01 UTC 2023


[Impact]
A flaw was found in the Linux kernel's ksmbd, a high-performance in-kernel SMB
server. The specific flaw exists within the handling of SMB2_LOGOFF commands.
The issue results from the lack of proper validation of a pointer prior to
accessing it. An attacker can leverage this vulnerability to create a
denial-of-service condition on the system.

[Fix]
In addition to the fix commit, two other commits were required.

They required some careful context adjustments.

[Test case]
Compile, boot and ksmbd-tools (upstream version) tested.

Please do note that in our shipped configurations, ksmbd-tools is not provided
by default. Nor its use is encouraged.

Plus, our ksmbd-tools package version in Jammy is not in sync with the kernel
side API so many operations like `ksmbd.addshare` fails to parse cli arguments.

Test steps:
```
#
# Get latest ksmbd-tools from upstream
#

sudo apt install -y automake libtool-dev libkrb5-dev libkrb5-3 \
    pkg-config libglib2.0-dev libnl-genl-3-dev libnl-3-dev
git clone https://github.com/cifsd-team/ksmbd-tools.git
cd ksmbd-tools/
./autogen.sh
./configure --with-rundir=/run
make -j$(nproc)
sudo make install

#
# Test a few, very basic set of operations
#
mkdir -p /home/ubuntu/test_share
sudo ksmbd.adduser --add ubuntu --password=ksmbdtest
sudo ksmbd.addshare --add \
                    --option "path = /home/ubuntu/test_share" \
                    --option 'read only = no' \
                    --option "force user = ubuntu" \
                    --option "force group = ubuntu" \
                    test_share
sudo modprobe ksmbd
sudo ksmbd.mountd
sudo mount -o username=ubuntu,password=ksmbdtest //127.0.0.1/test_share /mnt
echo -n ABC123 | tee /home/ubuntu/test_share/data
test "$(cat /mnt/data)" = "ABC123" && echo "OK" || echo "FAIL"
cp /home/ubuntu/test_share/{data,data2}
sudo rm /mnt/data
mv /home/ubuntu/test_share/{data2,data3}
test "$(cat /mnt/data3)" = "ABC123" && echo "OK" || echo "FAIL"
sudo ksmbd.control --shutdown
sudo ksmbd.addshare --delete test_share
sudo ksmbd.adduser --delete ubuntu
sudo umount /mnt
sudo modprobe -r ksmbd
```

[Where things could go wrong]
Since the ksmbd is still experimental, lots of things can go wrong.

Dawei Li (1):
  ksmbd: Implements sess->ksmbd_chann_list as xarray

Namjae Jeon (1):
  ksmbd: fix racy issue from session setup and logoff

Yufan Chen (1):
  ksmbd: add smb-direct shutdown

 fs/ksmbd/connection.c        |  23 +++++---
 fs/ksmbd/connection.h        |  40 ++++++++------
 fs/ksmbd/mgmt/user_session.c |  62 +++++++++------------
 fs/ksmbd/mgmt/user_session.h |   4 +-
 fs/ksmbd/server.c            |   3 +-
 fs/ksmbd/smb2pdu.c           | 103 +++++++++++++++++------------------
 fs/ksmbd/transport_rdma.c    |  10 ++++
 fs/ksmbd/transport_tcp.c     |   2 +-
 8 files changed, 127 insertions(+), 120 deletions(-)

-- 
2.40.1




More information about the kernel-team mailing list