blob: a6d806853af9fc803cce35c7b5df4a39c2ca2089 [file] [log] [blame]
From bippy-5f407fcff5a0 Mon Sep 17 00:00:00 2001
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: <linux-cve-announce@vger.kernel.org>
Reply-to: <cve@kernel.org>, <linux-kernel@vger.kernel.org>
Subject: CVE-2024-36016: tty: n_gsm: fix possible out-of-bounds in gsm0_receive()
Description
===========
In the Linux kernel, the following vulnerability has been resolved:
tty: n_gsm: fix possible out-of-bounds in gsm0_receive()
Assuming the following:
- side A configures the n_gsm in basic option mode
- side B sends the header of a basic option mode frame with data length 1
- side A switches to advanced option mode
- side B sends 2 data bytes which exceeds gsm->len
Reason: gsm->len is not used in advanced option mode.
- side A switches to basic option mode
- side B keeps sending until gsm0_receive() writes past gsm->buf
Reason: Neither gsm->state nor gsm->len have been reset after
reconfiguration.
Fix this by changing gsm->count to gsm->len comparison from equal to less
than. Also add upper limit checks against the constant MAX_MRU in
gsm0_receive() and gsm1_receive() to harden against memory corruption of
gsm->len and gsm->mru.
All other checks remain as we still need to limit the data according to the
user configuration and actual payload size.
The Linux kernel CVE team has assigned CVE-2024-36016 to this issue.
Affected and fixed versions
===========================
Issue introduced in 2.6.35 with commit e1eaea46bb4020b38a141b84f88565d4603f8dd0 and fixed in 4.19.316 with commit 9513d4148950b05bc99fa7314dc883cc0e1605e5
Issue introduced in 2.6.35 with commit e1eaea46bb4020b38a141b84f88565d4603f8dd0 and fixed in 5.4.278 with commit b229bc6c6ea9fe459fc3fa94fd0a27a2f32aca56
Issue introduced in 2.6.35 with commit e1eaea46bb4020b38a141b84f88565d4603f8dd0 and fixed in 5.10.219 with commit 0fb736c9931e02dbc7d9a75044c8e1c039e50f04
Issue introduced in 2.6.35 with commit e1eaea46bb4020b38a141b84f88565d4603f8dd0 and fixed in 5.15.161 with commit 4c267110fc110390704cc065edb9817fdd10ff54
Issue introduced in 2.6.35 with commit e1eaea46bb4020b38a141b84f88565d4603f8dd0 and fixed in 6.1.93 with commit 46f52c89a7e7d2691b97a9728e4591d071ca8abc
Issue introduced in 2.6.35 with commit e1eaea46bb4020b38a141b84f88565d4603f8dd0 and fixed in 6.6.33 with commit 774d83b008eccb1c48c14dc5486e7aa255731350
Issue introduced in 2.6.35 with commit e1eaea46bb4020b38a141b84f88565d4603f8dd0 and fixed in 6.8.12 with commit f126ce7305fe88f49cdabc6db4168b9318898ea3
Issue introduced in 2.6.35 with commit e1eaea46bb4020b38a141b84f88565d4603f8dd0 and fixed in 6.9.3 with commit b890d45aaf02b564e6cae2d2a590f9649330857d
Issue introduced in 2.6.35 with commit e1eaea46bb4020b38a141b84f88565d4603f8dd0 and fixed in 6.10 with commit 47388e807f85948eefc403a8a5fdc5b406a65d5a
Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.
Unaffected versions might change over time as fixes are backported to
older supported kernel versions. The official CVE entry at
https://cve.org/CVERecord/?id=CVE-2024-36016
will be updated if fixes are backported, please check that for the most
up to date information about this issue.
Affected files
==============
The file(s) affected by this issue are:
drivers/tty/n_gsm.c
Mitigation
==========
The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes. Individual
changes are never tested alone, but rather are part of a larger kernel
release. Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all. If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
https://git.kernel.org/stable/c/9513d4148950b05bc99fa7314dc883cc0e1605e5
https://git.kernel.org/stable/c/b229bc6c6ea9fe459fc3fa94fd0a27a2f32aca56
https://git.kernel.org/stable/c/0fb736c9931e02dbc7d9a75044c8e1c039e50f04
https://git.kernel.org/stable/c/4c267110fc110390704cc065edb9817fdd10ff54
https://git.kernel.org/stable/c/46f52c89a7e7d2691b97a9728e4591d071ca8abc
https://git.kernel.org/stable/c/774d83b008eccb1c48c14dc5486e7aa255731350
https://git.kernel.org/stable/c/f126ce7305fe88f49cdabc6db4168b9318898ea3
https://git.kernel.org/stable/c/b890d45aaf02b564e6cae2d2a590f9649330857d
https://git.kernel.org/stable/c/47388e807f85948eefc403a8a5fdc5b406a65d5a