
Эксплойт для CVE-2020-24370, нацеленный на интерпретатор Lua 5.3, демонстрирующий уязвимость в среде выполнения скриптового языка.
dl.display dd { padding-bottom: 0.2em ; }
tt, kbd, code { font-size: 12pt ; }
Добро пожаловать в Lua 5.3
Lua — это мощный, быстрый, легковесный, встраиваемый скриптовый язык, разработанный командой в PUC-Rio, Папском католическом университете Рио-де-Жанейро в Бразилии. Lua является свободным программным обеспечением, используемым во многих продуктах и проектах по всему миру.
Официальный веб-сайт Lua предоставляет полную информацию о Lua, включая краткий обзор и обновлённую документацию, особенно справочное руководство, которое может незначительно отличаться от локальной копии, распространяемой в этом пакете.
Lua распространяется в исходном коде. Перед использованием его необходимо собрать. Сборка Lua должна быть простой, поскольку Lua реализован на чистом ANSI C и компилируется без изменений на всех известных платформах, имеющих компилятор ANSI C. Lua также компилируется без изменений как C++. Инструкции по сборке Lua, приведённые ниже, предназначены для Unix-подобных платформ. Смотрите также инструкции для других систем и варианты настройки.
Если у вас нет времени или желания компилировать Lua самостоятельно, возьмите бинарный файл с LuaBinaries. Попробуйте также LuaDist, мультиплатформенную дистрибуцию Lua с дополнительными библиотеками.
На большинстве Unix-подобных платформ просто выполните "make" с подходящей целью. Вот подробности.
aix bsd c89 freebsd generic linux macosx mingw posix solaris
Если ваша платформа есть в списке, просто выполните "make xxx", где xxx — это имя вашей платформы.
Если вашей платформы нет в списке, попробуйте ближайшую или posix, generic, c89, в этом порядке.
Если вы работаете в Linux и получаете ошибки компиляции, убедитесь, что установлен пакет разработки readline (вероятно, он называется libreadline-dev или readline-devel). Если после этого возникают ошибки компоновки, попробуйте выполнить "make linux MYLIBS=-ltermcap".
После сборки Lua, возможно, вы захотите установить его в системное место. В этом случае выполните "make install". Место установки и способ установки файлов определены в Makefile. Вам вероятно понадобятся соответствующие права для установки файлов.
Чтобы собрать и установить Lua за один шаг, выполните "make xxx install", где xxx — имя вашей платформы.
Чтобы установить Lua локально, выполните "make local". Это создаст каталог install с подкаталогами bin, include, lib, man, share, и установит Lua, как указано ниже.
Чтобы установить Lua локально, но в другой каталог, выполните "make install INSTALL_TOP=xxx", где xxx — выбранный каталог. Установка начинается в каталогах src и doc, поэтому будьте внимательны, если INSTALL_TOP не является абсолютным путём.
Это единственные каталоги, необходимые для разработки. Если вы хотите только запускать программы на Lua, вам нужны только файлы в bin и man. Файлы в include и lib необходимы для встраивания Lua в программы на C или C++.
Три вида вещей могут быть настроены редактированием файла:
Вам не обязательно редактировать Makefile'ы, так как вы можете задать соответствующие переменные в командной строке при вызове make. Тем не менее, вероятно, лучше отредактировать и сохранить Makefile'ы, чтобы зафиксировать сделанные изменения.
С другой стороны, если вам нужно настроить некоторые возможности Lua, вам придётся отредактировать src/luaconf.h перед сборкой и установкой Lua. Отредактированный файл будет установлен, и он будет использоваться любыми клиентами Lua, которые вы собираете, для обеспечения согласованности. Дополнительная настройка доступна экспертам через редактирование исходных текстов Lua.
Если вы не используете обычные инструменты Unix, инструкции по сборке Lua зависят от используемого компилятора. Вам нужно будет создать проекты (или то, что использует ваш компилятор) для сборки библиотеки, интерпретатора и компилятора следующим образом:
Чтобы использовать Lua как библиотеку в своих программах, вам нужно знать, как создавать и использовать библиотеки в вашем компиляторе. Кроме того, для динамической загрузки C-библиотек для Lua вам нужно знать, как создавать динамические библиотеки, и нужно убедиться, что функции API Lua доступны для этих динамических библиотек — но не подключайте библиотеку Lua к каждой динамической библиотеке. Для Unix мы рекомендуем, чтобы библиотека Lua статически компоновалась в основную программу, а её символы экспортировались для динамической компоновки; src/Makefile делает это для интерпретатора Lua. Для Windows мы рекомендуем, чтобы библиотека Lua была DLL. Во всех случаях компилятор luac должен компоноваться статически.
Как упоминалось выше, вы можете редактировать src/luaconf.h для настройки некоторых возможностей перед сборкой Lua.
Вот основные изменения, введённые в Lua 5.3. Справочное руководство перечисляет несовместимости, которые пришлось ввести.
Вот остальные изменения, введённые в Lua 5.3:
ipairs и библиотека table учитывают метаметоды
string.dump
table.move
string.pack
string.unpack
string.packsize
lua_gettable и подобные функции возвращают тип полученного значения
lua_dump
lua_geti
lua_seti
lua_isyieldable
lua_numbertointeger
lua_rotate
lua_stringtonumber
arg доступна для всего кода
Lua — это свободное программное обеспечение, распространяемое на условиях
лицензии MIT,
воспроизведённой ниже;
он может использоваться для любых целей, включая коммерческие,
абсолютно бесплатно, без необходимости спрашивать разрешения.
Единственное требование: если вы используете Lua, вы должны указать нас как авторов, включив соответствующее уведомление об авторских правах в ваш продукт или его документацию.
Подробнее см. здесь.
Copyright © 1994–2017 Lua.org, PUC-Rio.Настоящим бесплатно предоставляется разрешение любому лицу, получающему копию этого программного обеспечения и сопутствующей документации (далее — «Программа»), на использование Программы без ограничений, включая, без ограничений, права на использование, копирование, изменение, объединение, публикацию, распространение, сублицензирование и/или продажу копий Программы, а также на разрешение лицам, которым предоставляется Программа, делать это, при соблюдении следующих условий:
Вышеуказанное уведомление об авторских правах и данное уведомление о разрешении должны быть включены во все копии или значительные части Программы.
ПРОГРАММА ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ОПРЕДЕЛЁННОЙ ЦЕЛИ И ОТСУТСТВИЯ НАРУШЕНИЙ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО КАКИМ-ЛИБО ИСКАМ, УБЫТКАМ ИЛИ ИНЫМ ОБЯЗАТЕЛЬСТВАМ, БУДЬ ТО В РАМКАХ ДОГОВОРА, ДЕЛИКТА ИЛИ ИНЫМ ОБРАЗОМ, ВОЗНИКШИМ ИЗ ИЛИ В СВЯЗИ С ПРОГРАММОЙ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ ДЕЙСТВИЯМИ С ПРОГРАММОЙ.
Последнее обновление: Mon Jun 18 22:57:33 -03 2018