.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2021, IBM Corporation. .\" Written by Mike Rapoport .\" .\" Based on memfd_create(2) man page .\" Copyright (C) 2014 Michael Kerrisk .\" and Copyright (C) 2014 David Herrmann .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH memfd_secret 2 "5 februarie 2023" "Pagini de manual de Linux 6.03" .SH NUME memfd_secret \- creează un fișier anonim bazat pe RAM pentru a accesa regiuni de memorie secrete .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH REZUMAT .nf .PP \fB#include \fP /* Definirea constantelor \fBSYS_*\fP */ \fB#include \fP .PP \fBint syscall(SYS_memfd_secret, unsigned int \fP\fIflags\fP\fB);\fP .fi .PP \fINotă\fP: glibc nu oferă nicio funcție învăluitoare pentru \fBmemfd_secret\fP(), fiind necesară utilizarea \fBsyscall\fP(2). .SH DESCRIERE \fBmemfd_secret\fP() creează un fișier anonim bazat pe RAM și returnează un descriptor de fișier care face referire la acesta. Fișierul oferă o modalitate de a crea și de a accesa regiuni de memorie cu o protecție mai puternică decât fișierele obișnuite bazate pe RAM și hărțile de memorie anonime. Odată ce toate referințele deschise la fișier sunt închise, acesta este eliberat automat. Dimensiunea inițială a fișierului este stabilită la 0. În urma apelului, dimensiunea fișierului ar trebui să fie stabilită utilizând \fBftruncate\fP(2). .PP Zonele de memorie care susțin fișierul creat cu \fBmemfd_secret\fP(2) sunt vizibile numai pentru procesele care au acces la descriptorul de fișier. Regiunea de memorie este eliminată din tabelele de pagini ale nucleului și numai tabelele de pagini ale proceselor care dețin descriptorul de fișier cartografiază memoria fizică corespunzătoare; (astfel, paginile din regiune nu pot fi accesate de către nucleul însuși, astfel încât, de exemplu, indicatorii către regiune nu pot fi trecuți în apelurile de sistem). .PP Următoarele valori pot fi combinate în mod binar OR în \fIflags\fP pentru a controla comportamentul lui \fBmemfd_secret\fP(): .TP \fBFD_CLOEXEC\fP Activează fanionul „close\-on\-exec” pe noul descriptor de fișier, ceea ce face ca regiunea să fie eliminată din proces la \fBexecve\fP(2). A se vedea descrierea fanionului \fBO_CLOEXEC\fP în \fBopen\fP(2). .PP Ca valoare de retur, \fBmemfd_secret\fP() returnează un nou descriptor de fișier care se referă la un fișier anonim. Acest descriptor de fișier este deschis atât pentru citire, cât și pentru scriere (\fBO_RDWR\fP), iar \fBO_LARGEFILE\fP este definit pentru descriptorul de fișier. .PP În ceea ce privește \fBfork\fP(2) și \fBexecve\fP(2), se aplică semantica obișnuită pentru descriptorul de fișier creat de \fBmemfd_secret\fP(). O copie a descriptorului de fișier este moștenită de procesul\-copil creat de \fBfork\fP(2) și se referă la același fișier. Descriptorul de fișier este păstrat de \fBexecve\fP(2), cu excepția cazului în care nu a fost activat fanionul „close\-on\-exec”. .PP Regiunea de memorie este blocată în memorie în același mod ca și în cazul \fBmlock\fP(2), astfel încât nu va fi niciodată scrisă în spațiul de interschimb, iar hibernarea este inhibată atâta timp cât există descrieri \fBmemfd_secret\fP(). Cu toate acestea, implementarea lui \fBmemfd_secret\fP() nu va încerca să populeze întregul interval în timpul apelului \fBmmap\fP(2) care atașează regiunea în spațiul de adrese al procesului; în schimb, paginile sunt alocate efectiv doar pe măsură ce sunt introduse prin eroare. Cantitatea de memorie permisă pentru hărțile de memorie ale descriptorului de fișier se supune acelorași reguli ca și \fBmlock\fP(2) și nu poate depăși \fBRLIMIT_MEMLOCK\fP. .SH "VALOAREA RETURNATĂ" În caz de succes, \fBmemfd_secret\fP() returnează un nou descriptor de fișier. În caz de eroare, se returnează \-1, iar \fIerrno\fP este configurată pentru a indica eroarea. .SH ERORI\-IEȘIRE .TP \fBEINVAL\fP \fIflags\fP include biți necunoscuți. .TP \fBEMFILE\fP Limita per proces a numărului de descriptori de fișiere deschise a fost atinsă. .TP \fBEMFILE\fP Limita la nivel de sistem a numărului total de fișiere deschise a fost atinsă. .TP \fBENOMEM\fP Nu a existat suficientă memorie pentru a crea un nou fișier anonim. .TP \fBENOSYS\fP \fBmemfd_secret\fP() nu este implementat pe această arhitectură sau nu a fost activat în linia de comandă a nucleului cu \fBsecretmem_enable\fP=1. .SH VERSIUNI Apelul de sistem \fBmemfd_secret\fP() a apărut pentru prima dată în Linux 5.14. .SH STANDARDE Apelul de sistem \fBmemfd_secret\fP() este specific Linux. .SH NOTE Apelul de sistem \fBmemfd_secret\fP() este conceput pentru a permite unui proces din spațiul utilizatorului să creeze un interval de memorie inaccesibil pentru oricine altcineva, inclusiv pentru nucleu. Nu există o garanție de 100% că nucleul nu va putea accesa intervale de memorie susținute de \fBmemfd_secret\fP() în orice circumstanțe, dar, cu toate acestea, este mult mai greu de a extrage date din aceste regiuni. .PP \fBmemfd_secret\fP() asigură următoarele protecții: .IP \[bu] 3 Protecție îmbunătățită (împreună cu toate celelalte sisteme de prevenire a atacurilor din nucleu) împotriva atacurilor ROP. Absența oricărei primitive în interiorul nucleului pentru accesarea memoriei susținute de \fBmemfd_secret\fP() înseamnă că atacul ROP cu un singur gadget (dispozitiv) nu poate funcționa pentru a realiza extragerea de date. Atacatorul ar trebui să găsească suficiente gadget\-uri ROP pentru a reconstrui intrările lipsă din tabelul de pagini, ceea ce sporește în mod semnificativ dificultatea atacului, în special atunci când există alte protecții, cum ar fi limitarea dimensiunii stivei în nucleu și organizarea aleatorie a spațiului de adrese. .IP \[bu] Împiedicați expunerile de memorie în spațiul utilizatorului între procese. Odată ce o regiune pentru o cartografiere de memorie \fBmemfd_secret\fP() este alocată, utilizatorul nu o poate trece accidental în nucleu pentru a fi transmisă undeva. Paginile de memorie din această regiune nu pot fi accesate prin intermediul hărții directe și sunt interzise în get_user_pages. .IP \[bu] Protejați\-vă împotriva defectelor de nucleu exploatate. Pentru a accesa zonele de memorie susținute de \fBmemfd_secret\fP(), un atac la nivelul nucleului ar trebui fie să parcurgă tabelele de pagini și să creeze altele noi, fie să genereze un nou proces privilegiat în spațiul utilizatorului pentru a efectua extragerea de secrete utilizând \fBptrace\fP(2). .PP Modul în care \fBmemfd_secret\fP() alocă și blochează memoria poate avea un impact asupra performanțelor generale ale sistemului; prin urmare, apelul de sistem este dezactivat în mod implicit și este disponibil numai dacă administratorul de sistem l\-a activat folosind parametrul de nucleu „secretmem.enable=y”. .PP Pentru a preveni eventualele scurgeri de date din regiunile de memorie susținute de \fBmemfd_secret\fP() dintr\-o imagine de hibernare, hibernarea este împiedicată atunci când există utilizatori \fBmemfd_secret\fP() activi. .SH "CONSULTAȚI ȘI" \fBfcntl\fP(2), \fBftruncate\fP(2), \fBmlock\fP(2), \fBmemfd_create\fP(2), \fBmmap\fP(2), \fBsetrlimit\fP(2) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .