[so] [Tema3][General] Protectie pagina ce trebuie zeroizata

Dorin Geman dorin.geman at rosedu.org
Fri Apr 3 21:37:39 EEST 2020


On Fri, Apr 3, 2020 at 9:05 PM Darius Mihai <dariusmihaim at gmail.com> wrote:

> On Fri, Apr 3, 2020 at 8:50 PM Dorin Geman via so <so at cursuri.cs.pub.ro>
> wrote:
> >
> > Salutare,
> >
> > Am o curiozitate(prioritate scăzută) - mi se pare că testele nu verifică
> un anumit caz, probabil pentru că este greu de simulat, dar cel puțin
> conceptual, vă întreb:
> >
> > Corect este că dacă trebuie să zeroiezez o zonă de memorie, mai întăi să
> mapez pagina cu WRITE pentru a putea zeroiza și apoi să îi schimb
> permisiunile în cele corespunzătoare segmentului din care face parte, de
> acord?
> > Cu toate acestea, dacă mapez de la început cu permisiunile segmentului,
> totul este în regulă, trec testele, pentru că se testează doar pentru zona
> de bss.
> > Exemplul care ar face cea din urmă implementare să "pice" ar fi ca în
> executabilul pe care vreau să îl încarc să am un mmap cu READ și ANONYMOUS?
> Alte idei de scenarii?
> >
> > Pentru asistenții indicați pe ocw[0] , puteți vedea codul pt GitLab[1] -
> liniile 65-85.
> > Dacă mapez din prima cu segment.perm și scot mprotect, all good, dar nu
> mi se pare tocmai corect.
> >
> > Numai bine,
> > Dorin Geman, 331CA
> >
> > [0]
> https://ocw.cs.pub.ro/courses/so/teme/folosire-gitlab#creare_proiect_nou
> > [1]
> https://gitlab.cs.pub.ro/dorin_andrei.geman/l3-so-assignments/blob/master/3-loader/skel-lin/loader/loader.c
>
> Salut, Dorin,
>
> Din motive de securitate (nu vrei ca un proces să poată accesa datele
> din memoria fizică pe care un alt proces a eliberat-o), maparea
> zonelor de memorie în mod anonim va zeroiza pagina înainte ca tu poți
> să o accesezi. Vezi și în pagina de manual [3], la secțiunea
> MAP_ANONYMOUS. Acest comportament ar putea, în teorie, să nu fie
> activ pe unele sisteme vechi sau embedded (din motive de performanță),
> dar este aproape sigur prezent pe sistemele uzual folosite de acum.
>
> [3]: https://linux.die.net/man/2/mmap
>
> O seară frumoasă,
> Darius
>

Salut, Darius!

Corect, am înțeles.
Atunci cum pot simula un scenariu în care sa pice codul meu de loader dacă
nu dau PROT_WRITE explicit înainte de zeroizare?
Mai concret, dacă trebuie să mapez o pagină read-only si trebuie să îi ofer
și drept de scriere până termin zeroizarea, dar nu i-l ofer.

Seară faină,
Dorin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20200403/5333ac3c/attachment.html>


More information about the so mailing list