presentations/linux-distros/index.md

302 lines
4.6 KiB
Markdown

---
_class: lead
paginate: true
backgroundColor: #fff
---
<style>
/* Changed in Marp 4.0.0. Re-center. */
section.lead {
display: flex;
}
div.two-columns {
column-count: 2;
}
</style>
![](img/logo-and-typemark.svg)
---
# Anton Livaja
Co-Founder & Security Engineer at Distrust (https://distrust.co)
* Firm specializing in high assurance security consulting and engineering.
* Clients: blockchain labs and companies, fin-tech, hedge funds, exchanges,
electrical grid operators, healthcare providers, etc.
---
# Trends in Supply Chain Security
"[Supply chain threats increased by 1300% between 2020 and 2023]"
- 2025 Software Supply Chain Security Report by ReversingLabs.
---
# Linux Usage Statistics
* 70%+ servers run Linux
* ~5% desktop / laptop users use Linux
* ~12 widely used Linux distributions
---
# Open Source vs Proprietary
* High risk environments require verifiability
* Proprietary software = security through obscurity
---
# What is a "Linux Distribution"
* Linux kernel
* Software "packages"
* Package manager
* But they are not all equal...
---
# Linux Distribution Security
* What machine are packages built on?
* Who maintains your Linux packages?
* How are the packages delivered?
---
# Anatomy of a Package
* Mainainer creates a "package"
* The package is reviewed
* A centralized server builds the binary and signs it
---
# Underutilized Strategies
* Reproducible / deterministic builds
* Full source bootstrapping
* Cryptographic signing
---
# Reproducibility / Determinism
---
![](img/SolarWinds-logo.png)
---
![no-tamper-evidence](https://antonlivaja.com/images/binary-exploit-2.png)
---
![height:600px](https://antonlivaja.com/images/expanded-3-hashes.png)
---
# How Deep Do We Have to Go?
* Compiler
* Build and Runtime Environment
* Operating System + Packages
* Additional CLI / Tools
* Software Application
* First Party Code
* Third Party Code
---
# Full Source Bootstrapping
---
![](img/xcodeghost.jpg)
---
# Who Compiles the Compiler?
* Mostly downloaded as a binary
* Even if the compiler is built from source, usually another compiler is used to do so
* This means there is no clear providence to how we went from nothing to having a usable compiler
---
# Bootstrapping Compilers
* Consists of "stages", and hundreds of steps of starting from a human auditable rudimentary compiler and building up all the way up to a modern compiler
* Bootstrapping programming languages
---
# Cryptographic Signing
* Code signing
* Artifact signing
* Multi-person signing
---
![](img/xzbackdoor.png)
---
# [Stageˣ]
Open source Linux Distribution
* Minimal, bootstrapped, hermetic, and deterministic
---
![](img/stagex-chart-0.png)
---
![](img/stagex-chart-1.png)
---
# Full source bootstrapped from Stage 0
From a <190 byte compiler written in machine code, StageX bootstraps all the
compiler tools necessary to build the distribution, 100% deterministically.
- Stage 0: Getting a basic C compiler on x86 from hex0
- Stage 1: Building GCC for x86
- Stage 2: Upgrading GCC for x86_64
- Stage 3: Building up-to-date toolchains
- Stage X: Shipping the software you know and love
---
# A Rust Example
```dockerfile
FROM stagex/pallet-rust@sha256:b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c AS build
ADD . /src
WORKDIR /src
ARG TARGET x86_64-unknown-linux-musl
RUN cargo build --release --target ${TARGET}
FROM scratch
COPY --from=build /app/target/${TARGET}/release/hello /usr/bin/hello
CMD ["/usr/bin/hello"]
```
---
# All packages in StageX are:
* Built using hash-locked sources
* Confirmed reproducible by multiple developers
* Signed by multiple release maintainers
---
# Pallets
StageX offers prebuilt containers including all the packages necessary to run some of our most used software, such as:
- `rust`
- `go`
- `nodejs`
- `nginx`
- `redis`
- `postgres`
---
![](img/airgap-os.png)
---
# QubesOS
---
# Key Takeaways
* Full-source bootstrap
* Use bit for bit determinism
* Leverage cryptographic signing
---
# What's Next?
* Adding SBOM
* Packaging more software
* Fully automating software updates
* Additional container runtimes like Podman and Kaniko
* Additional chip architecture support such as ARM and RISC-V
---
# How You Can Help
* Provide feedback
* Support with development efforts
* Become a sponsor
---
# Links
**Email**: anton@distrust.co / sales@distrust.co
**Matrix Chat**: #stagex:matrix.org
**Docker Hub**: https://hub.docker.com/u/stagex
**Git Repo**: https://codeberg.org/stagex/stagex
**AirgapOS**: https://git.distrust.co/public/airgap
**EnclaveOS**: https://git.distrust.co/public/enclaveos