Обсъжда се преминаване към PIE за x86_64 през 2026 г. за Linux ядрото

0
16
Linux Kernel

Нов опит за повишаване на сигурността при Linux

Разработчикът Ard Biesheuvel изпрати обновена серия от 19 пача, които предлагат x86_64 ядрото да бъде линквано като Position Independent Executable (PIE). Това е продължение на работа, започната преди повече от година, и цели да осигури по‑силна защита и по‑добра съвместимост с бъдещи механизми за hardening.

Защо PIE е важен за ядрото

PIE позволява по‑гъвкаво разполагане на кода в паметта и е ключов компонент за техники като:

  • Kernel Address Space Layout Randomization (KASLR)
  • бъдещи механизми като fg‑kaslr
  • уеднаквяване на boot протоколите между различни архитектури

Според Biesheuvel това е необходима стъпка за модернизиране на сигурността на ядрото.

Какво беше пречка досега

Предишният опит за въвеждане на PIE беше отхвърлен поради три основни опасения:

  • използването на GOT таблици в напълно линкнати бинарни файлове
  • увеличаване размера на кода
  • потенциални загуби в производителността

Новата версия на пачовете решава тези проблеми чрез PIE codegen без използване на GOT слотове.

Реалните резултати от тестовете

  • увеличение на размера на кода: между 0.2% (clang) и 0.5% (gcc)
  • не са открити забележими регресии в производителността при тестове с hackbench
  • тествано на различни x86 микроархитектури

Какво включва финалният пач

Последният пач добавя възможност за използване на RELR relocation packing, което:

  • намалява размера на релокациите
  • ускорява обработката при стартиране
  • позволява по‑ефективно преместване на ядрото в паметта
  • инструктира линкера да генерира бинарен файл, предназначен за реално релокиране при boot

Какво следва

Предложението е в статус RFC и предстои да се обсъди дали PIE ще бъде прието за x86_64 през 2026 г.
Ако бъде одобрено, промяната ще засегне само ядрата с активиран KASLR, докато системи без CONFIG_RANDOMIZE_BASE ще продължат да работят по стария начин.

Прочетете още:  ublk въвежда batch I/O dispatch: по-малко overhead, по-висока производителност при Linux