LINUX.ORG.RU
ФорумTalks

Linux опять похвастался качеством кода

 ,


0

1

Все, что надо знать о качестве кода в Linux:

https://1.bp.blogspot.com/--SpB2lfBGpk/YEq0vAipK6I/AAAAAAAABgM/Ozwzp0JVKtUxxiSHzQ-z-fApaio4FigngCLcBGAsYHQ/s779/vuln.png

ну и эксплоит для локального повышения привилегий:

https://github.com/grimm-co/NotQuite0DayFriday/tree/trunk/2021.03.12-linux-iscsi

Но постойте, как же так, ведь тысячи жадных до аудита глаз давно уже должны были пробуравить монитор до дырки, вычищая все баги из этой функции!

А сколько еще таких перлов припасено в Linux…

★★★★★

Ответ на: комментарий от Jetty

Ну так сравнивай Bytes из модуля Bytes

Что за Bytes такой и зачем нужен?

c GArray из модуля gmodule.h

Спасибо, уже был в жизни момент, когда мне моча в голову ударила и я разбирался в тонкостях OOP glib, больше не хочу этого делать ни-ког-да. Но даже если с помощью GArray это можно сделать, отчего ж не делают в ядре?

andalevor ★★
()
Ответ на: комментарий от X512

Не тоже самое, а намного меньше. И это с учётом того, что Fuchsia — новая ОС

они при поверхностном знакомстве проверили злачные места

the world-facing parts of the system (USB, Bluetooth, network stack, etc)

и нашли гору уязвимостей, это при том что там кода на порядок меньше чем в Linux. Если на плюсах сразу нельзя писать безопасно - чем он лучше С ?

Эпичного бага, аналогичного багу в заглавном посте, там в Fuchsia не нашли

первый же рассмотренный баг

USB stack
Out-of-bounds access

Безопасней там сама ОС за счёт дизайна - микроядро и система безопасности на основе capability.

spbob
()
Ответ на: комментарий от spbob

Если на плюсах сразу нельзя писать безопасно - чем он лучше С ?

Лучше в плане количества уязвимостей на единицу кода.

первый же рассмотренный баг

Это не sprintf в буфер без указания размера. sprintf по хорошему надо вообще запретить, он defective by design. В MS Visual C++ уже запретили.

К тому же там код в сишном стиле.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от X512

Это не sprintf в буфер без указания размера. sprintf по хорошему надо вообще запретить, он defective by design.

sprintf в новом коде в ядре не встретишь, поэтому баг так долго и пролежал - этот iscsi не всрался никому

К тому же там код в сишном стиле

так они дружат с головой и в системном коде используют только зарекомендовавшие себя технологии

spbob
()
Ответ на: комментарий от spbob

sprintf в новом коде в ядре не встретишь

Почему его нельзя вообще выкинуть чтобы говнокод больше не компилировался и его бы наконец починили?

X512 ★★★★★
()

Список говнокода на 100 страниц: https://github.com/torvalds/linux/search?q=sprintf. Там правда не везде sprintf, но я не нашёл как в GitHub искать целые слова. Впрочем опасных случаев применения sprintf хватает.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 2)
Ответ на: комментарий от Jetty

Прости какой-какой миф? Не напомнишь.

Ну тот, который про тысячиглаз.

turtle_bazon ★★★★★
()
Ответ на: комментарий от Jetty

Зачем переписывать, судя по обсуждениям, большая часть дыр в драйверах устройств, для которых одобрено создание тулкита для написания драйверов на Раст.

andalevor ★★
()
Ответ на: комментарий от X512

Почему его нельзя вообще выкинуть чтобы говнокод больше не компилировался и его бы наконец починили?

sprintf используют там где заранее известно что выход за границы буфера невозможен - это простая оптимизация. В sysfs show() размер буфера известен, поэтому не передается через параметры фунции

The buffer will always be PAGE_SIZE bytes in length. On i386, this is 4096.

с целочисленными параметрами переполнение невозможно, со строковыми уже варианты, в прошлом году озадачились этой проблемой

https://lore.kernel.org/linux-pm/5d606519698ce4c8f1203a2b35797d8254c6050a.160...

до iscsi просто не дошли руки, править легаси без тестироввания никто не будет.

spbob
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.