በኤግዚም ሜይል አገልጋይ ውስጥ
በነባሪ ውቅር ውስጥ ጥቃቱ በአካባቢያዊ ተጠቃሚ አላስፈላጊ ችግሮች ሊፈፀም ይችላል, ምክንያቱም "verify = ተቀባይ" ACL ስለሚተገበር ውጫዊ አድራሻዎች ተጨማሪ ፍተሻዎችን ያደርጋል. የርቀት ጥቃት ቅንጅቶች ሲቀየሩ ለምሳሌ ለሌላ ጎራ እንደ ሁለተኛ ደረጃ MX መስራት፣ "verify=recipient" ACL ን ማስወገድ ወይም በ local_part_suffix ላይ የተወሰኑ ለውጦችን ማድረግ ይቻላል። አጥቂው ከአገልጋዩ ጋር ያለው ግንኙነት ለ 7 ቀናት ክፍት ሆኖ እንዲቆይ ማድረግ ከቻለ የርቀት ጥቃትም ይቻላል (ለምሳሌ፡ የጊዜ ገደብ ለማለፍ በደቂቃ አንድ ባይት መላክ)። በተመሳሳይ ጊዜ ለችግሩ የርቀት ብዝበዛ ቀላል የሆኑ የጥቃት ቬክተሮች ሊኖሩ ይችላሉ.
ተጋላጭነቱ የተከሰተው የተቀባዩን አድራሻ በ/src/deliver.c ፋይል ውስጥ በተገለፀው የማድረስ_መልእክት() ተግባር ውስጥ ትክክል ባልሆነ ማረጋገጫ ነው። አንድ አጥቂ የአድራሻውን ቅርጸት በመቆጣጠር መረጃውን በ execv() ተግባር በኩል ከስር መብቶች ጋር በተጠራው የትእዛዝ ክርክር ውስጥ መተካት ይችላል። ክዋኔው ለመጠባበቂያ ክምችት ወይም ለትውስታ መበላሸት የሚያገለግሉ ውስብስብ ቴክኒኮችን መጠቀም አያስፈልግም፤ ቀላል ገጸ ባህሪን መተካት በቂ ነው።
ችግሩ ከአድራሻ መቀየር ግንባታ አጠቃቀም ጋር የተያያዘ ነው፡-
deliver_localpart = expand_string(
string_sprintf("${local_part:%s}", new->አድራሻ));
ማድረስ_ጎራ = expand_string(
string_sprintf("${domain:%s}", new->አድራሻ));
የ expand_string() ተግባር ከመጠን በላይ የተወሳሰበ አጣማሪ ነው፣ ይህም "${አሂድ{ትዕዛዝ ነጋሪ እሴቶች}" የሚለውን ትእዛዝ እውቅና መስጠትን ጨምሮ፣ ይህም ወደ ውጫዊ ተቆጣጣሪ መጀመሩን ያመጣል። ስለዚህ፣ በSMTP ክፍለ ጊዜ ውስጥ ለማጥቃት፣ የአካባቢ ተጠቃሚ እንደ 'RCPT TO "username+${run{...}}@localhost"' የሚል ትዕዛዝ ብቻ መላክ አለበት፣ የአካባቢ አስተናጋጁ ከአካባቢው_ጎራዎች ዝርዝር ውስጥ አንዱ ነው። እና የተጠቃሚ ስም የነባር የአካባቢ ተጠቃሚ ስም ነው።
አገልጋዩ እንደ ሜይል ማስተላለፊያ ሆኖ የሚሰራ ከሆነ፣ relaydomain.com በ relay_to_domains ውስጥ ከተዘረዘሩት አስተናጋጆች አንዱ በሆነበት 'RCPT ወደ "${run{...}}@relaydomain.com" የሚለውን ትዕዛዝ በርቀት መላክ በቂ ነው። የቅንብሮች ክፍል. ኤግዚም የልዩ መብት ሁነታን (deliver_drop_privilege = false) ለመጣል ነባሪ ስላልሆነ በ"${ሩጫ{...}}" በኩል የተላለፉ ትዕዛዞች እንደ ስር ይሰራሉ።
የተጋላጭነቱ ሁኔታ ትኩረት የሚስብ ነው።
በስርጭት ውስጥ ጥቅም ላይ የሚውሉ የቀደሙ ስሪቶች ማስተካከያ በአሁኑ ጊዜ የሚገኘው እንደ ብቻ ነው።
ምንጭ: opennet.ru