security revision 1.1
11.1Sdholland$NetBSD: security,v 1.1 2017/01/13 10:14:58 dholland Exp $
21.1Sdholland
31.1SdhollandNetBSD Security Roadmap
41.1Sdholland=======================
51.1Sdholland
61.1SdhollandThis roadmap discusses security-related features.
71.1Sdholland
81.1SdhollandThe following elements, projects, and goals are considered strategic
91.1Sdhollandpriorities for the project:
101.1Sdholland
111.1Sdholland 1. PaX aslr, mprotect, and segvguard are on by default now; this will
121.1Sdholland    be in 8.0.
131.1Sdholland 2. Transparent full-disk encryption (discussed in the storage roadmap)
141.1Sdholland 3. User-switching and secure attention key (see desktop roadmap)
151.1Sdholland
161.1SdhollandThe following elements, projects, and goals are not strategic
171.1Sdhollandpriorities but are still important undertakings worth doing:
181.1Sdholland
191.1Sdholland 4. Security restriction framework for large/less trusted applications
201.1Sdholland 5. Interface for location, accelerometer, and similar sensitive services
211.1Sdholland
221.1Sdholland
231.1SdhollandExplanations
241.1Sdholland============
251.1Sdholland
261.1Sdholland
271.1Sdholland4. Security restriction framework for large/less trusted applications
281.1Sdholland
291.1SdhollandTraditionally in Unix permissions go with the user logged in, and all
301.1Sdhollandprograms that are run execute with the credentials and permissions of
311.1Sdhollandthat user. (Except for setugid programs, which execute with additional
321.1Sdhollandpermissions.)
331.1Sdholland
341.1SdhollandThis makes sense for programs like cat(1) or grep(1) that work with
351.1Sdhollanduser data in the traditional shell environment. However, it is
361.1Sdhollandunsatisfactory for large semi-trusted applications such as web
371.1Sdhollandbrowsers, and entirely unsuitable for 3rd-party "apps" such as found
381.1Sdhollandon phones, which routinely contain spyware.
391.1Sdholland
401.1SdhollandWe would like to have a permissions framework that works on a
411.1Sdhollandper-application basis and allows imposing restrictions on what apps
421.1Sdhollandmay do, what data apps may read, and also supports policies like
431.1Sdholland"cannot talk on the network after reading user data".
441.1Sdholland
451.1SdhollandSuch a framework is entirely different from traditional Unix
461.1Sdhollandpermissions and requires careful thought and design. Prior art is
471.1Sdhollandmostly not very good; e.g. Android's app permissions framework is both
481.1Sdhollandnot expressive enough to pose serious barriers to spyware, and too
491.1Sdhollandcomplicated for typical users to cope with effectively. Meanwhile,
501.1Sdhollandsystem-call-based restrictions like seccomp/seccomp-bpf in Linux are
511.1Sdhollandmessy and complicated and hard to use effectively. OpenBSD's "pledge"
521.1Sdhollandhas been widely criticized for a range of reasons. Most of these
531.1Sdhollandmodels also do not provide for lying to apps that demand access you
541.1Sdhollanddon't want to give them.
551.1Sdholland
561.1Sdhollanddholland was working on this with some undergrads a while back and
571.1Sdhollandthere's a design that may be of some value, although the prototype
581.1Sdhollandimplementation was not a success.
591.1Sdholland
601.1Sdholland - As of January 2017 nobody is known to be working on this.
611.1Sdholland - There is currently no clear timeframe or release target.
621.1Sdholland - Contact dholland for further information.
631.1Sdholland
641.1Sdholland
651.1Sdholland5. Interface for location, accelerometer, and similar sensitive services
661.1Sdholland
671.1SdhollandCurrently in NetBSD we have no infrastructure for the "new" hardware
681.1Sdhollandinterfaces typically found in phones, like GPS location information,
691.1Sdhollandaccelerometer and orientation data, and so forth.
701.1Sdholland
711.1SdhollandThere is probably no need to invent new APIs for retrieving this data,
721.1Sdhollandbut we do need a sound underlying framework with security controls in
731.1Sdhollandplace, as many of these data sources provide information that is
741.1Sdhollandeither sensitive or can be used to derive sensitive information.
751.1Sdholland
761.1Sdholland(Note also that it's been shown that location data can be derived from
771.1Sdhollandmonitoring battery level so that one's also sensitive.)
781.1Sdholland
791.1Sdholland - As of January 2017 nobody is known to be working on this.
801.1Sdholland - There is currently no clear timeframe or release target.
811.1Sdholland - Contact: ? (XXX)
821.1Sdholland
83