OpenBSD'nin yenilikleri
(openbsd.org)OpenBSD projesi çeşitli yazılımlar ve fikirler geliştirip bakımını yapmaktadır. Aşağıda yaklaşık benimsenme sırasına göre bir derleme yer alıyor
Kavramlar (Concepts)
- IPSec(4): OpenBSD, IPSec yığınını sunan ilk özgür işletim sistemiydi. 20 Şubat 1997'de eklendi
- INET6(4): OpenBSD 2.7 ile IPv6 tamamen entegre edildi. Geliştirme 6 Ocak 1999'da başladı ve aynı yıl 6 Haziran'daki ilk hackathon'da neredeyse tamamen çalışır duruma ulaştı
- Ayrıcalık ayırma (Privilege Separation): İlk kez Mart 2002'de OpenSSH içinde uygulandı. Daha sonra bgpd(8), dhclient(8), smtpd(8), tmux(1) gibi çeşitli programlara uygulandı
- Ayrıcalık geri alma (Privilege Revocation): Belirli kaynakları korurken ayrıcalıkları düşürme yöntemi uygulandı. Örnek: ping(8), traceroute(8)
- Yığın koruyucu (Stack Protector): 2001'den beri geliştirilen
propolicetabanlıdır. OpenBSD 3.3'te varsayılan olarak etkinleştirildi - W^X (Write XOR Execute): İlk kez OpenBSD 3.3'te uygulandı. OpenBSD 6.0'dan itibaren varsayılan olarak sıkı biçimde zorunlu kılındı
- GOT ve PLT koruması: OpenBSD 3.3'te ld.so, GOT (global offset table) ve PLT'yi (procedure linkage table) koruyacak şekilde geliştirildi
- ASLR (Address Space Layout Randomization): OpenBSD 3.4 bunu varsayılan olarak etkinleştiren ilk sistem oldu
- gcc-local(1) analizi ve denetimi: İlk kez OpenBSD 3.4'te eklendi
- malloc(3) güvenlik güçlendirmesi: Bellek ayırmada rastgeleleştirme ve gecikmeli serbest bırakma uygulandı. OpenBSD 4.4'te yeniden uygulandı
- Konumdan bağımsız çalıştırılabilir dosyalar (PIE): OpenBSD 5.3'te ilk kez varsayılan olarak etkinleştirildi. 7 donanım platformunda
- Rastgele sayı tabanlı bellek ilklendirme: OpenBSD 5.3'te ELF
.openbsd.randomdatabölümü eklendi - Paylaşılan nesne başına yığın koruyucu: OpenBSD 5.3'te her paylaşılan nesneye ayrı yığın koruyucu çerezi uygulandı
- Static-PIE:
/bin,/sbinve RAM disk üzerinde konumdan bağımsız statik ikili desteği. OpenBSD 5.7'de eklendi - SROP saldırı azaltımı: OpenBSD 6.0'da varsayılan olarak etkinleştirildi
- Kütüphane yükleme sırası rastgeleleştirmesi: OpenBSD 6.0 ve 6.2'de varsayılan olarak etkinleştirildi
- Çok iş parçacıklı ortamlarda W^X güvenliği için lazy-binding iyileştirmesi: OpenBSD 5.9'da eklendi
- Bellek yerleşimi güçlendirmesi: OpenBSD 6.1'de tüm programlara ve kütüphanelere uygulandı
- fork+exec yönteminin kullanımı: Ayrıcalık ayırmalı programlarda adres alanı korumasını güçlendirir
- trapsleds: ROP (return-oriented programming) saldırılarını azaltmak amacıyla NOP dönüştürme tekniği uygulandı
- Çekirdeğin önyükleme sırasında yeniden bağlanması: Her önyüklemede çekirdek içi yerleşim rastgeleleştirilir
- i386/amd64 komut dizisi güvenlik güçlendirmesi: ROP saldırılarını zorlaştırmak için yapılan iyileştirmeler
- MAP_STACK seçeneğinin eklenmesi: ROP saldırılarında yığın dışındaki belleğin kötüye kullanılmasını önler
- RETGUARD: Mevcut yığın koruyucudan daha güçlü bir koruma mekanizması olarak OpenBSD 6.4'ten itibaren eklendi
- MAP_CONCEAL seçeneğinin eklenmesi: Hassas bilgilerin core dump üzerinden sızmasını önler
- PROT_WRITE belleğinde sistem çağrılarının engellenmesi: OpenBSD 6.5'te eklendi
- Sistem çağrısı konumlarının sabitlenmesi: Sistem çağrıları yalnızca belirli konumlardan yapılabilecek şekilde sınırlandı
- Adres alanı korumasının güçlendirilmesi:
mmap(2),mprotect(2)vb. yoluyla bellek değişiklikleri sınırlandırıldı - sshd'nin önyükleme sırasında yeniden bağlanması: OpenBSD 7.2'de eklendi
- Okunamayan kod (xonly) desteği: Yürütülebilir belleğin okunamaması sağlandı
- pinsyscalls(2) sistem çağrısı koruması: Sistem çağrısı konumları önceden kaydedilerek korunur
- Dolaylı dallanma hedefi koruması (BTI, IBT): Donanım tabanlı güvenlik özellikleri uygulandı
-fret-cleanözelliğinin eklenmesi: Dönüş değerlerinin yığında kalmasını önleyerek bilgi sızıntısını engeller. Şu anda yalnızca amd64 üzerinde uygulanıyor
Fonksiyonlar (Functions)
- issetugid(2): OpenBSD 2.0'da eklenen bu fonksiyon, sürecin çalışırken ayarlanmış kullanıcı kimliği veya grup kimliğini denetlemeyi sağlar
- arc4random(3): Rastgele sayı üretim fonksiyonu olarak OpenBSD 2.1'de eklendi
- bcrypt(3): Parola karma işlemi için fonksiyon. İlk kez OpenBSD 2.1'de eklendi
- strlcpy(3), strlcat(3): Güvenli dizge kopyalama ve birleştirme fonksiyonları. OpenBSD 2.4'te eklendi
- strtonum(3): Dizgeleri sayıya dönüştürürken hataları önleyen fonksiyon. OpenBSD 3.6'da eklendi
- imsg: Çeşitli daemon'larda kullanılan mesaj iletimi API'si. OpenBSD 4.8'de libutil'e eklendi
- timingsafe_bcmp(3): Sabit çalışma süresi sağlayan bayt karşılaştırma fonksiyonu. OpenBSD 4.9'da eklendi
- explicit_bzero(3): Belleği güvenli biçimde silen fonksiyon. OpenBSD 5.5'te eklendi
- ohash: Hash tablosu uygulaması. OpenBSD 5.6'da libutil'e dahil edildi
- asr: Alternatif DNS çözücüsü. OpenBSD 5.6'da etkinleştirildi
- reallocarray(3): Belleği yeniden ayırırken taşmayı önleyen fonksiyon. OpenBSD 5.6'da eklendi
- getentropy(2): Kriptografik olarak güvenli rastgele sayı sağlayan fonksiyon. OpenBSD 5.6'da eklendi
- sendsyslog(2): Çekirdekten syslog mesajı gönderen fonksiyon. OpenBSD 5.6'da eklendi
- timingsafe_memcmp(3): Sabit çalışma süresi sağlayan bellek karşılaştırma fonksiyonu. OpenBSD 5.6'da eklendi
- pledge(2): Sistem çağrılarını sınırlayarak güvenliği artıran fonksiyon. OpenBSD 5.9'da eklendi
- getpwnam_shadow(3), getpwuid_shadow(3): Güvenliği artırmak için shadow parola verisini alan fonksiyonlar. OpenBSD 5.9'da eklendi
- recallocarray(3): Bellek boyutu yeniden ayarlanırken mevcut veriyi sıfırlarla dolduran fonksiyon. OpenBSD 6.1'de eklendi
- freezero(3): Belleği serbest bırakırken sıfırlarla dolduran fonksiyon. OpenBSD 6.2'de eklendi
- unveil(2): Dosya sistemi erişimini sınırlayan fonksiyon. OpenBSD 6.4'te eklendi
- malloc_conceal(3), calloc_conceal(3): Bellek ayırırken hassas verileri koruma özelliği sağlar. OpenBSD 6.5'te eklendi
- ober: ASN.1 temel kodlama kuralları API'si. OpenBSD 6.6'da libutil'e taşındı
Programlar ve alt sistemler (Programs and Subsystems)
- YP ile ilgili araçlar: ypbind(8), ypset(8), ypcat(1), ypmatch(1), ypwhich(1), libc desteği eklendi. İlk olarak NetBSD 0.9 ile dağıtıldı
- ypserv(8): OpenBSD 2.0'da eklenen YP sunucusu
- mopd(8): MOP (Maintenance Operations Protocol) desteği sunan daemon. OpenBSD 2.0'da eklendi
- AnonCVS: OpenBSD kod deposuna anonim erişim sağlamak üzere tasarlanmış sistem
- aucat(1): Ses sunucusuyla ilgili yardımcı program. OpenBSD 2.1'de eklendi
- OpenSSH: SSH tabanlı güvenli iletişim aracı. OpenBSD 2.6'da eklendi
- mg(1): Hafif bir metin düzenleyici. OpenBSD 2.7'de dahil edildi
- m4(1): Makro işlemci. OpenBSD 2.7'den sonra genişletildi ve bakımı sürdürüldü
- pf(4), pfctl(8), pflogd(8), authpf(8), ftp-proxy(8): Paket filtrelemeli güvenlik duvarı. OpenBSD 3.0'da eklendi
- systrace(4), systrace(1): Sistem çağrısı izleme aracı. OpenBSD 3.2'de eklendi, ancak OpenBSD 5.9'dan sonra yerini pledge(2)'e bıraktı
- spamd(8): İstenmeyen posta filtreleme daemon'u. OpenBSD 3.3'te eklendi
- dc(1), bc(1): Hesap makinesi yardımcı programları. OpenBSD 3.5'te eklendi
- sensorsd(8): Donanım sensörü izleme aracı. OpenBSD 3.5'te dahil edildi
- pkg_add(1): Paket yönetim aracı. OpenBSD 3.5'te eklendi
- carp(4): Failover için ağ arayüzü protokolü. OpenBSD 3.5'te eklendi
- OpenBGPD: BGP yönlendirme daemon'u. OpenBSD 3.5'te eklendi
- dhclient(8), dhcpd(8): DHCP istemcisi ve sunucusu. OpenBSD 3.5~3.6'da eklendi
- hotplugd(8): Hotplug olaylarını işleyen daemon. OpenBSD 3.6'da eklendi
- OpenNTPD: NTP (Network Time Protocol) daemon'u. OpenBSD 3.6'da eklendi
- dpb(1): Dağıtık paket derleme sistemi. OpenBSD 3.6'da eklendi
- ospfd(8), ospfctl(8), ospf6d(8): OSPF (Open Shortest Path First) yönlendirme daemon'ları. OpenBSD 3.7~4.2'de eklendi
- ifstated(8): Arayüz durumu yönetim aracı. OpenBSD 3.8'de eklendi
- bioctl(8): Blok aygıtı ve RAID yönetim aracı. OpenBSD 3.8'de dahil edildi
- hostapd(8): Kablosuz erişim noktası yönetim aracı. OpenBSD 3.8'de eklendi
- watchdogd(8): Sistem kararlılığını sağlayan watchdog zamanlayıcısı. OpenBSD 3.8'de eklendi
- sdiff(1): Dosya karşılaştırma yardımcı programı. OpenBSD 3.9'da eklendi
- dvmrpd(8), dvmrpctl(8): DVMRP (Distance Vector Multicast Routing Protocol) desteği. OpenBSD 4.0'da eklendi
- ripd(8), ripctl(8): RIP (Routing Information Protocol) desteği. OpenBSD 4.1'de dahil edildi
- pkg-config(1): Paket yapılandırma aracı. OpenBSD 4.1'de eklendi
- relayd(8), relayctl(8): Ağ trafiği aktarma araçları. OpenBSD 4.1'de eklendi
- cwm(1): Hafif pencere yöneticisi. OpenBSD 4.2'de eklendi
- libtool(1): Kütüphane oluşturma otomasyon aracı. OpenBSD 4.3'te dahil edildi
- snmpd(8): SNMP (Simple Network Management Protocol) daemon'u. OpenBSD 4.3'te eklendi
- sysmerge(8): Sistem yapılandırma dosyası birleştirme aracı. OpenBSD 4.4'te eklendi
- ypldap(8): LDAP tabanlı YP sunucusu. OpenBSD 4.4'te dahil edildi
- OpenSMTPD: SMTP (Simple Mail Transfer Protocol) sunucusu. OpenBSD 4.6'da eklendi
- tmux(1): Terminal çoklayıcısı. OpenBSD 4.6'da dahil edildi
- ldpd(8), ldpctl(8): Label Distribution Protocol (LDP) desteği. OpenBSD 4.6'da eklendi
- mandoc(1): Kılavuz sayfası belgelendirme aracı. OpenBSD 4.8'de eklendi
- ldapd(8), ldapctl(8): Lightweight Directory Access Protocol (LDAP) sunucusu. OpenBSD 4.8'de eklendi
- OpenIKED: IKE (Internet Key Exchange) protokol uygulaması. OpenBSD 4.8'de eklendi
- iscsid(8), iscsictl(8): iSCSI daemon'u. OpenBSD 4.9'da dahil edildi
- rc.d(8), rc.subr(8): Sistem başlatma betiği yönetimi. OpenBSD 4.9'da eklendi
- npppd(8), npppctl(8): PPP (Point-to-Point Protocol) daemon'u. OpenBSD 5.3'te eklendi
- ldomd(8), ldomctl(8): LDOM (Logical Domains) yönetim araçları. OpenBSD 5.3'te dahil edildi
- sndiod(8): Ses sunucusu. OpenBSD 5.3'te eklendi
- cu(1): Seri iletişim yardımcı programı. OpenBSD 5.4'te eklendi
- slowcgi(8): Yavaş HTTP isteklerini işleyen araç. OpenBSD 5.4'te dahil edildi
- signify(1): Dosya imzalama ve doğrulama aracı. OpenBSD 5.5'te eklendi
- LibreSSL: OpenSSL'den çatallanarak güvenliği güçlendirilmiş proje. İlk sürümü OpenBSD 5.6 ile yayımlandı
- httpd(8): Hafif web sunucusu. OpenBSD 5.6'da dahil edildi
- rcctl(8): rc.d hizmet yönetim aracı. OpenBSD 5.7'de eklendi
- doas(1): Basit bir ayrıcalık yükseltme aracı. OpenBSD 5.8'de eklendi
- radiusd(8): RADIUS sunucu uygulaması. OpenBSD 5.8'de eklendi
- eigrpd(8), eigrpctl(8): EIGRP (Enhanced Interior Gateway Routing Protocol) desteği. OpenBSD 5.9'da dahil edildi
- vmm(4), vmd(8), vmctl(8): Sanal makine yönetim sistemi. OpenBSD 5.9'da eklendi
- acme-client(1): ACME protokolü kullanan sertifika istemcisi. OpenBSD 6.1'de eklendi
- syspatch(8): Güvenlik yaması yönetim aracı. OpenBSD 6.1'de eklendi
- xenodm(1): XDM'in temizlenmiş fork sürümü. OpenBSD 6.1'de dahil edildi
- unwind(8): Yerel DNS çözücüsü. OpenBSD 6.5'te eklendi
- sysupgrade(8): Sistemi otomatik yükseltme aracı. OpenBSD 6.6'da eklendi
- rpki-client(8): RPKI (Route Origin Validation) istemcisi. OpenBSD 6.7'de eklendi
- resolvd(8): Dinamik ağ ortamlarında DNS yapılandırmasını yöneten araç. OpenBSD 6.9'da eklendi
- dhcpleased(8): Geliştirilmiş DHCP istemcisi. OpenBSD 6.9'da dahil edildi
OpenBSD geliştiricilerinin OpenBSD dışında bakımını yaptığı projeler
- sudo: Sistem yöneticilerinin belirli kullanıcılara sınırlı komut çalıştırma yetkisi vermesini sağlayan araç. OpenBSD 2.7'de dahil edildi
- femail: Basit e-posta gönderim aracı. 2005'te başladı ve OpenBSD portu aynı yıl 22 Eylül'de sunuldu
- midish: MIDI sıralayıcı ve işleme aracı. 2003'te başladı ve OpenBSD portu 4 Kasım 2005'te sunuldu
- fdm: E-posta filtreleme ve düzenleme aracı. 2006'da başladı ve OpenBSD portu 18 Ocak 2007'de sunuldu
- toad: OpenBSD için otomatik yazılım dağıtım aracı. 2013'te başladı ve OpenBSD portu aynı yıl 8 Ekim'de sunuldu
- docbook2mdoc: DocBook belgelerini mdoc kılavuz sayfası biçimine dönüştüren araç. 2014'te başladı ve OpenBSD portu aynı yıl 3 Nisan'da sunuldu
- portroach: FreeBSD'nin portscout'undan çatallanarak geliştirilen port güncelleme takip aracı. 2014'te başladı ve OpenBSD portu aynı yıl 5 Eylül'de sunuldu
- cvs2gitdump: CVS deposunu Git'e dönüştüren araç. 2012'de başladı ve OpenBSD portu 1 Ağustos 2016'da sunuldu
- Game of Trees: Git'in yerine geçebilecek bir sürüm kontrol sistemi. 2017'de başladı ve OpenBSD portu 9 Ağustos 2019'da sunuldu
1 yorum
Hacker News yorumu
OpenBSD Vakfı yaklaşık 380 bin dolar bağış topladı
John Ioannidis birkaç hafta önce hayatını kaybetti ve neredeyse kimse bunu fark etmedi
OpenBSD'nin privdrop/privsep tasarımı ve pledge(2)/unveil(2) benimsenmesinin yanı sıra, mimmutable gibi son dönemdeki hafifletme çalışmaları da yeterince dikkat çekmiyor
OpenBSD 5.3'te Matthew Dempsky tarafından rastgele veri belleği uygulandı
AmigaOS, 1985'te position-independent executable (PIE) ve ASLR kullanıyordu
pledge/unveil'in daha öne çıkarılmamış olmasına şaşırdığını belirtiyor
OpenBSD'nin ISO C11 _Thread_local'ı uygulayıp uygulamadığını merak ediyor
OpenBSD sayfasının neden yalnızca temel HTML kullandığı, stil veya CSS kullanmadığı sorgulanıyor
Bir başka harika kaynak olarak <a href="https://why-openbsd.rocks/" rel="nofollow">https://why-openbsd.rocks/</a> öneriliyor