Anti-ROP mechanizmus az OpenBSD libc-ben

Címkék

Theo de Raadt tegnap arról írt az openbsd-tech levelezési listán, hogy változtatásai nyomán Anti-ROP (ROP = Return-Oriented Programming) mechanizmus került a libc-be:

This change randomizes the order of symbols in libc.so at boot time.

This is done by saving all the independent .so sub-files into an ar archive, and then relinking them into a new libc.so in random order, at each boot. The cost is less than a second on the systems I am using.

Részletek Theo levelében.

Hozzászólások

Nagyon jó, hogy már bootoláskor c fordító kell. Beágyazott rendszereken ideális lesz. :)

Mit értünk beágyazotton? "Hivatalosan" nincs ilyen. De sokan használják az OpenBSD-t network appliance dobozokon read only fs-en, erősen csökkentett alaprendszerrel amiben nincs fordító: resflash,flashdist,flashrd,flashboot..... A levlistán szó van róla, hogy a cc-t átteszik a comp set-ből a base-ba ráadásul..... szóval most majd lesz....

Annyival azért jobb a helyzet az elképzeltnél, hogy normális esetben a cc az csak egy keretprogram, tehát ha nagyon akarják, meg tudják csinálni úgy, hogy valóban ne legyen fordító abban a minimalista környezetben, de működjön a dolog.
Amúgy szerintem azért nem az ld-t hívogatják direktben, mert így bármely későbbi cc-vel kapcsolatos módosítást csak egyetlen helyen kell megcsinálni, és mindenre - a valódi fordításra, és az ilyen hekkekre is - alkalmas lesz, míg ha ide egy ld hívást raknának, akkor minden cc-s módosítást itt *is* végig kell vezetni.

szerveren sokra megy vele, ha csak 2-3 evente van reboot :)

/o\ Eléggé gányolós megoldásnak tűnik. Inkább a puffereket kellene megtanulni jól kezelni, nem? ;)

--

ez nagyon szar, miert nem a dynamic linkerrel csinalja?

--
NetBSD - Simplicity is prerequisite for reliability