10 poin oleh GN⁺ 2025-02-23 | 1 komentar | Bagikan ke WhatsApp

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

 
GN⁺ 2025-02-23
Komentar Hacker News
  • OpenBSD Foundation telah mengumpulkan sekitar 380 ribu dolar

    • Mengingat mereka membuat OpenSSH dan semua perusahaan Fortune 500 menggunakannya, menurut saya mereka seharusnya bisa mengumpulkan 1–2 juta dolar per tahun
    • Sudah waktunya perusahaan-perusahaan ini mulai berkontribusi
    • Vendor perangkat keras juga harus membuka source code, dan Nvidia disebut secara langsung
  • John Ioannidis meninggal dunia beberapa minggu lalu, dan hampir tidak ada yang menyadarinya

    • Ia juga dikenal sebagai sosok yang meletakkan dasar Mobile IP (yang memungkinkan IP bekerja di ponsel)
  • Selain desain privdrop/privsep OpenBSD dan adopsi pledge(2)/unveil(2), upaya mitigasi yang lebih baru seperti mimmutable juga kurang mendapat perhatian

    • Di OpenBSD, ruang alamat statis untuk sebagian besar program kini secara otomatis dibuat immutable
    • Di mesin Intel/AMD dan ARM modern, memori execute-only serta BTI/IBT aktif secara default
    • Ini juga mencakup pekerjaan pengembangan port untuk menyiapkan ekosistem perangkat lunak yang lebih besar
  • Di OpenBSD 5.3, memori data acak diimplementasikan oleh Matthew Dempsky

    • Salah satu use case fitur ini adalah RETGUARD
    • RETGUARD menggantikan stack protector dan menggunakan cookie acak per fungsi untuk memverifikasi alamat pengembalian pada stack secara konsisten
  • AmigaOS menggunakan position-independent executable (PIE) dan ASLR pada 1985

    • Karena Amiga tidak memiliki MMU dan memorinya terbatas, semua yang dimuat harus ditempatkan di RAM yang tersedia
    • Setiap section bisa ditempatkan di lokasi yang berbeda, dan compiler membuat banyak section untuk mendukung hal ini
  • Menyatakan terkejut karena pledge/unveil tidak diperkenalkan dengan lebih menonjol

  • Bertanya-tanya apakah OpenBSD sudah mengimplementasikan ISO C11 _Thread_local

    • Ini merupakan ketidaknyamanan terbesar saat mem-porting perangkat lunak ke OpenBSD
    • OpenBSD adalah satu-satunya OS besar yang tidak mendukung native thread-local storage
  • Mempertanyakan mengapa halaman OpenBSD hanya menggunakan HTML dasar tanpa styling atau CSS

    • Tipografi penting untuk keterbacaan, dan setidaknya perlu ada line height yang layak serta panjang baris dibatasi sekitar 60 karakter
    • Bertanya-tanya apakah OpenBSD tidak sungguh-sungguh mempertimbangkan calon pengguna
    • Pengalaman pengguna itu penting, dan keterbacaan dokumentasi juga merupakan bagian dari UX
  • Merekomendasikan sumber bagus lainnya: <a href="https://why-openbsd.rocks/" rel="nofollow">https://why-openbsd.rocks/</a>;