Code Injection Attacks on Harvard-Architecture Devices

Je vous conseille la lecture d’un article cosigné par Aurélien Francillon et Claude Castelluccia, tous les deux chercheurs à l’INRIA, montrant la faisabilité d’une attaque par injection de code sur un appareil utilisant une architecture de type Harvard. L’architecture Harvard est réputée protégée contre ce genre d’attaque car la mémoire programme et la mémoire vive sont physiquement séparées. Pour les besoins de l’article, les chercheurs attaquent un réseau de capteurs construits autour d’un micro-contrôleur AVR d’Atmel. Ils utilisent certes une faille qui semble évidente (buffer overflow), mais la mise en œuvre de l’attaque est impressionnante ! Ils font surtout la démonstration que l’infection peut être définitive et pas simplement temporaire comme l’avaient montré de précédentes publications. Une fois un capteur infesté, l’infection peut se propager d’elle-même aux autres capteurs et l’attaquant prend ainsi le contrôle du réseau tout entier.

ABSTRACT

Harvard architecture CPU design is common in the embedded world.
Examples of Harvard-based architecture devices are the Mica family
of wireless sensors. Mica motes have limited memory and can process
only very small packets. Stack-based buffer overflow techniques that
inject code into the stack and then execute it are therefore not
applicable. It has been a common belief that code injection is impossible
on Harvard architectures. This paper presents a remote code injection
attack for Mica sensors. We show how to exploit program vulnerabilities
to permanently inject any piece of code into the program memory
of an Atmel AVR-based sensor. To our knowledge, this is the first result
that presents a code injection technique for such devices.
Previous work only succeeded in injecting data or performing
transient attacks. Injecting permanent code is more powerful since
the attacker can gain full control of the target sensor.
We also show that this attack can be used to inject a worm that can propagate
through the wireless sensor network
and possibly create a sensor botnet. Our attack combines different techniques
such as return oriented programming and fake stack injection.
We present implementation details and suggest some counter-measures.

Code Injection Attacks on Harvard-Architecture Devices, par Aurélien Francillon et Claude Castelluccia.

Publicités

Une Réponse

  1. Pingback: Pourquoi bannir gets() de ses programmes C ? | Pierre Gradot

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s