Mémoire non exécutable : vers le Return Oriented Programming (ROP)

Magazine
Marque
MISC
Numéro
51
|
Mois de parution
septembre 2010
|
Domaines


Résumé
Depuis quelques années, l'exploitation des failles applicatives, en particulier des débordements de tampons, est rendue de plus en plus difficile par les protections mises en place dans les divers systèmes d'exploitation. En particulier, il est de plus en plus rare de pouvoir exécuter des données sur la pile. Dans la première partie de l'article, nous rappelons les techniques de retour dans la libc, permettant de contourner ces protections, en particulier lorsque les arguments des fonctions, ainsi que leur adresse (ASCII Armor), contiennent des octets nuls. Nous voyons dans un second temps comment automatiser la création de shellcodes dans une pile non exécutable, à l'aide d'une preuve de concept en Python qui interface des outils déjà existants, tels que objdump ou ldd. Enfin, nous présentons les évolutions de ces techniques et les progrès actuels dans le domaine du « Return Oriented Programming », dont l'objectif est d'aller plus loin qu'un simple chaînage de fonctions, en proposant par exemple des boucles ou des branchements.

La suite est réservée aux abonnés. Déjà abonné ? Se connecter

Sur le même sujet

Un jeu de logique en Python

Magazine
Marque
GNU/Linux Magazine
Numéro
236
|
Mois de parution
avril 2020
|
Domaines
Résumé

Dans l’univers des jeux de cartes, beaucoup font plus ou moins appel à la logique. Nous vous présentons ici un jeu directement basé sur la logique propositionnelle. Nous nous proposons d’en présenter les principales caractéristiques et de détailler les algorithmes principaux de l’implémentation en Python.

SpaceVim, une distribution de Vim prête à l'emploi

Magazine
Marque
GNU/Linux Magazine
Numéro
236
|
Mois de parution
avril 2020
|
Domaines
Résumé

Sans aucun lien avec Space Invaders, SpaceVim (justement sans espace entre Space et Vim) vous propose une nouvelle façon de gérer les plug-ins et la configuration de votre éditeur favori. Penchons-nous sur cette solution, pour savoir si le grand ménage de notre .vimrc doit avoir lieu.

Accès aux attributs et méthodes en Python : une autre voie est-elle possible ?

Magazine
Marque
GNU/Linux Magazine
Numéro
236
|
Mois de parution
avril 2020
|
Domaines
Résumé

Vous vous interrogez toujours sur la gestion des accès aux attributs et méthodes de vos objets Python ? Vous aimeriez écrire du code plus strict, mais vous vous demandez si cela serait vraiment pertinent ? Cet article devrait vous amener des pistes de réflexion.

Par le même auteur

Python Simple Smartcard Interpreter

Magazine
Marque
MISC
Numéro
52
|
Mois de parution
novembre 2010
|
Domaines
Résumé
Alors que les cartes à puce sont de plus en plus présentes dans notre environnement, et que les lecteurs, avec ou sans contact, sont de moins en moins chers, peu d'outils permettent aux usagers d'examiner le contenu de leurs cartes. Dans cet article, nous présentons tout d'abord la philosophie et l’objectif de notre outil libre, PSSI (Python Simple Smartcard Interpreter). Nous rappelons ensuite les bases concernant la communication avec une carte à puce, afin de comprendre ce dont l’outil permet de s’abstraire. Enfin, nous présentons un cas concret d’utilisation du logiciel pour lire une carte SIM.

Mémoire non exécutable : vers le Return Oriented Programming (ROP)

Magazine
Marque
MISC
Numéro
51
|
Mois de parution
septembre 2010
|
Domaines
Résumé
Depuis quelques années, l'exploitation des failles applicatives, en particulier des débordements de tampons, est rendue de plus en plus difficile par les protections mises en place dans les divers systèmes d'exploitation. En particulier, il est de plus en plus rare de pouvoir exécuter des données sur la pile. Dans la première partie de l'article, nous rappelons les techniques de retour dans la libc, permettant de contourner ces protections, en particulier lorsque les arguments des fonctions, ainsi que leur adresse (ASCII Armor), contiennent des octets nuls. Nous voyons dans un second temps comment automatiser la création de shellcodes dans une pile non exécutable, à l'aide d'une preuve de concept en Python qui interface des outils déjà existants, tels que objdump ou ldd. Enfin, nous présentons les évolutions de ces techniques et les progrès actuels dans le domaine du « Return Oriented Programming », dont l'objectif est d'aller plus loin qu'un simple chaînage de fonctions, en proposant par exemple des boucles ou des branchements.