Analyse de sécurité de logiciels système par typage statique

Les noyaux de systèmes d'exploitation manipulent des données fournies par les programmes utilisateur via les appels système. Si elles sont manipulées sans prendre une attention particulière, une faille de sécurité connue sous le nom de Confused Deputy Problem peut amener à des fuites de données...

Full description

Bibliographic Details
Main Author: Millon, Etienne
Other Authors: Paris 6, Chailloux, Emmanuel
Format: Thesis
Language:French
Published: 2014
Subjects:
004
Online Access:http://www.theses.fr/2014PA066120/document
id ftstarfr:2014PA066120
record_format openpolar
spelling ftstarfr:2014PA066120 2023-05-15T18:32:46+02:00 Analyse de sécurité de logiciels système par typage statique Security analysis of system code using static typing Millon, Etienne Paris 6 Chailloux, Emmanuel 2014-07-10 http://www.theses.fr/2014PA066120/document fr fre http://www.theses.fr/2014PA066120/document Open Access http://purl.org/eprint/accessRights/OpenAccess Sécurité Typage Isolation Linux Pointeurs utilisateur Mémoire Typing Security 004 Electronic Thesis or Dissertation Text 2014 ftstarfr 2021-04-20T23:07:48Z Les noyaux de systèmes d'exploitation manipulent des données fournies par les programmes utilisateur via les appels système. Si elles sont manipulées sans prendre une attention particulière, une faille de sécurité connue sous le nom de Confused Deputy Problem peut amener à des fuites de données confidentielles ou l'élévation de privilèges d'un attaquant. Le but de cette thèse est d'utiliser des techniques de typage statique afin de détecter les manipulations dangereuses de pointeurs contrôlés par l'espace utilisateur. La plupart des systèmes d'exploitation sont écrits dans le langage C. On commence par en isoler un sous-langage sûr nommé Safespeak. Sa sémantique opérationnelle et un premier système de types sont décrits, et les propriétés classiques de sûreté du typage sont établies. La manipulation des états mémoire est formalisée sous la forme de lentilles bidirectionnelles, qui permettent d'encoder les mises à jour partielles des états et variables. Un première analyse sur ce langage est décrite, permettant de distinguer les entiers utilisés comme bitmasks, qui sont une source de bugs dans les programmes C. Operating system kernels need to manipulate data that comes from user programs through system calls. If it is done in an incautious manner, a security vulnerability known as the Confused Deputy Problem can lead to information disclosure or privilege escalation. The goal of this thesis is to use static typing to detect the dangerous uses of pointers that are controlled by userspace. Most operating systems are written in the C language. We start by isolating Safespeak, a safe subset of it. Its operational semantics as well as a type system are described, and the classic properties of type safety are established. Memory states are manipulated using bidirectional lenses, which can encode partial updates to states and variables. A first analysis is described, that identifies integers used as bitmasks, which are a common source of bugs in C programs. Then, we add to Safespeak the notion of pointers coming from userspace. This breaks type safety, but it is possible to get it back by assigning a different type to the pointers that are controlled by userspace. This distinction forces their dereferencing to be done in a controlled fashion. This technique makes it possible to detect two bugs in the Linux kernel: the first one is in a video driver for an AMD video card, and the second one in the ptrace system call for the Blackfin architecture. Thesis The Pointers theses.fr
institution Open Polar
collection theses.fr
op_collection_id ftstarfr
language French
topic Sécurité
Typage
Isolation
Linux
Pointeurs utilisateur
Mémoire
Typing
Security
004
spellingShingle Sécurité
Typage
Isolation
Linux
Pointeurs utilisateur
Mémoire
Typing
Security
004
Millon, Etienne
Analyse de sécurité de logiciels système par typage statique
topic_facet Sécurité
Typage
Isolation
Linux
Pointeurs utilisateur
Mémoire
Typing
Security
004
description Les noyaux de systèmes d'exploitation manipulent des données fournies par les programmes utilisateur via les appels système. Si elles sont manipulées sans prendre une attention particulière, une faille de sécurité connue sous le nom de Confused Deputy Problem peut amener à des fuites de données confidentielles ou l'élévation de privilèges d'un attaquant. Le but de cette thèse est d'utiliser des techniques de typage statique afin de détecter les manipulations dangereuses de pointeurs contrôlés par l'espace utilisateur. La plupart des systèmes d'exploitation sont écrits dans le langage C. On commence par en isoler un sous-langage sûr nommé Safespeak. Sa sémantique opérationnelle et un premier système de types sont décrits, et les propriétés classiques de sûreté du typage sont établies. La manipulation des états mémoire est formalisée sous la forme de lentilles bidirectionnelles, qui permettent d'encoder les mises à jour partielles des états et variables. Un première analyse sur ce langage est décrite, permettant de distinguer les entiers utilisés comme bitmasks, qui sont une source de bugs dans les programmes C. Operating system kernels need to manipulate data that comes from user programs through system calls. If it is done in an incautious manner, a security vulnerability known as the Confused Deputy Problem can lead to information disclosure or privilege escalation. The goal of this thesis is to use static typing to detect the dangerous uses of pointers that are controlled by userspace. Most operating systems are written in the C language. We start by isolating Safespeak, a safe subset of it. Its operational semantics as well as a type system are described, and the classic properties of type safety are established. Memory states are manipulated using bidirectional lenses, which can encode partial updates to states and variables. A first analysis is described, that identifies integers used as bitmasks, which are a common source of bugs in C programs. Then, we add to Safespeak the notion of pointers coming from userspace. This breaks type safety, but it is possible to get it back by assigning a different type to the pointers that are controlled by userspace. This distinction forces their dereferencing to be done in a controlled fashion. This technique makes it possible to detect two bugs in the Linux kernel: the first one is in a video driver for an AMD video card, and the second one in the ptrace system call for the Blackfin architecture.
author2 Paris 6
Chailloux, Emmanuel
format Thesis
author Millon, Etienne
author_facet Millon, Etienne
author_sort Millon, Etienne
title Analyse de sécurité de logiciels système par typage statique
title_short Analyse de sécurité de logiciels système par typage statique
title_full Analyse de sécurité de logiciels système par typage statique
title_fullStr Analyse de sécurité de logiciels système par typage statique
title_full_unstemmed Analyse de sécurité de logiciels système par typage statique
title_sort analyse de sécurité de logiciels système par typage statique
publishDate 2014
url http://www.theses.fr/2014PA066120/document
genre The Pointers
genre_facet The Pointers
op_relation http://www.theses.fr/2014PA066120/document
op_rights Open Access
http://purl.org/eprint/accessRights/OpenAccess
_version_ 1766216936665907200