mSL Scriptsprachen Schwachstelle bei ON *:INPUT:*:

Probleme beim chatten? Schaut hier mal rein

Moderator: Moderator -OffTopic

Antworten
Koragg
techn. Leiter -Chat-
Beiträge: 13
Registriert: 11. Feb 2018, 18:10
Barvermögen: Gesperrt

mSL Scriptsprachen Schwachstelle bei ON *:INPUT:*:

Beitrag von Koragg » 4. Mär 2018, 19:00

Da es sich hierbei um eine Schwachstelle handelt wo erstmal definiert werden muss was es überhaupt ist, gehen wir Schritt für Schritt alles durch: Was ist dieses Event? Was macht es? Was ist die Schwachstelle? Als Wichtigstes dann noch, wie behebt man diese?

ON *INPUT:*: ist ein mSL (mIRC Scripting Language) Event das dann getriggert wird wenn man selber etwas eingibt (daher das INPUT) das :*: bedeutet in JEDEM Fenster, und da ist auch schon die Schwachstelle.
Wird mit einem solchen Script irgendwas ins Status Fenster gegeben, versucht es den Text an die interne Bezeichnung dieses Fensters, Status Window, weiterzuleiten. Da ein IRC Nick keine Leerzeichen enthalten darf, würde es daher den Text an den Nick Status schicken.

Da wäre auch schon das Problem: Es wird Leuten immer wieder (zurecht) gesagt, "tippe dein /ns identify accountname password ins Status Fenster, vertippst du dich dort, sieht es keiner". Lässt man aber z.B. / weg oder tippt 7 statt / etc dann würde der ganze ns identify accountname passwort Teil an den Nick Status geschickt werden. Ist dieser Online, würde er somit sofort das NickServ Passwort des Users erhalten.

Es wäre damit auch ohne Probleme möglich, falsch getippte /oper Befehle etc abzufangen wenn ein solches Script beim Ausführenden geladen ist.

Das Wichtigste wie behebt man das jetzt? Nun, da gibt es zwei Seiten: die Scripter, die solche Scripte schreiben, und Netzwerke.

Da die Gefahr einzig und alleine vom Nick Status ausgeht, ist es dringend zu empfehlen, diesen unbenutzbar zu machen, z.B. durch eine Q:Line in der ircd.conf (oder wie auch immer die Config Datei in der jweiligen IRCd heißen mag).

Die Scripter müssen Exceptions, d.h. Ausnahmen für die Fenster mit eincoden wo es nicht triggern soll z.B. ON *:INPUT:*: { if ($active == Status Window) { haltdef } und dann der Rest vom Code }

Weil man nicht kontrollieren kann wer welche Scripte nutzt, ist es besser präventiv zu agieren für Netzwerke vor allem da der Nick Status nicht sehr häufig vorkommt und User die Sicherheitsimplikationen nachvollziehen können sollten.

Bitter informiert auch andere Netzwerke bzw. deren Admins über diese Schwachstelle und wie man sie beheben kann.
Koragg

Antworten