Cum de a preveni atacurile de suprasarcină tampon
Pasul 1
Scrieți codul de securitate pentru a evita atacurile de overflow. În C, există o serie de funcții de vulnerabilitate pe care hackerii le pot exploata pentru a suplini tampoanele. Minimizați utilizarea strcpy (), strcat (), sprintf () și vsprintf (), care nu verifică limitele. Dacă este posibil, evitați utilizarea lui get (), care nu specifică câte caractere trebuie citite și astfel vă lăsa codul vulnerabil. Dacă utilizați scanf (), asigurați-vă că specificați o lățime pentru formatul% s pentru a evita depășirile.
Pasul 2
Verificați dacă puteți folosi trambulinele pentru a evita depășirea tamponului. Deoarece depășirea tamponului are loc în stive de memorie și nu în cod, cea mai simplă soluție pare să fie împiedicarea stivelor de a executa orice cod prin introducerea unui fragment mic de cod pentru a interzice aceste acțiuni. Acest lucru este posibil în Linux, dar este foarte dificil. Numai câțiva compilatori folosesc bucățile mici de cod numite trambuline, care acționează ca o barieră între codul de apel al funcției și funcția în sine. Prin urmare, dacă codul rău intenționează să înlocuiască un buffer, trambulina poate intercepta și neutraliza încercările hackerilor.
Pasul 3
Implementați instrumentele de compilare pentru a vă avertiza atunci când utilizați codul care vă lasă vulnerabil la atacuri. Unele dintre aceste instrumente generează un cod care interzice accesul străinilor la adrese ilegale și dezactivează codul care încearcă o astfel de execuție. Produse precum StackShield și StackGuard sunt un mare ajutor. StackSheild va analiza adresa de retur a unei funcții și o va termina în cazul unei nereguli. StackGuard plasează un cuvânt Canary pe adresa expeditorului și verifică dacă cuvântul a fost modificat, terminând o funcție atunci când o are.
Pasul 4
Instalați unelte ca libsafe pentru a verifica securitatea într-un mediu dinamic, în timp real. Libsafe rulează pe Linux și verifică adresa cea mai apropiată de întoarcere a unui cadru de stivă, apoi se asigură că adresa nu este suprascrisă. Libsafe va înlocui și funcțiile nesigure, cum ar fi get (), strcpy () și scanf ().