
Exploit para CVE-2020-24370 dirigido al intérprete de Lua 5.3, que demuestra una vulnerabilidad en el tiempo de ejecución del lenguaje de script.
dl.display dd { padding-bottom: 0.2em ; }
tt, kbd, code { font-size: 12pt ; }
Bienvenido a Lua 5.3
Lua es un lenguaje de scripting potente, rápido, ligero e incrustable desarrollado por un equipo de la PUC-Rio, la Pontificia Universidad Católica de Río de Janeiro en Brasil. Lua es software libre utilizado en muchos productos y proyectos alrededor del mundo.
El sitio web oficial de Lua proporciona información completa sobre Lua, incluyendo un resumen ejecutivo y documentación actualizada, especialmente el manual de referencia, que puede diferir ligeramente de la copia local distribuida en este paquete.
Lua se distribuye en forma de código fuente. Necesita compilarlo antes de usarlo. Compilar Lua debería ser sencillo porque Lua está implementado en ANSI C puro y se compila sin modificaciones en todas las plataformas conocidas que tengan un compilador ANSI C. Lua también se compila sin modificaciones como C++. Las instrucciones que se dan a continuación para compilar Lua son para sistemas similares a Unix. Vea también instrucciones para otros sistemas y opciones de personalización.
Si no tiene tiempo o inclinación para compilar Lua usted mismo, obtenga un binario de LuaBinaries. Pruebe también LuaDist, una distribución multiplataforma de Lua que incluye baterías.
En la mayoría de plataformas similares a Unix, simplemente ejecute "make" con un objetivo adecuado. Aquí están los detalles.
aix bsd c89 freebsd generic linux macosx mingw posix solaris
Si su plataforma está listada, simplemente ejecute "make xxx", donde xxx es el nombre de su plataforma.
Si su plataforma no está listada, pruebe con la más cercana o con posix, generic, c89, en ese orden.
Si está ejecutando Linux y obtiene errores de compilación, asegúrese de haber instalado el paquete de desarrollo readline (que probablemente se llame libreadline-dev o readline-devel). Si después de eso obtiene errores de enlace, entonces pruebe con "make linux MYLIBS=-ltermcap".
Una vez que haya compilado Lua, es posible que desee instalarlo en un lugar oficial de su sistema. En ese caso, ejecute "make install". El lugar oficial y la forma de instalar los archivos se definen en el Makefile. Probablemente necesitará los permisos adecuados para instalar archivos.
Para compilar e instalar Lua en un solo paso, ejecute "make xxx install", donde xxx es el nombre de su plataforma.
Para instalar Lua localmente, ejecute "make local". Esto creará un directorio install con subdirectorios bin, include, lib, man, share, e instalará Lua como se indica a continuación.
Para instalar Lua localmente, pero en algún otro directorio, ejecute "make install INSTALL_TOP=xxx", donde xxx es su directorio elegido. La instalación comienza en los directorios src y doc, así que tenga cuidado si INSTALL_TOP no es una ruta absoluta.
Estos son los únicos directorios que necesita para el desarrollo. Si solo desea ejecutar programas Lua, solo necesita los archivos en bin y man. Los archivos en include y lib son necesarios para incrustar Lua en programas C o C++.
Tres tipos de cosas se pueden personalizar editando un archivo:
En realidad, no necesita editar los Makefiles porque puede establecer las variables relevantes en la línea de comandos al invocar make. Sin embargo, probablemente sea mejor editar y guardar los Makefiles para registrar los cambios que haya realizado.
Por otro lado, si necesita personalizar algunas características de Lua, necesitará editar src/luaconf.h antes de compilar e instalar Lua. El archivo editado será el que se instale, y será utilizado por cualquier cliente de Lua que compile, para garantizar la coherencia. Una mayor personalización está disponible para expertos editando las fuentes de Lua.
Si no está utilizando las herramientas Unix habituales, entonces las instrucciones para compilar Lua dependen del compilador que utilice. Necesitará crear proyectos (o lo que sea que su compilador utilice) para compilar la biblioteca, el intérprete y el compilador, de la siguiente manera:
Para usar Lua como biblioteca en sus propios programas, necesitará saber cómo crear y usar bibliotecas con su compilador. Además, para cargar dinámicamente bibliotecas C para Lua, necesitará saber cómo crear bibliotecas dinámicas y deberá asegurarse de que las funciones de la API de Lua sean accesibles para esas bibliotecas dinámicas — pero no enlace la biblioteca Lua dentro de cada biblioteca dinámica. Para Unix, recomendamos que la biblioteca Lua se enlace estáticamente al programa anfitrión y que sus símbolos se exporten para enlace dinámico; src/Makefile hace esto para el intérprete de Lua. Para Windows, recomendamos que la biblioteca Lua sea un DLL. En todos los casos, el compilador luac debe enlazarse estáticamente.
Como se mencionó anteriormente, puede editar src/luaconf.h para personalizar algunas características antes de compilar Lua.
Aquí están los principales cambios introducidos en Lua 5.3. El manual de referencia enumera las incompatibilidades que tuvieron que introducirse.
Aquí están los otros cambios introducidos en Lua 5.3:
ipairs y la biblioteca table respetan metamétodos
string.dump
table.move
string.pack
string.unpack
string.packsize
lua_gettable y funciones similares devuelven el tipo del valor resultante
lua_dump
lua_geti
lua_seti
lua_isyieldable
lua_numbertointeger
lua_rotate
lua_stringtonumber
arg está disponible para todo el código
Lua es software libre distribuido bajo los términos de la
licencia MIT
reproducida a continuación;
puede ser utilizado para cualquier propósito, incluidos fines comerciales,
sin ningún costo y sin tener que pedirnos permiso.
El único requisito es que si utiliza Lua, entonces debe reconocernos incluyendo el aviso de copyright apropiado en algún lugar de su producto o documentación.
Para más detalles, vea esto.
Copyright © 1994–2017 Lua.org, PUC-Rio.Por la presente se concede permiso, sin costo alguno, a cualquier persona que obtenga una copia de este software y los archivos de documentación asociados (el "Software"), para tratar con el Software sin restricción, incluyendo, sin limitación, los derechos de usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar y/o vender copias del Software, y para permitir a las personas a quienes se les proporcione el Software hacer lo mismo, sujeto a las siguientes condiciones:
El aviso de copyright anterior y este aviso de permiso deberán incluirse en todas las copias o partes sustanciales del Software.
EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DEL COPYRIGHT SERÁN RESPONSABLES DE NINGUNA RECLAMACIÓN, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN CONTRACTUAL, EXTRACONTRACTUAL O DE OTRA MANERA, QUE SURJA DE O EN CONEXIÓN CON EL SOFTWARE O EL USO U OTRO TIPO DE ACCIONES EN EL SOFTWARE.
Última actualización: Mon Jun 18 22:57:33 -03 2018