{"id":25110,"date":"2023-07-30T14:22:13","date_gmt":"2023-07-30T12:22:13","guid":{"rendered":"https:\/\/blog.mi.hdm-stuttgart.de\/?p=25110"},"modified":"2023-07-30T14:22:16","modified_gmt":"2023-07-30T12:22:16","slug":"fuchsia-rethinking-os-security-design-after-50-years","status":"publish","type":"post","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/07\/30\/fuchsia-rethinking-os-security-design-after-50-years\/","title":{"rendered":"Fuchsia: Rethinking OS security design after 50 years"},"content":{"rendered":"\n<p>Ever since the inception of Unix in the 1960s, the core design of most general purpose operating systems we use today has remained largely unchanged. However, over time, many of the security principles established during that era have since been deemed outdated. In this article, we will look into Google&#8217;s new operating system called Fuchsia, exploring how it differs from other conventional operating systems with a focus on security design patterns.<\/p>\n\n\n\n<p>Fuchsia (pronounced: <code class=\"\" data-line=\"\">\/\u02c8fju\u02d0\u0283\u0259\/<\/code>) mainly improves on OS security by limiting the components which have access to kernel privileges, by employing the principle of least privilege, and by isolating components from each other and from the rest of the system.<\/p>\n\n\n\n<p>While Fuchsia cannot be described as a traditional Unix-like OS, it nevertheless draws inspiration from Unix and Unix-like systems, particularly Linux. To better highlight the differences and similarities to those systems, I will be comparing Fuchsia to Linux throughout this article.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Microkernel<\/h2>\n\n\n\n<p>Microkernels provide a minimal set of functions to an operating system, which are required for the OS to run on and interact with the computer hardware. Microkernels are much smaller and easier to overview than monolithic kernels, which provide further auxiliary functionality to an OS in order to reduce the complexity of interaction between various OS subsystems and hardware components. The minimalism of the microkernel not only reduces the attack surface of the kernel but also makes it more difficult for malicious contributions to go unnoticed by code reviewers.<\/p>\n\n\n\n<p>Another benefit of the microkernel approach is that the separation of the modules makes updating these modules independently from each other much easier, allowing for security fixes to be applied quicker.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/6\/67\/OS-structure.svg\" alt=\"\" \/><figcaption class=\"wp-element-caption\"><a href=\"https:\/\/commons.wikimedia.org\/wiki\/File:OS-structure.svg\" title=\"Wooptoo\">Wooptoo<\/a>, Public domain, via Wikimedia Commons<\/figcaption><\/figure>\n\n\n\n<p>Fuchsia\u2019s microkernel is called <em>Zircon<\/em>. While Zircon technically refers to an entire subsystem that also contains some services, drivers, and libraries required to boot and run the system, these components are not part of the kernel itself and run in the user space instead. The kernel itself only contains the scheduler, memory management tools, an inter-process-communication (IPC) system and synchronization mechanisms like locks.<\/p>\n\n\n\n<p>This design differs greatly from the monolithic kernel design of the Linux-Kernel, which, in addition to the previously mentioned modules, also contains storage and network controllers, filesystems, device drivers and more. In fact, drivers make up around two-thirds of the entire Linux-Kernel source code.<\/p>\n\n\n\n<p>A consequence of this design is that drivers run with the same privileges as the very core of the OS, which becomes a problem when drivers aren\u2019t developed to the same standard as the rest of the critical operating system modules. The sometimes ridiculous implications this has for security can be read in the article \u201c<a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/07\/17\/security-knockout-how-capcoms-street-fighter-5-punched-a-hole-in-intels-security-system\/\" title=\"Security Knockout: How Capcom\u2019s Street Fighter 5 punched a hole in Intel\u2019s security system\">Security Knockout: How Capcom\u2019s Street Fighter 5 punched a hole in Intel\u2019s security system<\/a>\u201d from a fellow student of mine, Frederik Omlor.<\/p>\n\n\n\n<p>In Fuchsia, device drivers run in user space and since they are isolated from the kernel and the rest of the system, they can do far less damage to the OS, should they contain malware.<\/p>\n\n\n\n<p>However, this also poses a problem because drivers usually need access to hardware and physical memory addresses, which are privileges reserved for kernel mode operations. So drivers require an efficient IPC solution to communicate with the kernel. While Zircon does provide IPC using a purpose-built interface definition language, this is nevertheless not as performant as giving the driver direct hardware access from the kernel space. With the microkernel approach each hardware access from a driver requires expensive context switches from user mode to kernel mode and back. The performance implications this has, is the reason why the OSs we use today opted for a monolithic kernel when they were designed. Due to limited performance of systems back in the late 1900s OS designers chose the more performant monolithic approach to kernels over the more secure microkernel approach.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sandboxing &amp; Namespaces<\/h2>\n\n\n\n<p>One of the most notable security mechanisms of Fuchsia is the isolation of <em>components<\/em> from each other and from the rest of the system. These components run in their own so-called <em>namespace<\/em> which only they have access to and which they cannot escape by default. This practice of separating processes, resources, etc. from each other is called <em>sandboxing<\/em>.<\/p>\n\n\n\n<p>In the context of Fuchsia, \u201ccomponents\u201d is the term used to describe any form of (executable) software running on a Fuchsia system. In order to not overcomplicate things in this article you can assume that a component is essentially the same thing as a process in Unix\/Linux. An application or program can consist of multiple components (e.g. a frontend and a backend) that run in separate namespaces which may share resources via IPC mechanisms. This separation into different namespaces, by design, restricts access to resources not owned by the program.<\/p>\n\n\n\n<p>Since components run in their own namespace, they may be the owner of all content within their namespace without risking that the component tampers with files that it shouldn\u2019t do. The component process essentially becomes the root user in its own namespace. In theory at least, this makes privilege escalation attacks effectively impossible as there are no further privileges to gain within that namespace. It also makes path traversal attacks a thing of the past because the process cannot simply \u201c..\/\u201d into another directory, owned by another component (except when they are explicitly shared). The sharing of resources between components needs to be wanted by both parties. The mechanisms used to manage all this is discussed in the next chapter.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/sandbox.drawio-2.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"25112\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/07\/30\/fuchsia-rethinking-os-security-design-after-50-years\/sandbox-drawio-2\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/sandbox.drawio-2.png\" data-orig-size=\"1202,642\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"sandbox.drawio-2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/sandbox.drawio-2-1024x547.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/sandbox.drawio-2-1024x547.png\" alt=\"\" class=\"wp-image-25112\" width=\"512\" height=\"274\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/sandbox.drawio-2-1024x547.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/sandbox.drawio-2-300x160.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/sandbox.drawio-2-768x410.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/sandbox.drawio-2.png 1202w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/a><\/figure>\n\n\n\n<p>There are some interesting quirks with this design. Since the filesystem is a user space process, the kernel has no knowledge or concept of what a file or a directory is. Because of this, the kernel provides no system calls to open or write files. Instead, programs directly interact with the filesystem component, which itself interacts with either the memory management of the kernel or with the block device drivers, which also run in user space. With the filesystem being a user space process, it also lives inside its own sandbox and namespace. As such, there is no central \u201croot-filesystem\u201d, so each component, by design, needs to be provided its own personal filesystem.<\/p>\n\n\n\n<p>The reason why sandboxing improves security is best explained with a concrete example:&nbsp;<\/p>\n\n\n\n<p>Let\u2019s say I installed a music player application on my system to listen to some local audio files. On a standard Linux OS, which doesn\u2019t have additional privacy &amp; security systems like there are on Android or iOS, this music player would have access to all of the resources that my user account has access to. This includes all my personal documents, photos, videos but also access to devices like my camera.<\/p>\n\n\n\n<p>Fuchsia employs the principle of least privilege, this means that components need to explicitly request access to resources before they can access them. This means that by default, the music player doesn\u2019t even have access to my audio files. Obviously this defeats the purpose of a music player, so in order to be able to play audio files, the app would need to request the <em>capability<\/em> to open these files from the system.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Capabilities<\/h2>\n\n\n\n<p><em>Capabilities<\/em> are Fuchsia\u2019s solution to managing access to resources. They provide a flexible and secure way to control which component may access which resource, and what they can do with it. It achieves this by combining the means of access to a resource with a set of rights, such as read and write. For example, a capability might grant read access to a specific file or directory, or it might grant the ability to start a particular service.<\/p>\n\n\n\n<p>Initially this may sound similar to what <em>access control lists<\/em> (ACLs) do on traditional OSs. ACLs on Linux specify access permissions per file on a user\/group\/world basis. For example: if I have a file called <code class=\"\" data-line=\"\">important.txt<\/code>, I would be able to display its ACL using the\u00a0 <code class=\"\" data-line=\"\">getfacl<\/code> command like so:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/getfacl.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"25113\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/07\/30\/fuchsia-rethinking-os-security-design-after-50-years\/getfacl\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/getfacl.png\" data-orig-size=\"1360,644\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"getfacl\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/getfacl-1024x485.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/getfacl-1024x485.png\" alt=\"\" class=\"wp-image-25113\" width=\"768\" height=\"364\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/getfacl-1024x485.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/getfacl-300x142.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/getfacl-768x364.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/getfacl.png 1360w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/a><\/figure>\n\n\n\n<p>This command lists the owner (user) of the file along with the group the user belongs to, as well as the file access permissions, represented as \u201crwx\u201d triplets, each for the user, the group and the rest of the world. In this case only my user \u201cnikolai\u201d is allowed to read and write the file, everyone else may only read its contents. The file may not be executed by anyone.<\/p>\n\n\n\n<p>While ACLs manage file access on a per-user level, capabilities manage access on a per-component level. What this means is that on my Linux system, every process which is started under my user account has access to this file, while on Fuchsia every process would individually need to request the capability to access the file before being granted a handle to it. As a result, capabilities offer far more fine-grained control over resources than ACLs.&nbsp;<\/p>\n\n\n\n<p>Components do not get any capabilities without requesting them, even if other components offer them access, again employing the principle of least privilege. Components may provide capabilities to its own resources to other components, be they child components or the parent.<\/p>\n\n\n\n<p>All of the capabilities a component requires and supplies are declared in the component manifest file that is distributed in the same package as the component program files and dependencies. Below is the content of a component manifest file of a hello world application.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/helloworld.cml_.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"25114\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/07\/30\/fuchsia-rethinking-os-security-design-after-50-years\/helloworld-cml_\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/helloworld.cml_.png\" data-orig-size=\"1360,1048\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"helloworld.cml_\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/helloworld.cml_-1024x789.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/helloworld.cml_-1024x789.png\" alt=\"\" class=\"wp-image-25114\" width=\"768\" height=\"592\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/helloworld.cml_-1024x789.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/helloworld.cml_-300x231.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/helloworld.cml_-768x592.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/helloworld.cml_.png 1360w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/a><\/figure>\n\n\n\n<p>While there is only one capability explicitly declared inside this manifest in the <code class=\"\" data-line=\"\">use<\/code> section, this manifest in fact provides three different capabilities to the component:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>is imported from the \u201csyslog\/client.shard.cml\u201d manifest file which uses the \u201c\/svc\/fuchsia.logger.LogSink\u201d capability in order to write log files.&nbsp;<\/li>\n\n\n\n<li>is the capability to run an ELF (<em>Executable and Linkable Format<\/em>, the standard binary file format for Unix and Unix-like systems) encoded binary using the Fuchsia \u201celf\u201d runner. Fuchsia also offers other runner types, for example the \u201cweb\u201d runner, which uses the chromium engine to execute and display web content.<\/li>\n\n\n\n<li>is read and write access to a \u201cdata\u201d directory mounted under <code class=\"\" data-line=\"\">\/data<\/code> inside the component\u2019s namespace<\/li>\n<\/ol>\n\n\n\n<p>Evidently, there needs to be a central instance which parses all of these manifest files and tracks all components and their capabilities. This is the job of the <em>component manager<\/em>, which is one of the first components that is started during the boot process, as it manages all other components running on a Fuchsia system. It ensures that components are executed and managed in a safe and secure manner and provides them with the necessary capabilities and checks whether an attempt to access a resource is allowed by a corresponding capability.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The caveats of this design<\/h2>\n\n\n\n<p>There is no free lunch, and these security mechanisms generally come at a cost. Some of them are performance related others more convenience\/workflow related.&nbsp;<\/p>\n\n\n\n<p>As discussed earlier, the microkernel is not as performant as the monolithic kernel design. This is due to the many context switches between user and kernel space by the components that run in user space but need to perform kernel related tasks, e.g. device drivers.<\/p>\n\n\n\n<p>Because of the high reliance of components on IPC, not just between kernel and user space but also between each other due to strict sandboxing, the IPC mechanism needs to be extremely efficient as it\u2019s so performance critical. This could result in highly complex interface definitions, in order to reduce communication overhead.<\/p>\n\n\n\n<p>Speaking of sandboxing: The principle of least privilege is extremely restrictive and there are lots of quirks with this design that break many of the workflows we are used to from other OSs.<\/p>\n\n\n\n<p>Remember how we discussed that there is no central \u201croot-filesystem\u201d? That\u2019s a huge problem! There are plenty of good reasons why files need to be shared between programs. When I\u2019m working on my computer, I need to be able to store and modify files. Where do I store my personal documents so that I can open them with one sandboxed app and edit them in another sandboxed app? There would need to be a component which simulates a global filesystem, where I can store all my documents. But how would other applications know to look for this component in order to access my files? Would that file-manager component automatically offer access to my files to all other components? That would mean my files are not protected from malicious programs. And if there isn\u2019t a central filesystem, how else would I be able to transfer my files between components? Would I need to manually set the required capabilities for each component?&nbsp;<\/p>\n\n\n\n<p>Unfortunately, I could not find any satisfying answers to these questions in the official documentation.<\/p>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"708\" height=\"1024\" data-attachment-id=\"25116\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/07\/30\/fuchsia-rethinking-os-security-design-after-50-years\/abcml-1\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/abcml-1.png\" data-orig-size=\"960,1388\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"abcml-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/abcml-1-708x1024.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/abcml-1-708x1024.png\" alt=\"\" class=\"wp-image-25116 size-full\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/abcml-1-708x1024.png 708w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/abcml-1-207x300.png 207w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/abcml-1-768x1110.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/abcml-1.png 960w\" sizes=\"auto, (max-width: 708px) 100vw, 708px\" \/><\/figure><div class=\"wp-block-media-text__content\">\n<p>Capabilities are also unpredictable at times due to their ability to change during the runtime of components. There is no guarantee that a requested capability can actually be accessed if the provider component fails to start properly, fails to provide the capability with the same parameters as requested or simply fails to offer the capability because of misconfigurations or bugs. This means every access to a resource through a capability would need to be surrounded by a try-catch block to ensure program stability.<\/p>\n\n\n\n<p>Consider this example where component A offers access to its data directory with only read access to component B. Since component B requests the capability to the data directory with read &amp; write access the capability routing fails and the data directory won\u2019t exist in B\u2019s namespace.<\/p>\n<\/div><\/div>\n\n\n\n<p>Since managing capabilities is a non-trivial task, it is going to be tempting to developers to play it safe and route capabilities between components even if they might not need them, defeating the point of the principle of least privilege.<\/p>\n\n\n\n<p>So the capability concept only works correctly if application developers play along with the rules of the system. That\u2019s an optimistic assumption given that hackers and malware authors rarely care about the rules.<\/p>\n\n\n\n<p>Speaking of hackers, they will probably set their sights on the critical components of the OS, like the component manager, which is responsible for managing all other components of the system and their capabilities. Should bad actors gain access to this component then they essentially have control over the entire system, even though it\u2019s not running in the kernel.\u00a0<br>Another thing I personally find disappointing is that the Zircon kernel itself is going to be susceptible to the same buffer overflow attacks as for example the Linux-Kernel, as it is written in C++, not in a memory safer language like Rust. In fact, it was decided that the usage of Rust is actually not even allowed inside the kernel, only in the user space <sup><a href=\"https:\/\/fuchsia.googlesource.com\/fuchsia\/+\/cb20372465f875ff4fbf2a04f0951430207f7b7a\/docs\/contribute\/governance\/policy\/programming_languages.md#languages-rust-decision\" title=\"[source]\">[source]<\/a><\/sup>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">In conclusion&#8230;<\/h2>\n\n\n\n<p>Fuchsia is still very much a work in progress and the system design is still subject to change. So it is still too early to definitively say whether or not Fuchsia\u2019s design is superior to that of our current OSs.<\/p>\n\n\n\n<p>As of right now, it\u2019s very difficult to say how Fuchsia will be able to compete with today\u2019s OSs. It will need developer support in order to thrive and for that to happen, developers will need to be able to understand the concepts of Fuchsia. With the current vague state of the official documentation, that\u2019s unlikely to happen.<\/p>\n\n\n\n<p>Fuchsia is still surrounded by mystery, only very rarely is it publicly mentioned by Google at all. It remains to be seen what exactly Google\u2019s plan for this OS is. Maybe it is like they initially said simply a project to test out new design concepts that could be applied to existing OSs like Android <sup><a href=\"https:\/\/www.xda-developers.com\/google-acknowledges-fuchsia-os-experiment\/\" title=\"[source]\">[source]<\/a><\/sup>. However that seems implausible since, with the Google Nest Hubs, there are now devices running Fuchsia in production. Sadly the Google Nest Hub as a smart home device that has a minimal user interface makes little use of the security features provided by Fuchsia. And recent news saying Fuchsia isn\u2019t coming to the other Google Nest smart speaker devices isn\u2019t good news for the operating system <sup><a href=\"https:\/\/9to5google.com\/2023\/07\/25\/google-abandons-assistant-speakers-fuchsia\/\" title=\"[source]\">[source]<\/a><\/sup>.<\/p>\n\n\n\n<p>And concerning security, it would be unfair to say that other OSs haven\u2019t evolved at all. A lot of improvements have been made, especially on the user space side. For example on Android or iOS there are privacy and security systems in place that prevent apps from accessing hardware components like the camera or GPS location without the user\u2019s permission. On Linux OSs Flatpaks and Snaps run applications in sandboxed environments, which allow for fine-grained control over resource access. There are improved mandatory access control frameworks like SELinux or AppArmor which offer much greater control over resource access than the default ACLs. It would be interesting to compare the security of these to the capability system of Fuchsia.<\/p>\n\n\n\n<p>And even the kernel architecture of OSs has evolved over the years. The macOS XNU kernel as well as the Windows NT kernel are both considered hybrid kernels that make use of the improved security and stability of moving certain kernel components to the user space. This is despite the fact that changing the architecture of a running system without breaking things is extremely difficult. Also Unix and Unix-like systems all adhere to the POSIX standard, which cannot be modified too drastically without breaking compatibility for a large portion of OSs.&nbsp;<\/p>\n\n\n\n<p>Writing a new OS basically from scratch, like Google is with Fuchsia, presents the opportunity to revolutionize the design of operating systems. We will need to wait and see whether Google will follow through with Fuchsia or if it\u2019s going to end up being abandoned like so many other Google products and services.<\/p>\n\n\n\n<p><em>Written by: Nikolai Thees<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Sources<\/h3>\n\n\n\n<p>Fuchsia \u2013 official developer documentation<br><a href=\"https:\/\/fuchsia.dev\/\">https:\/\/fuchsia.dev<\/a><\/p>\n\n\n\n<p>Francesco Pagano, Luca Verderame, Alessio Merlo \u2013 Understanding Fuchsia Security<br><a href=\"https:\/\/arxiv.org\/pdf\/2108.04183\">https:\/\/arxiv.org\/pdf\/2108.04183<\/a><\/p>\n\n\n\n<p>Anna-Lena Marx, Inovex \u2013 A deep-dive into Fuchsia<br><a href=\"https:\/\/www.inovex.de\/de\/blog\/a-deep-dive-into-fuchsia\/\">https:\/\/www.inovex.de\/de\/blog\/a-deep-dive-into-fuchsia\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ever since the inception of Unix in the 1960s, the core design of most general purpose operating systems we use today has remained largely unchanged. However, over time, many of the security principles established during that era have since been deemed outdated. In this article, we will look into Google&#8217;s new operating system called Fuchsia, exploring how it differs from other conventional operating systems with a focus on security design patterns.<\/p>\n","protected":false},"author":1113,"featured_media":25118,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1,26],"tags":[182,944,58],"ppma_author":[894],"class_list":["post-25110","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allgemein","category-secure-systems","tag-google","tag-operating-systems","tag-secure-systems"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/07\/fuchsia_cover-1.jpg","jetpack-related-posts":[{"id":10949,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2020\/09\/11\/behind-the-scenes-of-modern-operating-systems-security-through-isolation-part-2\/","url_meta":{"origin":25110,"position":0},"title":"Behind the scenes of modern operating systems \u2014 Security through isolation (Part 2)","author":"Artur Bergen","date":"11. September 2020","format":false,"excerpt":"If you have not read the first part, we recommend that you read it first. It covers the topics sandboxing and isolation using Linux kernel features. In this part we go one step further and show more tools \u2014 based on part one \u2014 that are used and find their\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27760,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2025\/07\/23\/what-distinguishes-an-enterprise-operating-system-from-your-desktop\/","url_meta":{"origin":25110,"position":1},"title":"What distinguishes an enterprise operating system from your desktop?","author":"Dominik M\u00fcller","date":"23. July 2025","format":false,"excerpt":"Note: This article was written for the module Enterprise IT (113601a) during the summer semester of 2025. Introduction An operating system (OS) manages hardware resources, enables application execution, and provides interfaces for users and developers alike. But the context in which an OS is deployed determines its form and function.\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/07\/virtual-machine-virtual-private-server-vmware-vsphere-computer-servers-virtualization-png-favpng-UZyJvXCPwqpQ9UKLEaNXgWG0m-1116791087.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/07\/virtual-machine-virtual-private-server-vmware-vsphere-computer-servers-virtualization-png-favpng-UZyJvXCPwqpQ9UKLEaNXgWG0m-1116791087.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/07\/virtual-machine-virtual-private-server-vmware-vsphere-computer-servers-virtualization-png-favpng-UZyJvXCPwqpQ9UKLEaNXgWG0m-1116791087.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/07\/virtual-machine-virtual-private-server-vmware-vsphere-computer-servers-virtualization-png-favpng-UZyJvXCPwqpQ9UKLEaNXgWG0m-1116791087.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1333,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2016\/08\/13\/mirageos\/","url_meta":{"origin":25110,"position":2},"title":"MirageOS","author":"Simon Lipke","date":"13. August 2016","format":false,"excerpt":"Introduction MirageOS is a new and rising trend when it comes to talking about cloud computing. More and more services are being relocated into modern cloud infrastructures, due to a lot of advantages like i.e. reduced costs, maximum flexibility and high performance. Todays services normally depend on big virtual machines\u2026","rel":"","context":"In &quot;Secure Systems&quot;","block_context":{"text":"Secure Systems","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/system-designs\/secure-systems\/"},"img":{"alt_text":"mirage-header4","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/08\/mirage-header4.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/08\/mirage-header4.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/08\/mirage-header4.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/08\/mirage-header4.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":902,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2016\/07\/22\/defense-in-depth-a-present-time-example\/","url_meta":{"origin":25110,"position":3},"title":"Defense in Depth: a present time example","author":"Benjamin Binder","date":"22. July 2016","format":false,"excerpt":"In this post, we want to take a look on the concept of defense in depth. Therefore we are going to examine Chrome OS, the niche operation system for web users.","rel":"","context":"In &quot;Secure Systems&quot;","block_context":{"text":"Secure Systems","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/system-designs\/secure-systems\/"},"img":{"alt_text":"Dark castle walls reaching in the sky","src":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/3\/32\/Caernarfon_Castle_Walls.jpg","width":350,"height":200,"srcset":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/3\/32\/Caernarfon_Castle_Walls.jpg 1x, https:\/\/upload.wikimedia.org\/wikipedia\/commons\/3\/32\/Caernarfon_Castle_Walls.jpg 1.5x, https:\/\/upload.wikimedia.org\/wikipedia\/commons\/3\/32\/Caernarfon_Castle_Walls.jpg 2x, https:\/\/upload.wikimedia.org\/wikipedia\/commons\/3\/32\/Caernarfon_Castle_Walls.jpg 3x, https:\/\/upload.wikimedia.org\/wikipedia\/commons\/3\/32\/Caernarfon_Castle_Walls.jpg 4x"},"classes":[]},{"id":3232,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2017\/10\/06\/usable-security-users-are-not-your-enemy\/","url_meta":{"origin":25110,"position":4},"title":"Usable Security &#8211; Users are not your enemy","author":"mw195","date":"6. October 2017","format":false,"excerpt":"Introduction Often overlooked, usability turned out to be one of the most important aspects of security. Usable systems enable users to accomplish their goals with increased productivity, less errors and security incidents. And It stills seems to be the exception rather than the rule. When it comes to software, many\u2026","rel":"","context":"In &quot;Secure Systems&quot;","block_context":{"text":"Secure Systems","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/system-designs\/secure-systems\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/10\/windows-uac.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":8704,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2019\/09\/03\/security-and-usability-how-to-design-secure-systems-people-can-use\/","url_meta":{"origin":25110,"position":5},"title":"Security and Usability: How to design secure systems people can use.","author":"Svenja Bussinger","date":"3. September 2019","format":false,"excerpt":"Security hit a high level of importance due to rising technological standards. Unfortunately it leads to a conflict with Usability as Security makes operations harder whereas Usability is supposed to make it easier. Many people are convinced that there is a tradeoff between them. This results in either secure systems\u2026","rel":"","context":"In &quot;Secure Systems&quot;","block_context":{"text":"Secure Systems","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/system-designs\/secure-systems\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/09\/ucd.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/09\/ucd.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/09\/ucd.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/09\/ucd.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/09\/ucd.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/09\/ucd.png?resize=1400%2C800&ssl=1 4x"},"classes":[]}],"jetpack_sharing_enabled":true,"authors":[{"term_id":894,"user_id":1113,"is_guest":0,"slug":"nikolai_thees","display_name":"Nikolai Thees","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/5b990cec9d9a8599214790e238f33e0a2050da2c6e5a99fa5d9f08db7304f7f6?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/25110","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/users\/1113"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/comments?post=25110"}],"version-history":[{"count":4,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/25110\/revisions"}],"predecessor-version":[{"id":25121,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/25110\/revisions\/25121"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/media\/25118"}],"wp:attachment":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/media?parent=25110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/categories?post=25110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/tags?post=25110"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/ppma_author?post=25110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}