SlideShare a Scribd company logo
1 of 34
Download to read offline
Overview of Fuchsia, a new operating system
Mickaël Salaün
French National Cybersecurity Agency (ANSSI)
September 23, 2019
Introduction
Started in 2015 and open-sourced in 2016, Fuchsia is mainly developed by Google, with some private
parts: roadmap and issue tracker (Atlassian).
What is Fuchsia?
OS targeting end-user devices (e.g. smartphone, laptop, IoT, extended reality devices?)
main goals: security, reliability and modularity
future-proof: designed to be updatable for a long time
ANSSI Overview of Fuchsia, a new operating system 2/17
Introduction
Started in 2015 and open-sourced in 2016, Fuchsia is mainly developed by Google, with some private
parts: roadmap and issue tracker (Atlassian).
What is Fuchsia?
OS targeting end-user devices (e.g. smartphone, laptop, IoT, extended reality devices?)
main goals: security, reliability and modularity
future-proof: designed to be updatable for a long time
Warning
Fuchsia is a moving target right now, this talk might be partially outdated soon.
A lot of new things are developed for this OS, but I don’t have time to cover all aspecs of them
in this talk.
ANSSI Overview of Fuchsia, a new operating system 2/17
Screenshot of Fuchsia: greeter
Screenshot of Fuchsia: apps
Major properties
Open and supported
mainly open-source
supported by a big company, already developing Android and Chrome OS
ANSSI Overview of Fuchsia, a new operating system 5/17
Major properties
Open and supported
mainly open-source
supported by a big company, already developing Android and Chrome OS
Support big existing ecosystems (WIP)
Flutter apps, Android apps, Chromecast apps
Linux VM (file transferts, Wayland bridge)
ANSSI Overview of Fuchsia, a new operating system 5/17
Major properties
Open and supported
mainly open-source
supported by a big company, already developing Android and Chrome OS
Support big existing ecosystems (WIP)
Flutter apps, Android apps, Chromecast apps
Linux VM (file transferts, Wayland bridge)
Connected
composable apps and task-centric
distributed data storage: Ledger
bridges with other systems (overnet/gRPC): iOS and Android
ANSSI Overview of Fuchsia, a new operating system 5/17
Implementation
IPC
Capability
reference (handle) to a kernel object (e.g. memory, interrupt, process)
associated with a set of access rights
unforgeable
communicable (e.g. through channels)
ANSSI Overview of Fuchsia, a new operating system 7/17
IPC
Capability
reference (handle) to a kernel object (e.g. memory, interrupt, process)
associated with a set of access rights
unforgeable
communicable (e.g. through channels)
FIDL
static definition of protocols (inspired by Chromium’s Mojo)
enables to transfert (typed) data and handles (including other protocols)
generates serialization and deserialization libraries
⇒ agnostic to the underlying languages
⇒ consistent and unique entry point to audit and test services
⇒ defines semantics (e.g. user-defined capability, revocation, state machine)
ANSSI Overview of Fuchsia, a new operating system 7/17
Zircon
Microkernel
well suited for security: small TCB (running in ring 0)
origin: Little Kernel (32-bits, no syscall, no MMU. . . )
64-bits only
150+ syscalls, mainly called with handles, mostly asynchronous
vDSO: mandatory entry point to the kernel
partial POSIX compatibility (e.g. no UID, no fork())
hypervisor, realtime
98K+ SLOC: subset of C++ 17 (e.g. no exception, casting and inheritance restrictions)
ANSSI Overview of Fuchsia, a new operating system 8/17
Zircon
Microkernel
well suited for security: small TCB (running in ring 0)
origin: Little Kernel (32-bits, no syscall, no MMU. . . )
64-bits only
150+ syscalls, mainly called with handles, mostly asynchronous
vDSO: mandatory entry point to the kernel
partial POSIX compatibility (e.g. no UID, no fork())
hypervisor, realtime
98K+ SLOC: subset of C++ 17 (e.g. no exception, casting and inheritance restrictions)
Drivers
shared libraries (ELF)
API/ABI defined with Banjo and Binding Instructions
composables (relative addresses/routes)
ANSSI Overview of Fuchsia, a new operating system 8/17
Modularity
Components
basic unit of executable software (e.g. app)
sandboxed: principle of least privilege
ANSSI Overview of Fuchsia, a new operating system 9/17
Modularity
Components
basic unit of executable software (e.g. app)
sandboxed: principle of least privilege
Packages
set of files, including component(s)
integrity checked with Merkle tree hash for each file, thanks to a content-addressed FS: blobfs
OTA updates: TUF and Omaha
ANSSI Overview of Fuchsia, a new operating system 9/17
Modularity
Components
basic unit of executable software (e.g. app)
sandboxed: principle of least privilege
Packages
set of files, including component(s)
integrity checked with Merkle tree hash for each file, thanks to a content-addressed FS: blobfs
OTA updates: TUF and Omaha
Customization and derivability
derivable board and product definitions with GN and Jiri
stable system ABI with FIDL
permissive licences (BSD-like)
ANSSI Overview of Fuchsia, a new operating system 9/17
Security mitigations
Good development practices
strict language guidelines, sane/safe API, tests, doc., code review
fuzzing (libraries, drivers, services): libFuzzer, syzkaller
sanitizers: Address (ASAN), Undefined Behavior, Coverage. . .
ANSSI Overview of Fuchsia, a new operating system 10/17
Security mitigations
Good development practices
strict language guidelines, sane/safe API, tests, doc., code review
fuzzing (libraries, drivers, services): libFuzzer, syzkaller
sanitizers: Address (ASAN), Undefined Behavior, Coverage. . .
Hardening
ASLR with PIC/PIE, full RELRO, stack protector (strong), SafeStack, W⊕X memory
strong typing (e.g. user space vs. kernel space addresses)
use of object destructors for security: auto-closing (pointer, handle, FD, lock), memory zeroing,
type-confusion checks (debug-only)
ANSSI Overview of Fuchsia, a new operating system 10/17
Development
Commits per month1
0
500
1000
1500
2000
2500
3000 Jul.2016
Jan.2017
Jul.2017
Jan.2018
Jul.2018
Jan.2019
Jul.2019
commits
1Generated from the public repositories (excluding bots) the 19th September, 2019.
ANSSI Overview of Fuchsia, a new operating system 12/17
Authors per month2
0
50
100
150
200
250
300
350
Jul.2016
Jan.2017
Jul.2017
Jan.2018
Jul.2018
Jan.2019
Jul.2019
authors
2Generated from the public repositories (excluding bots) the 19th September, 2019.
ANSSI Overview of Fuchsia, a new operating system 13/17
Commits per author3
1
10
100
1000
100 200 300 400 500 600 700 800
commits
authors
Googlers
others
3Generated from the public repositories (excluding bots) the 19th September, 2019.
ANSSI Overview of Fuchsia, a new operating system 14/17
Source codes
Fuchsia’s own code
Language Files Share
C++/C 11.7k+ 80%
Rust 1.5k+ 10%
Dart/Flutter 1.0k+ 7%
Go 400+ 3%
ANSSI Overview of Fuchsia, a new operating system 15/17
Source codes
Fuchsia’s own code
Language Files Share
C++/C 11.7k+ 80%
Rust 1.5k+ 10%
Dart/Flutter 1.0k+ 7%
Go 400+ 3%
Third parties
musl libc (stripped), jemalloc, scudo
e1000, iwlwifi, brcm80211, ath10k. . .
BoringSSL, Cairo, FreeType, ICU, Mesa, Roughtime, OpenSSH, Dash. . .
Chromium
ANSSI Overview of Fuchsia, a new operating system 15/17
Conclusion
Takeaway
Great properties
capability-based security OS with nice IPC specifications
very modular architecture
microkernel with stable device driver ABI
ANSSI Overview of Fuchsia, a new operating system 17/17
Takeaway
Great properties
capability-based security OS with nice IPC specifications
very modular architecture
microkernel with stable device driver ABI
Limitations
performance: balance with security, safety and patents (e.g. RCU?)
hardware (in)security can still undermine software (e.g. side channels, Spectre)
some coarse-grained rights (e.g. ZX_KIND_RSRC_ROOT)
no security proof of critical components
⇒ not stable yet: opportunity for experiments, feedbacks and improvements
ANSSI Overview of Fuchsia, a new operating system 17/17
Takeaway
Great properties
capability-based security OS with nice IPC specifications
very modular architecture
microkernel with stable device driver ABI
Limitations
performance: balance with security, safety and patents (e.g. RCU?)
hardware (in)security can still undermine software (e.g. side channels, Spectre)
some coarse-grained rights (e.g. ZX_KIND_RSRC_ROOT)
no security proof of critical components
⇒ not stable yet: opportunity for experiments, feedbacks and improvements
https://fuchsia.dev
ANSSI Overview of Fuchsia, a new operating system 17/17
Misc
Processes (partial)
bootsvc
component_manager
devcoordinator
zircon-drivers
devhost:sys - hid, rtc, ps2. . .
devhost:root - null, zero
devhost:misc - console, dmctl, ptmx sysinfo, acpi, pci. . .
devhost:pci#1 - display
devhost:pci#2 - block/fvm
devhost:pci#3 - ethernet
zircon-services
svchost
fshost
netsvc
virtual-console
blobfs:/blob
pkgfs
minfs:/data
fuchsia
appmgr (from /pkgfs) . . . *.cmx
ANSSI Overview of Fuchsia, a new operating system 2/6
File System(s)
Full root directories
bin
cache
config
blob
boot
bootsvc
data
dev
hub
install
pkg
pkgfs
svc
system
tmp
volume
ANSSI Overview of Fuchsia, a new operating system 3/6
Some syscalls
bti_create
cache_flush
channel_call
channel_create
channel_read
channel_read_etc
channel_write
clock_adjust
clock_get
cprng_add_entropy
cprng_draw
eventpair_create
fifo_create
futex_wait
guest_create
handle_close
interrupt_bind
iommu_create
ioports_request
job_create
job_set_policy
nanosleep
object_get_info
process_create
socket_create
system_mexec
task_kill
thread_create
ticks_get
vcpu_create
vmar_allocate
vmo_create
ANSSI Overview of Fuchsia, a new operating system 4/6
FIDL example (partial)
library fuchsia.overnet;
using fuchsia.overnet.protocol;
[ Discoverable ]
protocol Overnet {
ListPeers(uint64 last_seen_version ) -> (uint64 version , vector <Peer > peers );
RegisterService (string service_name , ServiceProvider provider );
ConnectToService (fuchsia.overnet.protocol.NodeId node , string service_name ,
handle <channel > chan );
};
struct Peer {
fuchsia.overnet.protocol.NodeId id;
bool is_self;
fuchsia.overnet.protocol. PeerDescription description;
};
ANSSI Overview of Fuchsia, a new operating system 5/6
Package: *.cmx
1.1k+ packages
"program ": {
"data ": "data/ermine"
},
"sandbox ": {
"pkgfs ": [ "packages" ],
"services ": [
"fuchsia.bluetooth.control.Control",
"fuchsia.cobalt. LoggerFactory ",
"fuchsia.fonts.Provider",
"fuchsia.logger.LogSink",
...
"fuchsia.modular.Clipboard",
...
"fuchsia.power. BatteryManager ",
"fuchsia.sys. Environment ",
"fuchsia.sys.Launcher",
...
],
"system ": [ "data/sysui" ]
}
ANSSI Overview of Fuchsia, a new operating system 6/6

More Related Content

What's hot

An introduction to open source software
An introduction to open source softwareAn introduction to open source software
An introduction to open source softwareSanjuktaBanik
 
Ubuntu phone engineering
Ubuntu phone engineeringUbuntu phone engineering
Ubuntu phone engineeringRex Tsai
 
Fedora os presentation
Fedora os presentationFedora os presentation
Fedora os presentationBadrul Alam
 
Fos sintro pres-dav
Fos sintro pres-davFos sintro pres-dav
Fos sintro pres-davParin Sharma
 
Developing FOSDEM Companion
Developing FOSDEM CompanionDeveloping FOSDEM Companion
Developing FOSDEM Companioncbeyls
 
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...Samsung Open Source Group
 
Fedora Operating System
Fedora Operating SystemFedora Operating System
Fedora Operating SystemLaiba Nasir
 
Introduction to FOSS
Introduction to FOSSIntroduction to FOSS
Introduction to FOSSmgamal87
 
Introduction to OpenBricks: an Embedded Linux Framework
Introduction to OpenBricks: an Embedded Linux FrameworkIntroduction to OpenBricks: an Embedded Linux Framework
Introduction to OpenBricks: an Embedded Linux FrameworkBenjamin Zores
 
6 th
6 th6 th
6 thErm78
 
Databased Software Engineering
Databased Software EngineeringDatabased Software Engineering
Databased Software EngineeringAnas R.
 
Windows 10 IoT Core, a real sample
Windows 10 IoT Core, a real sampleWindows 10 IoT Core, a real sample
Windows 10 IoT Core, a real sampleMirco Vanini
 
Everything You Need to Know About Linux Distros and Their Functionalities
Everything You Need to Know About Linux Distros and Their FunctionalitiesEverything You Need to Know About Linux Distros and Their Functionalities
Everything You Need to Know About Linux Distros and Their FunctionalitiesMariyamYouss
 

What's hot (20)

Ubuntu touch
Ubuntu touch Ubuntu touch
Ubuntu touch
 
An introduction to open source software
An introduction to open source softwareAn introduction to open source software
An introduction to open source software
 
Ubuntu phone engineering
Ubuntu phone engineeringUbuntu phone engineering
Ubuntu phone engineering
 
3rd
3rd3rd
3rd
 
GNU/LINUX - Day 1
GNU/LINUX - Day 1GNU/LINUX - Day 1
GNU/LINUX - Day 1
 
Fedora os presentation
Fedora os presentationFedora os presentation
Fedora os presentation
 
Fos sintro pres-dav
Fos sintro pres-davFos sintro pres-dav
Fos sintro pres-dav
 
Introduction To Open Source
Introduction To Open SourceIntroduction To Open Source
Introduction To Open Source
 
Developing FOSDEM Companion
Developing FOSDEM CompanionDeveloping FOSDEM Companion
Developing FOSDEM Companion
 
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
 
Fedora
FedoraFedora
Fedora
 
Fedora Operating System
Fedora Operating SystemFedora Operating System
Fedora Operating System
 
2nd
2nd2nd
2nd
 
Fedora Introduction
Fedora IntroductionFedora Introduction
Fedora Introduction
 
Introduction to FOSS
Introduction to FOSSIntroduction to FOSS
Introduction to FOSS
 
Introduction to OpenBricks: an Embedded Linux Framework
Introduction to OpenBricks: an Embedded Linux FrameworkIntroduction to OpenBricks: an Embedded Linux Framework
Introduction to OpenBricks: an Embedded Linux Framework
 
6 th
6 th6 th
6 th
 
Databased Software Engineering
Databased Software EngineeringDatabased Software Engineering
Databased Software Engineering
 
Windows 10 IoT Core, a real sample
Windows 10 IoT Core, a real sampleWindows 10 IoT Core, a real sample
Windows 10 IoT Core, a real sample
 
Everything You Need to Know About Linux Distros and Their Functionalities
Everything You Need to Know About Linux Distros and Their FunctionalitiesEverything You Need to Know About Linux Distros and Their Functionalities
Everything You Need to Know About Linux Distros and Their Functionalities
 

Similar to Embedded Recipes 2019 - Overview of Fuchsia, a new operating system

An Introduction to Linux
An Introduction to LinuxAn Introduction to Linux
An Introduction to Linuxanandvaidya
 
operating system hive1.pptx
operating system hive1.pptxoperating system hive1.pptx
operating system hive1.pptx40NehaPagariya
 
Kernel Recipes 2018 - CLIP OS: Building a defense-in-depth OS around Linux ke...
Kernel Recipes 2018 - CLIP OS: Building a defense-in-depth OS around Linux ke...Kernel Recipes 2018 - CLIP OS: Building a defense-in-depth OS around Linux ke...
Kernel Recipes 2018 - CLIP OS: Building a defense-in-depth OS around Linux ke...Anne Nicolas
 
Intro tounix
Intro tounixIntro tounix
Intro tounixdjprince
 
IntroToUnix.ppt.intro.to.linuxlinuxintroduction
IntroToUnix.ppt.intro.to.linuxlinuxintroductionIntroToUnix.ppt.intro.to.linuxlinuxintroduction
IntroToUnix.ppt.intro.to.linuxlinuxintroductionNagavelliMadhavi
 
Open Solaris 2008.05
Open Solaris 2008.05Open Solaris 2008.05
Open Solaris 2008.05Angad Singh
 
Intro tounix (1)
Intro tounix (1)Intro tounix (1)
Intro tounix (1)Raj Mirje
 
Bugs Ex Ante by Kristaps Dzonsons
Bugs Ex Ante by Kristaps DzonsonsBugs Ex Ante by Kristaps Dzonsons
Bugs Ex Ante by Kristaps Dzonsonseurobsdcon
 
Pearce Barry Resume
Pearce Barry ResumePearce Barry Resume
Pearce Barry ResumePearce Barry
 
ERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projectsERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projectsChristian Charreyre
 

Similar to Embedded Recipes 2019 - Overview of Fuchsia, a new operating system (20)

Foss Presentation
Foss PresentationFoss Presentation
Foss Presentation
 
An Introduction to Linux
An Introduction to LinuxAn Introduction to Linux
An Introduction to Linux
 
Group 3
Group 3Group 3
Group 3
 
operating system hive1.pptx
operating system hive1.pptxoperating system hive1.pptx
operating system hive1.pptx
 
Kernel Recipes 2018 - CLIP OS: Building a defense-in-depth OS around Linux ke...
Kernel Recipes 2018 - CLIP OS: Building a defense-in-depth OS around Linux ke...Kernel Recipes 2018 - CLIP OS: Building a defense-in-depth OS around Linux ke...
Kernel Recipes 2018 - CLIP OS: Building a defense-in-depth OS around Linux ke...
 
Ch1-Unix.pptx
Ch1-Unix.pptxCh1-Unix.pptx
Ch1-Unix.pptx
 
Advancement on embedded linux-v2
Advancement on embedded linux-v2Advancement on embedded linux-v2
Advancement on embedded linux-v2
 
Nelf2013
Nelf2013Nelf2013
Nelf2013
 
Intro tounix
Intro tounixIntro tounix
Intro tounix
 
Operating system
Operating systemOperating system
Operating system
 
IntroToUnix.ppt
IntroToUnix.pptIntroToUnix.ppt
IntroToUnix.ppt
 
IntroToUnix.ppt.intro.to.linuxlinuxintroduction
IntroToUnix.ppt.intro.to.linuxlinuxintroductionIntroToUnix.ppt.intro.to.linuxlinuxintroduction
IntroToUnix.ppt.intro.to.linuxlinuxintroduction
 
Open Solaris 2008.05
Open Solaris 2008.05Open Solaris 2008.05
Open Solaris 2008.05
 
Intro tounix (1)
Intro tounix (1)Intro tounix (1)
Intro tounix (1)
 
Bugs Ex Ante by Kristaps Dzonsons
Bugs Ex Ante by Kristaps DzonsonsBugs Ex Ante by Kristaps Dzonsons
Bugs Ex Ante by Kristaps Dzonsons
 
Intro tounix
Intro tounixIntro tounix
Intro tounix
 
Pearce Barry Resume
Pearce Barry ResumePearce Barry Resume
Pearce Barry Resume
 
Operating system
Operating systemOperating system
Operating system
 
Win 7 Tuto.ppt
Win 7 Tuto.pptWin 7 Tuto.ppt
Win 7 Tuto.ppt
 
ERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projectsERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projects
 

More from Anne Nicolas

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstAnne Nicolas
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIAnne Nicolas
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelAnne Nicolas
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyAnne Nicolas
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureAnne Nicolas
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Anne Nicolas
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataAnne Nicolas
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Anne Nicolas
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxAnne Nicolas
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialAnne Nicolas
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconAnne Nicolas
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureAnne Nicolas
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayAnne Nicolas
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerAnne Nicolas
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationAnne Nicolas
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingAnne Nicolas
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaAnne Nicolas
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedAnne Nicolas
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPAnne Nicolas
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Anne Nicolas
 

More from Anne Nicolas (20)

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream first
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are money
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and future
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less special
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops way
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmaker
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integration
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debugging
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDP
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
 

Recently uploaded

%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benonimasabamasaba
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in sowetomasabamasaba
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...masabamasaba
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxAnnaArtyushina1
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...masabamasaba
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 

Recently uploaded (20)

%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 

Embedded Recipes 2019 - Overview of Fuchsia, a new operating system

  • 1. Overview of Fuchsia, a new operating system Mickaël Salaün French National Cybersecurity Agency (ANSSI) September 23, 2019
  • 2. Introduction Started in 2015 and open-sourced in 2016, Fuchsia is mainly developed by Google, with some private parts: roadmap and issue tracker (Atlassian). What is Fuchsia? OS targeting end-user devices (e.g. smartphone, laptop, IoT, extended reality devices?) main goals: security, reliability and modularity future-proof: designed to be updatable for a long time ANSSI Overview of Fuchsia, a new operating system 2/17
  • 3. Introduction Started in 2015 and open-sourced in 2016, Fuchsia is mainly developed by Google, with some private parts: roadmap and issue tracker (Atlassian). What is Fuchsia? OS targeting end-user devices (e.g. smartphone, laptop, IoT, extended reality devices?) main goals: security, reliability and modularity future-proof: designed to be updatable for a long time Warning Fuchsia is a moving target right now, this talk might be partially outdated soon. A lot of new things are developed for this OS, but I don’t have time to cover all aspecs of them in this talk. ANSSI Overview of Fuchsia, a new operating system 2/17
  • 6. Major properties Open and supported mainly open-source supported by a big company, already developing Android and Chrome OS ANSSI Overview of Fuchsia, a new operating system 5/17
  • 7. Major properties Open and supported mainly open-source supported by a big company, already developing Android and Chrome OS Support big existing ecosystems (WIP) Flutter apps, Android apps, Chromecast apps Linux VM (file transferts, Wayland bridge) ANSSI Overview of Fuchsia, a new operating system 5/17
  • 8. Major properties Open and supported mainly open-source supported by a big company, already developing Android and Chrome OS Support big existing ecosystems (WIP) Flutter apps, Android apps, Chromecast apps Linux VM (file transferts, Wayland bridge) Connected composable apps and task-centric distributed data storage: Ledger bridges with other systems (overnet/gRPC): iOS and Android ANSSI Overview of Fuchsia, a new operating system 5/17
  • 10. IPC Capability reference (handle) to a kernel object (e.g. memory, interrupt, process) associated with a set of access rights unforgeable communicable (e.g. through channels) ANSSI Overview of Fuchsia, a new operating system 7/17
  • 11. IPC Capability reference (handle) to a kernel object (e.g. memory, interrupt, process) associated with a set of access rights unforgeable communicable (e.g. through channels) FIDL static definition of protocols (inspired by Chromium’s Mojo) enables to transfert (typed) data and handles (including other protocols) generates serialization and deserialization libraries ⇒ agnostic to the underlying languages ⇒ consistent and unique entry point to audit and test services ⇒ defines semantics (e.g. user-defined capability, revocation, state machine) ANSSI Overview of Fuchsia, a new operating system 7/17
  • 12. Zircon Microkernel well suited for security: small TCB (running in ring 0) origin: Little Kernel (32-bits, no syscall, no MMU. . . ) 64-bits only 150+ syscalls, mainly called with handles, mostly asynchronous vDSO: mandatory entry point to the kernel partial POSIX compatibility (e.g. no UID, no fork()) hypervisor, realtime 98K+ SLOC: subset of C++ 17 (e.g. no exception, casting and inheritance restrictions) ANSSI Overview of Fuchsia, a new operating system 8/17
  • 13. Zircon Microkernel well suited for security: small TCB (running in ring 0) origin: Little Kernel (32-bits, no syscall, no MMU. . . ) 64-bits only 150+ syscalls, mainly called with handles, mostly asynchronous vDSO: mandatory entry point to the kernel partial POSIX compatibility (e.g. no UID, no fork()) hypervisor, realtime 98K+ SLOC: subset of C++ 17 (e.g. no exception, casting and inheritance restrictions) Drivers shared libraries (ELF) API/ABI defined with Banjo and Binding Instructions composables (relative addresses/routes) ANSSI Overview of Fuchsia, a new operating system 8/17
  • 14. Modularity Components basic unit of executable software (e.g. app) sandboxed: principle of least privilege ANSSI Overview of Fuchsia, a new operating system 9/17
  • 15. Modularity Components basic unit of executable software (e.g. app) sandboxed: principle of least privilege Packages set of files, including component(s) integrity checked with Merkle tree hash for each file, thanks to a content-addressed FS: blobfs OTA updates: TUF and Omaha ANSSI Overview of Fuchsia, a new operating system 9/17
  • 16. Modularity Components basic unit of executable software (e.g. app) sandboxed: principle of least privilege Packages set of files, including component(s) integrity checked with Merkle tree hash for each file, thanks to a content-addressed FS: blobfs OTA updates: TUF and Omaha Customization and derivability derivable board and product definitions with GN and Jiri stable system ABI with FIDL permissive licences (BSD-like) ANSSI Overview of Fuchsia, a new operating system 9/17
  • 17. Security mitigations Good development practices strict language guidelines, sane/safe API, tests, doc., code review fuzzing (libraries, drivers, services): libFuzzer, syzkaller sanitizers: Address (ASAN), Undefined Behavior, Coverage. . . ANSSI Overview of Fuchsia, a new operating system 10/17
  • 18. Security mitigations Good development practices strict language guidelines, sane/safe API, tests, doc., code review fuzzing (libraries, drivers, services): libFuzzer, syzkaller sanitizers: Address (ASAN), Undefined Behavior, Coverage. . . Hardening ASLR with PIC/PIE, full RELRO, stack protector (strong), SafeStack, W⊕X memory strong typing (e.g. user space vs. kernel space addresses) use of object destructors for security: auto-closing (pointer, handle, FD, lock), memory zeroing, type-confusion checks (debug-only) ANSSI Overview of Fuchsia, a new operating system 10/17
  • 20. Commits per month1 0 500 1000 1500 2000 2500 3000 Jul.2016 Jan.2017 Jul.2017 Jan.2018 Jul.2018 Jan.2019 Jul.2019 commits 1Generated from the public repositories (excluding bots) the 19th September, 2019. ANSSI Overview of Fuchsia, a new operating system 12/17
  • 21. Authors per month2 0 50 100 150 200 250 300 350 Jul.2016 Jan.2017 Jul.2017 Jan.2018 Jul.2018 Jan.2019 Jul.2019 authors 2Generated from the public repositories (excluding bots) the 19th September, 2019. ANSSI Overview of Fuchsia, a new operating system 13/17
  • 22. Commits per author3 1 10 100 1000 100 200 300 400 500 600 700 800 commits authors Googlers others 3Generated from the public repositories (excluding bots) the 19th September, 2019. ANSSI Overview of Fuchsia, a new operating system 14/17
  • 23. Source codes Fuchsia’s own code Language Files Share C++/C 11.7k+ 80% Rust 1.5k+ 10% Dart/Flutter 1.0k+ 7% Go 400+ 3% ANSSI Overview of Fuchsia, a new operating system 15/17
  • 24. Source codes Fuchsia’s own code Language Files Share C++/C 11.7k+ 80% Rust 1.5k+ 10% Dart/Flutter 1.0k+ 7% Go 400+ 3% Third parties musl libc (stripped), jemalloc, scudo e1000, iwlwifi, brcm80211, ath10k. . . BoringSSL, Cairo, FreeType, ICU, Mesa, Roughtime, OpenSSH, Dash. . . Chromium ANSSI Overview of Fuchsia, a new operating system 15/17
  • 26. Takeaway Great properties capability-based security OS with nice IPC specifications very modular architecture microkernel with stable device driver ABI ANSSI Overview of Fuchsia, a new operating system 17/17
  • 27. Takeaway Great properties capability-based security OS with nice IPC specifications very modular architecture microkernel with stable device driver ABI Limitations performance: balance with security, safety and patents (e.g. RCU?) hardware (in)security can still undermine software (e.g. side channels, Spectre) some coarse-grained rights (e.g. ZX_KIND_RSRC_ROOT) no security proof of critical components ⇒ not stable yet: opportunity for experiments, feedbacks and improvements ANSSI Overview of Fuchsia, a new operating system 17/17
  • 28. Takeaway Great properties capability-based security OS with nice IPC specifications very modular architecture microkernel with stable device driver ABI Limitations performance: balance with security, safety and patents (e.g. RCU?) hardware (in)security can still undermine software (e.g. side channels, Spectre) some coarse-grained rights (e.g. ZX_KIND_RSRC_ROOT) no security proof of critical components ⇒ not stable yet: opportunity for experiments, feedbacks and improvements https://fuchsia.dev ANSSI Overview of Fuchsia, a new operating system 17/17
  • 29. Misc
  • 30. Processes (partial) bootsvc component_manager devcoordinator zircon-drivers devhost:sys - hid, rtc, ps2. . . devhost:root - null, zero devhost:misc - console, dmctl, ptmx sysinfo, acpi, pci. . . devhost:pci#1 - display devhost:pci#2 - block/fvm devhost:pci#3 - ethernet zircon-services svchost fshost netsvc virtual-console blobfs:/blob pkgfs minfs:/data fuchsia appmgr (from /pkgfs) . . . *.cmx ANSSI Overview of Fuchsia, a new operating system 2/6
  • 31. File System(s) Full root directories bin cache config blob boot bootsvc data dev hub install pkg pkgfs svc system tmp volume ANSSI Overview of Fuchsia, a new operating system 3/6
  • 33. FIDL example (partial) library fuchsia.overnet; using fuchsia.overnet.protocol; [ Discoverable ] protocol Overnet { ListPeers(uint64 last_seen_version ) -> (uint64 version , vector <Peer > peers ); RegisterService (string service_name , ServiceProvider provider ); ConnectToService (fuchsia.overnet.protocol.NodeId node , string service_name , handle <channel > chan ); }; struct Peer { fuchsia.overnet.protocol.NodeId id; bool is_self; fuchsia.overnet.protocol. PeerDescription description; }; ANSSI Overview of Fuchsia, a new operating system 5/6
  • 34. Package: *.cmx 1.1k+ packages "program ": { "data ": "data/ermine" }, "sandbox ": { "pkgfs ": [ "packages" ], "services ": [ "fuchsia.bluetooth.control.Control", "fuchsia.cobalt. LoggerFactory ", "fuchsia.fonts.Provider", "fuchsia.logger.LogSink", ... "fuchsia.modular.Clipboard", ... "fuchsia.power. BatteryManager ", "fuchsia.sys. Environment ", "fuchsia.sys.Launcher", ... ], "system ": [ "data/sysui" ] } ANSSI Overview of Fuchsia, a new operating system 6/6