Annotation of www/innovations.html, Revision 1.75
1.1 schwarze 1: <!DOCTYPE html>
1.34 schwarze 2: <html lang="en">
1.1 schwarze 3: <head>
4: <meta charset="UTF-8"/>
1.33 tj 5: <title>OpenBSD: Innovations</title>
1.31 deraadt 6: <meta name="viewport" content="width=device-width, initial-scale=1">
7: <link rel="stylesheet" type="text/css" href="openbsd.css">
1.35 tb 8: <link rel="canonical" href="https://www.openbsd.org/innovations.html">
1.1 schwarze 9: </head>
10:
1.75 ! schwarze 11: <body>
1.31 deraadt 12:
1.75 ! schwarze 13: <h2 id="OpenBSD">
! 14: <a href="index.html"><i>Open</i><b>BSD</b></a> Innovations
1.32 tj 15: </h2>
1.31 deraadt 16: <hr>
1.32 tj 17: <p>
1.59 job 18: This is a list of software and ideas developed or maintained by the OpenBSD
19: project, sorted in order of approximate introduction. Some of them are
20: explained in detail in our <a href="events.html">research papers</a>.
21: </p>
1.32 tj 22: <hr>
1.1 schwarze 23:
1.59 job 24: <h3>Concepts</h3>
1.1 schwarze 25:
26: <ul>
1.59 job 27: <li>
28: <a href="https://man.openbsd.org/ipsec.4">ipsec(4)</a>:
29: Started by John Ioannidis, Angelos D. Keromytis, Niels Provos, and
30: Niklas Hallqvist, imported February 20, 1997. OpenBSD was the first
31: free operating system to provide an IPSec stack.
32: </li>
33: <li>
34: <a href="https://man.openbsd.org/inet6.4">inet6(4)</a>:
35: First complete integration and adoption of IPv6 led by
36: "Itojun" (Dr. Junichiro Hagino) [WIDE/KAME], Craig Metz [NRL], and
37: Angelos D. Keromytis starting Jan 6, 1999.
38: Almost fully operational Jun 6, 1999 during the
39: <a href="hackathons.html">first OpenBSD hackathon</a>.
40: OpenBSD 2.7.
41: </li>
42: <li>
43: <strong>Privilege separation</strong>:
44: First implemented by
45: <a href="http://www.citi.umich.edu/u/provos/ssh/privsep.html">Niels Provos</a>
46: and Markus Friedl in OpenSSH in March 2002, released with OpenBSD 3.2.
47: The concept is now used in many OpenBSD programs, for example
48: <a href="https://man.openbsd.org/bgpd.8">bgpd(8)</a>,
49: <a href="https://man.openbsd.org/dhclient.8">dhclient(8)</a>,
50: <a href="https://man.openbsd.org/dhcpd.8">dhcpd(8)</a>,
51: <a href="https://man.openbsd.org/dvmrpd.8">dvmrpd(8)</a>,
52: <a href="https://man.openbsd.org/eigrpd.8">eigrpd(8)</a>,
53: <a href="https://man.openbsd.org/file.1">file(1)</a>,
54: <a href="https://man.openbsd.org/httpd.8">httpd(8)</a>,
55: <a href="https://man.openbsd.org/iked.8">iked(8)</a>,
56: <a href="https://man.openbsd.org/ldapd.8">ldapd(8)</a>,
57: <a href="https://man.openbsd.org/ldpd.8">ldpd(8)</a>,
58: <a href="https://man.openbsd.org/mountd.8">mountd(8)</a>,
59: <a href="https://man.openbsd.org/npppd.8">npppd(8)</a>,
60: <a href="https://man.openbsd.org/ntpd.8">ntpd(8)</a>,
61: <a href="https://man.openbsd.org/ospfd.8">ospfd(8)</a>,
62: <a href="https://man.openbsd.org/ospf6d.8">ospf6d(8)</a>,
63: <a href="https://man.openbsd.org/pflogd.8">pflogd(8)</a>,
64: <a href="https://man.openbsd.org/radiusd.8">radiusd(8)</a>,
1.67 schwarze 65: <a href="https://man.openbsd.org/relayd.8">relayd(8)</a>,
1.59 job 66: <a href="https://man.openbsd.org/ripd.8">ripd(8)</a>,
67: <a href="https://man.openbsd.org/script.1">script(1)</a>,
68: <a href="https://man.openbsd.org/smtpd.8">smtpd(8)</a>,
69: <a href="https://man.openbsd.org/syslogd.8">syslogd(8)</a>,
70: <a href="https://man.openbsd.org/tcpdump.8">tcpdump(8)</a>,
71: <a href="https://man.openbsd.org/tmux.1">tmux(1)</a>,
72: <a href="https://man.openbsd.org/xconsole.1">xconsole(1)</a>,
73: <a href="https://man.openbsd.org/xdm.1">xdm(1)</a>,
74: <a href="https://man.openbsd.org/Xserver.1">Xserver(1)</a>,
75: <a href="https://man.openbsd.org/ypldap.8">ypldap(8)</a>,
76: <a href="https://man.openbsd.org/pkg_add.1">pkg_add(1)</a>,
77: etc.
78: </li>
79: <li>
80: <strong>Privilege revocation</strong>:
81: Related to the work on privilege separation, some programs were refactored
82: to drop privileges while holding onto a tricky resource such as a raw socket,
83: reserved port, or modification-locked bpf(4) descriptor,
84: for example
85: <a href="https://man.openbsd.org/ping.8">ping(8)</a>,
86: <a href="https://man.openbsd.org/traceroute.8">traceroute(8)</a>,
87: etc.
88: </li>
89: <li>
90: <strong>Stack protector</strong>:
91: Developed since 2001 as "propolice" by Hiroaki Etoh. Integrated, and
92: implemented for additional hardware platforms, by Miod Vallat and Theo
93: de Raadt. OpenBSD 3.3 was the first operating system to enable it
94: systemwide by default.
95: </li>
96: <li>
97: <strong>W^X</strong>:
98: First used for sparc, sparc64, alpha, and hppa in OpenBSD 3.3.
99: Strictly enforced by default since OpenBSD 6.0: a program can only
100: violate it if the executable is marked with <code>PT_OPENBSD_WXNEEDED</code>
101: and it is located on a filesystem mounted with the <code>wxallowed</code>
102: <a href="https://man.openbsd.org/mount.8">mount(8)</a> option.
103: </li>
104: <li>
105: <strong>GOT and PLT protection</strong> by ld.so:
106: first done as part of the W^X work in OpenBSD 3.3, by Dale Rahn and
107: Theo de Raadt. The GOT and PLT regions are read-only outside of ld.so
108: itself. Extended to the .init/.fini sections (constructors and
109: destructors) in OpenBSD 3.4.
110: </li>
111: <li>
112: <strong>ASLR</strong>:
113: OpenBSD 3.4 was the first widely used operating system to
114: provide it by default.
115: </li>
116: <li>
117: <a href="https://man.openbsd.org/gcc-local.1">gcc-local(1)</a>
118: __attribute__((__bounded__)) static analysis annotation
119: and checking mechanism:
120: Started by Anil Madhavapeddy on June 26, 2003
121: and ported to GCC 4 by Nicholas Marriott.
122: First released with OpenBSD 3.4.
123: </li>
124: <li>
125: <a href="https://man.openbsd.org/malloc.3">malloc(3)</a>
126: randomization implemented by Thierry Deval. Guard pages and randomized (delayed) free added by Ted Unangst.
127: Reimplemented by <a href="papers/eurobsdcon2009/otto-malloc.pdf">Otto Moerbeek</a>
128: for OpenBSD 4.4.
129: </li>
130: <li>
1.65 kurt 131: <strong>Position-independent executables (PIE)</strong>:
1.59 job 132: OpenBSD 5.3 was the first widely used operating system to enable it
133: globally by default, on seven hardware platforms.
1.65 kurt 134: Implemented in November 2008 by
135: <a href="https://www.openbsd.org/papers/nycbsdcon08-pie/">Kurt Miller</a>
136: and enabled by default by
137: <a href="https://www.openbsd.org/papers/asiabsdcon2015-pie-slides.pdf">Pascal Stumpf</a>
138: in August 2012.
1.59 job 139: </li>
140: <li>
141: <strong>Random-data memory</strong>:
1.68 deraadt 142: the ability to specify that a variable should be initialized
143: at load time with random byte values (placed into a new ELF
144: <b>.openbsd.randomdata</b> section) was implemented in
145: OpenBSD 5.3 by Matthew Dempsky.
1.59 job 146: </li>
147: <li>
148: <strong>Stack protector per shared object</strong>:
149: using the random-data memory feature, each shared object was given its
150: own stack protector cookie in OpenBSD 5.3 by Matthew Dempsky.
151: </li>
152: <li>
153: <strong>Static-PIE</strong>:
154: Position-independent static binaries for /bin, /sbin and ramdisks.
1.65 kurt 155: Implemented for OpenBSD 5.7 by Kurt Miller and Mark Kettenis.
1.59 job 156: </li>
157: <li>
158: <strong>SROP</strong>
159: (<a href="https://man.openbsd.org/sigreturn.2">sigreturn(2)</a>
1.71 deraadt 160: oriented programming) mitigation: attacks researched by
1.59 job 161: <a href="http://www.cs.vu.nl/~herbertb/papers/srop_sp14.pdf">Eric Bosman</a>
1.71 deraadt 162: and Herbert Bos in 2014, solution implemented by Theo de Raadt in May 2016,
1.59 job 163: enabled by default since OpenBSD 6.0.
164: </li>
165: <li>
166: <strong>Library order randomization</strong>:
167: In <a href="https://man.openbsd.org/rc.8">rc(8)</a>, re-link
168: <code>libc.so</code>, <code>libcrypto</code>, and <code>ld.so</code>
169: on startup, placing the objects in a random order.
170: Theo de Raadt and Robert Peichaer, May 2016,
171: enabled by default since OpenBSD 6.0 and 6.2.
172: </li>
173: <li>
174: Kernel-assisted lazy-binding for W^X safety in multi-threaded programs.
175: A new syscall <a href="https://man.openbsd.org/kbind.2">kbind(2)</a>
176: permits lazy-binding to be W^X safe in multi-threaded programs.
177: Implemented for OpenBSD 5.9 by Philip Guenther in July 2015.
178: </li>
179: <li>
180: Process layouts in memory tightened to remove execute permission from
181: all segmented, non-instruction data and to remove write permission from
182: data that is only modified during loading and relocation.
183: By combining the RELRO (Read-Only after Relocation) design from the
184: GNU project with the original ASLR work from OpenBSD 3.3 and
185: strict lazy-binding work from OpenBSD 5.9, this is applied to not
186: just a subset of programs and libraries but rather to all programs
187: and libraries.
188: Implemented for OpenBSD 6.1 by Philip Guenther in August 2016.
189: </li>
190: <li>
191: Use of <strong>fork+exec in privilege separated programs</strong>. The
192: strategy is to give each process a fresh & unique address space for
193: ASLR, stack protector -- as protection against address space discovery attacks.
194: Implemented first by
195: Damien Miller (<a href="https://man.openbsd.org/sshd.8">sshd(8)</a> 2004),
196: Claudio Jeker (<a href="https://man.openbsd.org/bgpd.8">bgpd(8)</a>, 2015),
197: Eric Faurot (<a href="https://man.openbsd.org/smtpd.8">smtpd(8)</a>, 2016),
198: Rafael Zalamena (various, 2016), and others.
199: </li>
200: <li>
201: <strong>trapsleds</strong>:
202: Reduction of incidental NOP instructions/sequences in the instruction
203: stream which could be useful potentially for ROP attack methods to
204: innaccurately target gadgets. These NOP sequences are converted into
205: trap sequences where possible. Todd Mortimer and Theo de Raadt, June
206: 2017.
207: </li>
208: <li>
209: <strong>Kernel relinking at boot</strong>:
210: the .o files of the kernel are relinked in random order from a
211: link-kit, before every reboot. This provides substantial interior
212: randomization in the kernel's text and data segments for layout and
213: relative branches/calls. Basically a unique address space for each
214: kernel boot, similar to the userland fork+exec model described above
215: but for the kernel. Theo de Raadt, June 2017.
216: </li>
1.61 deraadt 217: <li>
218: Rearranged i386/amd64 register allocator order in
219: <a href="https://man.openbsd.org/clang.1">clang(1)</a>
220: to reduce polymorphic RET instructions:
221: Todd Mortimer, November 20, 2017.
222: </li>
1.64 deraadt 223: <li>
1.72 mortimer 224: Reencoding of i386/amd64 instruction sequences to avoid
225: embedded polymorphic RET instructions. Enhancements to
226: <a href="https://man.openbsd.org/clang.1">clang(1)</a>
227: Todd Mortimer, April 28, 2018 and onwards.
228: </li>
229: <li>
1.66 schwarze 230: <b>MAP_STACK</b> addition to
1.64 deraadt 231: <a href="https://man.openbsd.org/mmap.2">mmap(2)</a>
232: allows opportunistic verification that the stack-register
233: points at stack memory, therefore catching pivots to non-stack
234: memory (sometimes used in ROP attacks).
235: Theo de Raadt, April 12, 2018.
236: </li>
1.68 deraadt 237: <li>
238: <b>RETGUARD</b> is a replacement for the <b>stack-protector</b>
1.70 deraadt 239: which uses a per-function random cookie (located in the read-only ELF
240: <b>.openbsd.randomdata</b> section) to consistency-check the
1.68 deraadt 241: return address on the stack. Implemented for AMD64 and ARM64
242: by Todd Mortimer in OpenBSD 6.4.
243: </li>
244:
1.17 mlarkin 245: </ul>
1.1 schwarze 246:
1.59 job 247: <h3>Functions</h3>
1.1 schwarze 248:
249: <ul>
1.59 job 250: <li>
1.62 tj 251: <a href="https://man.openbsd.org/issetugid.2">issetugid(2)</a>:
252: Theo de Raadt, August 25, 1996, OpenBSD 2.0
253: </li>
1.63 schwarze 254: <li>
1.59 job 255: <a href="https://man.openbsd.org/arc4random.3">arc4random(3)</a>:
256: David Mazieres, December 28, 1996, OpenBSD 2.1
257: </li>
258: <li>
259: <a href="https://man.openbsd.org/bcrypt.3">bcrypt(3)</a>:
260: Implemented by <a href="https://www.usenix.org/legacy/events/usenix99/provos/provos_html/node1.html">Niels Provos and David Mazieres</a>
261: Imported February 13, 1997 and first released with OpenBSD 2.1.
262: </li>
263: <li>
264: <a href="https://man.openbsd.org/strlcpy.3">strlcpy(3)</a>,
265: <a href="https://man.openbsd.org/strlcat.3">strlcat(3)</a>:
266: Todd Miller and Theo de Raadt, July 1, 1998, OpenBSD 2.4
267: </li>
268: <li>
269: <a href="https://man.openbsd.org/strtonum.3">strtonum(3)</a>:
270: Ted Unangst, Todd Miller, and Theo de Raadt, May 3, 2004, OpenBSD 3.6
271: </li>
272: <li>
273: <a href="https://man.openbsd.org/imsg_init.3">imsg</a>:
274: Message passing API, written by Henning Brauer.
275: In libutil since May 26, 2010, OpenBSD 4.8;
276: used by various daemons before that.
277: </li>
278: <li>
279: <a href="https://man.openbsd.org/timingsafe_bcmp.3">timingsafe_bcmp(3)</a>:
280: Damien Miller, July 13, 2010, OpenBSD 4.9
281: </li>
282: <li>
283: <a href="https://man.openbsd.org/explicit_bzero.3">explicit_bzero(3)</a>:
284: Ted Unangst and Matthew Dempsky, January 22, 2014, OpenBSD 5.5
285: </li>
286: <li>
287: <a href="https://man.openbsd.org/ohash_init.3">ohash</a>:
288: Written and maintained by Marc Espie.
289: In libutil since May 12, 2014, OpenBSD 5.6;
290: used by make(1) and m4(1) before that.
291: </li>
292: <li>
293: <a href="https://man.openbsd.org/asr_run.3">asr</a>:
294: Replacement resolver written and maintained by Eric Faurot.
295: Imported April 14, 2012; activated on March 26, 2014, OpenBSD 5.6.
296: </li>
297: <li>
298: <a href="https://man.openbsd.org/reallocarray.3">reallocarray(3)</a>:
299: Theo de Raadt and Ted Unangst, April 22, 2014, OpenBSD 5.6
300: </li>
301: <li>
302: <a href="https://man.openbsd.org/getentropy.2">getentropy(2)</a>:
303: Matthew Dempsky and Theo de Raadt, June 13, 2014, OpenBSD 5.6
304: </li>
305: <li>
306: <a href="https://man.openbsd.org/sendsyslog.2">sendsyslog(2)</a>:
307: Theo de Raadt, July 10, 2014, OpenBSD 5.6
308: </li>
309: <li>
310: <a href="https://man.openbsd.org/timingsafe_memcmp.3">timingsafe_memcmp(3)</a>:
311: Matthew Dempsky, July 13, 2014, OpenBSD 5.6
312: </li>
313: <li>
314: <a href="https://man.openbsd.org/pledge.2">pledge(2)</a>:
315: Theo de Raadt, July 19, 2015, OpenBSD 5.9
316: </li>
317: <li>
318: <a href="https://man.openbsd.org/getpwnam_shadow.3">getpwnam_shadow(3)</a>,
319: <a href="https://man.openbsd.org/getpwuid_shadow.3">getpwuid_shadow(3)</a>:
320: Ted Unangst and Theo de Raadt, November 18, 2015, OpenBSD 5.9
321: </li>
322: <li>
323: <a href="https://man.openbsd.org/recallocarray.3">recallocarray(3)</a>:
324: Otto Moerbeek, Joel Sing and Theo de Raadt, March 6, 2017, OpenBSD 6.1
325: </li>
326: <li>
327: <a href="https://man.openbsd.org/freezero.3">freezero(3)</a>:
328: Otto Moerbeek, April 10, 2017, OpenBSD 6.2
1.68 deraadt 329: </li>
330: <li>
331: <a href="https://man.openbsd.org/unveil.2">unveil(2)</a>:
332: Theo de Raadt and Bob Beck, July 13, 2018, OpenBSD 6.4
1.60 deraadt 333: </li>
1.16 deraadt 334: </ul>
335:
1.59 job 336:
337: <h3>Programs and subsystems</h3>
1.16 deraadt 338:
339: <ul>
1.59 job 340: <li>
341: <a href="https://man.openbsd.org/ypbind.8">ypbind(8)</a>,
342: <a href="https://man.openbsd.org/ypset.8">ypset(8)</a>,
343: <a href="https://man.openbsd.org/ypcat.1">ypcat(1)</a>,
344: <a href="https://man.openbsd.org/ypmatch.1">ypmatch(1)</a>,
345: <a href="https://man.openbsd.org/ypwhich.1">ypwhich(1)</a>,
346: and libc support: Started by Theo de Raadt.
347: Imported April 26, 1993 and first released with NetBSD 0.9.
348: </li>
349: <li>
350: <a href="https://man.openbsd.org/ypserv.8">ypserv(8)</a>:
351: Started by Mats O. Jansson in 1994.
352: Imported October 23, 1995 and first released with OpenBSD 2.0.
353: </li>
354: <li>
355: <a href="https://man.openbsd.org/mopd.8">mopd(8)</a>:
356: Started by Mats O. Jansson in 1993.
357: Imported September 21, 1996 and first released with OpenBSD 2.0.
358: </li>
359: <li>
360: <a href="anoncvs.html">AnonCVS</a>:
361: Designed and implemented by Chuck Cranor and Theo de Raadt in 1995
362: (<a href="papers/anoncvs-paper.pdf">paper</a>,
363: <a href="papers/anoncvs-slides.pdf">slides</a>)
364: </li>
365: <li>
366: <a href="https://man.openbsd.org/aucat.1">aucat(1)</a>:
367: Started by Kenneth Stailey.
368: Imported January 2, 1997 and first released with OpenBSD 2.1.
369: Now maintained by Alexandre Ratchov.
370: </li>
371: <li>
372: <a href="https://www.openssh.com/">OpenSSH</a>
373: including <a href="https://man.openbsd.org/ssh.1">ssh(1)</a>,
374: <a href="https://man.openbsd.org/scp.1">scp(1)</a>,
375: <a href="https://man.openbsd.org/sftp.1">sftp(1)</a>,
376: <a href="https://man.openbsd.org/ssh-add.1">ssh-add(1)</a>,
377: <a href="https://man.openbsd.org/ssh-agent.1">ssh-agent(1)</a>,
378: <a href="https://man.openbsd.org/ssh-keygen.1">ssh-keygen(1)</a>,
379: <a href="https://man.openbsd.org/sshd.8">sshd(8)</a>,
380: <a href="https://man.openbsd.org/sftp-server.8">sftp-server(8)</a>:
381: Started by Aaron Campbell, Bob Beck, Dug Song, Markus Friedl,
382: Niels Provos, and Theo de Raadt
383: as a fork of SSH 1.2.12 by Tatu Ylonen.
384: Imported September 26, 1999 and first released with OpenBSD 2.6.
385: Now maintained by Markus Friedl, Damien Miller, Darren Tucker, and
386: Theo de Raadt.
387: </li>
388: <li>
389: <a href="https://man.openbsd.org/mg.1">mg(1)</a>:
390: Started by Dave Conroy in November 1986.
391: Imported February 25, 2000 and first released with OpenBSD 2.7.
392: Now maintained by Mark Lumsden.
393: </li>
394: <li>
395: <a href="https://man.openbsd.org/m4.1">m4(1)</a>:
396: Originally implemented by Ozan Yigit and Richard A. O'Keefe for 4.3BSD-Reno.
397: Considerably extended and maintained by Marc Espie since 1999.
398: </li>
399: <li>
400: <a href="https://man.openbsd.org/pf.4">pf(4)</a>,
401: <a href="https://man.openbsd.org/pfctl.8">pfctl(8)</a>,
402: <a href="https://man.openbsd.org/pflogd.8">pflogd(8)</a>,
403: <a href="https://man.openbsd.org/authpf.8">authpf(8)</a>,
404: <a href="https://man.openbsd.org/ftp-proxy.8">ftp-proxy(8)</a>:
405: Started by Daniel Hartmeier as a replacement for the non-free ipf by
406: Darren Reed. Imported June 24, 2001 and first released with OpenBSD
407: 3.0. Now maintained by Henning Brauer.
408: </li>
409: <li>
410: <a href="https://man.openbsd.org/OpenBSD-5.9/systrace.4">systrace(4)</a>,
411: <a href="https://man.openbsd.org/OpenBSD-5.9/systrace.1">systrace(1)</a>:
412: Started by Niels Provos.
413: Imported June 4, 2002 and first released with OpenBSD 3.2.
414: Deleted after OpenBSD 5.9 because
415: <a href="https://man.openbsd.org/pledge.2">pledge(2)</a> is even better.
416: </li>
417: <li>
418: <a href="https://man.openbsd.org/spamd.8">spamd(8)</a>:
419: Written by Bob Beck. Imported December 21, 2002 and first released with
420: OpenBSD 3.3.
421: </li>
422: <li>
423: <a href="https://man.openbsd.org/dc.1">dc(1)</a>:
424: Written and maintained by Otto Moerbeek.
425: Imported September 19, 2003 and first released with OpenBSD 3.5.
426: </li>
427: <li>
428: <a href="https://man.openbsd.org/bc.1">bc(1)</a>:
429: Written and maintained by Otto Moerbeek.
430: Imported September 25, 2003 and first released with OpenBSD 3.5.
431: </li>
432: <li>
433: <a href="https://man.openbsd.org/sensorsd.8">sensorsd(8)</a>:
434: Started by Henning Brauer.
435: Imported September 24, 2003 and first released with OpenBSD 3.5.
436: Reworked by Constantine A. Murenin.
437: </li>
438: <li>
439: <a href="https://man.openbsd.org/pkg_add.1">pkg_add(1)</a>:
440: Written and maintained by Marc Espie.
441: Imported October 16, 2003 and first released with OpenBSD 3.5.
442: </li>
443: <li>
444: <a href="https://man.openbsd.org/carp.4">carp(4)</a>:
445: Written by Mickey Shalayeff, Markus Friedl, Marco Pfatschbacher,
446: and Ryan McBride.
447: Imported October 17, 2003 and first released with OpenBSD 3.5.
448: </li>
449: <li>
450: <a href="http://www.openbgpd.org/">OpenBGPD</a>
451: including <a href="https://man.openbsd.org/bgpd.8">bgpd(8)</a>
452: and <a href="https://man.openbsd.org/bgpctl.8">bgpctl(8)</a>:
453: Written and maintained by Henning Brauer and Claudio Jeker,
454: and also maintained by Peter Hessler.
455: Imported December 17, 2003 and first released with OpenBSD 3.5.
456: </li>
457: <li>
458: <a href="https://man.openbsd.org/dhclient.8">dhclient(8)</a>:
459: Started by Ted Lemon and Elliot Poger in 1996.
460: Imported January 18, 2004 and first released with OpenBSD 3.5.
461: Reworked by Henning Brauer.
462: Now maintained by Kenneth Westerback.
463: </li>
464: <li>
465: <a href="https://man.openbsd.org/dhcpd.8">dhcpd(8)</a>:
466: Started by Ted Lemon in 1995.
467: Imported April 13, 2004 and first released with OpenBSD 3.6.
468: Reworked by Henning Brauer.
469: Now maintained by Kenneth Westerback.
470: </li>
471: <li>
472: <a href="https://man.openbsd.org/hotplugd.8">hotplugd(8)</a>:
473: Started by Alexander Yurchenko.
474: Imported May 30, 2004 and first released with OpenBSD 3.6.
475: </li>
476: <li>
477: <a href="http://www.openntpd.org/">OpenNTPD</a>
478: including <a href="https://man.openbsd.org/ntpd.8">ntpd(8)</a>
479: and <a href="https://man.openbsd.org/ntpctl.8">ntpctl(8)</a>:
480: Written and maintained by Henning Brauer.
481: Imported May 31, 2004 and first released with OpenBSD 3.6.
482: Portable version maintained by Brent Cook.
483: </li>
484: <li>
485: <a href="https://man.openbsd.org/dpb.1">dpb(1)</a>:
486: Started by Nikolay Sturm on August 10, 2004; first available for OpenBSD 3.6.
487: Rewritten and maintained by Marc Espie since August 20, 2010.
488: </li>
489: <li>
490: <a href="https://man.openbsd.org/ospfd.8">ospfd(8)</a>,
491: <a href="https://man.openbsd.org/ospfctl.8">ospfctl(8)</a>:
492: Started by Esben Norby and Claudio Jeker.
493: Imported January 28, 2005 and first released with OpenBSD 3.7.
494: </li>
495: <li>
496: <a href="https://man.openbsd.org/ifstated.8">ifstated(8)</a>:
497: Started by Marco Pfatschbacher and Ryan McBride.
498: Imported January 23, 2004 and first released with OpenBSD 3.8.
499: </li>
500: <li>
501: <a href="https://man.openbsd.org/bioctl.8">bioctl(8)</a>:
502: Started by Marco Peereboom.
503: Imported March 29, 2005 and first released with OpenBSD 3.8.
504: </li>
505: <li>
506: <a href="https://man.openbsd.org/hostapd.8">hostapd(8)</a>:
507: Written and maintained by Reyk Floeter.
508: Imported May 26, 2005 and first released with OpenBSD 3.8.
509: </li>
510: <li>
511: <a href="https://man.openbsd.org/watchdogd.8">watchdogd(8)</a>:
512: Started by Marc Balmer.
513: Imported August 8, 2005 and first released with OpenBSD 3.8.
514: </li>
515: <li>
516: <a href="https://man.openbsd.org/sdiff.1">sdiff(1)</a>:
517: Written by Ray Lai.
518: Imported December 27, 2005 and first released with OpenBSD 3.9.
519: </li>
520: <li>
521: <a href="https://man.openbsd.org/dvmrpd.8">dvmrpd(8)</a>,
522: <a href="https://man.openbsd.org/dvmrpctl.8">dvmrpctl(8)</a>:
523: Started by Esben Norby.
524: Imported June 1, 2006 and first released with OpenBSD 4.0.
525: </li>
526: <li>
527: <a href="https://man.openbsd.org/ripd.8">ripd(8)</a>,
528: <a href="https://man.openbsd.org/ripctl.8">ripctl(8)</a>:
529: Started by Michele Marchetto.
530: Imported October 18, 2006 and first released with OpenBSD 4.1.
531: </li>
532: <li>
533: <a href="https://man.openbsd.org/pkg-config.1">pkg-config(1)</a>:
534: Started by Chris Kuethe and Marc Espie.
535: Imported November 27, 2006 and first released with OpenBSD 4.1.
536: Now maintained by Jasper Lievisse Adriaanse.
537: </li>
538: <li>
539: <a href="https://man.openbsd.org/relayd.8">relayd(8)</a>
540: with <a href="https://man.openbsd.org/relayctl.8">relayctl(8)</a>:
541: Started by Pierre-Yves Ritschard and Reyk Floeter.
542: Imported December 16, 2006 and first released with OpenBSD 4.1.
543: Now maintained by Reyk Floeter and Sebastian Benoit.<br/>
544: </li>
545: <li>
546: <a href="https://man.openbsd.org/cwm.1">cwm(1)</a>:
547: Started by <a href="http://monkey.org/~marius/cwm/README">Marius
548: Aamodt Eriksen</A> in 2004.
549: Imported April 27, 2007 and first released with OpenBSD 4.2.
550: Now maintained by Okan Demirmen.
551: <a href="https://github.com/chneukirchen/cwm">Portable version</a>
552: maintained by Leah Neukirchen.
553: </li>
554: <li>
555: <a href="https://man.openbsd.org/ospf6d.8">ospf6d(8)</a>,
556: <a href="https://man.openbsd.org/ospf6ctl.8">ospf6ctl(8)</a>:
557: Started by Esben Norby and Claudio Jeker.
558: Imported October 8, 2007 and first released with OpenBSD 4.2.
559: </li>
560: <li>
561: <a href="https://man.openbsd.org/libtool.1">libtool(1)</a>:
562: Written by Steven Mestdagh and Marc Espie.
563: Imported October 28, 2007 and first available for OpenBSD 4.3.
564: Now maintained by Marc Espie, Jasper Lievisse Adriaanse,
565: and Antoine Jacoutot.
566: </li>
567: <li>
568: <a href="https://man.openbsd.org/snmpd.8">snmpd(8)</a>,
569: <a href="https://man.openbsd.org/snmpctl.8">snmpctl(8)</a>:
570: Started by Reyk Floeter.
571: Imported December 5, 2007 and first released with OpenBSD 4.3.
572: Maintained by Reyk Floeter and Bret Lambert.
573: </li>
574: <li>
575: <a href="https://man.openbsd.org/sysmerge.8">sysmerge(8)</a>:
576: Written and maintained by Antoine Jacoutot,
577: originally forked from mergemaster by Douglas Barton.
578: Imported April 22, 2008, first released with OpenBSD 4.4.
579: </li>
580: <li>
581: <a href="https://man.openbsd.org/ypldap.8">ypldap(8)</a>:
582: Started by Pierre-Yves Ritschard.
583: Imported June 26, 2008 and first released with OpenBSD 4.4.
584: </li>
585: <li>
586: <a href="https://www.opensmtpd.org/">OpenSMTPD</a>
587: including <a href="https://man.openbsd.org/smtpd.8">smtpd(8)</a>,
588: <a href="https://man.openbsd.org/smtpctl.8">smtpctl(8)</a>,
589: <a href="https://man.openbsd.org/makemap.8">makemap(8)</a>:
590: Started by Gilles Chehade.
591: Imported November 1, 2008 and first released with OpenBSD 4.6.
592: Now maintained by Gilles Chehade and Eric Faurot.
593: </li>
594: <li>
595: <a href="http://tmux.github.io/">tmux</a>,
596: <a href="https://man.openbsd.org/tmux.1">tmux(1)</a>:
597: Started in 2007 and maintained by Nicholas Marriott.
598: Imported June 1, 2009, first released with OpenBSD 4.6.
599: </li>
600: <li>
601: <a href="https://man.openbsd.org/ldpd.8">ldpd(8)</a>,
602: <a href="https://man.openbsd.org/ldpctl.8">ldpctl(8)</a>:
603: Started by Michele Marchetto.
604: Imported June 1, 2009 and first released with OpenBSD 4.6.
605: Now maintained by Claudio Jeker.
606: </li>
607: <li>
608: <a href="http://mdocml.bsd.lv/">mandoc</a>
609: including <a href="https://man.openbsd.org/mandoc.1">mandoc(1)</a>,
610: <a href="https://man.openbsd.org/man.1">man(1)</a>,
611: <a href="https://man.openbsd.org/apropos.1">apropos(1)</a>,
612: <a href="https://man.openbsd.org/makewhatis.8">makewhatis(8)</a>,
1.67 schwarze 613: <a href="https://man.openbsd.org/man.cgi.8">man.cgi(8)</a>:
1.59 job 614: Started by Kristaps Dzonsons in November 2008.
615: Imported April 6, 2009, first released with OpenBSD 4.8.
616: Now maintained by Ingo Schwarze.
617: </li>
618: <li>
619: <a href="https://man.openbsd.org/ldapd.8">ldapd(8)</a>,
620: <a href="https://man.openbsd.org/ldapctl.8">ldapctl(8)</a>:
621: Written by Martin Hedenfalk.
622: Imported May 31, 2010 and first released with OpenBSD 4.8.
623: </li>
624: <li>
625: <a href="http://www.openiked.org/">OpenIKED</a>
626: including <a href="https://man.openbsd.org/iked.8">iked(8)</a>
627: and <a href="https://man.openbsd.org/ikectl.8">ikectl(8)</a>:
628: Started by Reyk Floeter.
629: Imported June 3, 2010 and first released with OpenBSD 4.8.
630: Now maintained by Reyk Floeter and Mike Belopuhov.
631: </li>
632: <li>
633: <a href="https://man.openbsd.org/iscsid.8">iscsid(8)</a>,
634: <a href="https://man.openbsd.org/iscsictl.8">iscsictl(8)</a>:
635: Written and maintained by Claudio Jeker.
636: Imported September 24, 2010 and first released with OpenBSD 4.9.
637: </li>
638: <li>
639: <a href="https://man.openbsd.org/rc.d.8">rc.d(8)</a>,
640: <a href="https://man.openbsd.org/rc.subr.8">rc.subr(8)</a>:
641: Written and maintained by Robert Nagy and Antoine Jacoutot.
642: Imported October 26, 2010 and first released with OpenBSD 4.9.
643: </li>
644: <li>
645: <a href="https://man.openbsd.org/tftpd.8">tftpd(8)</a>:
646: Written and maintained by David Gwynne.
647: Imported March 2, 2012 and first released with OpenBSD 5.2.
648: </li>
649: <li>
650: <a href="https://man.openbsd.org/npppd.8">npppd(8)</a>,
651: <a href="https://man.openbsd.org/npppctl.8">npppctl(8)</a>:
652: Started by Internet Initiative Japan Inc.
653: Imported January 11, 2010, first released with OpenBSD 5.3.
654: Maintained by YASUOKA Masahiko.
655: </li>
656: <li>
657: <a href="https://man.openbsd.org/ldomd.8">ldomd(8)</a>,
658: <a href="https://man.openbsd.org/ldomctl.8">ldomctl(8)</a>:
659: Written and maintained by Mark Kettenis.
660: Imported October 26, 2012 and first released with OpenBSD 5.3.
661: </li>
662: <li>
663: <a href="https://man.openbsd.org/sndiod.8">sndiod(8)</a>:
664: Written and maintained by Alexandre Ratchov.
665: Imported November 23, 2012 and first released with OpenBSD 5.3.
666: </li>
667: <li>
668: <a href="https://man.openbsd.org/cu.1">cu(1)</a>:
669: Written and maintained by Nicholas Marriott.
670: Imported July 10, 2012 and first released with OpenBSD 5.4.
671: </li>
672: <li>
673: <a href="https://man.openbsd.org/identd.8">identd(8)</a>:
674: Written and maintained by David Gwynne.
675: Imported March 18, 2013 and first released with OpenBSD 5.4.
676: </li>
677: <li>
678: <a href="https://man.openbsd.org/slowcgi.8">slowcgi(8)</a>:
679: Written and maintained by Florian Obser.
680: Imported May 23, 2013 and first released with OpenBSD 5.4.
681: </li>
682: <li>
683: <a href="https://man.openbsd.org/signify.1">signify(1)</a>:
684: Written and maintained by <a href="http://www.tedunangst.com/flak/post/signify">Ted Unangst</a>.
685: Imported December 31, 2013 and first released with OpenBSD 5.5.
686: </li>
687: <li>
688: <a href="https://man.openbsd.org/htpasswd.1">htpasswd(1)</a>:
689: Written and maintained by Florian Obser.
690: Imported March 17, 2014 and first released with OpenBSD 5.6.
691: </li>
692: <li>
693: <a href="https://www.libressl.org/">LibreSSL</a>:
694: Started by Ted Unangst, Bob Beck, Joel Sing, Miod Vallat, Philip Guenther,
695: and Theo de Raadt on April 13, 2014, as a fork of OpenSSL 1.0.1g.
696: First released with OpenBSD 5.6.
697: Portable version maintained by Brent Cook.
698: </li>
699: <li>
700: <a href="https://man.openbsd.org/httpd.8">httpd(8)</a>:
701: Started by Reyk Floeter.
702: Imported July 12, 2014 and first released with OpenBSD 5.6.
703: Maintained by Reyk Floeter and Florian Obser.
704: </li>
705: <li>
706: <a href="https://man.openbsd.org/rcctl.8">rcctl(8)</a>:
707: Written and maintained by Antoine Jacoutot.
708: Imported August 19, 2014 and first released with OpenBSD 5.7.
709: </li>
710: <li>
711: <a href="https://man.openbsd.org/file.1">file(1)</a>:
712: Rewritten from scratch and maintained by Nicholas Marriott.
713: Imported April 24, 2015 and first released with OpenBSD 5.8.
714: </li>
715: <li>
716: <a href="https://man.openbsd.org/doas.1">doas(1)</a>:
717: Written and maintained by Ted Unangst.
718: Imported July 16, 2015 and first released with OpenBSD 5.8.
719: </li>
720: <li>
721: <a href="https://man.openbsd.org/radiusd.8">radiusd(8)</a>:
722: Written and maintained by YASUOKA Masahiko.
723: Imported July 21, 2015 and first released with OpenBSD 5.8.
724: </li>
725: <li>
726: <a href="https://man.openbsd.org/eigrpd.8">eigrpd(8)</a>,
727: <a href="https://man.openbsd.org/eigrpctl.8">eigrpctl(8)</a>:
728: Written and maintained by Renato Westphal.
729: Imported October 2, 2015 and first released with OpenBSD 5.9.
730: </li>
731: <li>
732: <a href="https://man.openbsd.org/rebound.8">rebound(8)</a>:
733: Written and maintained by Ted Unangst.
734: Imported October 15, 2015 and first released with OpenBSD 5.9.
735: </li>
736: <li>
737: <a href="https://man.openbsd.org/vmm.4">vmm(4)</a>,
738: <a href="https://man.openbsd.org/vmd.8">vmd(8)</a>,
739: <a href="https://man.openbsd.org/vmctl.8">vmctl(8)</a>:
740: Written and maintained by Mike Larkin and Reyk Floeter.
741: Imported November 13, 2015 and first released with OpenBSD 5.9.
742: </li>
743: <li>
744: <a href="https://man.openbsd.org/pdisk.8">pdisk(8)</a>:
745: Originally written by Eryk Vershen in 1996-1998,
746: rewritten and maintained by Kenneth Westerback since January 11, 2016
747: and first released with OpenBSD 5.9.
748: </li>
749: <li>
750: <a href="https://man.openbsd.org/mknod.8">mknod(8)</a>:
751: Original version from Version 6 AT&T UNIX (1975),
752: last rewritten by Marc Espie on March 5, 2016
753: and first released with OpenBSD 6.0.
754: </li>
755: <li>
756: <a href="https://man.openbsd.org/audioctl.1">audioctl(1)</a>:
757: Originally written by Lennart Augustsson in 1997,
758: rewritten and maintained by Alexandre Ratchov since June 21, 2016
759: and first released with OpenBSD 6.0.
760: </li>
761: <li>
762: <a href="https://man.openbsd.org/switchd.8">switchd(8)</a>,
763: <a href="https://man.openbsd.org/switchctl.8">switchctl(8)</a>:
764: Written and maintained by Reyk Floeter.
765: Imported July 19, 2016; released with OpenBSD 6.1.
766: </li>
767: <li>
768: <a href="https://man.openbsd.org/acme-client.1">acme-client(1)</a>:
769: Written by Kristaps Dzonsons, imported August 31, 2016; released
770: with OpenBSD 6.1.
771: </li>
772: <li>
773: <a href="https://man.openbsd.org/syspatch.8">syspatch(8)</a>:
774: Written and maintained by Antoine Jacoutot.
775: Imported September 5, 2016; released with OpenBSD 6.1.
776: </li>
777: <li>
778: <a href="https://man.openbsd.org/ping.8">ping(8)</a>:
779: Restructured to include IPv6 functionality and maintained by Florian Obser.
780: The separate
781: <a href="https://man.openbsd.org/OpenBSD-6.0/ping6.8">ping6(8)</a>
782: was superseded on September 17, 2016,
783: and the new, combined version was released with OpenBSD 6.1.
784: </li>
785: <li>
786: <a href="https://man.openbsd.org/xenodm.1">xenodm(1)</a>:
787: Cleaned-up fork of
788: <a href="https://man.openbsd.org/OpenBSD-6.0/xdm.1">xdm(1)</a>
789: maintained by Matthieu Herrb.
790: Imported October 23, 2016; released with OpenBSD 6.1.
791: </li>
792: <li>
793: <a href="https://man.openbsd.org/ocspcheck.8">ocspcheck(8)</a>:
794: Written and maintained by Bob Beck.
795: Imported January 24, 2017; released with OpenBSD 6.1.
796: </li>
797: <li>
798: <a href="https://man.openbsd.org/slaacd.8">slaacd(8)</a>:
799: Written and maintained by Florian Obser.
800: Imported March 18, 2017; released with OpenBSD 6.2.
1.66 schwarze 801: </li>
802: <li>
803: <a href="https://man.openbsd.org/rad.8">rad(8)</a>:
804: Written and maintained by Florian Obser.
1.73 schwarze 805: Imported July 10, 2018; released with OpenBSD 6.4.
806: </li>
807: <li>
808: <a href="https://man.openbsd.org/unwind.8">unwind(8)</a>:
809: Written and maintained by Florian Obser.
810: Imported January 23, 2019; released with OpenBSD 6.5.
1.59 job 811: </li>
1.74 schwarze 812: <li>
813: <a href="https://man.openbsd.org/openrsync.1">openrsync(1)</a>:
814: Written by Kristaps Dzonsons.
815: Imported February 10, 2019; released with OpenBSD 6.5.
816: </li>
1.1 schwarze 817: </ul>
818:
1.11 deraadt 819: <h3>Projects maintained by OpenBSD developers outside OpenBSD</h3>
1.1 schwarze 820:
821: <ul>
1.59 job 822: <li>
823: <a href="http://www.sudo.ws/">sudo</a>:
824: Started by Bob Coggeshall and Cliff Spencer around 1980.
825: Imported November 18, 1999, first released with OpenBSD 2.7.
826: Now maintained by Todd Miller.
827: </li>
828: <li>
829: <a href="http://bulabula.org/femail/">femail</a>:
830: Written and maintained by Henning Brauer.
831: Started in 2005, port available since September 22, 2005.
832: </li>
833: <li>
834: <a href="http://www.midish.org/">midish</a>:
835: Written and maintained by Alexandre Ratchov.
836: Started in 2003, port available since November 4, 2005.
837: </li>
838: <li>
839: <a href="https://github.com/nicm/fdm">fdm</a>:
840: Written and maintained by Nicholas Marriott.
841: Started in 2006, port available since January 18, 2007.
842: </li>
843: <li>
844: <a href="https://github.com/ajacoutot/toad/">toad</a>:
845: Written and maintained by Antoine Jacoutot.
846: Started in 2013, port available since October 8, 2013.
1.74 schwarze 847: </li>
848: <li>
849: <a href="https://mandoc.bsd.lv/docbook2mdoc/">docbook2mdoc</a>:
850: Started by Kristaps Dzonsons in 2014, maintained by Ingo Schwarze.
851: Port available since April 3, 2014.
1.59 job 852: </li>
853: <li>
854: <a href="http://jasperla.github.io/portroach/">portroach</a>:
855: Written and maintained by Jasper Lievisse Adriaanse,
856: originally forked from FreeBSD's portscout.
857: Started in 2014, port available since September 5, 2014.
858: </li>
859: <li>
860: <a href="https://github.com/yasuoka/cvs2gitdump">cvs2gitdump</a>:
861: Written and maintained by YASUOKA Masahiko.
862: Started in 2012, port available since August 1, 2016.
863: </li>
1.1 schwarze 864: </ul>
865:
866: </body>
867: </html>