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

Ismail Dönmez ismail at pardus.org.tr
3 Şub 2008 Paz 22:21:20 EET


At Sunday 03 February 2008 around 22:09:58 S.Çağlar Onur wrote:
> 03 Şub 2008 Paz tarihinde, Ismail Dönmez şunları yazmıştı:
> > Pardus 2008 en güvenli Pardus olsun çalışması kapsamında şu flagları
> > öneriyorum :
> >
> > -mtune=generic -march=i686 -O2 -pipe -fomit-frame-pointer
>
> Halen -O2/O3 veya Os arasında kararsızım ben :)

-Os optimizasyonları öldürür
-O3 gcc geliştiricileri tarafından bile önerilmiyor, test edilmediği için. 
Sadece glibc için kullanıyoruz bunu onu da patlatıyordu daha geçen gün 
düzeltildi.

> > 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).
>
> 1.0 -fstack-protector-all ile derlenmişti ve o zamanki gcc'miz SPP
> yamalarını yanında taşıyordu, multimedia hedelerindeki sorunlar dışında (ne
> olduklarını hatırlamıyorum) bir sorun yaşadığımızı hatırlamıyorum,

Stack protector çok gelişti zaten ama Fedora -fstack-protector 
kullanmış, -fstack-protector-all sadece wireshark, gaim ve birkaç başka 
programda kullanılmış.

> > -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]
>
> Bunu her paket için mi yapmalı yoksa SUSE'nin yaptığı gibi sadece glibc
> için mi bunu kullanmalı bilemiyorum.

Glibc ile ne alakası var şimdi anlamadım? Programları böyle derleyeceğiz ve 
C++ programları da bundan yararlanıcak eskiden bu flagi görseler de gcc 
birşey yapamıyordu.

> > Yorumlar/fikirler/öneriler ?
>
> Diğer dağıtımların ne yaptığı ile ilgili kesin bilgi var mı elimizde? Suse
> wiki'sinde toplantı notları arasında bir seri tartışma var şu mu olsun bu
> mu olsun diye ama kesin sonuç bulamadım (aslında çok da aramadım ne yalan
> söyleyeyim). Onları da öğrensek fena olmayacak.

Ubuntu: PIE, ASLR(sadece son çıkacak sürümde) ,stack protector default.
Fedora: Server programlarında pie , ASLR, Exec Shield, stack protector default
Suse: Stack protector (ASLR yok ondan eminim, PIE konusunda emin değilim)

Pardus için önerim: PIE, stack protector, ASLR, Exec Shield

ki bu Linux üzerinde elde edilebilecek tüm güvenliği sağlıyor son aşama 
AppArmor/SELinux/Tomoyo Linux gibi en üst seviye katman.

-- 
Never learn by your mistakes, if you do you may never dare to try again.



Gelistirici mesaj listesiyle ilgili daha fazla bilgi