ProcessGUIDs are not necessarily unique, especially for non-PIEs

Ouverte
#84 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
30/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
c

Piste de recherche

Commencez dans ebpfKern/sysmonProcCreate.c autour des lignes 144-147 et suivez comment l’ID de la machine, l’heure de démarrage du processus et l’adresse du segment de texte forment la ProcessGUID. Reproduisez la collision en lançant des exécutables non-PIE dans un intervalle d’une seconde, puis déterminez et documentez une représentation de ProcessKey qui évite les ProcessGUIDs en double pour des événements ProcessCreate distincts.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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).

Langage dominant
C
Étoiles
2.2k
Forks
224
Merge moyen
4 h 50 min
PR mergées (30 j)
3

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de microsoft/Sysmon-Linux

Toutes les issues de microsoft/Sysmon-Linux

Issues similaires

Plus d'issues C

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.