Propolice a kernelben és a userspace-ben

Címkék

Bekapcsolásra került a GCC SSP-je (Stack-Smashing Protector, ismert még Propolice néven is) a FreeBSD kernel-, és userspace-ében is.

A megoldás a buffer overflow típusú támadások ellen hivatott némi védelmet adni, eredetileg a GCC 2.95/3.x-hez készítette Hiroaki Etoh (IBM/Japán), majd 2005-ben a GCC 4.1-es verziójába is bekerült egy portja, ezt használja a FreeBSD is.

A kikapcsolására a WITHOUT_SSP opció megadásával van mód.

A Propolice-t más operációs rendszerek (például az OpenBSD, jópár éve) is használják.

Hozzászólások

tovabba a netbsd (bar itt meg nem default) es dragonfly bsd :)

de azert grat, remelem ahogy terjed jobban figyelnek a fejlesztok az esetleges igy elojovo hibakra

--
“A well placed underscore makes the difference between a s_exchange and a sex_change”
— 8048 Users Manual, Intel 1977.

Heap overflow ellen nem véd, ahogy nemlineáris stack overflow ellen sem. Lineáris stack overflow ellen is úgy lenne csak hatékony, ha per-syscall lenne randomizálva az SSP canary a kernelben, különben az infoleak bugoknak köszönhetően a canary értéke szépen kinyerhető és támadáskor a túlcsordulásnál felhasználható.

Mar ha random canary-s. (Pl. ubuntuban terminator canaryt hasznalnak, ami a nem-stringkezelo fv-ek miatt bekovetkezo, vagy az amiatt bekovetkezo, de tobbszoros overflow ellen sem ved (ill. korlatozottan, a stack reordering miatt)).

--
Fontos feladatot soha ne bizz olyan gepre, amit egyedul is fel tudsz emelni!

Most, hogy mondod, tenyleg (az official patch-ben igy is van benne), viszont ubuntu 7.04-esen 10-bol 10-szer terminator canaryt hasznal, rootkent is.
Ezekszerint az entropia, es a debian-alapu rendszerek nem igazan jonnek ki jol... :)

--
Fontos feladatot soha ne bizz olyan gepre, amit egyedul is fel tudsz emelni!

Hmmm... És azt a terminator canary-t biztos, hogy az SSP teszi a stack-re? Az eredeti Etoh-féle változat __guard névvel hivatkozik a canary-re, a gcc 4.1-től a RedHat-féle megoldásnál pedig __stack_chk_guard van. Utóbbi ráadásul meglehetősen máshogy működik, amely miatt van is szívás rendesen.

"Hmmm... És azt a terminator canary-t biztos, hogy az SSP teszi a stack-re?"

Marmint mire gondolsz?

"Az eredeti Etoh-féle változat __guard névvel hivatkozik a canary-re, a gcc 4.1-től a RedHat-féle megoldásnál pedig __stack_chk_guard van. Utóbbi ráadásul meglehetősen máshogy működik, amely miatt van is szívás rendesen."

Szerintem ez az utobbi lesz, de annyira meg nem neztem meg.

--
Fontos feladatot soha ne bizz olyan gepre, amit egyedul is fel tudsz emelni!