Wie sicher ist es, eine unbekannte "_vimrc" - oder "vimscript" -Datei zu verwenden?

8

Ich weiß nicht, ob diese Frage hier gestellt werden soll oder nicht. In fast jeder Sprache gibt es Malware. Gilt das auch für vimscript?

Angenommen, es vimwird mit hohen Systemberechtigungen ausgeführt. Gibt es eine Möglichkeit, dass ein neuer vimBenutzer sein System durch die Verwendung eines Plugins oder einer gut aussehenden vimrcDatei (dh sogenannte bösartige Skripte in anderen Skriptsprachen) ruiniert ?

Welche Maßnahmen kann ein neuer Benutzer ergreifen, bevor unbekannte Skriptdateien ausgeführt werden? Ich weiß, dass das Deaktivieren von Skripten eine offensichtliche Lösung dafür ist. Aber es gibt eine wirklich gute Anzahl von Plugins, die selbst für die neuen Lernenden sehr nützlich sind.

Noch einmal, diese Frage passt vielleicht nicht hierher, aber ich glaube, dass Sicherheit auch ein sehr wichtiger Teil des gesamten Bildes ist.

Das Zeigen auf einige Ressourcen oder Informationen dazu wäre für neue vimBenutzer wie mich sehr hilfreich .

Cylian
quelle
4
Vim (oder irgendetwas anderes) nicht als Root auszuführen, ist die beste Wahl. Angenommen, $EDITOReingestellt auf vim, verwenden Sie einfach $ sudo -e filename.
Romainl
1
Nur für den Fall, dass Sie Vim als Root ausführen (was Sie nicht tun sollten, aber es kann passieren), würde ich empfehlen, nur ein sehr rudimentäres Vimrc zu verwenden /root/.vimrc. Normalerweise schalte ich nur die Syntaxhervorhebung ein. Je ausgefallener Ihr normales Benutzer-Vim-Setup ist, desto offensichtlicher wird es, dass Sie als Root ausgeführt werden.
kba steht mit Monica
@ Romainl: Danke für Ihren freundlichen Vorschlag ... Ich hoffe, dies ist die vernünftigste Sache, der die neuen Vim-Benutzer folgen sollten ...
Cylian
@kba: danke für Ihre freundliche Meinung ... es ist auch eine sehr gute Option, um zu versuchen ...
Cylian

Antworten:

8

Nun, Vim kann beliebige Befehle mit ausführen :!. Es können Umgebungsvariablen festgelegt werden. Malware-Skripte, die Shell-Skripte sind, können daher in Vimscript ausgeführt werden.

Es kann komplexe Perl-, Python-, Ruby- oder Lua-Programme verwenden. Daher kann in Vim geschriebene Malware, die nur Standardbibliotheken verwendet, in Vim eingebettet werden.

Auch wenn beides nicht zutrifft, ist Vim Redakteur. Wenn Sie als Root ausgeführt werden, können Sie Ihre /etc/passwdund Ihre /etc/shadowDateien problemlos bearbeiten , um einen neuen Benutzer zu erstellen und /etc/sudoersihm vollständige sudoBerechtigungen zu erteilen , sowie cronjobShell-Skripte ausführen, um diesen Benutzer einzurichten.

Wie bei der Ausführung von zufälligen Skripten aus dem Internet gibt es keine einfache Möglichkeit, sicher zu sein. Unter Linux können Sie in einer VM mit einem Overlay ausführen, das Ihnen möglicherweise mitteilt, welche Dateien ein bestimmtes vimrc ändert. Es hängt davon ab, wie viel Risiko Sie wahrnehmen.

muru
quelle
Vielen Dank für Ihre Hilfe ... die Antwort ist sehr hilfreich ... unter Linux ist es zweifellos eine brillante Idee. Was ich jetzt glaube, ist, ohne den Code zu verstehen, dass es einfach ist, das überhaupt nicht zu verwenden ... oder zumindest für diese unknownoder lesser knownSkripte ...
Cylian
@mMontu: exzellente Infos ... warum postest du das nicht als Antwort ... ich glaube, dass viele Infos zumindest eine Grundidee für Neulinge sind, um in den unbekannten Quellen nachzuschauen ... vielen Dank. ..you rock !!!
Cylian
@Cylian gute Idee, danke, dass du so nett bist.
mMontu
5

Wenn Sie die Antwort von muru erweitern, können Sie den Code überprüfen, insbesondere da der Plugin-Code normalerweise sehr kurz ist (die Ausnahmen sind einige beliebte Plugins, aber wenn sie beliebt sind, sind sie sicherer - Sie können erwarten, dass viele andere die Quelle überprüft haben).

Sie müssen den Code nicht vollständig verstehen. es würde ausreichen, nach "gefährlichen" Befehlen zu suchen:

  1. :!und system(): Ermöglicht die Ausführung von Shell-Befehlen und kann somit Ihr System ändern
  2. :perldo, :python, :lua, :tcl, Und :ruby: Ausführen von Befehlen auf verschiedene Sprachen, die eingebetteten Systemaufrufe enthalten
  3. :execute: Dieser Befehl führt eine Zeichenfolge als Befehl aus, sodass er verwendet werden kann, um einen der vorherigen Befehle zu verbergen (z. B. um das Erkennen zu erschweren call system('malware')oder um perldo malwaredie Zeichenfolge in eine Variable zu verketten).
  4. function("MyFunc"): Funktionsfunktionsreferenzen aufrufen - akzeptiert eine Variable als Parameter und ermöglicht so das Verbergen von system()

Sie können auch versuchen, einige Plugin-Funktionen mit 'secure'oder sandboxzum Erkennen von Shell- und externen Sprachen (Perl, Python usw.) auszuführen.

mMontu
quelle
+1, nette grundlegende Informationen zum spezifischen Thema ... wirklich hilfreich ... danke!
Cylian