په Exim کې جدي زیانونه چې کوډ ته اجازه ورکوي چې په سرور کې د روټ امتیازاتو سره اجرا شي

د Exim میل سرور کې پیژندل شوی انتقادي زیانمنتیا (CVE-2019-10149) ، کوم چې کولی شي په سرور کې د ریموټ کوډ اجرا کولو لامل شي د ریښې حقونو سره کله چې د ځانګړي جوړ شوي غوښتنې پروسس کول. د ستونزې څخه د ګټې اخیستنې احتمال د 4.87 څخه تر 4.91 پورې نسخو کې یا د EXPERIMENTAL_EVENT اختیار سره د جوړولو په وخت کې یادونه شوې.

په ډیفالټ ترتیب کې ، برید د ځایی کارونکي لخوا پرته له غیر ضروري پیچلتیاو ترسره کیدی شي ، ځکه چې "تصدیق = ترلاسه کونکي" ACL پلي کیږي ، کوم چې د بهرني پتې لپاره اضافي چیکونه ترسره کوي. یو لیرې برید واقع کیدی شي کله چې ترتیبات بدل شي، لکه د بل ډومین لپاره د ثانوي MX په توګه عمل کول، د "verify=recipient" ACL لرې کول، یا په local_part_suffix کې ځینې بدلونونه). ریموټ برید هم ممکن دی که چیرې برید کونکی وکولی شي د سرور سره اړیکه د 7 ورځو لپاره خلاص وساتي (د مثال په توګه ، د وخت پای ته رسیدو لپاره په یوه دقیقه کې یو بایټ لیږل). په ورته وخت کې، دا ممکنه ده چې د ستونزې د لرې پرتو استخراج لپاره ساده برید ویکتورونه شتون ولري.

زیانمنتیا د ډیلیور_ میسیج() فنکشن کې د ترلاسه کونکي پتې د غلط تایید له امله رامینځته کیږي چې په /src/deliver.c فایل کې تعریف شوي. د ادرس فارمیټینګ په مینځلو سره، برید کونکی کولی شي د خپل ډیټا بدیل د کمانډ دلیلونو کې ترلاسه کړي چې د execv() فنکشن له لارې د ریښو حقونو سره ویل کیږي. عملیات د بفر اوور فلو یا حافظې فساد لپاره کارول شوي پیچلي تخنیکونو کارولو ته اړتیا نلري؛ د ساده کرکټر بدیل کافي دی.

ستونزه د پتې د تبادلې لپاره د ساختمان کارولو سره تړاو لري:

ډیلیور_لوکلپارټ = پراخ_ تار (
string_sprintf("${local_part:%s}", new->address));
ډیلیور_ډومین = پراخ_سټرینګ (
string_sprintf("${domain:%s}", new->address));

د expand_string() فنکشن یو ډیر پیچلی کمبینر دی، پشمول د "${run{command arguments}" کمانډ پیژندنه، کوم چې د بهرني هینډلر پیل کولو لامل کیږي. په دې توګه، د SMTP په ناسته کې د برید کولو لپاره، یو ځایی کارن یوازې اړتیا لري چې یو کمانډ واستوي لکه 'RCPT TO "username+${run{...}}@localhost"، چیرې چې لوکل هوسټ د محلي_ډومینونو لیست څخه یو له کوربه څخه دی، او کارن-نوم د موجوده محلي کارونکي نوم دی.

که سرور د میل ریلي په توګه کار کوي، نو دا کافي ده چې له لیرې د RCPT کمانډ "${run{...}}@relaydomain.com" ته واستوي، چیرته چې relaydomain.com یو له کوربه څخه دی چې په relay_to_domains کې لیست شوي. د ترتیباتو برخه. څرنګه چې Exim د امتیاز حالت ډراپ کولو لپاره ډیفالټ نه دی (deliver_drop_privilege = false)، د "${run{...}}" له لارې لیږدول شوي کمانډونه به د روټ په توګه اجرا شي.

د یادولو وړ ده چې زیانمنتیا وه له منځه وړل د فبروري په میاشت کې د 4.92 خوشې کولو کې، پرته له دې چې ټینګار وکړي چې فکس ممکن د امنیتي ستونزو لامل شي. د باور کولو لپاره هیڅ دلیل شتون نلري چې د Exim پراختیا کونکو لخوا په قصدي ډول د زیانونو پټول شتون درلود، ځکه چې ستونزه د وخت په اوږدو کې حل شوې وه. سمونونه ناکامي هغه وخت پیښیږي کله چې غلط ادرسونه لیږدول کیږي، او زیانمنتیا د Qualys لخوا په Exim کې د بدلونونو د پلټنې په ترڅ کې پیژندل شوې.

د پخوانیو نسخو لپاره یو فکس چې په توزیع کې کارول کیږي اوس مهال یوازې په توګه شتون لري پیچ. د ستونزې د حل لپاره د پخوانیو څانګو لپاره اصلاحي خپرونه د جون په 11 نیټه ټاکل شوې. د بسته تازه کولو لپاره چمتو دي Debian, د وبنټو, پرانیستې. آرکس لینکس и فیډورا دوی 4.92 نسخه وړاندې کوي، په کوم کې چې ستونزه نه ښکاري. د RHEL او CentOS ستونزه حساس نه دی، ځکه چې Exim د دوی منظم کڅوړې ذخیره کې شامل ندي.

سرچینه: opennet.ru

Add a comment