Ei au identificat o vulnerabilitate în biblioteca de algoritmi SHA-3

vulnerabilitate

Dacă sunt exploatate, aceste defecte pot permite atacatorilor să obțină acces neautorizat la informații sensibile sau, în general, pot cauza probleme

A fost identificată o vulnerabilitate (listat deja sub CVE-2022-37454) en implementarea funcției hash criptografice SHA-3 (Keccak), oferit în pachetul XKCP (eXtended Keccak Code Package).

Vulnerabilitatea identificată poate provoca o depășire a tamponului în timpul prelucrării datelor formate. Problema se datorează unei erori în codul unei implementări specifice a SHA-3, nu unei vulnerabilități în algoritmul în sine.

El paquete XKCP este prezentată ca implementarea oficială a SHA-3, dezvoltată cu ajutorul echipei de dezvoltare Keccak și folosit ca bază pentru funcții pentru a lucra cu SHA-3 în diferite limbaje de programare (de exemplu, codul XKCP este utilizat în modulul Python hashlib, pachetul Ruby digest-sha3 și funcțiile PHP hash_*).

Potrivit cercetătorului care a identificat problema, ar putea folosi vulnerabilitatea pentru a încălca proprietățile criptografice a funcției hash și găsiți prima și a doua preimagini, precum și determinați coliziunile.

Motivul erorii de segmentare este că scripturile vor încerca să scrie mai multe date într-un buffer decât poate conține. O astfel de vulnerabilitate este cunoscută sub numele de depășire a tamponului, pe care OWASP o descrie drept „probabil cea mai cunoscută formă de vulnerabilitate de securitate software”.

O mică variantă a codului va provoca o buclă infinită: înlocuiți doar 4294967295 cu 4294967296. Rețineți asemănarea cu CVE-2019-8741, o altă vulnerabilitate pe care am găsit-o care a afectat firmware-ul a peste 1.400 miliarde de dispozitive Apple, care a provocat și o buclă infinită.

De asemenea, se anunță crearea unui prototip de exploit, que permite realizarea execuției codului la calcularea hash-ului dintr-un dosar special conceput. Vulnerabilitatea poate fi folosită și pentru a ataca algoritmii de verificare a semnăturii digitale folosind SHA-3 (de exemplu, Ed448). Detaliile metodelor de atac sunt de așteptat să fie publicate la o dată ulterioară, după eliminarea generală a vulnerabilității.

Acest tip de comportament nu ar trebui să se întâmple în limbaje „sigure” precum Python și PHP, deoarece verifică dacă toate operațiunile de citire și scriere sunt în limitele bufferului. Cu toate acestea, problema este că vulnerabilitatea este prezentă în limbajul C „nesigur” subiacent...

Inca nu este clar modul în care vulnerabilitatea afectează aplicațiile existente în practică, deoarece pentru ca problema să se manifeste în cod, trebuie utilizat calculul hash ciclic pe blocuri, iar unul dintre blocurile procesate trebuie să aibă o dimensiune de aproximativ 4 GB (cel puțin 2^32 – 200 de octeți).

La procesarea datelor de intrare simultan (fără calculul secvenţial al hash-ului pe părţi), problema nu apare. Ca metodă de protecție mai simplă, se propune limitarea dimensiunii maxime a datelor implicate într-o iterație a calculului hash.

Codul vulnerabil a fost publicat în ianuarie 2011, așa că a fost nevoie de mai mult de un deceniu pentru a găsi această vulnerabilitate. Pare să fie dificil să găsești vulnerabilități în implementările criptografice, chiar dacă acestea joacă un rol critic în securitatea generală a unui sistem. (Poate că oamenii nici măcar nu caută astfel de vulnerabilități, deoarece nici această vulnerabilitate în XKCP și nici vulnerabilitatea Apple menționată mai sus nu sunt eligibile pentru niciun program de recompensă pentru erori!)

Vulnerabilitate se datorează unei erori în procesarea în bloc a datelor de intrare. Datorită unei comparări incorecte a valorilor cu tipul „int”, se determină o dimensiune incorectă a datelor restante, ceea ce face ca coada să fie scoasă din bufferul alocat.

În special, se menționează că la comparare, expresia «partialBlock + instanță->byteIOIndex«, care, cu valori mari ale părților componente, a dus la depășirea întregului. De asemenea, a existat o tipărire incorectă „(unsigned int)(dataByteLen - i)” în cod, provocând o depășire pe sistemele cu un tip size_t pe 64 de biți.

În cele din urmă dacă sunteți interesat să aflați mai multe despre asta, puteți verifica detaliile în următorul link.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: AB Internet Networks 2008 SL
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.