@@ -1902,6 +1902,31 @@ <h2 id="obsd-49">49 - Less attack surface</h2>
19021902 Nevertheless, that code remains part of the overall implementation
19031903 complexity and potential attack surface.</ p >
19041904
1905+ < p > Attack surface also depends on how much of that code is enabled and
1906+ exposed. Total code size measures potential complexity, while code that
1907+ is loaded, privileged, listening on the network, parsing untrusted
1908+ input, or reachable through local IPC is more directly relevant to the
1909+ effective attack surface. The number of daemons and services enabled by
1910+ default therefore matters.</ p >
1911+
1912+ < p > OpenBSD deliberately keeps a default installation minimal.
1913+ Relatively few network-facing or privileged services are enabled by
1914+ default, and unnecessary services are not started automatically. A
1915+ process merely running is not necessarily remotely reachable, and a
1916+ network listener is not necessarily exposed beyond a local interface or
1917+ firewall. These distinctions matter, but every additional long-running
1918+ process, privileged helper, IPC endpoint, network listener, or parser
1919+ of untrusted input increases the code that attackers can continuously
1920+ reach.</ p >
1921+
1922+ < p > Mainstream desktop and server operating systems often begin with a
1923+ larger collection of background services, IPC endpoints, privileged
1924+ helpers, update agents, discovery services, management components, and
1925+ network listeners. Individual components can be well designed and
1926+ securely configured, but their aggregate exposure still expands the
1927+ attack surface. OpenBSD's minimal default configuration is a deliberate
1928+ security property, not merely an aesthetic preference.</ p >
1929+
19051930 < p > The very large difference between the OpenBSD and Linux kernel trees
19061931 illustrates OpenBSD's "less is more" approach. OpenBSD removes or
19071932 avoids unnecessary functionality, drivers, compatibility layers,
0 commit comments