Pagkahuyang sa librarya nga adunay panguna nga pagpatuman sa SHA-3 algorithm

Usa ka vulnerability (CVE-3-2022) ang giila sa pagpatuman sa SHA-37454 (Keccak) cryptographic hash function nga gitanyag sa XKCP (eXtended Keccak Code Package) nga pakete, nga mahimong mosangpot sa usa ka buffer overflow sa panahon sa pagproseso sa espesyal nga pormat. datos. Ang problema tungod sa usa ka bug sa code sa usa ka piho nga pagpatuman sa SHA-3, dili usa ka kahuyang sa algorithm mismo. Ang XKCP nga pakete giila isip opisyal nga pagpatuman sa SHA-3, naugmad uban sa tabang sa Keccak development team, ug gigamit isip basehan sa mga gimbuhaton sa pagtrabaho kauban ang SHA-3 sa nagkalain-laing mga programming language (pananglitan, ang XKCP gigamit ang code sa Python hashlib module, ang Ruby package digest-sha3 ug hash_* PHP functions).

Sumala sa tigdukiduki nga nag-ila sa problema, siya nakahimo sa paggamit sa kahuyang sa paglapas sa cryptographic kabtangan sa hash function ug sa pagpangita sa una ug ikaduha nga preimages, ingon man usab sa pagtino bangga. Dugang pa, gipahibalo ang paghimo sa usa ka prototype nga pagpahimulos, nga nagtugot nga makab-ot ang pagpatuman sa code kung gikalkula ang hash sa usa ka espesyal nga gidisenyo nga file. Posible, ang kahuyang mahimo usab nga gamiton sa pag-atake sa digital signature verification algorithms gamit ang SHA-3 (pananglitan, Ed448). Ang mga detalye sa mga pamaagi sa pag-atake giplano nga imantala sa ulahi, pagkahuman sa kaylap nga pagwagtang sa pagkahuyang.

Dili pa klaro kung giunsa ang pagkahuyang makaapekto sa naglungtad nga mga aplikasyon sa praktis, tungod kay aron ang problema magpakita sa kaugalingon sa code, kinahanglan nga gamiton ang cyclic hash nga pagkalkula sa mga bloke, ug ang usa sa mga naproseso nga bloke kinahanglan adunay gidak-on nga mga 4 GB (sa labing menos 2 ^ 32 - 200 bytes). Sa diha nga ang pagproseso sa input data sa makausa (nga walay sequential kalkulasyon sa hash sa mga bahin), ang problema dili makita. Ingon ang pinakasimple nga pamaagi sa pagpanalipod, gisugyot nga limitahan ang labing kadaghan nga gidak-on sa datos nga nahilambigit sa usa ka pag-uli sa kalkulasyon sa hash.

Ang pagkahuyang tungod sa usa ka sayup sa pagproseso sa block sa input data. Tungod sa dili husto nga pagtandi sa mga kantidad nga adunay tipo nga "int", usa ka sayup nga gidak-on sa pending nga datos ang gitino, nga nagdala sa ikog nga gisulat sa gawas sa gigahin nga buffer. Sa partikular, kung itandi, gigamit ang ekspresyon nga "partialBlock + instance->byteIOIndex", nga, nga adunay daghang kantidad sa mga bahin sa sangkap, nagdala sa usa ka integer nga pag-awas. Dugang pa, adunay dili husto nga typecast "(unsigned int)(dataByteLen - i)" sa code, nga miresulta sa pag-awas sa mga sistema nga adunay 64-bit size_t type.

Pananglitan sa overflow code: import hashlib h = hashlib.sha3_224() m1 = b"\x00" * 1; m2 = b"\x00" * 4294967295; h.update(m1) h.update(m2) print(h.hexdigest())

Source: opennet.ru

Idugang sa usa ka comment