Exim మెయిల్ సర్వర్లో
డిఫాల్ట్ కాన్ఫిగరేషన్లో, స్థానిక వినియోగదారు ద్వారా అనవసరమైన సమస్యలు లేకుండా దాడిని నిర్వహించవచ్చు, ఎందుకంటే "వెరిఫై = స్వీకర్త" ACL వర్తించబడుతుంది, ఇది బాహ్య చిరునామాల కోసం అదనపు తనిఖీలను చేస్తుంది. మరొక డొమైన్ కోసం సెకండరీ MX వలె పని చేయడం, "verify=recipient" ACLని తీసివేయడం లేదా local_part_suffixకి కొన్ని మార్పులు వంటి సెట్టింగ్లను మార్చినప్పుడు రిమోట్ దాడి సంభవించవచ్చు. దాడి చేసే వ్యక్తి సర్వర్కి కనెక్షన్ను 7 రోజుల పాటు తెరిచి ఉంచగలిగితే రిమోట్ దాడి కూడా సాధ్యమవుతుంది (ఉదాహరణకు, సమయం ముగియడాన్ని దాటవేయడానికి నిమిషానికి ఒక బైట్ పంపడం). అదే సమయంలో, సమస్య యొక్క రిమోట్ దోపిడీ కోసం సరళమైన దాడి వెక్టర్స్ ఉండే అవకాశం ఉంది.
/src/deliver.c ఫైల్లో నిర్వచించబడిన deliver_message() ఫంక్షన్లో గ్రహీత యొక్క చిరునామా యొక్క తప్పు ధృవీకరణ వలన దుర్బలత్వం ఏర్పడుతుంది. చిరునామా ఫార్మాటింగ్ను మార్చడం ద్వారా, దాడి చేసే వ్యక్తి తన డేటాను రూట్ హక్కులతో execv() ఫంక్షన్ ద్వారా పిలిచే కమాండ్ ఆర్గ్యుమెంట్లలోకి మార్చవచ్చు. ఆపరేషన్కు బఫర్ ఓవర్ఫ్లోస్ లేదా మెమరీ కరప్షన్ కోసం ఉపయోగించే సంక్లిష్ట సాంకేతికతలను ఉపయోగించడం అవసరం లేదు; సాధారణ అక్షర ప్రత్యామ్నాయం సరిపోతుంది.
సమస్య చిరునామా మార్పిడి కోసం నిర్మాణం యొక్క ఉపయోగానికి సంబంధించినది:
deliver_localpart = Expand_string(
string_sprintf("${local_part:%s}", new->చిరునామా));
deliver_domain = Expand_string(
string_sprintf("${డొమైన్:%s}", కొత్త->చిరునామా));
Expand_string() ఫంక్షన్ అనేది "${run{కమాండ్ ఆర్గ్యుమెంట్స్}" కమాండ్ను గుర్తించడంతో పాటు, ఒక అతి క్లిష్టతతో కూడిన కంబైనర్, ఇది బాహ్య హ్యాండ్లర్ ప్రారంభానికి దారి తీస్తుంది. అందువల్ల, SMTP సెషన్లో దాడి చేయడానికి, స్థానిక వినియోగదారు 'RCPT TO “username+${run{...}}@localhost”' వంటి ఆదేశాన్ని మాత్రమే పంపాలి, ఇక్కడ స్థానిక_డొమైన్ల జాబితా నుండి హోస్ట్లలో స్థానిక హోస్ట్ ఒకటి, మరియు వినియోగదారు పేరు అనేది ఇప్పటికే ఉన్న స్థానిక వినియోగదారు పేరు.
సర్వర్ మెయిల్ రిలేగా పనిచేస్తుంటే, రిమోట్గా 'RCPTని “${run{...}}@relaydomain.com”కి పంపితే సరిపోతుంది, ఇక్కడ relaydomain.com అనేది relay_to_domainsలో జాబితా చేయబడిన హోస్ట్లలో ఒకటి. సెట్టింగుల విభాగం. ఎగ్జిమ్ ప్రివిలేజ్ మోడ్ను వదలడానికి డిఫాల్ట్ చేయనందున (deliver_drop_privilege = తప్పు), "${run{...}}" ద్వారా పంపబడిన ఆదేశాలు రూట్గా అమలు చేయబడతాయి.
దుర్బలత్వం ఉండటం గమనార్హం
డిస్ట్రిబ్యూషన్లలో ఉపయోగించడం కొనసాగించే మునుపటి సంస్కరణల కోసం పరిష్కారం ప్రస్తుతం అందుబాటులో ఉంది
మూలం: opennet.ru