microsoft / microsoft/SysmonForLinux
ProcessGUIDs are not necessarily unique, especially for non-PIEs
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- C
- Estrellas
- 2.2k
- Forks
- 220
- Merge medio
- 11 d 22 h
- PR fusionados (30 d)
- 2
Descripción
One can reliably create ProcessGUID collisions from different ProcessCreate events by launching non-Position Independent Executables (PIE) within a second. This has been an issue for me, trying to correlate events.
It looks like ProcessGUIDs are created by combining a few pieces of information:
- 32 bits for machine ID
- 32 bits for process start in Unix time in seconds
- 64 bits for the memory address of the end of the text segment, for a process. https://github.com/Sysinternals/SysmonForLinux/blob/main/ebpfKern/sysmonProcCreate.c#L144-L147
Although most executables on Linux distributions are compiled as PIE, it's not a guaranteed and it's not obvious that Sysmon GUID generation could produce duplicates in this scenario.
Perhaps instead of just using something like the text segment location, other data could be packed into the ProcessKey as well. There's 64 bits to work with and these addresses for PIEs will only have ~28 bits of randomness (measured on default Ubuntu systems with paxtest).
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.
Línea de trabajo
Comience en ebpfKern/sysmonProcCreate.c alrededor de las líneas 144-147 y siga cómo el ID de máquina, la hora de inicio del proceso y la dirección del segmento de texto forman la ProcessGUID. Reproduzca la colisión iniciando ejecutables non-PIE en un intervalo de un segundo y, a continuación, determine y documente una representación de ProcessKey que evite ProcessGUIDs duplicadas para eventos ProcessCreate distintos.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- c
- Área
- operating-systems, security
- Tipo de issue
- Error
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 30/100