ప్యాకేజీతో సరఫరా చేయబడిన e2fsck యుటిలిటీలో , (), ఇది ప్రత్యేకంగా రూపొందించిన డైరెక్టరీలను కలిగి ఉన్న ఫైల్ సిస్టమ్ను తనిఖీ చేస్తున్నప్పుడు హానికరమైన కోడ్ను అమలు చేయడానికి అనుమతిస్తుంది. ఈ లోపం 1.43.3 నుండి 1.45.4 వరకు విడుదలలలో నిర్ధారించబడింది. ఈ లోపం అప్డేట్లో సరిచేయబడింది. పంపిణీలలో సమస్య పరిష్కారం కాకుండా మిగిలిపోయింది (, , , , ).
ఈ దుర్బలత్వం, rehash.c ఫైల్లోని mutate_name() ఫంక్షన్లో ఉన్న ఒక లోపం వల్ల ఏర్పడుతుంది. ఈ ఫంక్షన్, ఒక డైరెక్టరీలోని అన్ని ఫైళ్లను దానికి మ్యాప్ చేసే డైరెక్టరీ-సంబంధిత హాష్ టేబుల్లను పునర్నిర్మించడానికి ఉపయోగించబడుతుంది. డైరెక్టరీ-సంబంధిత hash_entry నిర్మాణం పాడవడం వల్ల, దాడి చేసేవారి డేటా కేటాయించిన బఫర్ వెలుపల ఉన్న ప్రాంతంలోకి వ్రాయబడవచ్చు. హాష్ టేబుల్లో ఒకే పేరుతో బహుళ ఫైళ్లు కనుగొనబడితే, e2fsck యుటిలిటీ ఆ నకిలీ ఫైళ్ల పేరుకు ~0, ~1, మొదలైనవాటిని జోడించి వాటి పేరును మారుస్తుంది. ఈ విధంగా పేరు మార్చే సమయంలో కొత్త పేరును తాత్కాలికంగా నిల్వ చేయడానికి స్టాక్పై 256-బైట్ల బఫర్ కేటాయించబడుతుంది.
కాపీ చేయబడిన డేటా పరిమాణం "entry->name_len & 0xff" అనే ఎక్స్ప్రెషన్ ద్వారా నిర్ణయించబడుతుంది, కానీ entry->name_len విలువ అసలు పేరు పరిమాణం ఆధారంగా లెక్కించబడకుండా, ఒక డిస్క్ స్ట్రక్చర్ నుండి లోడ్ చేయబడుతుంది. ఒకవేళ ఆ పరిమాణం సున్నా అయితే, అర్రే ఇండెక్స్ -1కి సెట్ చేయబడుతుంది, ఇది ఇంటీజర్ అండర్ఫ్లోకు పరిస్థితులను సృష్టించి, స్టాక్లోని ఇతర డేటాను "~0" విలువతో ఓవర్రైట్ చేస్తుంది. 64-బిట్ సిస్టమ్ల కోసం, ఈ దుర్బలత్వాన్ని ఉపయోగించుకోవడం అసంభవం అని భావిస్తారు మరియు దీనికి స్టాక్ పరిమాణ పరిమితులు (ulimit -s unlimited) అవసరం లేదు. 32-బిట్ సిస్టమ్ల కోసం, దీనిని ఉపయోగించుకోవడం సాధ్యమేనని భావిస్తారు, కానీ దాని ఫలితం కంపైలర్ ద్వారా ఎగ్జిక్యూటబుల్ ఎలా కంపైల్ చేయబడిందనే దానిపై ఎక్కువగా ఆధారపడి ఉంటుంది.
దాడి చేయడానికి, దాడి చేసే వ్యక్తి ext2, ext3, లేదా ext4 ఫైల్ సిస్టమ్ ఉన్న పార్టిషన్లోని డేటాను ఏదో ఒక విధంగా కరప్ట్ చేయాలి. ఈ ఆపరేషన్కు సూపర్యూజర్ ప్రివిలేజెస్ అవసరం కాబట్టి, e2fsck యుటిలిటీతో బాహ్య డ్రైవ్లను లేదా బయటి నుండి పొందిన ఫైల్ సిస్టమ్ ఇమేజ్లను స్కాన్ చేసేటప్పుడు ఈ వల్నరబిలిటీ ఒక ముప్పును కలిగిస్తుంది.
మూలం: opennet.ru
