macOS PID Reuse
PID Hergebruik
Wanneer 'n macOS XPC-diens die geroepte proses op grond van die PID en nie die oudit-token nagaan nie, is dit vatbaar vir 'n PID-hergebruikaanval. Hierdie aanval is gebaseer op 'n wedrenstoestand waar 'n uitbuiting boodskappe na die XPC-diens **stuur en misbruik maak van die funksionaliteit en net daarna die uitvoering van posix_spawn(NULL, teiken_binêre, NULL, &attr, teiken_argv, omgewing)
met die toegelate binêre lê.
Hierdie funksie sal die toegelate binêre die PID laat besit, maar die **skadelike XPC-boodskap sou net voorheen gestuur wees. Dus, as die XPC-diens die PID gebruik om die sender te **verifieer en dit NA die uitvoering van posix_spawn
nagaan, sal dit dink dit kom van 'n geautriseerde proses.
Uitbuitingsvoorbeeld
As jy die funksie shouldAcceptNewConnection
vind of 'n funksie wat deur dit geroep word processIdentifier
en nie auditToken
aanroep nie. Dit beteken hoogstwaarskynlik dat dit die proses-PID verifieer en nie die oudit-token nie.
Soos byvoorbeeld in hierdie afbeelding (geneem uit die verwysing):
Kyk na hierdie voorbeeld van 'n uitbuiting (weer geneem uit die verwysing) om die 2 dele van die uitbuiting te sien:
Een wat verskeie vurke genereer
Elke vurk sal die lading na die XPC-diens stuur terwyl dit
posix_spawn
net na die boodskap stuur.
Vir die uitbuiting om te werk, is dit belangrik om export`` ``
OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
of om binne die uitbuiting te plaas:
Eerste opsie om NSTasks
en argument te gebruik om die kinders te lanceer om die RC te benut
Ander voorbeelde
Verwysings
Last updated