Системный журнал — практичная база знаний по VPS и Linux
Системный журнал Системный журнал
lua • luajit • Безопасность

USN-8544-1: исправлены уязвимости в LuaJIT

4 мин чтения

В пакете LuaJIT, Just-In-Time компиляторе для языка программирования Lua, были обнаружены и исправлены несколько уязвимостей безопасности.

Уязвимости связаны с неправильной обработкой определённых входных данных. Злоумышленник мог бы использовать эти проблемы для вызова аварийного завершения программы (crash), что приводит к отказу в обслуживании (denial of service), или для выполнения произвольного кода.

Кого это касается

Уязвимости затрагивают системы, на которых установлен пакет LuaJIT. Это могут быть серверы, работающие с приложениями, использующими LuaJIT для ускорения выполнения скриптов на языке Lua.

Особенно важно обновить системы, где LuaJIT используется в критических приложениях или сервисах, доступных извне. Также стоит проверить наличие пакета на рабочих станциях разработчиков, если они используют LuaJIT для тестирования или отладки.

Оценка риска

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

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

Подготовка к обновлению

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

  • Создание резервной копии: Сделайте резервные копии важных данных и конфигураций перед началом обновления.
  • Определение окна обслуживания: Выберите время для обновления, когда нагрузка на систему минимальна. Это поможет избежать неудобств для пользователей.
  • Проверка зависимостей: Убедитесь, что обновление LuaJIT не вызовет конфликтов с другими установленными пакетами.

Проверка установленной версии LuaJIT

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

dpkg -l luajit

Если пакет установлен, вы увидите информацию о его версии. Например:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version        Architecture   Description
+++-==============-============-============-=================================
uu  luajit          2.1.0~beta3-1  amd64         Just-In-Time Compiler for Lua

В данном примере установлена версия 2.1.0~beta3-1. Если ваша версия отличается, проверьте её на соответствие исправленным версиям.

Обновление системы

Проблема может быть устранена обновлением системы до следующих версий пакета:

  • Ubuntu 24.04 LTS (Noble Numbat): luajit 2.1.0~beta3-1ubuntu0.1
  • Ubuntu 22.04 LTS (Jammy Jellyfish): luajit 2.1.0~beta3-1ubuntu0.1
  • Ubuntu 20.04 LTS (Focal Fossa): luajit 2.1.0~beta3-1ubuntu0.1

Для обновления системы выполните следующие команды:

sudo apt update
sudo apt upgrade luajit

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

Проверка результата обновления

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

dpkg -l luajit

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

Также рекомендуется проверить работоспособность приложений, использующих LuaJIT. Если какие-либо проблемы обнаружены, рассмотрите возможность отката обновления или обращения за поддержкой.

Дополнительные меры безопасности

Если вы используете LuaJIT в критических приложениях, рассмотрите возможность дополнительных мер защиты:

  • Изоляция процессов: Запускайте приложения, использующие LuaJIT, в изолированных контейнерах или виртуальных машинах.
  • Ограничение прав: Запускайте приложения от пользователей с минимально необходимыми правами.
  • Мониторинг: Настройте мониторинг аварийных завершений процессов и необычных действий.

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

Ограничения и типичные ошибки

При выполнении обновления могут возникнуть некоторые ограничения и ошибки:

  • Зависимости: В некоторых случаях обновление LuaJIT может потребовать обновления других пакетов, что может вызвать конфликты.
  • Совместимость: Новые версии LuaJIT могут содержать изменения, несовместимые с некоторыми приложениями. Рекомендуется протестировать обновление в тестовой среде перед развёртыванием на производстве.
  • Откат: Если после обновления возникнут проблемы, может потребоваться откат к предыдущей версии. Убедитесь, что у вас есть резервные копии и план отката.