Ny vulnerability amin'ny OpenSMTPD izay mamela ny famonoana kaody lavitra ho toy ny faka

Ao amin'ny mpizara mailaka novolavolain'ny tetikasa OpenBSD OpenSMTPD fantatra vulnerability mitsikera (CVE-2020-7247) izay ahafahanao manatanteraka avy lavitra ny baiko shell amin'ny mpizara manana zon'ny mpampiasa root. Ny vulnerability dia fantatra nandritra ny famerenana indray nataon'ny Qualys Security (audit teo aloha ny OpenSMTPD natao tamin'ny taona 2015, ary efa nisy ny vulnerability vaovao nanomboka tamin'ny May 2018). OLANA intsony tamin'ny famoahana ny OpenSMTPD 6.6.2. Ny mpampiasa rehetra dia asaina mametraka haingana ny fanavaozana (ho an'ny OpenBSD dia azo apetraka amin'ny alàlan'ny syspatch ny patch).

Karazana fanafihana roa no natolotra. Ny safidy voalohany dia miasa ao amin'ny konfigurasi OpenSMTPD default (mandray fangatahana avy amin'ny localhost ihany) ary mamela anao hanararaotra ny olana eo an-toerana, rehefa afaka miditra amin'ny tambajotra eo an-toerana ny mpanafika (loopback) amin'ny mpizara (ohatra, amin'ny rafitra fampiantranoana) . Ny safidy faharoa dia miseho rehefa natsangana ny OpenSMTPD hanaiky ny fangatahana tambajotra ivelany (server mail izay manaiky mailaka avy amin'ny antoko fahatelo). Ny mpikaroka dia nanomana fanararaotana prototype izay miasa am-pahombiazana miaraka amin'ny variana OpenSMTPD avy amin'ny OpenBSD 6.6 ary miaraka amin'ny dikan-tsarimihetsika ho an'ny rafitra miasa hafa (natao amin'ny Debian Testing).

Ny olana dia vokatry ny fahadisoana ao amin'ny smtp_mailaddr() asa, izay antsoina mba hanamarinana ny fahamarinan'ny soatoavina ao amin'ny "MAIL FROM" sy "RCPT TO" saha izay mamaritra ny mpandefa / mpandray ary ampitaina mandritra ny fifandraisana. mankany amin'ny mpizara mailaka. Ny asa smtp_mailaddr() dia antsoina amin'ny smtp_mailaddr() hanamarina ny ampahany amin'ny adiresy mailaka izay tonga alohan'ny endri-tsoratra "@".
valid_localpart(), izay mihevitra ny tarehintsoratra "!#$%&'*/?^`{|}~+-=_" araka ny navela (MAILADDR_ALLOWED), araka ny takian'ny RFC 5322.

Amin'ity tranga ity, ny tady dia tafavoaka mivantana ao amin'ny fiasa mda_expand_token(), izay misolo ny tarehintsoratra "!#$%&'*?`{|}~" (MAILADDR_ESCAPE). Fanampin'izay, ny tady voaomana ao amin'ny mda_expand_token() dia ampiasaina rehefa miantso ny mpitatitra entana (MDA) mampiasa ny baiko 'execle("/bin/sh", "/bin/sh", "-c", mda_command,…'. mail mankany amin'ny mbox amin'ny alàlan'ny /bin/sh, ny andalana "/usr/libexec/mail.local -f %%{mbox.from} %%{user.username}" dia mandeha, izay misy ny sanda "%{mbox.from}" ahitana angon-drakitra nandositra avy amin'ny parameter "MAIL FROM".

Ny fototry ny vulnerability dia ny smtp_mailaddr() dia manana hadisoana lojika noho izany, raha misy sehatra tsy misy na inona na inona alefa amin'ny mailaka, ny fiasa dia mamerina fehezan-dalàna fanamarinana mahomby, na dia misy tarehintsoratra tsy mety aza ny ampahany amin'ny adiresy alohan'ny "@". Fanampin'izay, rehefa manomana tady miaraka amin'ny fiasa mda_expand_token() dia tsy ny tarehintsoratra manokana shell rehetra no afa-mandositra, fa ny tarehin-tsoratra manokana ihany no avela ao amin'ny adiresy mailaka. Noho izany, mba hampandehanana ny baiko, dia ampy ny mampiasa ny marika ";" ao amin'ny faritra eo an-toerana amin'ny mailaka. ary habaka, izay tsy ao amin'ny MAILADDR_ESCAPE set ary tsy afa-mandositra. Ohatra:

$nc 127.0.0.1 25

HELO profesora.falken
MAIL AVY:<;matory 66;>
RCPT TO:
NY FANAZAVANA
.
Quit

Aorian'ity fivoriana ity, OpenSMTPD, rehefa alefa any amin'ny mbox, dia handefa ny baiko amin'ny alàlan'ny shell

/usr/libexec/mail.local -f ;sleep 66; MAMAKA

Amin'izay fotoana izay ihany koa, voafetra ny fahafahan'ny fanafihana satria tsy afaka mihoatra ny tarehintsoratra 64 ny ampahany eo an-toerana amin'ny adiresy, ary ny tarehintsoratra manokana '$' sy '|' dia soloina ":" rehefa mandositra. Mba hialana amin'io famerana io, ny zava-misy fa ny vatan'ny hafatra dia alefa aorian'ny fandehanana /usr/libexec/mail.local amin'ny alàlan'ny stream input, i.e. amin'ny alàlan'ny fanodikodinana amin'ny adiresy, azonao atao ny manomboka ny mpandika teny baiko sh ary mampiasa ny vatan'ny taratasy ho toromarika. Koa satria ny lohatenin'ny serivisy SMTP dia voatondro eo am-piandohan'ny taratasy, dia soso-kevitra ny hampiasa ny antso vakiana amin'ny tadio hanilihana azy ireo. Ny asa fanararaotana dia toy izao:

$nc 192.168.56.143 25

HELO profesora.falken
MAIL AVY:<;fa i in 0 1 2 3 4 5 6 7 8 9 abcd;vakio r;vita;sh;exit 0;>
RCPT TO:[email voaaro]>
NY FANAZAVANA
#0
#1
...
#d
fa i WOPR; Aza
echo -n "($i) " && id || tapaka
vita > /root/x."`id -u`"."$$"
.
Quit

Source: opennet.ru

Add a comment