Hi.
Hier kennen sich ja bestimmt einige gut mit Latex aus.
Das wird in wissenschaftlichen Kreisen ja gerne verwendet, vor allem von
den Linuxusern.
Ich kenne mich nicht mit Latex aus, ich wüsste aber gerne, ob Latex
Dateien potentiell gefährlichen Code enthalten können, sowie Code, der
eventuell vorhandene Sicherheitslücken ausnutzt.
In meinem Fall sind auch eventuell vorhandene Includefunktionen und
alles, was das einbinden von Dateien aus dem System erlaubt, als
gefährlicher Code anzusehen. (da man sonst über Einbinde-Befehle über
den Umweg Latex alles mögliche auslesen könnte)
Systemcalls, Latex Befehle zum Shellbefehle absetzen, Sockets usw sind
ebenfalls als gefährlich anzusehen.
Warum ich frage? Ich wollte auf meiner Webseite erlauben, dass man
mithilfe von Latexcode Formeln und andere Sachen erzeugen und als Bild
in den Artikel einbinden kann.
Dafür habe ich ich ein Eingabefenster, dessen Inhalt als temporäre Datei
gespeichert wird. Anschließend stoße ich mit php ein Shellscript zur
weitetren Verarbeitung an.
Ich weiß aber nicht, ob man in einer Latexdatei Schadcode unter bringen
kann. Momentan wird das Eingabefeld 1:1 in eine temporäre Datei kopiert.
Danach rufe ich mit einem Shellscript einfach Latex auf, speichere als
DVI Datei und konvertriere diese mit dvipng. Die temporäre Datei sowie
die DVI Datei wird gelöscht, das PNG wird verschoben und eingefügt.
Ich habe von Latex 0 Ahung und weiß nicht, was damit alles möglich ist
und was nicht.
Würde mich freuen, wenn ihr mir die potentiell gefährlichen Funktionen
und Befehle, und alles was zum Einbinden von Dateien taugt, kurz
erläutern könntet.
Beck schrieb:> In meinem Fall sind auch eventuell vorhandene Includefunktionen und> alles, was das einbinden von Dateien aus dem System erlaubt, als> gefährlicher Code anzusehen. (da man sonst über Einbinde-Befehle über> den Umweg Latex alles mögliche auslesen könnte)> Systemcalls, Latex Befehle zum Shellbefehle absetzen, Sockets usw sind> ebenfalls als gefährlich anzusehen.
Ja, das geht durchaus.
Einfaches Beispiel ist das listings-Paket, das es erlaubt, Text aus
Dateien in ein Dokument einzubinden.
/etc/passwd wäre ein schöner ansatz für so eine datei ^^
> Warum ich frage? Ich wollte auf meiner Webseite erlauben, dass man> mithilfe von Latexcode Formeln und andere Sachen erzeugen und als Bild> in den Artikel einbinden kann.
Da würde ich vorschlagen, dich an mediawiki zu halten.
Ist Quelloffen und sicherlich in der Hinsicht durchdacht.
Ansonsten wäre ein erster Schritt, einen eigenen Benutzer für das
Erstellen des Outputs zu erstellen, der nichts lesen und schreiben darf,
was außerhalb seines homes liegt.
Den Tex-Compiler dürfte das nicht stören.
> Dafür habe ich ich ein Eingabefenster, dessen Inhalt als temporäre Datei> gespeichert wird. Anschließend stoße ich mit php ein Shellscript zur> weitetren Verarbeitung an.
Da noch ein kleiner Tipp: lass hier ja keine vom Benutzer eingebbaren
Dateinamen zu.
http://xkcd.com/327/
=)
LaTeX ist nur ein Erweiterungspaket von TeX. Und Donald Knuth hat meines
Wissens nach eine Belohnung ausgelobt für jeden, der Fehler in TeX
findet. Wenn ich mich recht erinnere, ist der Betrag die Zahl pi (ohne
Dezimalkomma) - für jeden Fehler gibt es eine Nachkommastelle mehr.
Also 3$ für den ersten, 31$ für den zweiten, 314$ für den dritten
gefundenen Fehler etc.
Finanzielle Probleme hat Herr Knuth dadurch bislang nicht bekommen.
Rufus t. Firefly schrieb:> Finanzielle Probleme hat Herr Knuth dadurch bislang nicht bekommen.
Doch, er hat diese Wette leider beenden müssen, da sie ihn hätte
ruinieren
können.
Kann man dem Script nicht mit chroot ein eigenes Rootverzeichnis
vergeben? Da sieht es ja gar nix vom echten Filesystem, und kann somit
nix manipulieren, soweit ich weis.
(nur mal 'ne Idee - schon lange her, daß ich mal damit rumgespielt
hatte)
Unabhängig davon wird Donald Knuth keine Verantwortung für
Sicherheitsprobleme übernehmen können, die sich aus der geschilderten
Applikation ergeben.
Ich würde den TeX-Compile-Vorgang in ein chroot einsperren (mit evtl.
ge-bind-mountetem Arbeitsverzeichnis, /bin, /usr/bin, und dem TeX-Teil
aus /usr/share - eben mit dem, was TeX minimal zum Arbeiten braucht).
Rufus t. Firefly schrieb:> LaTeX ist nur ein Erweiterungspaket von TeX. Und Donald Knuth hat meines> Wissens nach eine Belohnung ausgelobt für jeden, der Fehler in TeX> findet. Wenn ich mich recht erinnere, ist der Betrag die Zahl pi (ohne> Dezimalkomma) - für jeden Fehler gibt es eine Nachkommastelle mehr.> Also 3$ für den ersten, 31$ für den zweiten, 314$ für den dritten> gefundenen Fehler etc.
Das verwechselst du mit Versionsnummer von TeX. ;-)
Guido schrieb:> Rufus t. Firefly schrieb:>> Finanzielle Probleme hat Herr Knuth dadurch bislang nicht bekommen.>> Doch, er hat diese Wette leider beenden müssen, da sie ihn hätte> ruinieren> können.
Er hat es nicht eingestellt, aber der hexadezimale Dollar verdoppelt
sich nicht mehr, http://en.wikipedia.org/wiki/TeX#Development
Es sei auch noch darauf hingewiesen, dass man AFAIK auch während des
Compilierprogramms externe Programme ausführen lassen kann.
Gehe davon aus, dass es vom Sicherheitsaspekt her maximal unsicher ist,
beliebigen Quelltext von extern auf dem eigenen System zu übersetzen.
Ich würde sogar vermuten, dass es quasi unmöglich ist, den Quelltext
vorab auf solche Lücken zu testen.
Viele Grüße,
Simon
Hallo Beck.
> Hier kennen sich ja bestimmt einige gut mit Latex aus.> Das wird in wissenschaftlichen Kreisen ja gerne verwendet, vor allem von> den Linuxusern.
Ich kenne mich nicht gut damit aus.
> Ich kenne mich nicht mit Latex aus, ich wüsste aber gerne, ob Latex> Dateien potentiell gefährlichen Code enthalten können, sowie Code, der> eventuell vorhandene Sicherheitslücken ausnutzt.
Grundsätzlich theoretisch sehe ich auch das Problem.
>> In meinem Fall sind auch eventuell vorhandene Includefunktionen und> alles, was das einbinden von Dateien aus dem System erlaubt, als> gefährlicher Code anzusehen. (da man sonst über Einbinde-Befehle über> den Umweg Latex alles mögliche auslesen könnte)> Systemcalls, Latex Befehle zum Shellbefehle absetzen, Sockets usw sind> ebenfalls als gefährlich anzusehen.
Dann musst Du genau daß unterbinden.
z.B. müsstest Du den Text aus Deiner Eingabe auf Includes parsen, und
alles zurückweisen, was nicht einer whitelist entspricht, die für die
Bearbeitung
der Formeln nötig ist.
So als alternative Idee zu den "einsperr" Lösungen der anderen Poster.
> Ich habe von Latex 0 Ahung und weiß nicht, was damit alles möglich ist> und was nicht.> Würde mich freuen, wenn ihr mir die potentiell gefährlichen Funktionen> und Befehle, und alles was zum Einbinden von Dateien taugt, kurz> erläutern könntet.
Ich schreibe gelegentlich etwas in Latex, aber Dein Wunsch überfordert
mich leider.
Mit freundlichem Gruß: Bernd Wiebus alias dl1eic
http://www.dl0dg.de
Hat das Mediawiki einen eigenen Latex Compiler und Bildrenderer drin?
Mediawiki läuft ja immerhin auch auf Shared Hosting, wo man nicht
unbedingt Zugriff auf die Kommandozeilenprogramme hat.
Mediawiki im Hintergrund laufen lassen wäre auch eine Alternative.