
Exploit para CVE-2020-24370 direcionado ao interpretador Lua 5.3, demonstrando uma vulnerabilidade no tempo de execução da linguagem de script.
dl.display dd { padding-bottom: 0.2em ; }
tt, kbd, code { font-size: 12pt ; }
Bem-vindo ao Lua 5.3
Lua é uma linguagem de script poderosa, rápida, leve e embutível, desenvolvida por uma equipe da PUC-Rio, a Pontifícia Universidade Católica do Rio de Janeiro no Brasil. Lua é um software livre usado em muitos produtos e projetos ao redor do mundo.
O site oficial do Lua fornece informações completas sobre Lua, incluindo um resumo executivo e documentação atualizada, especialmente o manual de referência, que pode diferir ligeiramente da cópia local distribuída neste pacote.
Lua é distribuído em formato fonte. Você precisa compilá-lo antes de usá-lo. Compilar o Lua deve ser simples, pois Lua é implementado em ANSI C puro e compila sem modificações em todas as plataformas conhecidas que possuam um compilador ANSI C. Lua também compila sem modificações como C++. As instruções abaixo para compilar o Lua são para sistemas do tipo Unix. Veja também instruções para outros sistemas e opções de personalização.
Se você não tem tempo ou disposição para compilar o Lua você mesmo, obtenha um binário em LuaBinaries. Experimente também LuaDist, uma distribuição multi-plataforma do Lua que inclui baterias.
Na maioria das plataformas do tipo Unix, simplesmente faça "make" com um alvo adequado. Aqui estão os detalhes.
aix bsd c89 freebsd generic linux macosx mingw posix solaris
Se sua plataforma estiver listada, apenas execute "make xxx", onde xxx é o nome da sua plataforma.
Se sua plataforma não estiver listada, tente a mais próxima ou posix, generic, c89, nesta ordem.
Se você estiver usando Linux e tiver erros de compilação, certifique-se de ter instalado o pacote de desenvolvimento readline (que provavelmente se chama libreadline-dev ou readline-devel). Se depois disso você tiver erros de link, então tente "make linux MYLIBS=-ltermcap".
Depois de compilar o Lua, você pode querer instalá-lo em um local oficial no seu sistema. Nesse caso, execute "make install". O local oficial e a maneira de instalar os arquivos são definidos no Makefile. Você provavelmente precisará das permissões corretas para instalar os arquivos.
Para compilar e instalar o Lua em uma única etapa, execute "make xxx install", onde xxx é o nome da sua plataforma.
Para instalar o Lua localmente, execute "make local". Isso criará um diretório install com subdiretórios bin, include, lib, man, share, e instalará o Lua conforme listado abaixo.
Para instalar o Lua localmente, mas em outro diretório, execute "make install INSTALL_TOP=xxx", onde xxx é o diretório de sua escolha. A instalação começa nos diretórios src e doc, então tome cuidado se INSTALL_TOP não for um caminho absoluto.
Estes são os únicos diretórios necessários para desenvolvimento. Se você quiser apenas executar programas Lua, você só precisa dos arquivos em bin e man. Os arquivos em include e lib são necessários para embutir Lua em programas C ou C++.
Três tipos de coisas podem ser personalizadas editando um arquivo:
Você não precisa necessariamente editar os Makefiles, pois você pode definir as variáveis relevantes na linha de comando ao invocar make. No entanto, provavelmente é melhor editar e salvar os Makefiles para registrar as alterações que você fez.
Por outro lado, se você precisar personalizar algumas funcionalidades do Lua, será necessário editar src/luaconf.h antes de compilar e instalar o Lua. O arquivo editado será o instalado, e será usado por qualquer cliente Lua que você compilar, para garantir consistência. Personalizações adicionais estão disponíveis para especialistas editando os fontes do Lua.
Se você não está usando as ferramentas Unix comuns, então as instruções para compilar Lua dependem do compilador que você usa. Você precisará criar projetos (ou o que seu compilador usar) para compilar a biblioteca, o interpretador e o compilador, da seguinte forma:
Para usar Lua como biblioteca em seus próprios programas, você precisará saber como criar e usar bibliotecas com seu compilador. Além disso, para carregar dinamicamente bibliotecas C para Lua, você precisará saber como criar bibliotecas dinâmicas e precisará garantir que as funções da API Lua sejam acessíveis a essas bibliotecas dinâmicas — mas não vincule a biblioteca Lua a cada biblioteca dinâmica. Para Unix, recomendamos que a biblioteca Lua seja vinculada estaticamente ao programa hospedeiro e que seus símbolos sejam exportados para vinculação dinâmica; src/Makefile faz isso para o interpretador Lua. Para Windows, recomendamos que a biblioteca Lua seja uma DLL. Em todos os casos, o compilador luac deve ser vinculado estaticamente.
Conforme mencionado acima, você pode editar src/luaconf.h para personalizar algumas funcionalidades antes de compilar Lua.
Aqui estão as principais mudanças introduzidas no Lua 5.3. O manual de referência lista as incompatibilidades que tiveram que ser introduzidas.
Aqui estão as outras mudanças introduzidas no Lua 5.3:
ipairs e a biblioteca table respeitam metamétodos
string.dump
table.move
string.pack
string.unpack
string.packsize
lua_gettable e funções similares retornam o tipo do valor resultante
lua_dump
lua_geti
lua_seti
lua_isyieldable
lua_numbertointeger
lua_rotate
lua_stringtonumber
arg disponível para todo código
Lua é um software livre distribuído sob os termos da
licença MIT
reproduzida abaixo;
ele pode ser usado para qualquer propósito, incluindo propósitos comerciais,
sem custo algum, sem necessidade de nos perguntar.
O único requisito é que, se você usar Lua, você nos dê crédito incluindo o aviso de copyright apropriado em algum lugar do seu produto ou sua documentação.
Para detalhes, veja isto.
Copyright © 1994–2017 Lua.org, PUC-Rio.A permissão é concedida, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e dos arquivos de documentação associados (o "Software"), para lidar com o Software sem restrições, incluindo, sem limitação, os direitos de usar, copiar, modificar, fundir, publicar, distribuir, sublicenciar e/ou vender cópias do Software, e permitir que as pessoas a quem o Software é fornecido o façam, sujeitas às seguintes condições:
O aviso de copyright acima e este aviso de permissão devem ser incluídos em todas as cópias ou partes substanciais do Software.
O SOFTWARE É FORNECIDO "NO ESTADO EM QUE SE ENCONTRA", SEM QUALQUER TIPO DE GARANTIA, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM PROPÓSITO ESPECÍFICO E NÃO VIOLAÇÃO. EM NENHUM CASO OS AUTORES OU DETENTORES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER REIVINDICAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM UMA AÇÃO CONTRATUAL, ILÍCITA OU DE OUTRA FORMA, DECORRENTE DE, OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.
Última atualização: Mon Jun 18 22:57:33 -03 2018