LINUX.ORG.RU
ФорумTalks

Grsecurity в топку

 , , , ,


0

2

Новость протухла, все использующие вроде должны сами отслеживать ситуацию, но наверняка есть слоупоки. На опеннете выложили не плохую обзорную статейку, а я покопипащу:

10.07.2017 08:30 Grsecurity нарушает лицензию GPL в своих попытках остановить перенос кода в ядро Linux

Брюс Перенс (Bruce Perens), один из авторов определения Open Source, соучредитель организации OSI (Open Source Initiative), создатель пакета BusyBox и один из первых лидеров проекта Debian (в 1996 году сменил на посту Яна Мердока), предоставил свою экспертную оценку действиям проекта Grsecurity, пытающегося противостоять переносу своих наработок в основное ядро Linux. Напомним, что в апреле проект Grsecurity полностью прекратил бесплатное распространение своих патчей и стал всячески препятствовать работе проекта KSPP (Kernel Self Protection Project), занимающегося переносом в основное ядро Linux методов защиты, развиваемых Grsecurity.

Мотивы борьбы с переносом Grsecurity в состав ядра достаточно разнообразные, от обиды из-за обхода в финансировании (вместо основного проекта Linux Foundation и Core Infrastructure Initiative выделили грант KSPP) и копирования решений без упоминания PaX/Grsecurity до нежелания загонять себя в жесткие рамки (Grsecurity достаточно вольно рассматривает вопрос соблюдения совместимости и требований к компонентам ядра, ставя на первое место обеспечение защиты), нежелания разбивать продукт на части (Grsecurity рассматривается как взаимосвязанное единое целое) и репутационных рисков (из-за некорректного переноса исправлений, введения ограничений для совместимости и переработок для соблюдения требований ядра реализация перенесённых в основное ядро технологий Grsecurity содержит ошибки и проблемы с безопасностью, которых нет в оригинальных патчах, что приводит к созданию половинчатых решений и создаёт лишь видимость повышения безопасности).

Так как для подписчиков патчи продолжают публиковаться под лицензией GPLv2, не исключено, что для поддержания реализации технологий Grsecurity в основном ядре и оперативного устранения ошибок, разработчики KSPP отслеживают текущее состояние патчей Grsecurity. Из-за того, что публичный доступ закрыт, источником утечки кода могут стать платные подписчики Grsecurity, которые имеют доступ к коду - так как код патчей под GPLv2 никто не запрещает им распространять эти патчи.

Дошло до того, что представители Grsecurity стали угрожать судебным иском из-за нарушений требований атрибуции (упоминание автора при копировании кода), а также добавили дополнительное условие, запрещающее клиентам передавать патчи третьим лицам под угрозой разрыва договора. Брюс Перенс предупредил, что данный шаг является явным нарушением лицензии GPLv2, которая не допускает наложение дополнительных условий на распространение кода. Так как патчи Grsecurity являются продуктом, производным от ядра Linux, они обязаны поставляться под GPLv2 или совместимой лицензией, не внося дополнительных ограничений.

Введение ограничений на распространение патчей делает невозможным их применение к ядру Linux, нарушает авторские права разработчиков ядра и приводит к расторжению лицензии GPLv2 и, как следствие, прекращению всех прав лицензиата, предоставленных ему данной лицензией. Компаниям рекомендовано избегать применения патчей Grsecurity, так как они нарушают условия распространения кода для ядра Linux и создают риск разрыва лицензионного соглашения на ядро. В свою очередь, Линус Торвальдс в свойственной ему манере посоветовал не связываться с Grsecurity и раскритиковал их подход к разработке, который оправдывает любые нарушения прежнего поведения целесообразностью повышения безопасности.

★★★★★

Последнее исправление: mandala (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Интерфейс был запатентован.

Интерфейс был запатентован? Покажи.

Прекрасно может в виде набора патчей.

Патч — это способ хранения. Патч не является самостоятельной работой, его принципиально невозможно использовать без ядра. Поэтому — это производная от ядра работа.

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

hardened-sources останутся в дереве пока сохраняется актуальность их версий.
Возможно будет новый пакет для исходников форка ядра(репа на гитхабе нагугливается влёт), но там только патчи совместимости с новыми версиями - никаких новых функций не планируется авторами форка. Новые пакет нужен чтобы люди понимали разницу между патчами от GrSecurity team и патчами от энтузиастов(уровень доверия, все дела).

Это всё что мне известно на данный момент из беглого чтения логов в IRC, более подробно надо спрашивать у Gentoo Hardened team.

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

TheAnonymous а гентушники в данном вопросе вообще что-то решают?

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

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

чтобы люди понимали разницу между патчами от GrSecurity team и патчами от энтузиастов(уровень доверия, все дела)

Ага, теперь к энтузиастом доверия как-то побольше, чем grsec

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

а гентушники в данном вопросе вообще что-то решают?

Могут просто выпилить, а могут запилить из другого апстрима, есть форк с патчами для новых ядер. PaX то неплохая вещь

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

Ну в любом случае, подменять пакет его форком без какого-либо видимого предупреждения - плохая идея. Особенно если речь идет о ядре.

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

PaX то неплохая вещь

GrSecurity != PaX

есть форк с патчами для новых ядер

Значит текущие hardened-sources «похоронят» а сделают новые уже на основе форка.

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

Патч не является самостоятельной работой, его принципиально невозможно использовать без ядра

Ты совсем дурачок? Никакую программу для linux невозможно использовать без ядра, и что? Иди читай лицензию долбоящер - производная работа, это то что содержит часть продукта под gpl. Патчи не содержат чужого кода gpl = это не производная работа.

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

Так как патчи Grsecurity являются продуктом, производным от ядра Linux

Лол что?

Нет, не лол.

Производным продуктом является пропатченное ядро, а не сами патчи.

Позиция не маргинальная, но за общепризнанный факт это выдавать не надо.

Zmicier ★★★★★
()
Ответ на: комментарий от no-such-file

Программы можно использовать ничего не накладывая на исходники ядра. Многие юзают программы даже не имея исходников ядра в системе. Так что, сравнение патчей с программами крайне некорректно. Патчи изначально разрабатываются для накладывания на исходный код. Это производная работа.

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

Последняя версия - (сюрприз!) pax-linux-4.9.24-test7.patch, как и grsec до огораживания

Наверное потому-что PaX team таки часть GrSecurity? Сюрприииз ;)

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

потом продолжим

Лучше не надо. Мне по 10 раз повторять не хочется. Я понимаю что ты несогласен, но мне не интересно слушать твои безаргументные мантры - это не разговор.

no-such-file ★★★★★
()
Ответ на: комментарий от Zmicier

но за общепризнанный факт это выдавать не надо

Что значит не надо? Когда появился блоб нвидии было очень много споров на эту тему, и Линус, в том числе, начал вилять попой - это «серая зона», «у меня мнение такое, но может быть и другое», «это суд решает» и т.п. отмазки. В итоге признал, что

In short: your code is yours. The code you write is automatically copyrighted by YOU, and as such you have the right to license and use it any way you want

Нвидию засудили? Они открыли блоб? Нет. Всё, гуляйте.

А теперь, когда кто-то уже изнутри начал возбухать про свой код, им снова тычут «derived work», как буд-то это что-то само собой разумеющееся. И эти лицемеры ещё что-то вякают против Apple.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

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

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

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

Понятие производной работы определено законодательно

И как закон называется?

Патч же на ядро невозможно никак использовать без ядра

Можно. Его можно читать, например. То что пользователь применяет патч к ядру - это лично дело пользователя, если он это ядро потом не распространяет.

diff включает в себя участки кода ядра

Цитаты из работ GPL не делают твою работу «производной».

no-such-file ★★★★★
()
Ответ на: комментарий от saahriktu

Патчи изначально разрабатываются для накладывания на исходный код. Это производная работа

Нет не производная, а авторская. Производная работа - это готовая программа, с чужим кодом в который я добавил свои правки. Но сами правки - мои и я эти правки (патчи) могу лицензировать как мне вздумается. Это никак не связано с тем ядро, или не ядро. Да вообще это может быть не код. Если ты man напишешь по внутренностям ядра - это что, будет производной работой?

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Собранное с патчами ядро - производный продукт, сами патчи - авторский продукт.

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

templarrr ★★★★★
()
Ответ на: комментарий от no-such-file

Патчи - это метод распространения модифицированного исходного кода. Распространение только разницы между оригинальными и модифицированными исходниками позволяет снизить сетевой траффик и нагрузку на сервера. Именно поэтому зачастую распространяют только эту разницу в форме патчей. Но, это именно разница между оригинальными и модифицированными исходниками. А все модификации исходников под GNU GPL в соответствии с ней должны возвращаться сообществу исходниками, и неважно в какой форме - полной или в виде патчей. Модификации в форме патчей.

saahriktu ★★★★★
()
Ответ на: комментарий от no-such-file

Если ты man напишешь по внутренностям ядра - это что, будет производной работой?

Man-ом нельзя будет воспользоваться без исходников ядра?

templarrr ★★★★★
()
Ответ на: комментарий от no-such-file

Можно. Его можно читать, например.

GPL уже стала регулировать распространение литературы? ЕМНИП GPL - лицензия, которая регулирует распространение программ. Скомпилировать или исполнить патч без оригинальных исходников можно?

templarrr ★★★★★
()
Последнее исправление: templarrr (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Цитаты из работ GPL не делают твою работу «производной».

0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The «Program», below, refers to any such program or work, and a «work based on the Program» means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term «modification».) Each licensee is addressed as «you».

a work containing the Program or a portion of it

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

Ну примени патч без diff'а.

Да вообще-то, технически это не проблема. Вставки кода в патче нужны чтобы не применить его к не тому коду, например дважды, или не той версии. Это что, последний аргумент в случае суда - ололо, а патчах есть код linux? Мне как-то кажется, что суд всё-таки будет опираться на экспертное мнение, насколько код в патчах по существу является авторским и «новым», а не копипастой с заменой пары символов.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Техническая информация для чего? Чтобы наложить на оригинальные исходники и получить модифицированные? Это и есть модифицирование чужого исходного кода, для которого они и делались. Вот если бы там не было такой технической информации - тогда ещё можно было бы о чём-то рассуждать.

Подозреваю, что сейчас Вы придумаете свои diff2 и patch2, которые будет работать с 2-мя разными файлами, и вся связанная с оригинальными исходниками информация будет помещаться в отдельный файл. Только разработчики всё равно будут распространять оба файла.

Дальше можно дойти до patch3proprietary, который будет читать по сети «техническую информацию» для наложения патча именно в момент его наложения (запрашивая логин и пароль), а распространяться будет только один файл с исключительно новым кодом.

saahriktu ★★★★★
()
Ответ на: комментарий от no-such-file

Да вообще-то, технически это не проблема.

Вставки кода в патче нужны

Ок.

а патчах есть код linux?

Его там уже нет?

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

Чтобы наложить на оригинальные исходники и получить модифицированные

Нет, чтобы не наложить патч на «не тот» код и не испортить его.

Вот если бы там не было такой технической информации - тогда ещё можно было бы о чём-то рассуждать

Ок. Её можно удалить. Вопрос исчерпан?

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

Как видишь она вообще не нужна.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file
> grep -v ^+ grsecurity-2.9.1-3.7.8-201302161436.patch | wc -l
49634
> wc -l grsecurity-2.9.1-3.7.8-201302161436.patch
92224 grsecurity-2.9.1-3.7.8-201302161436.patch
> bc -l <<< "49634*100/92224"
53.81896252602359472588
> Больше чем 53% - оригинальный код!

Пример оригинального кода в патче:

 static unsigned long
-arch_get_unmapped_area_1(unsigned long addr, unsigned long len,
-                        unsigned long limit)
 {
        struct vm_area_struct *vma = find_vma(current->mm, addr);
-
        while (1) {
                /* At this point:  (!vma || addr < vma->vm_end). */
                if (limit - len < addr)
                        return -ENOMEM;
-               if (!vma || addr + len <= vma->vm_start)
                        return addr;
                addr = vma->vm_end;
                vma = vma->vm_next;
@@ -1340,20 +1340,24 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
           merely specific addresses, but regions of memory -- perhaps
           this feature should be incorporated into all ports?  */

        if (addr) {
-               addr = arch_get_unmapped_area_1 (PAGE_ALIGN(addr), len, limit);
                if (addr != (unsigned long) -ENOMEM)
                        return addr;
        }

        /* Next, try allocating at TASK_UNMAPPED_BASE.  */
-       addr = arch_get_unmapped_area_1 (PAGE_ALIGN(TASK_UNMAPPED_BASE),
-                                        len, limit);
        if (addr != (unsigned long) -ENOMEM)
                return addr;

        /* Finally, try allocating in low memory.  */
-       addr = arch_get_unmapped_area_1 (PAGE_SIZE, len, limit);

        return addr;
 }

saahriktu ★★★★★
()
Ответ на: комментарий от no-such-file

Юзер будет вручную по строчке удалять и добавлять? Как он узнает какие именно удалять и куда вставлять новые? Вот тут-то и нужна «техническая информация».

Нет, чтобы не наложить патч на <<не тот>> код и не испортить его.

А какой тот, и чем отличается от не того? Если это чужой код, то это производная работа.

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

Юзер будет вручную по строчке удалять и добавлять? Как он узнает какие именно удалять и куда вставлять новые?

Что так трудно догадаться? Достаточно просто иметь список номеров строк, которые нужно вырезать/вставить и новый код. Ещё раз, для особо непонятливых - такой формат патча нужен для того, чтобы при патчинге можно было проверить, какой код уже есть - нужно применять ханк или нет (или применить обратно). Это необязательная фича. Просто применить, без проверки можно только по номерам строк. Номера строк надеюсь под GPL не попадают?

no-such-file ★★★★★
()
Ответ на: комментарий от saahriktu

Если это чужой код, то это производная работа

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

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Достаточно просто иметь список номеров строк, которые нужно вырезать/вставить и новый код.

Всё равно это техническая информация для модифицирования чужих исходников. И если авторы её распространяют, то они должны распространять её под GNU GPL. А если они её не распространяют, то это описанная выше схема:

   Дальше можно дойти до patch3proprietary, который будет читать по сети <<техническую информацию>> для наложения
   патча именно в момент его наложения (запрашивая логин и пароль), а распространяться будет только один файл с
   исключительно новым кодом.

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

Дальше можно дойти до patch3proprietary, который будет читать по сети <<техническую информацию>> для наложения патча именно в момент его наложения (запрашивая логин и пароль), а распространяться будет только один файл с исключительно новым кодом

Примерно так и делает нвидия - специальной инсталятор скачивает и компилирует модуль используя хэдеры ядра. Это прямо разрешается GPL - ты имеешь право использовать полученный GPL код как хочешь. Какая разница - покупаешь ты патчи, или сам пишешь? Никаких оговорок на этот счёт нет.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от saahriktu

это когда патч написан для исходников самого автора

Я думаю в grsec патчах достаточно «исходников самого автора». Это же не багфиксы, всё таки.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

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

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

А, как я уже писал выше, разница большая

Да ну, и какая? Модуль без ядра не работает и даже не скомпилируется.

Авторы распространяют GPL софт на тех условиях, что любые распространяемые изменения должны возвращаться в сообщество исходниками

Во-первых, не любые. Во-вторых, код был общедоступен - в чём проблема? Какого хрена grsec до исх пор не в апстриме? Было не надо, а теперь вдруг стало надо? Ни себе, ни людям.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Да ну, и какая? Модуль без ядра не работает и даже не скомпилируется.

Такая, что файлы исходников нового модуля создаются с нуля. Это не патч на уже существующие файлы под GNU GPL.

код был общедоступен - в чём проблема?

Тогда проблемы не было. Проблема в том, что модификации исходников под GNU GPL закрывать нельзя.

Было не надо, а теперь вдруг стало надо?

Да всем чихать на эти патчи. Только их авторы нарушают лицензию на условиях которой распространяется код ядра.

saahriktu ★★★★★
()

Да, как уже говорили, правы обе стороны. Grsec'и - в том, что за свой труд хотят денег и не хотят, чтобы им портили репутацию. Но и GPL нарушать нельзя.

Meyer ★★★★★
()
Ответ на: комментарий от no-such-file

Да ну, и какая? Модуль без ядра не работает и даже не скомпилируется.

Слишком толсто вбрасываешь. Модуль может быть проприентарным (использование хидеров из ядра != создание производной работы), в отличие от патча, который таки содержит часть оригинальных исходников в виде «технической информации», а поэтому должен иметь такую же лицензию, как и ядро. Отдыхай.

Meyer ★★★★★
()
Ответ на: комментарий от no-such-file

Если ты man напишешь по внутренностям ядра - это что, будет производной работой?

Вообще-то да. Только там уже начинает работать правило fair use.

intelfx ★★★★★
()
Ответ на: комментарий от no-such-file

И как закон называется?

Смотря в какой юрисдикции. За примерами — сюда.

Можно. Его можно читать, например. То что пользователь применяет патч к ядру - это лично дело пользователя, если он это ядро потом не распространяет.

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

Цитаты из работ GPL не делают твою работу «производной».

Делают, об этом прямо написано в GPL.

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