10 คะแนน โดย GN⁺ 2025-02-23 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

โครงการ OpenBSD พัฒนาและดูแลรักษาซอฟต์แวร์และแนวคิดที่หลากหลาย ต่อไปนี้คือการสรุปโดยเรียงตามลำดับเวลาการนำมาใช้โดยคร่าว ๆ

แนวคิด (Concepts)

  • IPSec(4): OpenBSD เป็นระบบปฏิบัติการแบบ Free รายแรกที่ให้สแตก IPSec นำมาใช้เมื่อ 20 กุมภาพันธ์ 1997
  • INET6(4): ผสานรวม IPv6 อย่างสมบูรณ์ใน OpenBSD 2.7 เริ่มพัฒนาเมื่อ 6 มกราคม 1999 และใน hackathon ครั้งแรกของปีเดียวกันเมื่อ 6 มิถุนายน ก็ทำงานได้เกือบสมบูรณ์แล้ว
  • การแยกสิทธิ์ (Privilege Separation): ถูกนำไปใช้งานครั้งแรกใน OpenSSH เมื่อเดือนมีนาคม 2002 หลังจากนั้นจึงถูกนำไปใช้กับโปรแกรมหลากหลาย เช่น bgpd(8), dhclient(8), smtpd(8), tmux(1)
  • การเพิกถอนสิทธิ์ (Privilege Revocation): ใช้วิธีลดสิทธิ์ลงโดยยังคงรักษาทรัพยากรเฉพาะไว้ เช่น ping(8), traceroute(8)
  • ตัวป้องกันสแตก (Stack Protector): อิงจาก "propolice" ที่พัฒนามาตั้งแต่ปี 2001 และเปิดใช้งานเป็นค่าเริ่มต้นใน OpenBSD 3.3
  • W^X (Write XOR Execute): ถูกนำมาใช้ครั้งแรกใน OpenBSD 3.3 และถูกบังคับใช้อย่างเข้มงวดโดยค่าเริ่มต้นตั้งแต่ OpenBSD 6.0
  • การปกป้อง GOT และ PLT: ใน OpenBSD 3.3 มีการปรับปรุง ld.so ให้ปกป้อง GOT (Global Offset Table) และ PLT (Procedure Linkage Table)
  • ASLR (Address Space Layout Randomization): OpenBSD 3.4 เป็นรุ่นแรกที่เปิดใช้งานเป็นค่าเริ่มต้น
  • การวิเคราะห์และตรวจสอบ gcc-local(1): นำมาใช้ครั้งแรกใน OpenBSD 3.4
  • การเสริมความปลอดภัยให้ malloc(3): ใช้การสุ่มและการหน่วงเวลาการคืนหน่วยความจำขณะจัดสรร และถูกเขียนใหม่ใน OpenBSD 4.4
  • ไฟล์ปฏิบัติการแบบไม่ขึ้นกับตำแหน่ง (PIE): OpenBSD 5.3 เป็นรุ่นแรกที่เปิดใช้งานเป็นค่าเริ่มต้น บนแพลตฟอร์มฮาร์ดแวร์ 7 แบบ
  • การกำหนดค่าเริ่มต้นหน่วยความจำด้วยข้อมูลสุ่ม: OpenBSD 5.3 เพิ่มเซกชัน ELF .openbsd.randomdata
  • ตัวป้องกันสแตกแยกตาม shared object: OpenBSD 5.3 ใช้คุกกี้ตัวป้องกันสแตกแยกสำหรับแต่ละ shared object
  • Static-PIE: รองรับไบนารีสแตติกแบบไม่ขึ้นกับตำแหน่งใน /bin, /sbin และ RAM disk นำมาใช้ใน OpenBSD 5.7
  • การบรรเทาการโจมตี SROP: เปิดใช้งานเป็นค่าเริ่มต้นใน OpenBSD 6.0
  • การสุ่มลำดับการโหลดไลบรารี: เปิดใช้งานเป็นค่าเริ่มต้นใน OpenBSD 6.0 และ 6.2
  • การปรับปรุง lazy-binding เพื่อความปลอดภัยแบบ W^X ในสภาพแวดล้อมหลายเธรด: นำมาใช้ใน OpenBSD 5.9
  • การเสริมความแข็งแกร่งของเลย์เอาต์หน่วยความจำ: ใช้กับทุกโปรแกรมและไลบรารีใน OpenBSD 6.1
  • การใช้แนวทาง fork+exec: เสริมการปกป้อง address space ในโปรแกรมที่แยกสิทธิ์
  • trapsleds: ใช้เทคนิคแปลง NOP เพื่อบรรเทาการโจมตี ROP (Return-Oriented Programming)
  • รีลิงก์เคอร์เนลตอนบูต: สุ่มเลย์เอาต์ภายในเคอร์เนลใหม่ทุกครั้งที่บูต
  • การเสริมความปลอดภัยให้ลำดับคำสั่งของ i386/amd64: เป็นการปรับปรุงเพื่อทำให้การโจมตี ROP ทำได้ยากขึ้น
  • การเพิ่มออปชัน MAP_STACK: ป้องกันการนำหน่วยความจำที่ไม่ใช่สแตกไปใช้ในทางที่ผิดในการโจมตี ROP
  • RETGUARD: กลไกการป้องกันที่แข็งแกร่งกว่าตัวป้องกันสแตกแบบเดิม เริ่มใช้ตั้งแต่ OpenBSD 6.4
  • การเพิ่มออปชัน MAP_CONCEAL: ป้องกันไม่ให้ข้อมูลอ่อนไหวรั่วไหลใน core dump
  • การบล็อก system call จากหน่วยความจำ PROT_WRITE: นำมาใช้ใน OpenBSD 6.5
  • การตรึงตำแหน่ง system call: จำกัดให้สามารถเรียก system call ได้จากตำแหน่งที่กำหนดเท่านั้น
  • การเสริมการปกป้อง address space: จำกัดการเปลี่ยนแปลงหน่วยความจำผ่าน mmap(2), mprotect(2) เป็นต้น
  • รีลิงก์ sshd ตอนบูต: นำมาใช้ใน OpenBSD 7.2
  • รองรับโค้ดแบบไม่อ่านได้ (xonly): จำกัดไม่ให้อ่านหน่วยความจำที่รันได้
  • การปกป้อง system call ด้วย pinsyscalls(2): ปกป้องโดยลงทะเบียนตำแหน่ง system call ไว้ล่วงหน้า
  • การปกป้องเป้าหมายของ indirect branch (BTI, IBT): ใช้ฟีเจอร์ความปลอดภัยที่อิงฮาร์ดแวร์
  • เพิ่มฟีเจอร์ -fret-clean: ป้องกันไม่ให้ค่าที่คืนกลับค้างอยู่บนสแตกและช่วยปิดกั้นการรั่วไหลของข้อมูล ปัจจุบันใช้กับ amd64 เท่านั้น

ฟังก์ชัน (Functions)

  • issetugid(2): ฟังก์ชันที่นำมาใช้ใน OpenBSD 2.0 เพื่อตรวจสอบว่าโปรเซสมีการตั้งค่า user ID หรือ group ID ระหว่างการทำงานหรือไม่
  • arc4random(3): ฟังก์ชันสร้างเลขสุ่ม เพิ่มเข้ามาใน OpenBSD 2.1
  • bcrypt(3): ฟังก์ชันสำหรับแฮชรหัสผ่าน เปิดตัวครั้งแรกใน OpenBSD 2.1
  • strlcpy(3), strlcat(3): ฟังก์ชันสำหรับคัดลอกและต่อสตริงอย่างปลอดภัย นำมาใช้ใน OpenBSD 2.4
  • strtonum(3): ฟังก์ชันแปลงสตริงเป็นตัวเลขพร้อมป้องกันข้อผิดพลาด นำมาใช้ใน OpenBSD 3.6
  • imsg: API สำหรับส่งข้อความ ใช้ในเดมอนหลากหลายตัว และถูกเพิ่มเข้า libutil ใน OpenBSD 4.8
  • timingsafe_bcmp(3): ฟังก์ชันเปรียบเทียบไบต์ที่รับประกันเวลาในการทำงานคงที่ นำมาใช้ใน OpenBSD 4.9
  • explicit_bzero(3): ฟังก์ชันสำหรับลบข้อมูลในหน่วยความจำอย่างปลอดภัย เพิ่มเข้ามาใน OpenBSD 5.5
  • ohash: อิมพลีเมนเทชัน hash table รวมอยู่ใน libutil ใน OpenBSD 5.6
  • asr: ตัวแปลชื่อ DNS ทางเลือก เปิดใช้งานใน OpenBSD 5.6
  • reallocarray(3): ฟังก์ชันที่ป้องกัน overflow ระหว่างการจัดสรรหน่วยความจำใหม่ เพิ่มเข้ามาใน OpenBSD 5.6
  • getentropy(2): ฟังก์ชันที่ให้เลขสุ่มที่ปลอดภัยเชิงความมั่นคง นำมาใช้ใน OpenBSD 5.6
  • sendsyslog(2): ฟังก์ชันสำหรับส่งข้อความ syslog จากเคอร์เนล เพิ่มเข้ามาใน OpenBSD 5.6
  • timingsafe_memcmp(3): ฟังก์ชันเปรียบเทียบหน่วยความจำที่รับประกันเวลาในการทำงานคงที่ นำมาใช้ใน OpenBSD 5.6
  • pledge(2): ฟังก์ชันที่เพิ่มความปลอดภัยด้วยการจำกัด system call เพิ่มเข้ามาใน OpenBSD 5.9
  • getpwnam_shadow(3), getpwuid_shadow(3): ฟังก์ชันสำหรับค้นหาข้อมูลรหัสผ่านแบบ shadow เพื่อเสริมความปลอดภัย นำมาใช้ใน OpenBSD 5.9
  • recallocarray(3): ฟังก์ชันที่เติมข้อมูลเดิมด้วย 0 ระหว่างปรับขนาดหน่วยความจำ เพิ่มเข้ามาใน OpenBSD 6.1
  • freezero(3): ฟังก์ชันที่เติม 0 ให้หน่วยความจำก่อนปล่อยคืน นำมาใช้ใน OpenBSD 6.2
  • unveil(2): ฟังก์ชันที่จำกัดการเข้าถึงระบบไฟล์ เพิ่มเข้ามาใน OpenBSD 6.4
  • malloc_conceal(3), calloc_conceal(3): ให้ความสามารถในการปกป้องข้อมูลอ่อนไหวระหว่างจัดสรรหน่วยความจำ เพิ่มเข้ามาใน OpenBSD 6.5
  • ober: API ของ ASN.1 Basic Encoding Rules ย้ายไปยัง libutil ใน OpenBSD 6.6

โปรแกรมและซับซิสเต็ม (Programs and Subsystems)

  • ยูทิลิตีที่เกี่ยวข้องกับ YP: ypbind(8), ypset(8), ypcat(1), ypmatch(1), ypwhich(1), เพิ่มการรองรับใน libc แจกจ่ายครั้งแรกใน NetBSD 0.9
  • ypserv(8): เซิร์ฟเวอร์ YP ที่นำมาใช้ใน OpenBSD 2.0
  • mopd(8): เดมอนที่รองรับ MOP (Maintenance Operations Protocol) เพิ่มเข้ามาใน OpenBSD 2.0
  • AnonCVS: ระบบที่ออกแบบมาเพื่อให้เข้าถึงคลังซอร์สโค้ดของ OpenBSD แบบไม่ระบุตัวตน
  • aucat(1): ยูทิลิตีที่เกี่ยวข้องกับ audio server เพิ่มเข้ามาใน OpenBSD 2.1
  • OpenSSH: เครื่องมือสื่อสารปลอดภัยบนพื้นฐาน SSH นำมาใช้ใน OpenBSD 2.6
  • mg(1): โปรแกรมแก้ไขข้อความแบบเบา รวมอยู่ใน OpenBSD 2.7
  • m4(1): macro processor ที่ได้รับการขยายและบำรุงรักษาต่อหลัง OpenBSD 2.7
  • pf(4), pfctl(8), pflogd(8), authpf(8), ftp-proxy(8): ไฟร์วอลล์สำหรับกรองแพ็กเก็ต เพิ่มเข้ามาใน OpenBSD 3.0
  • systrace(4), systrace(1): เครื่องมือตรวจสอบ system call เพิ่มเข้ามาใน OpenBSD 3.2 แต่หลัง OpenBSD 5.9 ก็ถูกแทนที่ด้วย pledge(2)
  • spamd(8): เดมอนสำหรับกรองสแปม นำมาใช้ใน OpenBSD 3.3
  • dc(1), bc(1): ยูทิลิตีเครื่องคิดเลข เพิ่มเข้ามาใน OpenBSD 3.5
  • sensorsd(8): เครื่องมือตรวจสอบ hardware sensor รวมอยู่ใน OpenBSD 3.5
  • pkg_add(1): ยูทิลิตีจัดการแพ็กเกจ นำมาใช้ใน OpenBSD 3.5
  • carp(4): โปรโตคอล network interface สำหรับ failover เพิ่มเข้ามาใน OpenBSD 3.5
  • OpenBGPD: เดมอน routing แบบ BGP นำมาใช้ใน OpenBSD 3.5
  • dhclient(8), dhcpd(8): ไคลเอนต์และเซิร์ฟเวอร์ DHCP เพิ่มเข้ามาในช่วง OpenBSD 3.5~3.6
  • hotplugd(8): เดมอนจัดการเหตุการณ์ hotplug เพิ่มเข้ามาใน OpenBSD 3.6
  • OpenNTPD: เดมอน NTP (Network Time Protocol) เพิ่มเข้ามาใน OpenBSD 3.6
  • dpb(1): ระบบ build package แบบกระจาย นำมาใช้ใน OpenBSD 3.6
  • ospfd(8), ospfctl(8), ospf6d(8): เดมอน routing OSPF (Open Shortest Path First) นำมาใช้ในช่วง OpenBSD 3.7~4.2
  • ifstated(8): เครื่องมือจัดการสถานะอินเทอร์เฟซ เพิ่มเข้ามาใน OpenBSD 3.8
  • bioctl(8): เครื่องมือจัดการ block device และ RAID รวมอยู่ใน OpenBSD 3.8
  • hostapd(8): เครื่องมือจัดการ wireless access point นำมาใช้ใน OpenBSD 3.8
  • watchdogd(8): watchdog timer ที่ช่วยรับประกันเสถียรภาพของระบบ เพิ่มเข้ามาใน OpenBSD 3.8
  • sdiff(1): ยูทิลิตีเปรียบเทียบไฟล์ นำมาใช้ใน OpenBSD 3.9
  • dvmrpd(8), dvmrpctl(8): รองรับ DVMRP (Distance Vector Multicast Routing Protocol) เพิ่มเข้ามาใน OpenBSD 4.0
  • ripd(8), ripctl(8): รองรับ RIP (Routing Information Protocol) รวมอยู่ใน OpenBSD 4.1
  • pkg-config(1): เครื่องมือกำหนดค่าแพ็กเกจ นำมาใช้ใน OpenBSD 4.1
  • relayd(8), relayctl(8): เครื่องมือรีเลย์ทราฟฟิกเครือข่าย เพิ่มเข้ามาใน OpenBSD 4.1
  • cwm(1): window manager แบบเบา เพิ่มเข้ามาใน OpenBSD 4.2
  • libtool(1): เครื่องมืออัตโนมัติสำหรับสร้างไลบรารี รวมอยู่ใน OpenBSD 4.3
  • snmpd(8): เดมอน SNMP (Simple Network Management Protocol) เพิ่มเข้ามาใน OpenBSD 4.3
  • sysmerge(8): เครื่องมือรวมไฟล์คอนฟิกของระบบ เพิ่มเข้ามาใน OpenBSD 4.4
  • ypldap(8): เซิร์ฟเวอร์ YP ที่อิง LDAP รวมอยู่ใน OpenBSD 4.4
  • OpenSMTPD: เซิร์ฟเวอร์ SMTP (Simple Mail Transfer Protocol) นำมาใช้ใน OpenBSD 4.6
  • tmux(1): terminal multiplexer รวมอยู่ใน OpenBSD 4.6
  • ldpd(8), ldpctl(8): รองรับ Label Distribution Protocol (LDP) เพิ่มเข้ามาใน OpenBSD 4.6
  • mandoc(1): เครื่องมือจัดทำเอกสาร manual page นำมาใช้ใน OpenBSD 4.8
  • ldapd(8), ldapctl(8): เซิร์ฟเวอร์ LDAP (Lightweight Directory Access Protocol) เพิ่มเข้ามาใน OpenBSD 4.8
  • OpenIKED: อิมพลีเมนเทชันของโปรโตคอล IKE (Internet Key Exchange) นำมาใช้ใน OpenBSD 4.8
  • iscsid(8), iscsictl(8): เดมอน iSCSI รวมอยู่ใน OpenBSD 4.9
  • rc.d(8), rc.subr(8): การจัดการสคริปต์เริ่มต้นระบบ เพิ่มเข้ามาใน OpenBSD 4.9
  • npppd(8), npppctl(8): เดมอน PPP (Point-to-Point Protocol) เพิ่มเข้ามาใน OpenBSD 5.3
  • ldomd(8), ldomctl(8): เครื่องมือจัดการ LDOM (Logical Domains) รวมอยู่ใน OpenBSD 5.3
  • sndiod(8): audio server นำมาใช้ใน OpenBSD 5.3
  • cu(1): ยูทิลิตีสื่อสารผ่าน serial เพิ่มเข้ามาใน OpenBSD 5.4
  • slowcgi(8): เครื่องมือสำหรับจัดการคำขอ HTTP ที่ช้า รวมอยู่ใน OpenBSD 5.4
  • signify(1): เครื่องมือเซ็นและตรวจสอบไฟล์ เพิ่มเข้ามาใน OpenBSD 5.5
  • LibreSSL: โครงการที่ fork มาจาก OpenSSL เพื่อเสริมความปลอดภัย เปิดตัวครั้งแรกใน OpenBSD 5.6
  • httpd(8): เว็บเซิร์ฟเวอร์แบบเบา รวมอยู่ใน OpenBSD 5.6
  • rcctl(8): ยูทิลิตีจัดการบริการ rc.d เพิ่มเข้ามาใน OpenBSD 5.7
  • doas(1): ยูทิลิตียกระดับสิทธิ์แบบเรียบง่าย นำมาใช้ใน OpenBSD 5.8
  • radiusd(8): อิมพลีเมนเทชันเซิร์ฟเวอร์ RADIUS เพิ่มเข้ามาใน OpenBSD 5.8
  • eigrpd(8), eigrpctl(8): รองรับ EIGRP (Enhanced Interior Gateway Routing Protocol) รวมอยู่ใน OpenBSD 5.9
  • vmm(4), vmd(8), vmctl(8): ระบบจัดการ virtual machine เพิ่มเข้ามาใน OpenBSD 5.9
  • acme-client(1): ไคลเอนต์ออกใบรับรองโดยใช้โปรโตคอล ACME นำมาใช้ใน OpenBSD 6.1
  • syspatch(8): เครื่องมือจัดการ security patch เพิ่มเข้ามาใน OpenBSD 6.1
  • xenodm(1): XDM เวอร์ชัน fork ที่ถูกปรับให้สะอาดขึ้น รวมอยู่ใน OpenBSD 6.1
  • unwind(8): local DNS resolver นำมาใช้ใน OpenBSD 6.5
  • sysupgrade(8): เครื่องมืออัปเกรดระบบอัตโนมัติ เพิ่มเข้ามาใน OpenBSD 6.6
  • rpki-client(8): ไคลเอนต์ RPKI (Route Origin Validation) นำมาใช้ใน OpenBSD 6.7
  • resolvd(8): เครื่องมือจัดการการตั้งค่า DNS ในสภาพแวดล้อมเครือข่ายแบบไดนามิก เพิ่มเข้ามาใน OpenBSD 6.9
  • dhcpleased(8): ไคลเอนต์ DHCP ที่ปรับปรุงแล้ว รวมอยู่ใน OpenBSD 6.9

โครงการที่นักพัฒนา OpenBSD ดูแลรักษานอกเหนือจาก OpenBSD

  • sudo: เครื่องมือที่ช่วยให้ผู้ดูแลระบบมอบสิทธิ์ให้ผู้ใช้บางรายรันคำสั่งที่จำกัดได้ รวมอยู่ใน OpenBSD 2.7
  • femail: เครื่องมือส่งเมลง่าย ๆ เริ่มต้นในปี 2005 และมี OpenBSD port ให้ใช้เมื่อ 22 กันยายนปีเดียวกัน
  • midish: MIDI sequencer และเครื่องมือประมวลผล เริ่มต้นในปี 2003 และมี OpenBSD port ให้ใช้เมื่อ 4 พฤศจิกายน 2005
  • fdm: เครื่องมือกรองและจัดระเบียบเมล เริ่มต้นในปี 2006 และมี OpenBSD port ให้ใช้เมื่อ 18 มกราคม 2007
  • toad: เครื่องมือปรับใช้ซอฟต์แวร์อัตโนมัติสำหรับ OpenBSD เริ่มต้นในปี 2013 และมี OpenBSD port ให้ใช้เมื่อ 8 ตุลาคมปีเดียวกัน
  • docbook2mdoc: เครื่องมือแปลงเอกสาร DocBook เป็นรูปแบบ manual page แบบ mdoc เริ่มต้นในปี 2014 และมี OpenBSD port ให้ใช้เมื่อ 3 เมษายนปีเดียวกัน
  • portroach: เครื่องมือติดตามอัปเดตพอร์ตที่พัฒนาจากการ fork ของ portscout จาก FreeBSD เริ่มต้นในปี 2014 และมี OpenBSD port ให้ใช้เมื่อ 5 กันยายนปีเดียวกัน
  • cvs2gitdump: เครื่องมือแปลงคลัง CVS เป็น Git เริ่มต้นในปี 2012 และมี OpenBSD port ให้ใช้เมื่อ 1 สิงหาคม 2016
  • Game of Trees: ระบบควบคุมเวอร์ชันที่อาจใช้แทน Git ได้ เริ่มต้นในปี 2017 และมี OpenBSD port ให้ใช้เมื่อ 9 สิงหาคม 2019

1 ความคิดเห็น

 
GN⁺ 2025-02-23
ความคิดเห็นจาก Hacker News
  • มูลนิธิ OpenBSD ระดมทุนได้ราว 380,000 ดอลลาร์

    • เมื่อพิจารณาว่าเป็นผู้สร้าง OpenSSH และบริษัทในกลุ่ม Fortune 500 ต่างก็ใช้งานกันทั้งหมด จึงมองว่าควรระดมทุนให้ได้ปีละ 1-2 ล้านดอลลาร์
    • ถึงเวลาที่บริษัทเหล่านี้ควรมีส่วนร่วมตอบแทนได้แล้ว
    • ผู้ผลิตฮาร์ดแวร์ก็ควรเปิดเผยซอร์สด้วย และมีการเอ่ยถึง Nvidia โดยตรง
  • John Ioannidis เสียชีวิตไปเมื่อไม่กี่สัปดาห์ก่อน และแทบไม่มีใครสังเกตเห็น

    • เขายังเป็นที่รู้จักในฐานะผู้วางรากฐานของ Mobile IP (ที่ทำให้ IP ทำงานบนโทรศัพท์มือถือได้)
  • นอกเหนือจากดีไซน์ privdrop/privsep ของ OpenBSD และการนำ pledge(2)/unveil(2) มาใช้ งานด้านการลดความเสี่ยงอย่าง mimmutable ในช่วงหลังก็แทบไม่ได้รับความสนใจ

    • ใน OpenBSD พื้นที่แอดเดรสแบบสแตติกของโปรแกรมส่วนใหญ่ถูกทำให้เป็น immutable โดยอัตโนมัติแล้ว
    • บนเครื่อง Intel/AMD และ ARM สมัยใหม่ มีการเปิดใช้ execute-only memory และ BTI/IBT เป็นค่าเริ่มต้น
    • รวมถึงงานพัฒนาพอร์ตเพื่อเตรียมความพร้อมให้ระบบนิเวศซอฟต์แวร์ขนาดใหญ่ขึ้นด้วย
  • มีการอิมพลีเมนต์หน่วยความจำข้อมูลแบบสุ่มใน OpenBSD 5.3 โดย Matthew Dempsky

    • หนึ่งในกรณีการใช้งานของฟีเจอร์นี้คือ RETGUARD
    • RETGUARD มาแทน stack protector และใช้คุกกี้แบบสุ่มรายฟังก์ชันเพื่อตรวจสอบ return address บนสแตกอย่างสม่ำเสมอ
  • AmigaOS ใช้ position-independent executable (PIE) และ ASLR มาตั้งแต่ปี 1985

    • Amiga ไม่มี MMU และมีหน่วยความจำน้อย ดังนั้นทุกอย่างที่โหลดเข้ามาจึงต้องถูกวางไว้ใน RAM ที่ใช้งานได้
    • แต่ละเซกชันสามารถถูกวางไว้คนละตำแหน่งได้ และคอมไพเลอร์ก็สร้างหลายเซกชันเพื่อรองรับสิ่งนี้
  • แสดงความประหลาดใจที่ pledge/unveil ไม่ได้ถูกนำเสนอให้เด่นกว่านี้

  • สงสัยว่า OpenBSD ได้อิมพลีเมนต์ ISO C11 _Thread_local แล้วหรือยัง

    • นี่เป็นความไม่สะดวกใหญ่ที่สุดในการพอร์ตซอฟต์แวร์มายัง OpenBSD
    • OpenBSD เป็นระบบปฏิบัติการหลักเพียงตัวเดียวที่ไม่รองรับ native thread-local storage
  • ตั้งคำถามว่าทำไมหน้าเว็บ OpenBSD ถึงใช้เพียง HTML พื้นฐานโดยไม่มีการตกแต่งหรือใช้ CSS

    • typography มีความสำคัญต่อการอ่าน อย่างน้อยก็ควรมี line height ที่เหมาะสมและจำกัดความยาวบรรทัดไว้ราว 60 ตัวอักษร
    • สงสัยว่า OpenBSD ไม่ได้ให้ความสำคัญกับผู้ใช้งานที่อาจสนใจอย่างจริงจังหรือไม่
    • ประสบการณ์ผู้ใช้มีความสำคัญ และความอ่านง่ายของเอกสารก็เป็นส่วนหนึ่งของ UX
  • แนะนำแหล่งข้อมูลดี ๆ อีกแห่งคือ <a href="https://why-openbsd.rocks/" rel="nofollow">https://why-openbsd.rocks/</a>;