Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

YouTube

Making C Less Dangerous in the Linux Kernel

linux.conf.au via YouTube

Overview

Google, IBM & Meta Certificates – 40% Off
One Coursera Plus subscription covers most Professional Certificates on Coursera.
Unlock All Certificates
This presentation examines how Linux kernel developers reduce security flaws arising from C’s undefined behavior and other weaknesses. It covers variable-length array removal, initialized stack variables, bounds checking, safe arithmetic overflow handling, and control-flow integrity.

Syllabus

Intro
Making C Less Dangerous in the Linux kernel
Kernel Self Protection Project
C as a fancy assembler: almost machine code
C as a fancy assembler: undefined behavior
Variable Length Arrays and alloca () are bad
Variable Length Arrays are slow
Variable Length Arrays: stop it
Switch case fall-through: new "statement"
Always-initialized local variables: just do it
Always-initialized local variables: switch gotcha
Arithmetic overflow detection: gcc?
Arithmetic overflow detection: Clang :
Bounds checking: explicit checking is slow
Instead of sprintf(): scnprintf()
Instead of memcpy: uhhh ... be ... careful?
Bounds checking: memory tagging :
Control Flow Integrity: indirect calls
CFI, forward edges: just call pointers
CFI, forward edges: enforce prototype :
CFI, backward edges: two stacks
CFI, backward edges: shadow call stack
CFI, backward edges: hardware support
Where is the Linux kernel now?
Challenges in Kernel Security Development

Taught by

linux.conf.au

Reviews

Start your review of Making C Less Dangerous in the Linux Kernel

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.