ctypesలో చెల్లుబాటు కాని భిన్న సంఖ్యలను నిర్వహించేటప్పుడు పైథాన్‌లో దుర్బలత్వం

పైథాన్ ప్రోగ్రామింగ్ లాంగ్వేజ్ 3.7.10 మరియు 3.6.13 యొక్క కరెక్టివ్ విడుదలలు అందుబాటులో ఉన్నాయి, ఇవి హానిని (CVE-2021-3177) పరిష్కరిస్తాయి, ఇది ctypes మెకానిజమ్‌ని ఉపయోగించి C ఫంక్షన్‌లకు కాల్ చేసే హ్యాండ్లర్‌లలో చెల్లుబాటు కాని ఫ్లోటింగ్ పాయింట్ నంబర్‌లను ప్రాసెస్ చేసేటప్పుడు కోడ్ అమలుకు దారితీయవచ్చు. . సమస్య పైథాన్ 3.8 మరియు 3.9 బ్రాంచ్‌లను కూడా ప్రభావితం చేస్తుంది, అయితే వాటికి సంబంధించిన అప్‌డేట్‌లు ఇప్పటికీ విడుదల అభ్యర్థి స్థితిలోనే ఉన్నాయి (విడుదల మార్చి 1న షెడ్యూల్ చేయబడింది).

ctypes ఫంక్షన్ PyCArg_repr()లో బఫర్ ఓవర్‌ఫ్లో కారణంగా సమస్య ఏర్పడింది, ఇది స్ప్రింట్‌ఎఫ్ యొక్క అసురక్షిత వినియోగం కారణంగా సంభవిస్తుంది. ప్రత్యేకించి, పరివర్తన ఫలితాన్ని ప్రాసెస్ చేయడానికి 'sprintf(బఫర్, " ", self->tag, self->value.b)' 256 బైట్‌ల స్టాటిక్ బఫర్‌ను ("చార్ బఫర్[256]") కేటాయించింది, అయితే ఫలితం ఈ విలువను అధిగమించవచ్చు. దుర్బలత్వానికి అప్లికేషన్‌ల దుర్బలత్వాన్ని తనిఖీ చేయడానికి, మీరు “1e300” విలువను పాస్ చేయడానికి ప్రయత్నించవచ్చు, ఇది c_double.from_param పద్ధతి ద్వారా ప్రాసెస్ చేయబడినప్పుడు, క్రాష్‌కు దారి తీస్తుంది, ఫలితంగా సంఖ్య 308 అక్షరాలను కలిగి ఉంటుంది మరియు దానికి సరిపోదు. 256-బైట్ బఫర్. సమస్యాత్మక కోడ్ యొక్క ఉదాహరణ: దిగుమతి ctypes; x = ctypes.c_double.from_param(1e300); repr(x)

Debian, Ubuntu మరియు FreeBSDలలో సమస్య పరిష్కరించబడలేదు, కానీ Arch Linux, Fedora, SUSEలో ఇప్పటికే పరిష్కరించబడింది. RHELలో, FORTIFY_SOURCE మోడ్‌లో ప్యాకేజీ అసెంబ్లీ కారణంగా దుర్బలత్వం ఏర్పడదు, ఇది స్ట్రింగ్ ఫంక్షన్‌లలో అటువంటి బఫర్ ఓవర్‌ఫ్లోలను బ్లాక్ చేస్తుంది.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి