
Exploit per CVE-2020-24370 che prende di mira l'interprete Lua 5.3, dimostrando una vulnerabilità nel runtime del linguaggio di scripting.
dl.display dd { padding-bottom: 0.2em ; }
tt, kbd, code { font-size: 12pt ; }
Benvenuti in Lua 5.3
Lua è un linguaggio di scripting potente, veloce, leggero e incorporabile, sviluppato da un team della PUC-Rio, la Pontificia Università Cattolica di Rio de Janeiro in Brasile. Lua è software libero utilizzato in molti prodotti e progetti in tutto il mondo.
Il sito ufficiale di Lua fornisce informazioni complete su Lua, inclusi un sommario esecutivo e una documentazione aggiornata, in particolare il manuale di riferimento, che potrebbe differire leggermente dalla copia locale distribuita in questo pacchetto.
Lua viene distribuito in formato sorgente. È necessario compilarlo prima di utilizzarlo. Compilare Lua dovrebbe essere semplice, perché Lua è implementato in ANSI C puro e si compila senza modifiche su tutte le piattaforme conosciute che dispongono di un compilatore ANSI C. Lua si compila senza modifiche anche come C++. Le istruzioni seguenti per compilare Lua sono per sistemi Unix-like. Vedi anche istruzioni per altri sistemi e opzioni di personalizzazione.
Se non hai il tempo o la voglia di compilare Lua da solo, scarica un binario da LuaBinaries. Prova anche LuaDist, una distribuzione multipiattaforma di Lua che include batterie.
Sulla maggior parte delle piattaforme Unix-like, basta eseguire "make" con un target appropriato. Ecco i dettagli.
aix bsd c89 freebsd generic linux macosx mingw posix solaris
Se la tua piattaforma è elencata, esegui semplicemente "make xxx", dove xxx è il nome della tua piattaforma.
Se la tua piattaforma non è elencata, prova la più vicina o posix, generic, c89, in quest'ordine.
Se stai usando Linux e ricevi errori di compilazione, assicurati di aver installato il pacchetto di sviluppo di readline (probabilmente chiamato libreadline-dev o readline-devel). Se dopo ciò ricevi errori di linking, prova con "make linux MYLIBS=-ltermcap".
Una volta compilato Lua, potresti volerlo installare in una posizione ufficiale del sistema. In tal caso, esegui "make install". La posizione ufficiale e il modo di installare i file sono definiti nel Makefile. Probabilmente avrai bisogno dei permessi appropriati per installare i file.
Per compilare e installare Lua in un unico passaggio, esegui "make xxx install", dove xxx è il nome della tua piattaforma.
Per installare Lua localmente, esegui "make local". Questo creerà una directory install con le sottodirectory bin, include, lib, man, share, e installerà Lua come elencato di seguito.
Per installare Lua localmente, ma in un'altra directory, esegui "make install INSTALL_TOP=xxx", dove xxx è la directory scelta. L'installazione inizia nelle directory src e doc, quindi fai attenzione se INSTALL_TOP non è un percorso assoluto.
Queste sono le uniche directory necessarie per lo sviluppo. Se vuoi solo eseguire programmi Lua, ti servono solo i file in bin e man. I file in include e lib sono necessari per incorporare Lua in programmi C o C++.
Tre tipi di cose possono essere personalizzate modificando un file:
Non è necessario modificare i Makefile perché puoi impostare le variabili pertinenti sulla riga di comando quando invochi make. Tuttavia, è probabilmente meglio modificare e salvare i Makefile per registrare le modifiche apportate.
D'altra parte, se devi personalizzare alcune funzionalità di Lua, dovrai modificare src/luaconf.h prima di compilare e installare Lua. Il file modificato sarà quello installato e sarà utilizzato da tutti i client Lua che costruirai, per garantire coerenza. Ulteriori personalizzazioni sono disponibili per esperti modificando i sorgenti di Lua.
Se non stai usando i soliti strumenti Unix, le istruzioni per compilare Lua dipendono dal compilatore utilizzato. Dovrai creare progetti (o qualunque cosa usi il tuo compilatore) per compilare la libreria, l'interprete e il compilatore, come segue:
Per utilizzare Lua come libreria nei tuoi programmi, devi sapere come creare e utilizzare librerie con il tuo compilatore. Inoltre, per caricare dinamicamente librerie C per Lua, devi sapere come creare librerie dinamiche e devi assicurarti che le funzioni dell'API Lua siano accessibili a tali librerie dinamiche — ma non linkare la libreria Lua in ogni libreria dinamica. Per Unix, raccomandiamo che la libreria Lua sia linkata staticamente nel programma host e che i suoi simboli siano esportati per il linking dinamico; src/Makefile fa questo per l'interprete Lua. Per Windows, raccomandiamo che la libreria Lua sia una DLL. In ogni caso, il compilatore luac deve essere linkato staticamente.
Come menzionato sopra, puoi modificare src/luaconf.h per personalizzare alcune funzionalità prima di compilare Lua.
Ecco le principali modifiche introdotte in Lua 5.3. Il manuale di riferimento elenca le incompatibilità che sono state introdotte.
Ecco le altre modifiche introdotte in Lua 5.3:
ipairs e la libreria table rispettano i metametodi
string.dump
table.move
string.pack
string.unpack
string.packsize
lua_gettable e funzioni simili restituiscono il tipo del valore risultante
lua_dump
lua_geti
lua_seti
lua_isyieldable
lua_numbertointeger
lua_rotate
lua_stringtonumber
arg disponibile per tutto il codice
Lua è software libero distribuito secondo i termini della
licenza MIT
riprodotta di seguito;
può essere utilizzato per qualsiasi scopo, inclusi scopi commerciali,
a costo zero assoluto senza doverci chiedere nulla.
L'unico requisito è che, se usi Lua, devi riconoscerci includendo un'appropriata nota di copyright da qualche parte nel tuo prodotto o nella sua documentazione.
Per i dettagli, vedi questo.
Copyright © 1994–2017 Lua.org, PUC-Rio.Con la presente è concessa, gratuitamente, a qualsiasi persona che ottenga una copia di questo software e dei relativi file di documentazione (il "Software"), l'autorizzazione a trattare il Software senza restrizioni, inclusi, senza limitazione, i diritti di utilizzo, copia, modifica, fusione, pubblicazione, distribuzione, concessione in sottolicenza e/o vendita di copie del Software, e di consentire alle persone a cui il Software è fornito di fare altrettanto, soggette alle seguenti condizioni:
La suddetta nota sul copyright e questa nota di autorizzazione devono essere incluse in tutte le copie o parti sostanziali del Software.
IL SOFTWARE VIENE FORNITO "COSÌ COM'È", SENZA GARANZIA DI ALCUN TIPO, ESPRESSA O IMPLICITA, INCLUSI MA NON LIMITATI A GARANZIE DI COMMERCIABILITÀ, IDONEITÀ PER UN FINE PARTICOLARE E NON VIOLAZIONE. IN NESSUN CASO GLI AUTORI O I TITOLARI DEL COPYRIGHT SARANNO RESPONSABILI PER QUALSIASI RECLAMO, DANNO O ALTRA RESPONSABILITÀ, SIA IN UN'AZIONE CONTRATTUALE, EXTRACONTRATTUALE O ALTRO, DERIVANTE DA, O IN CONNESSIONE CON IL SOFTWARE O L'USO O ALTRE OPERAZIONI CON IL SOFTWARE.
Ultimo aggiornamento: Mon Jun 18 22:57:33 -03 2018