Allocation/desallocation de RAM sur PC - Page 2

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From French to

Threaded View
Re: Allocation/desallocation de RAM sur PC
Mathieu Chouquet-Stringer se fendait de cette prose :

Quoted text here. Click to load it

On peut très facilement programmer de telle sorte que la clé ne soit pas
clairement stockée en mémoire. C'est pas infaillible mais ça peut aider.

--
LeLapin

Re: Allocation/desallocation de RAM sur PC
Quoted text here. Click to load it

On peut savoir sous quel OS ?

À part les petits noyaux embarqués qui n'ont pas vocation
à assurer une politique de sécurité multi-utilisateurs,
aucun OS sérieux ne va transmettre les données d'un processus
à un autre. Au pire, selon l'implémentation de malloc() et
la taille demandée, un processus pourra retomber sur ses
propres données.

Parmi les risques plus sérieux, il y a le swap et la fonction
d'hibernation sur disque des ordinateurs portables.

Et toutes les parades paraissent un peu futiles quand on sait
qu'on peut débrancher des barrettes de RAM et relire leur
contenu pendant 10 minutes, simplement en les refroidissant:
http://en.wikipedia.org/wiki/Cold_boot_attack

http://www.youtube.com/watch?v=JDaicPIgn9U


AC

Re: Allocation/desallocation de RAM sur PC
On Aug 28, 5:22 pm, "A. Caspis" :

Quoted text here. Click to load it

Au moins Windows XP. Je pense qu'il en etait de meme
sous Windows 2000 et Windows 98. Je n'ai pas fait de test
sous Windows NT. Pour Vista je ne sais pas ce qu'il en est.

Quoted text here. Click to load it

Il ne s'agit pas de transmettre des donnees entre processus,
mais du fait que si on efface pas explicitement la memoire avant
de la liberer, les donnees contenues dans celles-ci *pourraient*
etre accessibles des que la meme zone sera allouee.
D'ailleurs ce n'est pas le boulot du systeme de gerer cela,
c'est en principe au programmeur de savoir ce qu'il fait.

Quoted text here. Click to load it

Pas forcement le meme processus ni le meme programme.

Quoted text here. Click to load it

Oui.


Dans le cas que je propose le PC n'est pas
accessible materiellement pour ce genre d'attaque.

Re: Allocation/desallocation de RAM sur PC
Quoted text here. Click to load it

Pour XP, franchement, j'ai du mal à y croire. Vous devriez
peut-être publier vos programmes de test.

Quoted text here. Click to load it

Si un processus écrit des données en RAM, et si l'OS peut donner
accès à ces données à un autre processus un peu plus tard par le
jeu des mécanismes d'allocation, j'appelle ça une transmission.

Quoted text here. Click to load it

Pas d'accord ! Un OS moderne comme XP qui gère des permissions
multi-utilisateurs et assure l'isolation logique entre processus
doit absolument interdire ce genre de fuite d'information.

AC

Re: Allocation/desallocation de RAM sur PC
On Aug 29, 12:26 pm, "A. Caspis" :

Quoted text here. Click to load it

Pourtant je t'assure que je l'ai bien constatE9%.

Quoted text here. Click to load it

Ok - voici un exemple sous DOS :
http://cjoint.com/data/iDqKwCjTnb_testmem.zip

Quoted text here. Click to load it

Nenni : une transmission c'est l'envoi *volontaire* de donnees
precises entre deux points. Ici il s'agit de memoire qui a ete
ecrite par un processus, puis liberee sans avoir ete effacee.
Une fois liberee cette memoire redevient disponible pour une
nouvelle allocation, quel que soit le processus demandeur.
Le systeme n'a pas a gerer le contenu de la memoire, mais
juste a fournir un pointeur/handle sur la zone memoire allouee.

Quoted text here. Click to load it

Oui je suis bien d'accord sur le principe, mais dans le cas qui nous
concerne c'est au programmeur d'effacer la memoire avant de la
liberer.
Le systeme n'est pas concerne par le *contenu* de la memoire, mais
seulement par la mise a disponibilite et la liberation de celle-ci.

Re: Allocation/desallocation de RAM sur PC
Quoted text here. Click to load it

Le source me semble OK (pour le peu que je connais de l'API
Windows). Est-ce que quelqu'un peut tester et confirmer que
ça ressuscite des données potentiellement confidentielles ?
Moi je n'ai pas de compilo et je n'exécute pas le premier
EXE venu :-)

Quoted text here. Click to load it

OK pour la nuance sémantique.

Quoted text here. Click to load it

Non, nous ne sommes pas d'accord. Sur un PC Windows, le
programmeur n'a pas les moyens de garantir que son programme
effacera ses données sensibles en toutes circonstances
(le programme peut être interrompu brutalement pour tout un
tas de raisons).

Un OS qui se prétend multi-utilisateur ne doit pas allouer
de la mémoire qui contient encore des données d'un autre
processus. Si c'est un bug de XP, j'ai du mal à croire qu'il
n'a pas déjà été découvert et exploité à des fins malhonnêtes.
Mais bon, seule l'expérimentation aura le dernier mot.

AC

Re: Allocation/desallocation de RAM sur PC

4a99506e$0$25354$ snipped-for-privacy@news.free.fr...
Quoted text here. Click to load it

il n'y a pas a ressuciter des données, les données sont en ram, c'est tout

Quoted text here. Click to load it

si, il suffit d'effacer la memoire avant un free, ou de remplir un tableau
par ex si l'on a pas fait de malloc.

Quoted text here. Click to load it

oui, mais si c'est a cause du multitache, il n'y a pas de probleme, les
zones de données ne sont pas partagées (sauf swap)

Quoted text here. Click to load it

pourquoi donc ?

Quoted text here. Click to load it

ce n'est pas un bug, et il en est de meme pour la pile et le tas, qui ne
sont gérés que par pointeur.

Quoted text here. Click to load it
que veux tu faire des données. je t"envoie 1 go de dump memoire, et tu
trouves un code que tu ne connais pas la dedans ?



Re: Allocation/desallocation de RAM sur PC
On Aug 29, 4:59 pm, "A. Caspis" :

Quoted text here. Click to load it

Je comprends, neanmoins j'ai poste ce que tu as demande.

Quoted text here. Click to load it

:-)

Quoted text here. Click to load it

Oui, et c'est pour cela que je ne vois pas ce que je peux faire
de mieux que de passer la priorite de la thread en 'realtime'
pendant le processus, puis d'effacer la memoire avant de la liberer.

Quoted text here. Click to load it

Oui, mais comment veux-tu qu'un systeme puisse interpreter
si ce qui a ete ecrit en memoire avant qu'elle soit
liberee soit de l'information sensible ou pas ?
C'est le programmeur seul qui le sait, donc d'apres moi
c'est au programmeur d'effacer la RAM avant de la liberer.
Dans le cas contraire, se serait au systeme d'effacer la memoire
juste avant de servir un malloc() ou juste apres un free()

Quoted text here. Click to load it

Mais c'est peut-etre deja le cas (?)

Quoted text here. Click to load it

Tout a fait.

Re: Allocation/desallocation de RAM sur PC
Quoted text here. Click to load it

Et si il y a plusieurs threads "realtime" ?

Quoted text here. Click to load it

C'est évidemment ce que font les OS sérieux, avec quelques
optimisations.  Par exemple sous Linux, quand malloc() a
besoin de mémoire, il va la chercher dans /dev/zero avec mmap().
Chaque page est effacée par le noyau lorsque la MMU détecte que
le processus y accède pour la première fois.

Un bloc libéré par free() reste attaché à l'espace mémoire
du processus et peut lui être réalloué par malloc(); dans ce
cas il n'y a pas besoin d'effacer.

Avec ce mode de fonctionnement le coût de la mise à zéro est
parfaitement raisonnable. Je ne peux pas croire que XP fasse
les choses très différemment.

AC

Re: Allocation/desallocation de RAM sur PC
On Aug 29, 5:50 pm, "A. Caspis" :

Quoted text here. Click to load it

C'est le niveau de priorite le plus eleve, le scheduler
ne bascule pas une thread 'realtime' qui est en cours
d'execution au profit d'une autre thread en attente.
En principe une thread passe en mode 'realtime' seulement pour
un temps court (puisque ca bloque les autres threads) puis
une fois fini son boulot elle se re-assigne une priorite plus basse.
Donc, un programme *bien ecrit* ne doit
pas rester des plombes en priorite 'realtime'.

Quoted text here. Click to load it

Alors je peux le faire moi-meme avec un memset(ptr,0,size)
juste avant d'appeler free(ptr);

Quoted text here. Click to load it

Okay, merci pour ces precisions.

Quoted text here. Click to load it

Je n'en ai aucune idee (pour l'instant)

Re: Allocation/desallocation de RAM sur PC
Quoted text here. Click to load it

Si c'était utile, toutes les librairies C contiendraient
une fonction cfree() pour faire ça, par analogie à calloc().
Or il n'y en a pas, ce qui confirme que personne ne s'est
jamais soucié que l'OS réalloue de la mémoire contenant des
données privées à un autre processus.

Il est vrai que les programmes qui manipulent temporairement
des mots de passe prennent souvent la peine de les effacer
après usage, mais c'est pour limiter la période pendant
laquelle on peut les intercepter, et pas par crainte qu'un
autre processus les reçoive par hasard longtemps après.

Quoted text here. Click to load it

P.S. Après vérification mes détails sur Linux et sa libc
sont un peu obsolètes, mais en gros c'est bien l'OS qui
efface la mémoire quand c'est nécessaire.

AC

Re: Allocation/desallocation de RAM sur PC
On Aug 29, 6:22A0%pm, "A. Caspis" :

Quoted text here. Click to load it

Juste pour info, voici un extrait d'un dump d'une zone memoire
allouee sous XP, on y voit que la RAM n'a pas ete effacee :

[Data: ]  256 bytes at 0x0014:EB88 - 0x0014:EC88
00000000  78 01 14 00 F8 C9 14 00 D0 F1 C7 28 25 DE D2 11  x..........
(%...
00000010  AF DD 00 10 5A 27 99 B5 0A 00 00 00 01 00 00
00  ....Z'..........
00000020  00 00 00 00 48 08 00 00 3C 09 00 00 0C 00 00
00  ....H...<.......
00000030  8F 10 3C 25 8F 10 3C 25 00 00 00 00 48 00 00 00  ..<%..<
%....H...
00000040  58 00 00 00 60 00 00 00 10 05 00 00 02 00 80 00
X...`...........
00000050  01 00 00 00 57 04 02 13 01 00 00 00 08 00 00
00  ....W...........
00000060  08 00 00 00 3F 02 05 22 FE 0B 05 07 00 00 00
00  ....?.."........
00000070  01 00 00 00 FE 0B 05 07 01 00 00 00 3F 02 05
22  ............?.."
00000080  00 04 00 00 6A 24 0A 00 00 00 00 00 10 00 00 00  ....j
$..........
00000090  10 00 00 00 40 00 00 00 01 00 20 00 6A 24 0A
00  ....@..... .j$..
000000A0  00 00 00 00 00 00 00 00 20 00 00 00 6A 24 0A
00  ........ ...j$..
000000B0  00 00 00 00 10 00 00 00 10 00 00 00 02 00 00
00  ................
000000C0  01 00 01 00 6A 24 0A 00 00 00 00 00 00 00 00 00  ....j
$..........
000000D0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00  ................
000000E0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00  ................
000000F0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00  ................

Re: Allocation/desallocation de RAM sur PC
Quoted text here. Click to load it

Ce n'est pas suffisant pour conclure qu'il y a eu une fuite
d'information d'un processus à un autre. Il est tout à fait
possible que le code généré par le compilateur alloue de la
mémoire, y écrive des choses puis la libère, le tout avant
de passer le contrôle à la fonction main(). Il est possible
que le malloc() qui est dumpé réutilise cette mémoire là
sans l'effacer, conformément à la documentation de malloc.

Si vous y reconnaissez des mots de passe ou des fragments
de texte qui n'ont rien à y faire, évidemment, c'est une
autre histoire.

AC

Re: Allocation/desallocation de RAM sur PC
On Aug 30, 2:06A0%pm, "A. Caspis" :

| > Juste pour info, voici un extrait d'un dump d'une zone memoire
| > allouee sous XP, on y voit que la RAM n'a pas ete effacee :

Quoted text here. Click to load it

Oui, effectivement.


Et c'est aussi beaucoup plus dur a tester !

J'ai 256 Mb de RAM sur mon PC, je fais un malloc de 100 Mb
et j'y ecris des sequences precises, puis je libere cette memoire,
et immediatement avec un *autre* programme je realloue 100 Mb
dans lesquels je recherche des fragments significatifs
de la sequence initiale ... et jusqu'ici je n'ai rien trouve !

Bien que ce test ne soit pas assez rigoureux pour
etre concluant, pour l'instant cela te donne raison.

Re: Allocation/desallocation de RAM sur PC
Quoted text here. Click to load it

bnjour E0% tous,

Quoted text here. Click to load it
rien de rien? ...cad des cases mE9%moires E0% 0...
ou bien non-correspondantes E0% l'original?

vede
;O]

Re: Allocation/desallocation de RAM sur PC
On Sep 1, 5:30A0%am, vede :

Quoted text here. Click to load it

|> rien de rien? ...cad des cases mE9%moires E0% 0...
|> ou bien non-correspondantes E0% l'original?

Tout n'est pas a zero, il y a bien des donnees,
mais je n'en retouve aucune du buffer d'origine.

Re: Allocation/desallocation de RAM sur PC
On Aug 29, 6:22 pm, "A. Caspis" :

Quoted text here. Click to load it

Juste pour info voici un extrait d'un dump d'une zone memoire
allouee sous XP : on voit bien que la RAM n'a pas ete effacee.

78 01 14 00 F8 C9 14 00 D0 F1 C7 28 25 DE D2 11
AF DD 00 10 5A 27 99 B5 0A 00 00 00 01 00 00 00
00 00 00 00 48 08 00 00 3C 09 00 00 0C 00 00 00
8F 10 3C 25 8F 10 3C 25 00 00 00 00 48 00 00 00
58 00 00 00 60 00 00 00 10 05 00 00 02 00 80 00
01 00 00 00 57 04 02 13 01 00 00 00 08 00 00 00
08 00 00 00 3F 02 05 22 FE 0B 05 07 00 00 00 00
01 00 00 00 FE 0B 05 07 01 00 00 00 3F 02 05 22
00 04 00 00 6A 24 0A 00 00 00 00 00 10 00 00 00
10 00 00 00 40 00 00 00 01 00 20 00 6A 24 0A 00
00 00 00 00 00 00 00 00 20 00 00 00 6A 24 0A 00
00 00 00 00 10 00 00 00 10 00 00 00 02 00 00 00
01 00 01 00 6A 24 0A 00 00 00 00 00 00 00 00 00

Re: Allocation/desallocation de RAM sur PC
Jean-Christophe a écrit :
Quoted text here. Click to load it

oui, la libération de la mémoire n'écrit rien dedans.
Quoted text here. Click to load it

oui, elle est même en plusieur endroits : presse papier, mémoire
utilisée pour créer le message encodé, etc...

Quoted text here. Click to load it

si le programme n'efface rien, oui.

mais je pense qu'il ne faut pas te tourmenter, que les données restent
en memoire dans l'ordinateur ne présente guère de danger si aucun
logiciel espion ne vient fouiller dedans.

de plus, pour trouver les 16 caractères de ton numéro de CB au milieu de
ton giga-octet de mémoire, la probabilité de le repérer est très faible.

bien sur, si un logiciel espion est présent cela représente un risque
supplémentaire, mais le problème de base est la présence de ce logiciel
espion.

en cas d'arrêt, la mémoire retombe à 0, sauf si on utilise la mise en
veille qui copie tout le contenu de la mémoire dans le disque dur...

JJ

Re: Allocation/desallocation de RAM sur PC
Quoted text here. Click to load it

Ca dE9%pend de l'OS, et de la configuration de sa sE9%curitE9%.

(rE9%ponse toute aussi E9%vasive que la question).

(oh punaise, que d'anneries que je vois dans les rE9%ponses: NON E7%a ne
dE9%pend pas de l'archi; et OUI certains OS effacent systE9%matiquement
toute zone libE9%rE9%e !!! )

Par contre, la rE9%tention quand la machine est E9%teinte dE9%pend de la
technologie de RAM utilisE9%e dans la machine concernE9%e. Dans une SDRAM,
presque tout est intacte 1s aprE8%s extinction, et les bits les plus
vivaces tiennent 10s. Dans une DDR, c'est beaucoup moins; dans une
EDO, ou les mE9%canismes encore plus vieux, on a sans aucun problE8%me
10mn, 1h, voire 1 ou 2j. Les OS vE9%ritablement sE9%curisE9%s effacent la
RAM durant le processus d'extinction de la machine (certes, c'est
inutile sur un PC vu que le BIOS de toute faE7%on va tout exploser ...
dois-je vous dire tout le mal que je pense des PC et du BIOS ?)

La norme ANSI ne statue rien cotE9% sE9%curitE9%, mais, les OS sE9%curisE9%
s
ajoutent E0% la fonction free() une routine d'effacement (E9%criture de la
zone).

Quoted text here. Click to load it

Non, E7%a ne sert absolument E0% rien. Si la page a E9%tE9% copiE9%e en SWA=
P, ou
dE9%placE9%e (merci les TLB - dois-je vous dire tout le mal que je pense
des TLB et du co-processeur des x86 ? ), les donnE9%es seront prE9%sentes
en plusieurs exemplaires un peu partout dans la machine.

Pour pallier E0% E7%a, certains systems offrent des mE9%canismes offrant la
garantie que la page allouE9%e ne sera pas dE9%placE9%e, ni mise en swap. C=
e
sont des fonctions assez rE9%centes (10 E0% 15 ans je pense). C'est dans
cette direction que vous devez vous renseigner sur ce qui est proposE9%
par le noyeau que vous pensez utiliser.

Quoted text here. Click to load it

oui, et pendant un bout de temps. Sur ma station de travail, en faible
activitE9%, j'ai retrouvE9% dans ma RAM des rE9%sidus de donnE9%es utilisat=
eur
plus de 1h aprE8%s fermeture de l'application qui les gE9%rait.

Quoted text here. Click to load it

Tout dE9%pend du programme. Si c'est un logiciel sE9%rieux, genre GnuPG,
tournant sur un OS sE9%rieux, genre greLinux, alors, toutes les
prE9%cautions ont E9%tE9% prises pour garantir au maximum votre sE9%curit=
E9%.
Dans une majoritE9% d'autres cas, craignez le pire :) .

Re: Allocation/desallocation de RAM sur PC
Quoted text here. Click to load it

Si je me souviens bien ce sont des mécanismes imaginés/mis en place au début
des années 90 dans le cadre de l'ITSEC et aussi des critères de
développement des OS sécurisés pour le compte de la NSA aux US.
La société US pour laquelle je bossais avait implémenté deux Unix sécurisés,
l'un de niveau C2, l'autre de niveau B1 et B2 qui implémentaient ce genre de
mécanismes.
Windaube est très loin de tout cela...
Sachant qu'en plus dans le cadre de l'évaluation il est impératif d'avoir
les sources A JOUR et que la validation de l'OS en question inclu la
recompilation au bit près du noyau évalué.
Pour la petite histoire nous avions fait évaluer ces versions d'Unix en
France par les services officiels, à l'époque le CELAR, et l'obtention des
autorisations US n'avaient pas été sans mal... Mais nous y sommes arrivés...
Ce qui voulait certainement dire à l'époque que la NSA avait encore bien
mieux en terme de sécurité... ;-))

Bon week-end.
pf







Site Timeline