|
[Mécanisme de sécurité Microsoft Windows XP/VISTA – Partie 1] Présentation des problématiques
Par Rédaction,
secuobs.com
Le 18/12/2007
Résumé : Présentation des dépassements de mémoire tampon (heap, malloc, HeapAlloc, integer, stack, off-by-one) et conseils pour programmer des applications de façon sécurisée sur les systèmes d'exploitation Microsoft Windows. - Lire l'article
La traduction française littérale de Buffer overflow est dépassement de tampon, cela signifie concrètement que l'on provoque un dépassement de la mémoire alloué par le programme en train de s'exécuter. Par exemple, si un programmeur décide d’allouer 64 octets, et que par un moyen quelconque, un attaquant parvient à écrire plus de 64 octets, on appelle ce processus d'attaque un buffer overflow que l'on peut ensuite détailler en différentes catégories telles que les stack overflow, les heap overflow, les integrer overflow, les off-by-one, etc …
Les deux grandes catégories de buffer overflow sont ceux de la stack (pile) et ceux de la heap (tas). Un buffer sur la stack est définie par un pointeur dans la fonction courante en fonction des registres EBP ou ESP tandis qu'un buffer de type heap est définie par des fonctions, généralement malloc() ou HeapAlloc().
Le mot integer signifie entier en anglais ; un integer overflow exploite le fait que les entiers ne sont définis que sur les architectures 32bits ; par exemple int i = 0xFFFFFFFF + 1 ; ne vaudra pas 0x100000000 mais il vaudra 0. Voici un exemple illustrant un buffer overflow sur la stack qui reste basique dans son exploitation :
int main( int argc, char **argv)
{
BYTE szBuffer[64] ; // Alloue 64 octects sur la stack
strcpy(szBuffer, argv[1] ) ; // Copie l’argument d’une taille indéterminée vers le buffer.
return 1 ;
}
Il faut savoir qu’un buffer défini sur la stack se situe a une distance souvent minime de l’adresse de retour utilisée lors de la fin d'exécution de la fonction. L’article suivant sur MSDN ( lien ) explique en détail l’organisation de la stack.
Si on envoie un argument de plus de 64 octets alors on provoque le buffer overflow. C'est-à-dire que l’on dépasse la taille indiquée lors de la définition du buffer. Ce qui ouvre potentiellement une porte vers l’adresse de retour. Comme on peut le constater sur le site MSDN de Microsoft, l’usage des fonctions suivantes n’est de toute façon pas conseillé :
strcpy, wcscpy, _mbscpy
Copy a string. These functions are deprecated because more secure versions are available; see strcpy_s, wcscpy_s, _mbscpy_s.
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l
Copy characters of one string to another. These functions are deprecated because more secure versions are available; see strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l.
Les « nouvelles » fonctions permettent de définir la taille maximale à copier ; elles sont détaillées à l’adresse suivante ( lien ) :
int main(int argc, char **argv)
{
BYTE szBuffer[64];
strcpy_s(szBuffer, sizeof(szBuffer), argv[1]);
return 1;
}
On remarque l’apparition d’un nouvel argument définissant la taille du buffer, c'est-à-dire la taille maximale à copier. Évitant ainsi dans le cas présenté de copier plus de 64 octets. Voilà comment Microsoft souhaiterait que l'ensemble des programmeurs écrivent leurs codes ; pour obtenir plus de détails sur ces fonctions, il est conseillé de consulter les documentations relatives sur le même site MSDN :
- strcpy, wcscpy, _mbscpy ( lien ),
- strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l ( lien )
- strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l ( lien )
Autres ressources dans ce dossier :
[Mécanisme de sécurité Microsoft Windows XP/VISTA – Partie 2] /GS et cookie – lien
[Mécanisme de sécurité Microsoft Windows XP/VISTA – Partie 3] SafeSEH – lien
[Mécanisme de sécurité Microsoft Windows XP/VISTA – Partie 4] Address Space Layout Randomization, No eXecution et User Account Control – lien
[Mécanisme de sécurité Microsoft Windows XP/VISTA – Partie 5] Patchguard, rootkit, hibernation et webographie – lien
- Article suivant : [Mécanisme de sécurité Microsoft Windows XP/VISTA – Partie 2] /GS et cookie
- Article précédent : BSoD TV, le podcast vidéo iTunes/Miro sur le hacking, épisode 18 disponible
- Article suivant dans la catégorie Tutoriels : [Mécanisme de sécurité Microsoft Windows XP/VISTA – Partie 2] /GS et cookie
- Article précédent dans la catégorie Tutoriels : [Renforcement des fonctions de sécurité du noyau Linux – Partie 6] Netfilter, conclusions & webographie
Mini-Tagwall des articles publiés sur SecuObs : | | | | sécurité, exploit, windows, attaque, outil, microsoft, réseau, audit, metasploit, vulnérabilité, système, virus, internet, usbsploit, données, source, linux, protocol, présentation, scanne, réseaux, scanner, bluetooth, conférence, reverse, shell, meterpreter, vista, rootkit, détection, mobile, security, malicieux, engineering, téléphone, paquet, trames, https, noyau, utilisant, intel, wishmaster, google, sysun, libre |
Mini-Tagwall de l'annuaire video : | | | | curit, security, biomet, metasploit, biometric, cking, password, windows, botnet, defcon, tutorial, crypt, xploit, exploit, lockpicking, linux, attack, wireshark, vmware, rootkit, conference, network, shmoocon, backtrack, virus, conficker, elcom, etter, elcomsoft, server, meterpreter, openvpn, ettercap, openbs, iphone, shell, openbsd, iptables, securitytube, deepsec, source, office, systm, openssh, radio |
Mini-Tagwall des articles de la revue de presse : | | | | security, microsoft, windows, hacker, attack, network, vulnerability, google, exploit, malware, internet, remote, iphone, server, inject, patch, apple, twitter, mobile, virus, ebook, facebook, vulnérabilité, crypt, source, linux, password, intel, research, virtual, phish, access, tutorial, trojan, social, privacy, firefox, adobe, overflow, office, cisco, conficker, botnet, pirate, sécurité |
Mini-Tagwall des Tweets de la revue Twitter : | | | | security, linux, botnet, attack, metasploit, cisco, defcon, phish, exploit, google, inject, server, firewall, network, twitter, vmware, windows, microsoft, compliance, vulnerability, python, engineering, source, kernel, crypt, social, overflow, nessus, crack, hacker, virus, iphone, patch, virtual, javascript, malware, conficker, pentest, research, email, password, adobe, apache, proxy, backtrack |
|
|
|
|
|