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