[lvc-project] [PATCH 5.10/5.15] scsi: add a length check for VARIABLE_LENGTH_CMD commands

Fedor Pchelkin pchelkin at ispras.ru
Tue Mar 12 11:39:32 MSK 2024


On 24/03/06 04:50PM, Mikhail Ukhin wrote:
> Fuzzing of 5.10 stable branch reports a slab-out-of-bounds error in
> ata_scsi_pass_thru.

Добрый день!

Спасибо за патч!

С адресатами патча что-то не так. Туда попали разработчики файловых
систем...? А мэйнтейнеров LIBATA-подсистемы не оказалось:

 Damien Le Moal <damien.lemoal at opensource.wdc.com> (maintainer:LIBATA SUBSYSTEM (Serial and Parallel ATA drivers))
 Niklas Cassel <cassel at kernel.org> (maintainer:LIBATA SUBSYSTEM (Serial and Parallel ATA drivers))
 linux-ide at vger.kernel.org (open list:LIBATA SUBSYSTEM (Serial and Parallel ATA drivers))

В исходниках ядра лежит скрипт scripts/get_maintainer.pl, который выдает
список актуальных адресатов по затрагиваемому патчем коду.

> 
> The error is fixed in 5.18 by commit
> ce70fd9a551af7424a7dace2a1ba05a7de8eae27.

Скрипт scripts/checkpatch.pl по идее выдает предупреждения на подобное.

Полные хэши коммитов принято указывать только в бэкпорт-патчах, когда
указывают аналогичный коммит из upstream. Что-то вида:
 `commit ce70fd9a551af7424a7dace2a1ba05a7de8eae27 upstream.`

Т.к. это не текущий случай, то упоминаемые в описании патча другие
коммиты указывают в pretty форме:
 `commit ce70fd9a551a ("scsi: core: Remove the cmd field from struct scsi_request")`

В гите есть команды, которыми можно привести хэш в pretty форму: [1], [2].

> Backporting this commit would require significant changes to the code so
> it is bettter to use a simple fix for that particular error.
> 
> The problem is that the length of the received SCSI command is not
> validated if scsi_op == VARIABLE_LENGTH_CMD. It can lead to out-of-bounds
> reading if the user sends a request with SCSI command of length less than
> 32.
> 
> Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
> 
> Signed-off-by: Artem Sadovnikov <ancowi69 at gmail.com>
> Signed-off-by: Mikhail Ivanov <iwanov-23 at bk.ru>

Патч уже в нашей linux-5.10-lvc-next ветке. Поправлю описание, и, думаю,
при выходе следующего релиза он появится в публичной linux-5.10-lvc [3].
Если международное сообщество не реагирует, то принимаем решение оставлять
патч только в наших поддерживаемых ветках и закрываем текущую задачу.

[1]: https://www.kernel.org/doc/html/latest/process/submitting-patches.html#describe-your-changes
[2]: https://lore.kernel.org/lkml/202403091243.99279C61@keescook/
[3]: https://git.linuxtesting.ru/pub/scm/linux/kernel/git/lvc/linux-stable.git/log/

--
Федор



More information about the lvc-project mailing list