Sie sind nicht angemeldet.

DeaD_EyE

Administrator

  • »DeaD_EyE« ist der Autor dieses Themas

Beiträge: 3 980

Wohnort: Hagen

Beruf: Mechatroniker (didaktische Systeme)

Rootserver vorhanden: Nein

  • Nachricht senden

1

Dienstag, 3. Januar 2012, 05:55

Maxplayers-Lücke

Beschreibung
Durch zwei simple Einträge in der autoexec.cfg lässt sich der Server mit beliebig vielen Slots starten.
Folgender Code würde z.B. den Server mit 64 Slots starten:

Quellcode

1
2
maxplayers 64
map de_dust2

Betroffen ist das bekannte WI, was viele Clans und Provider einsetzen. Unter anderem könnten auch MyWI und andere gefährdet sein. Provider, die ein eigenes WI einsetzen, kennen den Bug sicherlich schon länger und haben dementsprechende Scripts, um den Missbrauch zu verhindern.

Erklärung
Die Cvar "maxplayers" lässt sich beliebig ändern, wenn noch keine Map geladen ist. Sobald eine Map geladen worden ist, kann die Cvar nicht mehr geändert werden. Dabei spielt es keine Rolle, ob -maxplayers oder +maxplayers im Startbefehl verwendet worden ist. Bei -maxplayers wird die Cvar direkt gesetzt. Bei +maxplayers erst nach dem Laden der autoexec.cfg (stuffcmds in der valve.rc). Das hat zur Folge, dass in der autoexec.cfg maxplayers nochmals geändert werden kann. Durch das Laden einer Map in der autoexec.cfg beginnt das Spiel und die Slotanzahl lässt sich auch nicht mehr ändern.

Möglicher Fix
  • autoexec.cfg gegen Veränderungen schützen. Bei Public-Servern, auf denen die Kunden Eventscripts einsetzen wollen, kann es möglicherweise zu Problemen kommen. Erfahrene Kunden werden sich auch beschweren, da man die autoexec.cfg sinnvoll einsetzen kann. (z.B. Cvars setzen, die erst nach einem Mapchange gültig sind)
  • Vor jedem Start des Servers einen Filter einsetzen, der die komplette Zeile aus der autoexec.cfg entfernt. Ein einfacher Filter könnte z.B. so aussehen:

    Quellcode

    1
    
    find ~ -type f -name "autoexec.cfg" -exec sed  -i /maxplayers/I,/exec/Id {} \;

    Dieser Filter löscht alle Zeilen, in denen maxplayers oder exec vorkommt. Das Zulassen von exec in der autoexec.cfg würde die Prüfung um ein vielfaches komplizierter machen. Groß-/Kleinschreibung beider Befehle wird durch den Schalter "I" ignoriert. Die valve.rc sollte gegen Änderungen geschützt sein. Ansonsten könnte man in der autoexec.cfg andere Configs laden und dort die Befehle verwenden.
  • Durch ein PHP-Queryscript kann nach dem Start des Servers überprüft werden, ob dieser online ist und ob die eingestellte Slotanzahl dem Vertrag entspricht. Manche setzen es auch schon ein um z.B. den Namen des Gameservers zu überprüfen.


Ich werde den Bug in der HLDS-Mailing-List melden. Vielleicht lässt sich Valve dazu ermutigen, dass durch -maxplayers sich die Slotanzahl nicht mehr ändern lässt. Sinnvoll wäre dies allemal.

Impact

Super Moderator

Beiträge: 1 276

Rootserver vorhanden: Nein

  • Nachricht senden

2

Dienstag, 3. Januar 2012, 06:08

Ist das nicht schon länger bekannt?

MfG
Impact

DeaD_EyE

Administrator

  • »DeaD_EyE« ist der Autor dieses Themas

Beiträge: 3 980

Wohnort: Hagen

Beruf: Mechatroniker (didaktische Systeme)

Rootserver vorhanden: Nein

  • Nachricht senden

3

Dienstag, 3. Januar 2012, 06:33

Ja, ich hab es bisher noch nie so direkt geschrieben. Ich finde es nur witzig, weil es auffällig ist. Vom Startbefehl wird ja nichts verändert. Der Provider sieht das erst, wenn er mal mit HLSW kontrolliert und die Slots auffällig hoch sind.
Die wenigsten Provider, die z.B. xxxLab einsetzen, verwenden Query-Scripts um die Slotanzahl zu überprüfen. Wenn genügend Druck von den Anbietern kommt, wird Valve vielleicht etwas ändern. Hab dazu mal einen kurzen Hinweis in der HLDS-Mailing-List gegeben.

EDIT:

Ein weiter recht einfacher, aber wirkungsvoller Workaround wäre folgender Eintrag in der valve.rc:

Quellcode

1
alias "maxplayers" "echo Forbidden cvar"

Dieser Eintrag sollte vor exec autoexec.cfg stehen.

Ich hoffe mal, dass Valve dennoch den Bug beheben wird. Es kann nicht sein, dass man jede Kleinigkeit selbst fixen muss.

DeaD_EyE

Administrator

  • »DeaD_EyE« ist der Autor dieses Themas

Beiträge: 3 980

Wohnort: Hagen

Beruf: Mechatroniker (didaktische Systeme)

Rootserver vorhanden: Nein

  • Nachricht senden

4

Dienstag, 3. Januar 2012, 17:47

Kaum postet man etwas in der HLDS-Mailing-List, kommt prompt eine noch einfacher Exploit:

Zitat

These solutions are borderline useless. If someone wants to increase their
maxplayers without paying they will find a way.
There's plugins that do this on running servers so your aliases won't do
anything against that.

In fact you don't even need a plugin to change maxplayers on a running
server.

Simply do:

Quellcode

1
2
3
rcon disconnect
rcon maxplayers 64
rcon map cs_office


It is a non issue and nothing that Valve should worry about. It's rather
something that game hosts and game panel developers should look into.
I know TCadmin had a maxplayers monitoring feature years ago, so others
should too.


Er hat zwar mit seiner Aussage recht, dass man alles auch mit Serverplugins umgehen kann, aber genauso gut könnte man dann auch in der Engine direkten Shell-Zugriff einbauen und jeden Idioten mal rumspielen lassen.

Ein kleiner Workaround für die valve.rc:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
cat > /tmp/$$.tmp <<EOF
alias "maxplayers" "echo Forbidden Cvar"
// load the base configuration
//exec default.cfg
r_decal_cullsize 1

// Setup custom controller
exec joystick.cfg

// run a user script file if present
exec autoexec.cfg

//
// stuff command line statements
//
stuffcmds
EOF

find /home/ -name "valve.rc" -exec cp /tmp/$$.tmp "{}" \;
rm /tmp/$$.tmp

HSFighter

Administrator

Beiträge: 1 517

Wohnort: Flensburg

Beruf: Industrieelektroniker

Rootserver vorhanden: Nein

  • Nachricht senden

5

Dienstag, 3. Januar 2012, 19:45


Betroffen ist das bekannte WI, was viele Clans und Provider einsetzen. Unter anderem könnten auch MyWI und andere gefährdet sein. Provider.


Mich würde mal viel mehr interessieren wie lange die Dev's des besagten WI's es schon wissen?

Der BUG ist ja nicht gerade neu!!!



-
Anti Cheat: www.smacbans.com
Kein direkter Support per PM (nur auf Anforderung)

6

Mittwoch, 4. Januar 2012, 23:12

Es gab schon immer viele Wege sich mehr Slots zu erschummeln, als vom Provider erlaubt. Bei manchen Spielen, wie z.B. bei der UT Engine, kann man das sogar im mitgelieferten Gameinterface des Gameservers.

Weil es so viele verschiedene Servertypen gibt, bei denen man mit ganz anderen Ansätzen die Slotzahlen verändern kann, gibt es für Provider eigentlich nur eine einzige sinnvolle Lösung. Man muss mittels automatisierten Scripten und Programmen in regelmäßigen Abständen überprüfen, ob der Kunde sich an die Vertragsbedingungen hält.

In vielen sind es nicht einmal Bugs. Es sind gewollte Features, die für das Vermieten von Gameservern problematisch sein können.
Webbasierender Config Ersteller: www.ulrich-block.de für CS 1.6, CSS, DODS und TF2.

Ebenso wird werden verschiedene Debian Gameserverkernel zum Download angeboten.

DeaD_EyE

Administrator

  • »DeaD_EyE« ist der Autor dieses Themas

Beiträge: 3 980

Wohnort: Hagen

Beruf: Mechatroniker (didaktische Systeme)

Rootserver vorhanden: Nein

  • Nachricht senden

7

Freitag, 6. Januar 2012, 23:12

Keiner Hinweis: Die Diskussion führte darauf hinaus, dass sowieso ein Großteil der Anbieter Scripts Monitoring einsetzen. Aufgrund der Pluginvielfalt und den Möglichkeiten jeglichen Code im Server einzuschleusen, macht es wenig Sinn überhaupt irgendwelche Lücken zu stopfen, die es den Mietern ermöglicht die Slots zu erhöhen.