Security: predictable /tmp/nc_exit_status in postdetails - symlink clobber and TOCTOU
Los mantenedores suelen responder en 1 día
Ya se ha fusionado un pull request relacionado.
- #5035 de @dgibbs64 — fusionado
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 84/100
Línea de trabajo
Comienza en lgsm/modules/command_postdetails.sh alrededor de las líneas 63-65 e inspecciona el grupo de comandos que llama a termbin.com, escribe en /tmp/nc_exit_status y vuelve a leerlo. Ejecuta ./gameserver pd y verifica que el manejo del estado de salida ya no dependa de una ruta temporal compartida predecible ni de una condición de carrera de escritura/lectura.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Security report (responsible disclosure)
Predictable /tmp/nc_exit_status file in postdetails — symlink clobber + write/read race
Affected: lgsm/modules/command_postdetails.sh:63-65
nc -w 10 termbin.com 9999
echo $? > /tmp/nc_exit_status
} | tr -d '\n\0')
nc_exit_status=$(cat /tmp/nc_exit_status)
Two problems:
- Fixed world-writable path with no
mktemp/O_EXCL/noclobber: a local attacker pre-creates/tmp/nc_exit_statusas a symlink to a victim-owned file (e.g.~/.bashrc). Next time the victim runs./gameserver pd, the redirect truncates the target with0\n— arbitrary file clobber as the victim user (CWE-59/CWE-377). - TOCTOU between write and read: an attacker can swap the file contents between line 63 and line 65 to corrupt the status logic; the file is also shared across concurrent LGSM instances.
Suggested fix
Drop the temp file entirely:
nc -w 10 termbin.com 9999
nc_exit_status=$?
…inside the same command group, or use mktemp under ${tmpdir} if the split is required.
Fix
Implemented in PR #5035: https://github.com/GameServerManagers/LinuxGSM/pull/5035 (merged into develop for v26.4.0).
- Lenguaje dominante
- Shell
- Estrellas
- 4.9k
- Forks
- 870
- Merge medio
- 14 h 58 min
- PR fusionados (30 d)
- 106
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de GameServerManagers/LinuxGSM
-
engine: source game: Team Fortress 2 game: Team Fortress 2 Classified info: docker info: steamcmd type: bug
Dificultad 4/5 3-5 días Aptitud para principiantes 52/100
GameServerManagers/LinuxGSM#5094 ·
Los mantenedores suelen responder en 1 día
-
type: bug
Dificultad 3/5 Medio día Aptitud para principiantes 42/100
GameServerManagers/LinuxGSM#5048 ·
Los mantenedores suelen responder en 1 día
-
engine: unity3d engine: unreal4 Epic game: 7 Days to Die game: ARK: Survival Evolved game: Rust info: dependency type: feature
Dificultad 5/5 Más de una semana Aptitud para principiantes 8/100
GameServerManagers/LinuxGSM#5047 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
command: monitor type: feature
Dificultad 3/5 Medio día Aptitud para principiantes 42/100
GameServerManagers/LinuxGSM#4995 ·
Los mantenedores suelen responder en 1 día
-
feat(core): report a clear error when the configured branch doesn't existPosiblemente ocupada @dgibbs64 la tomó hace 8 días. Abiertotype: feature
Dificultad 3/5 Medio día Aptitud para principiantes 45/100
GameServerManagers/LinuxGSM#4994 ·
Los mantenedores suelen responder en 1 día
Todos los issues de GameServerManagers/LinuxGSM
Issues similares
-
数据界面的横向滚动条缺失Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
zilliztech/attu#1037 ·
-
AdminNeo is failing to updateAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
alunduil/alunduil-chezmoi#964 ·
Los mantenedores suelen responder en 1 día
-
bug-unconfirmed
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
Los mantenedores suelen responder en 1 día
-
[pico][astrocade] emu/apply.sh edits src/mame/midway/astrohome.cpp, which current MAME has in bally/Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
FujiNetWIFI/fujinet-firmware#2120 ·
Los mantenedores suelen responder en 1 día