SHA-3 الگورتھم کے بنیادی نفاذ کے ساتھ لائبریری میں کمزوری۔

ایکس کے سی پی پیکج (توسیع شدہ کیک کوڈ پیکیج) میں پیش کردہ SHA-3 (کیکک) کرپٹوگرافک ہیش فنکشن کے نفاذ میں ایک کمزوری (CVE-2022-37454) کی نشاندہی کی گئی ہے، جو کہ کچھ کی پروسیسنگ کے دوران بفر اوور فلو کا باعث بن سکتی ہے۔ فارمیٹ شدہ ڈیٹا. مسئلہ SHA-3 کے مخصوص نفاذ کے کوڈ میں ایک بگ کی وجہ سے ہے، نہ کہ خود الگورتھم میں کسی کمزوری کی وجہ سے۔ XKCP پیکیج کو SHA-3 کے باضابطہ نفاذ کے طور پر سمجھا جاتا ہے، جسے Keccak ڈویلپمنٹ ٹیم کے ان پٹ کے ساتھ تیار کیا گیا ہے، اور مختلف پروگرامنگ زبانوں میں SHA-3 فنکشنز کی بنیاد کے طور پر استعمال کیا جاتا ہے (مثال کے طور پر، XKCP کوڈ Python hashlib میں استعمال ہوتا ہے۔ ماڈیول، روبی ڈائجسٹ پیکیج sha3 اور PHP ہیش_* فنکشنز)۔

اس مسئلے کی نشاندہی کرنے والے محقق کے مطابق، وہ ہیش فنکشن کی کرپٹوگرافک خصوصیات کی خلاف ورزی کرنے اور پہلی اور دوسری تصویروں کو تلاش کرنے کے ساتھ ساتھ تصادم کا پتہ لگانے کے لیے خطرے کو استعمال کرنے میں کامیاب رہا۔ اس کے علاوہ، یہ اعلان کیا گیا تھا کہ ایک پروٹو ٹائپ ایکسپلائٹ بنایا جائے گا جو خاص طور پر ڈیزائن کی گئی فائل کی ہیش کا حساب لگاتے وقت کوڈ کو عمل میں لانے کی اجازت دے گا۔ خطرے کو ممکنہ طور پر ڈیجیٹل دستخطی تصدیقی الگورتھم پر حملہ کرنے کے لیے بھی استعمال کیا جا سکتا ہے جو SHA-3 استعمال کرتے ہیں (مثال کے طور پر، Ed448)۔ حملے کے طریقوں کی تفصیلات کو بعد میں شائع کرنے کا منصوبہ ہے، اس کے بعد کہ ہر طرف سے خطرے کے خاتمے کے بعد۔

یہ ابھی تک واضح نہیں ہے کہ کمزوری موجودہ ایپلی کیشنز کو عملی طور پر کتنا متاثر کرتی ہے، کیونکہ کوڈ میں مسئلہ کو ظاہر کرنے کے لیے، بلاکس میں سائکلک ہیش کیلکولیشن کا استعمال کیا جانا چاہیے اور پروسیس شدہ بلاکس میں سے ایک کا سائز تقریباً 4 جی بی ہونا چاہیے (کم از کم 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) print(h.hexdigest())

ماخذ: opennet.ru

نیا تبصرہ شامل کریں