ProcessGUIDs are not necessarily unique, especially for non-PIEs

Abierto
#84 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
30/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
c

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.

Descripción

investigate

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:

  1. 32 bits for machine ID
  2. 32 bits for process start in Unix time in seconds
  3. 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).

Lenguaje dominante
C
Estrellas
2.2k
Forks
222
Merge medio
4 h 50 min
PR fusionados (30 d)
3

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de microsoft/Sysmon-Linux

Todos los issues de microsoft/Sysmon-Linux

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.