Vulnerabilitet në bibliotekën me implementimin kryesor të algoritmit SHA-3

Në implementimin e funksionit hash kriptografik SHA-3 (Keccak), i ofruar në paketën XKCP (eXtended Keccak Code Package), është gjetur një dobësi (CVE-2022-37454), e cila mund të çojë në mbushjen e tamponit gjatë përpunimit të të dhënave me një format të caktuar. Problemi ngjall nga një gabim në kodin e implementimit të veçantë të SHA-3, dhe jo nga një dobësi në vetë algoritmin. Paketa XKCP paraqitet si implementimi zyrtar i SHA-3, zhvillohet me pjesëmarrjen e ekipit të zhvilluesve Keccak dhe përdoret si bazë në funksionet për punë me SHA-3 në gjuhë të ndryshme programimi (p.sh., kodi XKCP përdoret në modulën hashlib në Python, paketën digest-sha3 në Ruby dhe funksionet hash_* në PHP).

Sipas deklaratës së hulumtuesit që zbuloi problemin, ai ka arritur ta përdorë dobësinë për të shkelur pronat kriptografike të funksionit hash dhe për të identifikuar pre-emrat e parë dhe të dytë, si dhe për të përcaktuar kolizionet. Për më tepër, është deklaruar se është krijuar një prototip eksploati që lejon ekzekutimin e kodit gjatë llogaritjes së hash-it të një skedari të formatuar në mënyrë të veçantë. Potencialisht, dobësia gjithashtu mund të përdoret për sulme ndaj algoritmeve të verifikimit të nënshkrimeve digjitale që përdorin SHA-3 (p.sh., Ed448). Detajet e metodave të realizimit të sulmeve do të publikohen më vonë, pas eliminimit të gjithanshëm të dobësisë.

Sa i pĂ«rket ndikimit tĂ« dobĂ«sisĂ« nĂ« aplikacionet ekzistuese, ende nuk Ă«shtĂ« e qartĂ«, pasi pĂ«r tĂ« manifestuar problemin, kodi duhet tĂ« aplikojĂ« llogaritjen ciklike tĂ« hash-it nĂ« blloqe dhe njĂ« nga blloqet e pĂ«rpunuara duhet tĂ« ketĂ« njĂ« madhĂ«si rreth 4 GB (jo mĂ« pak se 2^32 – 200 bajt). GjatĂ« pĂ«rpunimit tĂ« tĂ« dhĂ«nave hyrĂ«se nĂ« njĂ« herĂ« (pa llogaritje sekondare tĂ« hash-it), problemi nuk manifeston. Si njĂ« metodĂ« e thjeshtĂ« mbrojtjeje, propozohet tĂ« kufizohet madhĂ«sia maksimale e tĂ« dhĂ«nave qĂ« marrin pjesĂ« nĂ« njĂ« iteracion tĂ« llogaritjes sĂ« hash-it.

DobĂ«sia shkaktohet nga njĂ« gabim gjatĂ« pĂ«rpunimit tĂ« bllokuar tĂ« tĂ« dhĂ«nave hyrĂ«se. PĂ«r shkak tĂ« njĂ« krahasimi tĂ« gabuar tĂ« vlerave me tipin «int», pĂ«rcaktohet njĂ« madhĂ«si e gabuar e tĂ« dhĂ«nave qĂ« priten tĂ« pĂ«rpunohen, qĂ« çon nĂ« shkrimin e pjesĂ«s mbetur jashtĂ« tamponit tĂ« alokuar. NĂ« veçanti, gjatĂ« krahasimit, u pĂ«rdor shprehja «partialBlock + instance->byteIOIndex», e cila me vlera tĂ« mĂ«dha tĂ« pĂ«rbĂ«rĂ«seve shkaktonte njĂ« mbushje tĂ« numrit tĂ« plotĂ«. PĂ«r mĂ« tepĂ«r, nĂ« kod kishte njĂ« kthim tĂ« gabuar tĂ« tipit «(unsigned int)(dataByteLen — i)», qĂ« çonte nĂ« mbushje nĂ« sistemet me tipin 64-bit size_t.

Shembulli i kodit që shkakton mbushjen: import hashlib h = hashlib.sha3_224() m1 = b"\x00" * 1; m2 = b"\x00" * 4294967295; h.update(m1) h.update(m2) print(h.hexdigest())

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster