PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit dem Hack zum Beheben einer XSS-Schwachstelle


Henry
20.01.2005, 07:16
Hallo,
wir haben gestern unsere V2.2.9 mit diesem Hack (http://www.vbulletin-germany.com/forum/showthread.php?t=15370) gegen die XSS-Schwachstelle im vB Code Parser schützen wollen.

Die neue functions.php läuft syntaktisch auch einwandfrei, erzeugt nur leider ca. 70-75 zusätzliche, identische Querys bei Aufruf der forumdisplay.php, search.php und der showthread.php. Zusammen mit den anderen regulären, benötigten Querys kommen wir bei Aufruf der vorgenannten Dateien auf jeweils rd. 100 Querys. Das zwingt den Server dann schon recht früh in die Knie.

Der betreffende, 70-75 mal, ausgeführte Query ist in Zeile 1563.$iaccessperms=$DB_site->query("SELECT forumid,accessmask FROM access WHERE userid='$bbuserinfo[userid]'");

Eine Lösung, zumindest das massenhafte Ausführen dieses Querys zu unterbinden (er wird dann nur noch einmal ausgeführt) ist, die Zeilen 1559 und 1561 auszukommentieren. }

if (!isset($iaccesscache)) { Der Funktionalität tut das keinen Abbruch, in der functions.php der V 2.2.9 waren diese beiden Zeilen ja auch nicht vorhanden.

Bei einer V2.3.0 eines befreundeten Webmasters, der diesen Hack ebenfalls gestern einspielte, mussten diese Zeilen nicht auskommentiert werden, es wurden keine zusätzlichen Querys erzeugt.

Ersetzen z.b. unserer search.php mit der aus der V2.3.0 brachte keinen Erfolg. Das Problem liegt also wohl nicht bei den jeweils aufgerufenen, vielleicht von 2.2.9 zu 2.3.0 o.g. 3 geänderten Scripten sondern irgendwo anders. Nur hab ich das leider noch nicht herausgefunden.

Jetzt die Fragen dazu:


sind die Zeilen 1559 und 1561 wesentlicher Bestandteil der Änderungen zur Behebung der XSS-Schwachstelle ?
falls ja, wenn ich diese 2 Zeilen wieder aktiv setze, welche Änderungen in welchem Script müssen vorgenommen werden, damit die Schleife, die diesen Query aufruft, abgeschaltet wird?



Danke + Gruß
Henry

pogo
20.01.2005, 11:30
Ich kann dir immerhin sagen, dass dieser Teil nicht aufgrund der XSS-Schwachstelle dazugekommen ist.

Aber so wie ich das sehe, ist die Bedingung doch eher eine Einschränkung. Ohne die Bedingung wird doch das Query immer aufgerufen und mit der Bedingung nur dann, wenn $iaccesscache nicht gesetzt ist.

Henry
20.01.2005, 15:42
Der Query wurde vorher in Abhängigkeit von if ( !isset($iforumcache) ) gestartet, jetzt in Abhängigkeit von if (!isset($iaccesscache))

Zwei unterschiedliche Bedingungen, keine zusätzliche Einschränkung, da in Zeile 1559 die bis dahin laufende Kontrollstruktur ja vor der neuen Abfrage beendet wurde.

Wo wird z.b. in V2.3.0 die Variable $iaccesscache mit einem Wert belegt und in V2.2.9 nicht. Das könnte die Erklärung liefern.

pogo
20.01.2005, 18:14
Zwischen 2.2.9 und 2.3.0 gibt es an der Stelle keine Veränderung.

Henry
20.01.2005, 18:34
Das weiß ich. Ich fragte deshalb ja nach einer Veränderung in anderen Scripten, die dies auslösen.Wo wird z.b. in V2.3.0 die Variable $iaccesscache mit einem Wert belegt und in V2.2.9 nicht. Das könnte die Erklärung liefern.