
Exploit pour CVE-2020-24370 ciblant l'interpréteur Lua 5.3, démontrant une vulnérabilité dans le runtime du langage de script.
dl.display dd { padding-bottom: 0.2em ; }
tt, kbd, code { font-size: 12pt ; }
Bienvenue dans Lua 5.3
Lua est un langage de script puissant, rapide, léger et embarquable développé par une équipe de PUC-Rio, l'Université catholique pontificale de Rio de Janeiro au Brésil. Lua est un logiciel libre utilisé dans de nombreux produits et projets dans le monde entier.
Le site web officiel de Lua fournit des informations complètes sur Lua, y compris un résumé exécutif et une documentation mise à jour, notamment le manuel de référence, qui peut différer légèrement de la copie locale distribuée dans ce paquet.
Lua est distribué sous forme source. Vous devez le compiler avant de l'utiliser. Compiler Lua devrait être simple car Lua est implémenté en ANSI C pur et se compile sans modification sur toutes les plateformes connues disposant d'un compilateur ANSI C. Lua se compile également sans modification en C++. Les instructions ci-dessous pour compiler Lua concernent les systèmes de type Unix. Voir aussi instructions pour d'autres systèmes et les options de personnalisation.
Si vous n'avez pas le temps ou l'envie de compiler Lua vous-même, obtenez un binaire depuis LuaBinaries. Essayez aussi LuaDist, une distribution multi-plateforme de Lua qui inclut des batteries.
Sur la plupart des plateformes de type Unix, faites simplement "make" avec une cible appropriée. Voici les détails.
aix bsd c89 freebsd generic linux macosx mingw posix solaris
Si votre plateforme est listée, faites simplement "make xxx", où xxx est le nom de votre plateforme.
Si votre plateforme n'est pas listée, essayez la plus proche ou posix, generic, c89, dans cet ordre.
Si vous utilisez Linux et obtenez des erreurs de compilation, assurez-vous d'avoir installé le paquet de développement readline (qui est probablement nommé libreadline-dev ou readline-devel). Si vous obtenez ensuite des erreurs de liaison, essayez "make linux MYLIBS=-ltermcap".
Une fois que vous avez compilé Lua, vous voudrez peut-être l'installer à un emplacement officiel de votre système. Dans ce cas, faites "make install". L'emplacement officiel et la façon d'installer les fichiers sont définis dans le Makefile. Vous aurez probablement besoin des droits appropriés pour installer les fichiers.
Pour compiler et installer Lua en une seule étape, faites "make xxx install", où xxx est le nom de votre plateforme.
Pour installer Lua localement, faites "make local". Cela créera un répertoire install avec les sous-répertoires bin, include, lib, man, share, et installera Lua comme indiqué ci-dessous.
Pour installer Lua localement, mais dans un autre répertoire, faites "make install INSTALL_TOP=xxx", où xxx est le répertoire de votre choix. L'installation commence dans les répertoires src et doc, alors faites attention si INSTALL_TOP n'est pas un chemin absolu.
Ce sont les seuls répertoires dont vous avez besoin pour le développement. Si vous voulez seulement exécuter des programmes Lua, vous n'avez besoin que des fichiers dans bin et man. Les fichiers dans include et lib sont nécessaires pour embarquer Lua dans des programmes C ou C++.
Trois types de choses peuvent être personnalisés en éditant un fichier :
Vous n'avez pas réellement besoin d'éditer les Makefiles car vous pouvez définir les variables pertinentes en ligne de commande lors de l'appel de make. Néanmoins, il est probablement préférable d'éditer et de sauvegarder les Makefiles pour enregistrer les modifications que vous avez apportées.
D'autre part, si vous devez personnaliser certaines fonctionnalités de Lua, vous devrez éditer src/luaconf.h avant de compiler et installer Lua. Le fichier édité sera celui installé, et il sera utilisé par tous les clients Lua que vous compilez, pour assurer la cohérence. Une personnalisation supplémentaire est disponible pour les experts en éditant les sources de Lua.
Si vous n'utilisez pas les outils Unix habituels, alors les instructions pour compiler Lua dépendent du compilateur que vous utilisez. Vous devrez créer des projets (ou ce que votre compilateur utilise) pour compiler la bibliothèque, l'interpréteur et le compilateur, comme suit :
Pour utiliser Lua comme bibliothèque dans vos propres programmes, vous devrez savoir comment créer et utiliser des bibliothèques avec votre compilateur. De plus, pour charger dynamiquement des bibliothèques C pour Lua, vous devrez savoir comment créer des bibliothèques dynamiques et vous devrez vous assurer que les fonctions de l'API Lua sont accessibles à ces bibliothèques dynamiques — mais ne liez pas la bibliothèque Lua dans chaque bibliothèque dynamique. Pour Unix, nous recommandons que la bibliothèque Lua soit liée statiquement au programme hôte et que ses symboles soient exportés pour la liaison dynamique ; src/Makefile fait cela pour l'interpréteur Lua. Pour Windows, nous recommandons que la bibliothèque Lua soit une DLL. Dans tous les cas, le compilateur luac doit être lié statiquement.
Comme mentionné ci-dessus, vous pouvez éditer src/luaconf.h pour personnaliser certaines fonctionnalités avant de compiler Lua.
Voici les principaux changements introduits dans Lua 5.3. Le manuel de référence liste les incompatibilités qui ont dû être introduites.
Voici les autres changements introduits dans Lua 5.3 :
ipairs et la bibliothèque table respectent les métaméthodes
string.dump
table.move
string.pack
string.unpack
string.packsize
lua_gettable et fonctions similaires retournent le type de la valeur résultante
lua_dump
lua_geti
lua_seti
lua_isyieldable
lua_numbertointeger
lua_rotate
lua_stringtonumber
arg est disponible pour tout le code
Lua est un logiciel libre distribué sous les termes de la
licence MIT
reproduite ci-dessous ;
il peut être utilisé à n'importe quelle fin, y compris commerciale,
sans aucun coût et sans avoir à nous demander.
La seule exigence est que si vous utilisez Lua, vous devez nous créditer en incluant l'avis de copyright approprié quelque part dans votre produit ou sa documentation.
Pour plus de détails, voir ceci.
Copyright © 1994–2017 Lua.org, PUC-Rio.Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Dernière mise à jour : Mon Jun 18 22:57:33 -03 2018