[Gelistirici] Smash that stack harder aka Pardus 2008 C(XX)FLAGS

Onur Küçük onur at pardus.org.tr
3 Şub 2008 Paz 17:44:19 EET


> -mtune=generic -march=i686 -O2 -pipe -fomit-frame-pointer

 bence ok

> bunlar temel optimizasyon flagleri, ek güvenlik için
> 
> -fstack-protector
> 
> Bu flag ile stack smashing [0] saldırıları önleniyor daha önceden
> yazdığım ASLR özelliğine ek bir koruma sistemi. Stack protector genel
> olarak açılınca bazı paketlerde özel olarak kapatılması gerekicek
> ( kernel kendisi kapatıyor mesela).

 Xorg da ve bazı multimedia araçlarında peformans düşüşüne sebep oluyor
diyorlar (4-8%) ama şu anda durum nedir ben de bilmiyorum. Bunları
denememiz gerekecek. Pisi actionsapi ye "filter-flags" güzel olur bu
durumda :)

> -D_FORTIFY_SOURCE=2
> 
> Derleme sırasında buffer overflowlara karşı önlem alıyor. Gcc 4.3 ve
> glibc 2.7+ ile birlikte artık C++ programlarını da destekliyor. [1]

 Okuduğum yerlerde =1 verirsek derleme sırasında, =2 verirsek hem
derlerken değiştiriyor hem de runtime da bazı fonksiyonları (strcpy
vs.) fortifed olanları ile değiştirdiği yazıyor, yine de overhead i
çok değil diyorlar. Gcc 4.3 de durum nedir bilmiyorum, okuduklarım çok
güncel değildi.

 Bence genel olarak mantıklı bu flag lar ama iyi bildiğim bir konu
değil bu. Diğer dağıtımlar (Suse ve ubuntu mesela) öntanımlı flag ne
kullanıyor biliyor musunuz ? 

 Not: Arada kötü yazılmış kodlarda da performans artışı getirdiği de
oluyor tabi :) Bakınız [1] ve gereksiz allocate edilmiş 128 byte,
yaklaşık 10% performansı arttı, ama bu bir kıstas değil tabi ki, tek
fonksiyon tek çağrı tek yerel char array vs.

[1] http://cekirdek.pardus.org.tr/~onur/code/exectime_count.c

-- 
 Onur Küçük                                      Knowledge speaks,   
 <onur.--.-.pardus.org.tr>                       but wisdom listens  




Gelistirici mesaj listesiyle ilgili daha fazla bilgi