
Exploit für CVE-2020-24370, der auf den Lua 5.3-Interpreter abzielt und eine Schwachstelle in der Laufzeitumgebung der Skriptsprache demonstriert.
dl.display dd { padding-bottom: 0.2em ; }
tt, kbd, code { font-size: 12pt ; }
Willkommen bei Lua 5.3
Lua ist eine leistungsstarke, schnelle, leichte, eingebettbare Skriptsprache, die von einem Team an der PUC-Rio, der Pontifícia Universidade Católica do Rio de Janeiro in Brasilien, entwickelt wurde. Lua ist freie Software, die in vielen Produkten und Projekten weltweit eingesetzt wird.
Die offizielle Website von Lua bietet vollständige Informationen über Lua, einschließlich einer Zusammenfassung und aktualisierter Dokumentation, insbesondere das Referenzhandbuch, das geringfügig von der lokalen Kopie abweichen kann, die in diesem Paket enthalten ist.
Lua wird in Quellcode-Form verteilt. Sie müssen es kompilieren, bevor Sie es verwenden können. Das Kompilieren von Lua sollte unkompliziert sein, da Lua in reinem ANSI C implementiert ist und auf allen bekannten Plattformen mit einem ANSI-C-Compiler unverändert kompiliert wird. Lua lässt sich auch unverändert als C++ kompilieren. Die unten angegebenen Anweisungen zum Kompilieren von Lua gelten für Unix-ähnliche Plattformen. Siehe auch Anweisungen für andere Systeme und Anpassungsoptionen.
Wenn Sie keine Zeit oder Lust haben, Lua selbst zu kompilieren, holen Sie sich ein Binärpaket von LuaBinaries. Versuchen Sie auch LuaDist, eine plattformübergreifende Distribution von Lua, die zusätzliche Pakete enthält.
Auf den meisten Unix-ähnlichen Plattformen führen Sie einfach "make" mit einem passenden Ziel aus. Hier sind die Details.
aix bsd c89 freebsd generic linux macosx mingw posix solaris
Wenn Ihre Plattform aufgelistet ist, führen Sie einfach "make xxx" aus, wobei xxx der Name Ihrer Plattform ist.
Wenn Ihre Plattform nicht aufgelistet ist, versuchen Sie die nächstgelegene oder posix, generic, c89, in dieser Reihenfolge.
Wenn Sie Linux verwenden und Kompilierungsfehler erhalten, stellen Sie sicher, dass Sie das readline-Entwicklungspaket installiert haben (das wahrscheinlich libreadline-dev oder readline-devel heißt). Wenn Sie danach Linkfehler erhalten, versuchen Sie "make linux MYLIBS=-ltermcap".
Sobald Sie Lua kompiliert haben, möchten Sie es vielleicht an einem offiziellen Ort in Ihrem System installieren. Führen Sie in diesem Fall "make install" aus. Der offizielle Ort und die Art der Installation der Dateien sind in der Makefile definiert. Sie benötigen wahrscheinlich die entsprechenden Berechtigungen, um Dateien zu installieren.
Um Lua in einem Schritt zu kompilieren und zu installieren, führen Sie "make xxx install" aus, wobei xxx der Name Ihrer Plattform ist.
Um Lua lokal zu installieren, führen Sie "make local" aus. Dies erstellt ein Verzeichnis install mit den Unterverzeichnissen bin, include, lib, man, share, und installiert Lua wie unten aufgeführt.
Um Lua lokal, aber in einem anderen Verzeichnis zu installieren, führen Sie "make install INSTALL_TOP=xxx" aus, wobei xxx Ihr gewähltes Verzeichnis ist. Die Installation beginnt in den Verzeichnissen src und doc, seien Sie also vorsichtig, wenn INSTALL_TOP kein absoluter Pfad ist.
Dies sind die einzigen Verzeichnisse, die Sie für die Entwicklung benötigen. Wenn Sie nur Lua-Programme ausführen möchten, benötigen Sie nur die Dateien in bin und man. Die Dateien in include und lib werden benötigt, um Lua in C- oder C++-Programme einzubetten.
Drei Arten von Dingen können durch Bearbeiten einer Datei angepasst werden:
Sie müssen die Makefiles nicht unbedingt bearbeiten, da Sie die relevanten Variablen in der Befehlszeile beim Aufruf von make setzen können. Dennoch ist es wahrscheinlich am besten, die Makefiles zu bearbeiten und zu speichern, um die von Ihnen vorgenommenen Änderungen festzuhalten.
Wenn Sie hingegen einige Lua-Funktionen anpassen müssen, müssen Sie src/luaconf.h vor dem Kompilieren und Installieren von Lua bearbeiten. Die bearbeitete Datei wird installiert, und sie wird von allen Lua-Clients verwendet, die Sie kompilieren, um Konsistenz zu gewährleisten. Experten stehen weitere Anpassungsmöglichkeiten durch Bearbeiten der Lua-Quellen zur Verfügung.
Wenn Sie nicht die üblichen Unix-Werkzeuge verwenden, hängen die Anweisungen zum Kompilieren von Lua von dem von Ihnen verwendeten Compiler ab. Sie müssen Projekte (oder was auch immer Ihr Compiler verwendet) zum Kompilieren der Bibliothek, des Interpreters und des Compilers erstellen, wie folgt:
Um Lua als Bibliothek in Ihren eigenen Programmen zu verwenden, müssen Sie wissen, wie Sie Bibliotheken mit Ihrem Compiler erstellen und verwenden. Darüber hinaus müssen Sie für das dynamische Laden von C-Bibliotheken für Lua wissen, wie Sie dynamische Bibliotheken erstellen, und sicherstellen, dass die Lua-API-Funktionen für diese dynamischen Bibliotheken zugänglich sind — aber verlinken Sie die Lua-Bibliothek nicht in jede dynamische Bibliothek. Für Unix empfehlen wir, die Lua-Bibliothek statisch in das Host-Programm einzubinden und ihre Symbole für die dynamische Verknüpfung zu exportieren; src/Makefile tut dies für den Lua-Interpreter. Für Windows empfehlen wir, dass die Lua-Bibliothek eine DLL ist. In allen Fällen sollte der Compiler luac statisch gelinkt werden.
Wie bereits erwähnt, können Sie src/luaconf.h bearbeiten, um einige Funktionen vor dem Kompilieren von Lua anzupassen.
Hier sind die wichtigsten Änderungen, die in Lua 5.3 eingeführt wurden. Das Referenzhandbuch listet die Inkompatibilitäten auf, die eingeführt werden mussten.
Hier sind die weiteren Änderungen, die in Lua 5.3 eingeführt wurden:
ipairs und die table-Bibliothek respektieren Metamethoden
string.dump
table.move
string.pack
string.unpack
string.packsize
lua_gettable und ähnliche Funktionen geben den Typ des resultierenden Werts zurück
lua_dump
lua_geti
lua_seti
lua_isyieldable
lua_numbertointeger
lua_rotate
lua_stringtonumber
arg-Tabelle für gesamten Code verfügbar
Lua ist freie Software, die unter den Bedingungen der
MIT-Lizenz
(unten wiedergegeben) verteilt wird;
sie darf für jeden Zweck, einschließlich kommerzieller Zwecke,
absolut kostenlos verwendet werden, ohne dass wir gefragt werden müssen.
Die einzige Voraussetzung ist, dass Sie uns, wenn Sie Lua verwenden, Anerkennung zollen, indem Sie den entsprechenden Copyright-Hinweis irgendwo in Ihrem Produkt oder dessen Dokumentation anbringen.
Einzelheiten finden Sie hier.
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.
Last update: Mon Jun 18 22:57:33 -03 2018