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

The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 

Recently uploaded (20)

The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 

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