Bregusrwydd yn OpenSMTPD sy'n caniatáu gweithredu cod o bell gyda breintiau gwraidd

Yn y gweinydd post a ddatblygwyd gan y prosiect OpenBSD AgoredSMTPD a nodwyd bregusrwydd critigol (CVE-2020-7247), sy'n caniatáu gweithredu gorchmynion cragen o bell ar weinydd â breintiau gwraidd. Darganfuwyd y bregusrwydd yn ystod ail-archwiliad a gynhaliwyd gan Qualys Security (archwiliad blaenorol o OpenSMTPD cynhaliwyd yn 2015, ac mae'r bregusrwydd newydd wedi bod yn bresennol ers mis Mai 2018). Y broblem dileu yn y datganiad OpenSMTPD 6.6.2. Cynghorir pob defnyddiwr i osod y diweddariad ar unwaith (ar gyfer OpenBSD, gellir gosod y clwt trwy syspatch).

Предложено два варианта атаки. Первый вариант работает в конфигурации OpenSMTPD по умолчанию (приём запросов только с localhost) и позволяет эксплуатировать проблему локально, когда атакующий имеет возможность обратиться к локальному сетевому интерфейсу (loopback) на сервере (например, на системах хостинга). Второй вариант проявляется в случае настройки OpenSMTPD для приёма внешних сетевых запросов (почтовый сервер, принимающий стороннюю почту). Исследователями подготовлен прототип эксплоита, который успешно работает как с вариантом OpenSMTPD из состава OpenBSD 6.6, так и с переносимой версией для других ОС (проведено в Debian Testing).

Mae'r broblem yn cael ei hachosi gan wall yn y ffwythiant smtp_mailaddr(), sy'n cael ei alw i ddilysu'r gwerthoedd yn y meysydd "MAIL FROM" a "RCPT TO", sy'n diffinio'r anfonwr/derbynnydd ac sy'n cael eu trosglwyddo yn ystod y cysylltiad â'r gweinydd post. I ddilysu'r rhan o'r cyfeiriad e-bost sy'n dod cyn y symbol "@", mae smtp_mailaddr() yn galw'r ffwythiant
valid_localpart(), sy'n ystyried bod y cymeriadau "!#$%&'*/?^`{|}~+-=_" yn ddilys (MAILADDR_ALLOWED), fel sy'n ofynnol gan RFC 5322.

Yn yr achos hwn, mae'r dianc llinyn uniongyrchol yn cael ei berfformio yn y ffwythiant mda_expand_token(), sy'n disodli'r nodau "!#$%&'*?`{|}~" (MAILADDR_ESCAPE) yn unig. Wedi hynny, defnyddir y llinyn a baratowyd yn mda_expand_token() wrth alw'r asiant dosbarthu (MDA) gan ddefnyddio'r gorchymyn 'execle(«/bin/sh», «/bin/sh», «-c», mda_command,…'. Os rhoddir neges yn mbox trwy /bin/sh, mae'r llinell "/usr/libexec/mail.local -f %%{mbox.from} %%{user.username}" yn cael ei rhedeg, lle mae gwerth "%{mbox.from}" yn cynnwys y data a ddihangodd o'r paramedr "MAIL FROM".

Mae'r gwendid yn gorwedd mewn gwall rhesymegol yn smtp_mailaddr(), sy'n achosi i'r swyddogaeth ddychwelyd cod dilysu llwyddiannus pan fydd parth gwag yn cael ei basio mewn e-bost, hyd yn oed os yw'r rhan o'r cyfeiriad cyn yr "@" yn cynnwys nodau annilys. Wrth baratoi'r llinyn, dim ond y nodau hynny a ganiateir mewn cyfeiriadau e-bost sy'n cael eu dianc gan y swyddogaeth mda_expand_token(), nid pob nod arbennig plisgyn posibl. Felly, i redeg eich gorchymyn, dim ond y cymeriad ";" a gofod sydd angen i chi eu defnyddio yn rhan leol yr e-bost, nad ydynt wedi'u cynnwys yn y set MAILADDR_ESCAPE ac nad ydynt wedi'u dianc. Er enghraifft:

$ nc 127.0.0.1 25

HELO athro.falken
POST ODDI WRTH:<;cysgu 66;>
DERBYNIAD I:
DATA
.
QUIT

Ar ôl y sesiwn hon, bydd OpenSMTPD yn rhedeg y gorchymyn trwy gragen wrth ei ddanfon i mbox

/usr/libexec/mail.local -f ;cysgu 66; gwreiddyn

Mae'r arwyneb ymosod wedi'i gyfyngu gan y ffaith na all rhan leol y cyfeiriad fod yn fwy na 64 nod, ac mae'r nodau arbennig '$' a '|' yn cael eu disodli gan ":" yn ystod dianc. I osgoi'r cyfyngiad hwn, mae corff yr e-bost yn cael ei basio trwy'r ffrwd fewnbwn ar ôl i /usr/libexec/mail.local gael ei lansio. Mae hyn yn golygu, trwy drin y cyfeiriad, mai dim ond y dehonglydd gorchymyn sh y gellir ei lansio a gellir defnyddio corff yr e-bost fel set o gyfarwyddiadau. Gan fod penawdau SMTP gwasanaeth wedi'u nodi ar ddechrau'r e-bost, cynigir gorchymyn darllen dolennog i'w hepgor. Mae'r camfanteisio gweithredol yn edrych fel hyn:

$ nc 192.168.56.143 25

HELO athro.falken
POST ODDI WRTH:<;ar gyfer i yn 0 1 2 3 4 5 6 7 8 9 abcd;darllen r;done;sh;allanfa 0;>
DERBYNIAD I:
DATA
#0
#1
...
#d
i mi yn WOPR; gwneud
echo -n "($i) " && id || torri
wedi'i wneud > /root/x."`id -u`.""$$"
.
QUIT

Ffynhonnell: opennet.ru

Prynu gwesteio dibynadwy ar gyfer gwefannau sydd â diogelwch DDoS, gweinyddwyr VPS VDS 🔥 Prynu cynnal gwefannau dibynadwy gyda diogelwch DDoS, gweinyddion VPS VDS | ProHoster