د SHA-3 الګوریتم اصلي پلي کولو سره په کتابتون کې زیان منونکي

د SHA-3 (کیکاک) کریپټوګرافیک هش فنکشن په پلي کولو کې یو زیان (CVE-2022-37454) پیژندل شوی چې په XKCP بسته کې وړاندیز شوي (د کیکاک کوډ پراخ شوی بسته) کې وړاندیز شوی ، کوم چې کولی شي د ځینې پروسس کولو پرمهال د بفر ډیروالي لامل شي. فارمیټ شوي ډاټا. ستونزه د SHA-3 د ځانګړي پلي کولو کوډ کې د بګ له امله رامینځته شوې ، نه پخپله په الګوریتم کې د زیان مننې له امله. د XKCP کڅوړه د SHA-3 رسمي پلي کولو په توګه پیژندل کیږي، د کیکاک پرمختیایی ټیم لخوا د ان پټ سره رامینځته شوی، او په مختلفو پروګرامینګ ژبو کې د SHA-3 دندو لپاره د اساس په توګه کارول کیږي (د بیلګې په توګه، د XKCP کوډ په Python hashlib کې کارول کیږي. ماډل، د روبي ډایجسټ بسته sha3 او د پی ایچ پی هش_* افعال).

د څیړونکي په وینا چې ستونزه یې پیژندلې، هغه د دې توان درلود چې د هش فنکشن د کریپټوګرافیک ملکیتونو څخه سرغړونه وکړي او د لومړي او دویم انځورونو موندلو او همدارنګه د ټکرونو کشف کولو لپاره زیانمنونکي وکاروي. سربیره پردې، دا اعلان شوی و چې یو پروټوټایپ استحصال به رامینځته شي چې کوډ ته به اجازه ورکړي چې د ځانګړي ډیزاین شوي فایل هش محاسبه کولو پرمهال اجرا شي. زیانمنتیا په احتمالي توګه د ډیجیټل لاسلیک تصدیق کولو الګوریتمونو برید لپاره هم کارول کیدی شي چې SHA-3 کاروي (د مثال په توګه ، Ed448). د برید د طریقو جزئیات پلان شوي چې وروسته خپاره شي، وروسته له دې چې زیانمنونکي هر ځای له منځه یوړل شي.

دا لاهم روښانه نده چې څومره زیان منونکي په عمل کې موجوده غوښتنلیکونه اغیزه کوي ، ځکه چې د دې لپاره چې ستونزه پخپله په کوډ کې څرګند شي ، په بلاکونو کې د سایکلیک هش محاسبه باید وکارول شي او یو له پروسس شوي بلاکونو څخه باید شاوخوا 4 GB اندازه وي (لږترلږه 2^32 - 200 بایټ). کله چې په یوځل کې د ان پټ ډیټا پروسس کول (پرته له دې چې په ترتیب سره په برخو کې هش محاسبه کړي) ، ستونزه نه څرګندیږي. د محافظت ترټولو ساده میتود په توګه، دا وړاندیز کیږي چې د هش محاسبې په یوه تکرار کې د شامل شوي ډیټا اعظمي اندازه محدود کړي.

زیانمنتیا د ان پټ ډیټا پروسس کولو کې د یوې غلطۍ له امله رامینځته کیږي. د "int" ډول سره د ارزښتونو د ناسم پرتله کولو له امله، د پاتې معلوماتو غلط اندازه ټاکل کیږي، کوم چې د مختص شوي بفر څخه بهر د لیکلو لامل کیږي. په ځانګړې توګه، پرتله کولو کې د "partialBlock + instance->byteIOIndex" کلمه کارول شوې، کوم چې د اجزاوو برخو لوی ارزښتونو لپاره د انټیجر ډیریدو لامل شوی. برسیره پردې، په کوډ کې د غلط ډول کاسټ "(نه لاسلیک شوی int)(dataByteLen - i)" شتون درلود، کوم چې د 64-bit size_t ډول سره په سیسټمونو کې د ډیریدو لامل شوی.

د مثال کوډ چې د ډیریدو لامل کیږي: hashlib h = hashlib.sha3_224() m1 = b"\x00" * 1 وارد کړئ؛ m2 = b"\x00"* 4294967295; h.update(m1) h.update(m2) چاپ(h.hexdigest())

سرچینه: opennet.ru

Add a comment