Inovasi OpenBSD
(openbsd.org)Proyek OpenBSD mengembangkan dan memelihara berbagai perangkat lunak dan ide. Berikut ringkasan berdasarkan urutan pengenalan secara garis besar
Konsep (Concepts)
- IPSec(4): OpenBSD adalah sistem operasi Free pertama yang menyediakan stack IPSec. Diperkenalkan pada 20 Februari 1997
- INET6(4): Integrasi penuh IPv6 di OpenBSD 2.7. Pengembangan dimulai pada 6 Januari 1999, dan pada hackathon pertama tanggal 6 Juni di tahun yang sama sudah mencapai kondisi hampir sepenuhnya berfungsi
- Pemisahan hak istimewa (Privilege Separation): Pertama kali diimplementasikan di OpenSSH pada Maret 2002. Setelah itu diterapkan ke berbagai program seperti bgpd(8), dhclient(8), smtpd(8), tmux(1)
- Pencabutan hak istimewa (Privilege Revocation): Menerapkan cara untuk menurunkan hak istimewa sambil tetap mempertahankan resource tertentu. Contoh: ping(8), traceroute(8)
- Pelindung stack (Stack Protector): Berbasis "propolice" yang dikembangkan sejak 2001. Diaktifkan secara default pada OpenBSD 3.3
- W^X (Write XOR Execute): Pertama kali diterapkan pada OpenBSD 3.3. Sejak OpenBSD 6.0, ditegakkan secara ketat secara default
- Perlindungan GOT dan PLT: ld.so ditingkatkan pada OpenBSD 3.3 untuk melindungi GOT (global offset table) dan PLT (procedure link table)
- ASLR (Address Space Layout Randomization): OpenBSD 3.4 adalah yang pertama mengaktifkannya secara default
- Analisis dan pemeriksaan gcc-local(1): Pertama kali diperkenalkan pada OpenBSD 3.4
- Penguatan keamanan malloc(3): Menerapkan pengacakan dan delayed free saat alokasi memori. Diimplementasikan ulang pada OpenBSD 4.4
- Executable position-independent (PIE): OpenBSD 5.3 adalah yang pertama mengaktifkannya secara default. Pada 7 platform perangkat keras
- Inisialisasi memori berbasis acak: Penambahan section ELF .openbsd.randomdata pada OpenBSD 5.3
- Pelindung stack per shared object: Pada OpenBSD 5.3, setiap shared object menggunakan cookie stack protector yang terpisah
- Static-PIE: Dukungan biner statis position-independent di /bin, /sbin, dan RAM disk. Diperkenalkan pada OpenBSD 5.7
- Mitigasi serangan SROP: Diaktifkan secara default pada OpenBSD 6.0
- Pengacakan urutan pemuatan library: Diaktifkan secara default pada OpenBSD 6.0 dan 6.2
- Peningkatan lazy-binding untuk keamanan W^X di lingkungan multithread: Diperkenalkan pada OpenBSD 5.9
- Penguatan layout memori: Diterapkan ke semua program dan library pada OpenBSD 6.1
- Penggunaan metode fork+exec: Memperkuat perlindungan address space pada program dengan pemisahan hak istimewa
- trapsleds: Menerapkan teknik konversi NOP untuk mitigasi serangan ROP (return-oriented programming)
- Relink saat boot kernel: Mengacak layout internal kernel pada setiap boot
- Penguatan keamanan urutan instruksi i386/amd64: Peningkatan untuk mempersulit serangan ROP
- Penambahan opsi MAP_STACK: Mencegah penyalahgunaan memori selain stack dalam serangan ROP
- RETGUARD: Mekanisme perlindungan yang lebih kuat daripada stack protector yang ada, diperkenalkan mulai OpenBSD 6.4
- Penambahan opsi MAP_CONCEAL: Mencegah kebocoran informasi sensitif melalui core dump
- Pemblokiran system call dari memori PROT_WRITE: Diperkenalkan pada OpenBSD 6.5
- Pemfiksasian lokasi system call: Membatasi agar system call hanya bisa dilakukan dari lokasi tertentu
- Penguatan perlindungan address space: Membatasi perubahan memori melalui mmap(2), mprotect(2), dan sebagainya
- Relink sshd saat boot: Diperkenalkan pada OpenBSD 7.2
- Dukungan kode non-readable (xonly): Membatasi agar memori yang dapat dieksekusi tidak bisa dibaca
- Perlindungan system call pinsyscalls(2): Melindungi lokasi system call dengan mendaftarkannya terlebih dahulu
- Perlindungan target branch tidak langsung (BTI, IBT): Menerapkan fitur keamanan berbasis hardware
- Penambahan fitur -fret-clean: Mencegah nilai return tetap berada di stack sehingga menutup kebocoran informasi. Saat ini hanya diterapkan di amd64
Fungsi (Functions)
- issetugid(2): Fungsi yang diperkenalkan pada OpenBSD 2.0 untuk memeriksa apakah proses berjalan dengan user ID atau group ID yang disetel saat eksekusi
- arc4random(3): Fungsi pembangkit bilangan acak yang ditambahkan pada OpenBSD 2.1
- bcrypt(3): Fungsi untuk hashing password. Pertama kali diperkenalkan pada OpenBSD 2.1
- strlcpy(3), strlcat(3): Fungsi untuk penyalinan dan penggabungan string yang aman. Diperkenalkan pada OpenBSD 2.4
- strtonum(3): Fungsi yang mengubah string menjadi angka sambil mencegah error. Diperkenalkan pada OpenBSD 3.6
- imsg: API pengiriman pesan yang digunakan di berbagai daemon. Ditambahkan ke libutil pada OpenBSD 4.8
- timingsafe_bcmp(3): Fungsi perbandingan byte dengan waktu eksekusi konstan. Diperkenalkan pada OpenBSD 4.9
- explicit_bzero(3): Fungsi untuk menghapus memori secara aman. Ditambahkan pada OpenBSD 5.5
- ohash: Implementasi hash table. Disertakan dalam libutil pada OpenBSD 5.6
- asr: Resolver DNS alternatif. Diaktifkan pada OpenBSD 5.6
- reallocarray(3): Fungsi yang mencegah overflow saat realokasi memori. Ditambahkan pada OpenBSD 5.6
- getentropy(2): Fungsi yang menyediakan bilangan acak yang aman secara kriptografis. Diperkenalkan pada OpenBSD 5.6
- sendsyslog(2): Fungsi untuk mengirim pesan syslog dari kernel. Ditambahkan pada OpenBSD 5.6
- timingsafe_memcmp(3): Fungsi perbandingan memori dengan waktu eksekusi konstan. Diperkenalkan pada OpenBSD 5.6
- pledge(2): Fungsi yang meningkatkan keamanan dengan membatasi system call. Ditambahkan pada OpenBSD 5.9
- getpwnam_shadow(3), getpwuid_shadow(3): Fungsi untuk mengambil data shadow password demi penguatan keamanan. Diperkenalkan pada OpenBSD 5.9
- recallocarray(3): Fungsi yang mengisi data lama dengan 0 saat mengubah ukuran memori. Ditambahkan pada OpenBSD 6.1
- freezero(3): Fungsi yang mengisi memori dengan 0 saat membebaskannya. Diperkenalkan pada OpenBSD 6.2
- unveil(2): Fungsi yang membatasi akses sistem file. Ditambahkan pada OpenBSD 6.4
- malloc_conceal(3), calloc_conceal(3): Menyediakan perlindungan untuk data sensitif saat alokasi memori. Ditambahkan pada OpenBSD 6.5
- ober: API ASN.1 Basic Encoding Rules. Dipindahkan ke libutil pada OpenBSD 6.6
Program dan Subsistem (Programs and Subsystems)
- Utilitas terkait YP: ypbind(8), ypset(8), ypcat(1), ypmatch(1), ypwhich(1), penambahan dukungan libc. Pertama kali didistribusikan pada NetBSD 0.9
- ypserv(8): Server YP yang diperkenalkan pada OpenBSD 2.0
- mopd(8): Daemon dukungan MOP (Maintenance Operations Protocol). Ditambahkan pada OpenBSD 2.0
- AnonCVS: Sistem yang dirancang agar repositori kode OpenBSD dapat diakses secara anonim
- aucat(1): Utilitas terkait audio server. Ditambahkan pada OpenBSD 2.1
- OpenSSH: Alat komunikasi aman berbasis SSH. Diperkenalkan pada OpenBSD 2.6
- mg(1): Editor teks ringan. Disertakan pada OpenBSD 2.7
- m4(1): Macro processor. Diperluas dan dipelihara sejak setelah OpenBSD 2.7
- pf(4), pfctl(8), pflogd(8), authpf(8), ftp-proxy(8): Firewall packet filtering. Ditambahkan pada OpenBSD 3.0
- systrace(4), systrace(1): Alat pemantauan system call. Ditambahkan pada OpenBSD 3.2, tetapi digantikan oleh pledge(2) setelah OpenBSD 5.9
- spamd(8): Daemon untuk pemfilteran spam. Diperkenalkan pada OpenBSD 3.3
- dc(1), bc(1): Utilitas kalkulator. Ditambahkan pada OpenBSD 3.5
- sensorsd(8): Alat pemantauan sensor hardware. Disertakan pada OpenBSD 3.5
- pkg_add(1): Utilitas manajemen paket. Diperkenalkan pada OpenBSD 3.5
- carp(4): Protokol antarmuka jaringan untuk failover. Ditambahkan pada OpenBSD 3.5
- OpenBGPD: Daemon routing BGP. Diperkenalkan pada OpenBSD 3.5
- dhclient(8), dhcpd(8): Klien dan server DHCP. Ditambahkan pada OpenBSD 3.5~3.6
- hotplugd(8): Daemon pemrosesan event hotplug. Ditambahkan pada OpenBSD 3.6
- OpenNTPD: Daemon NTP (Network Time Protocol). Ditambahkan pada OpenBSD 3.6
- dpb(1): Sistem build paket terdistribusi. Diperkenalkan pada OpenBSD 3.6
- ospfd(8), ospfctl(8), ospf6d(8): Daemon routing OSPF (Open Shortest Path First). Diperkenalkan pada OpenBSD 3.7~4.2
- ifstated(8): Alat manajemen status interface. Ditambahkan pada OpenBSD 3.8
- bioctl(8): Alat manajemen block device dan RAID. Disertakan pada OpenBSD 3.8
- hostapd(8): Alat pengelolaan access point nirkabel. Diperkenalkan pada OpenBSD 3.8
- watchdogd(8): Watchdog timer untuk menjaga stabilitas sistem. Ditambahkan pada OpenBSD 3.8
- sdiff(1): Utilitas perbandingan file. Diperkenalkan pada OpenBSD 3.9
- dvmrpd(8), dvmrpctl(8): Dukungan DVMRP (Distance Vector Multicast Routing Protocol). Ditambahkan pada OpenBSD 4.0
- ripd(8), ripctl(8): Dukungan RIP (Routing Information Protocol). Disertakan pada OpenBSD 4.1
- pkg-config(1): Alat konfigurasi paket. Diperkenalkan pada OpenBSD 4.1
- relayd(8), relayctl(8): Alat relay traffic jaringan. Ditambahkan pada OpenBSD 4.1
- cwm(1): Window manager ringan. Ditambahkan pada OpenBSD 4.2
- libtool(1): Alat otomatisasi pembangunan library. Disertakan pada OpenBSD 4.3
- snmpd(8): Daemon SNMP (Simple Network Management Protocol). Ditambahkan pada OpenBSD 4.3
- sysmerge(8): Alat penggabungan file konfigurasi sistem. Ditambahkan pada OpenBSD 4.4
- ypldap(8): Server YP berbasis LDAP. Disertakan pada OpenBSD 4.4
- OpenSMTPD: Server SMTP (Simple Mail Transfer Protocol). Diperkenalkan pada OpenBSD 4.6
- tmux(1): Terminal multiplexer. Disertakan pada OpenBSD 4.6
- ldpd(8), ldpctl(8): Dukungan LDP (Label Distribution Protocol). Ditambahkan pada OpenBSD 4.6
- mandoc(1): Alat dokumentasi manual page. Diperkenalkan pada OpenBSD 4.8
- ldapd(8), ldapctl(8): Server LDAP (Lightweight Directory Access Protocol). Ditambahkan pada OpenBSD 4.8
- OpenIKED: Implementasi protokol IKE (Internet Key Exchange). Diperkenalkan pada OpenBSD 4.8
- iscsid(8), iscsictl(8): Daemon iSCSI. Disertakan pada OpenBSD 4.9
- rc.d(8), rc.subr(8): Pengelolaan skrip inisialisasi sistem. Ditambahkan pada OpenBSD 4.9
- npppd(8), npppctl(8): Daemon PPP (Point-to-Point Protocol). Ditambahkan pada OpenBSD 5.3
- ldomd(8), ldomctl(8): Alat manajemen LDOM (Logical Domains). Disertakan pada OpenBSD 5.3
- sndiod(8): Audio server. Diperkenalkan pada OpenBSD 5.3
- cu(1): Utilitas komunikasi serial. Ditambahkan pada OpenBSD 5.4
- slowcgi(8): Alat untuk menangani permintaan HTTP yang lambat. Disertakan pada OpenBSD 5.4
- signify(1): Alat untuk menandatangani dan memverifikasi file. Ditambahkan pada OpenBSD 5.5
- LibreSSL: Proyek fork dari OpenSSL untuk memperkuat keamanan. Pertama kali dirilis pada OpenBSD 5.6
- httpd(8): Web server ringan. Disertakan pada OpenBSD 5.6
- rcctl(8): Utilitas manajemen layanan rc.d. Ditambahkan pada OpenBSD 5.7
- doas(1): Utilitas eskalasi hak istimewa yang sederhana. Diperkenalkan pada OpenBSD 5.8
- radiusd(8): Implementasi server RADIUS. Ditambahkan pada OpenBSD 5.8
- eigrpd(8), eigrpctl(8): Dukungan EIGRP (Enhanced Interior Gateway Routing Protocol). Disertakan pada OpenBSD 5.9
- vmm(4), vmd(8), vmctl(8): Sistem manajemen mesin virtual. Ditambahkan pada OpenBSD 5.9
- acme-client(1): Klien penerbitan sertifikat menggunakan protokol ACME. Diperkenalkan pada OpenBSD 6.1
- syspatch(8): Alat manajemen patch keamanan. Ditambahkan pada OpenBSD 6.1
- xenodm(1): Versi fork XDM yang telah dirapikan. Disertakan pada OpenBSD 6.1
- unwind(8): Resolver DNS lokal. Diperkenalkan pada OpenBSD 6.5
- sysupgrade(8): Alat upgrade sistem otomatis. Ditambahkan pada OpenBSD 6.6
- rpki-client(8): Klien RPKI (Route Origin Validation). Diperkenalkan pada OpenBSD 6.7
- resolvd(8): Alat untuk mengelola konfigurasi DNS di lingkungan jaringan dinamis. Ditambahkan pada OpenBSD 6.9
- dhcpleased(8): Klien DHCP yang ditingkatkan. Disertakan pada OpenBSD 6.9
Proyek yang dipelihara pengembang OpenBSD di luar OpenBSD
- sudo: Alat yang memungkinkan administrator sistem memberi pengguna tertentu izin menjalankan perintah terbatas. Disertakan pada OpenBSD 2.7
- femail: Alat pengiriman email sederhana. Dimulai pada 2005, dan port OpenBSD disediakan pada 22 September di tahun yang sama
- midish: Sequencer dan alat pemrosesan MIDI. Dimulai pada 2003, dan port OpenBSD disediakan pada 4 November 2005
- fdm: Alat penyaringan dan pengorganisasian email. Dimulai pada 2006, dan port OpenBSD disediakan pada 18 Januari 2007
- toad: Alat deployment otomatis perangkat lunak untuk OpenBSD. Dimulai pada 2013, dan port OpenBSD disediakan pada 8 Oktober di tahun yang sama
- docbook2mdoc: Alat untuk mengonversi dokumen DocBook ke format manual page mdoc. Dimulai pada 2014, dan port OpenBSD disediakan pada 3 April di tahun yang sama
- portroach: Alat pelacak pembaruan port yang dikembangkan dengan mem-fork portscout milik FreeBSD. Dimulai pada 2014, dan port OpenBSD disediakan pada 5 September di tahun yang sama
- cvs2gitdump: Alat untuk mengonversi repositori CVS ke Git. Dimulai pada 2012, dan port OpenBSD disediakan pada 1 Agustus 2016
- Game of Trees: Sistem version control yang dapat menjadi alternatif Git. Dimulai pada 2017, dan port OpenBSD disediakan pada 9 Agustus 2019
1 komentar
Komentar Hacker News
OpenBSD Foundation telah mengumpulkan sekitar 380 ribu dolar
John Ioannidis meninggal dunia beberapa minggu lalu, dan hampir tidak ada yang menyadarinya
Selain desain privdrop/privsep OpenBSD dan adopsi pledge(2)/unveil(2), upaya mitigasi yang lebih baru seperti mimmutable juga kurang mendapat perhatian
Di OpenBSD 5.3, memori data acak diimplementasikan oleh Matthew Dempsky
AmigaOS menggunakan position-independent executable (PIE) dan ASLR pada 1985
Menyatakan terkejut karena pledge/unveil tidak diperkenalkan dengan lebih menonjol
Bertanya-tanya apakah OpenBSD sudah mengimplementasikan ISO C11 _Thread_local
Mempertanyakan mengapa halaman OpenBSD hanya menggunakan HTML dasar tanpa styling atau CSS
Merekomendasikan sumber bagus lainnya: <a href="https://why-openbsd.rocks/" rel="nofollow">https://why-openbsd.rocks/</a>