Vulnerabilitas in OpenSMTPD quae remotis Codicis executionem cum privilegiis radicibus concedit

In mail server developed per OpenBSD project OpenSMTPD identified " discrimine vulnerability (CVE-2020-7247), quod te permittit ut testa mandata remotius exequaris in calculonis usoris radicibus iuribus. The vulnerability was identified in a re-audit conducted by Qualys Securitatis (prior OpenSMTPD audit efferebatur anno MMXV, et nova vulnerabilitas ab Maio 2015). Quaestio eliminated in OpenSMTPD 6.6.2 emissio. Omnes users commendantur ut statim renovationem instituant (pro OpenBSD, commissura per sypatch institui potest).

Duae oppugnationes optiones proponuntur. Prima optio operatur in configuratione default OpenSMTPD (precationes tantum ab localhost acceptando) et permittit ut problema localiter facias, cum oppugnator retis localis interfacem (loopback) in servo (exempli gratia rationum obnoxiorum) accedere potest. . Secunda optio occurrit cum OpenSMTPD conformatus est ad postulationes retis externas recipiendas (servulus epistularum qui tertiam partem epistularum accipit). Investigatores prototypum facinoris operanti bene operati sunt tum cum versione OpenSMTPD in OpenBSD 6.6 comprehensae et cum versione portatili ad alia systemata operativa (in Testing Debian deducto).

Problema causatur per errorem in functione smtp_mailaddr() quae dicitur ad reprimendam rectitudinem valorum in "MAIL FROM" et "RCPT TO" agros mittentis/recipientis definientes et per nexum transeunt. cum servo mail. Ad reprimendam partem electronicae inscriptionis quae praecedit symbolum "@", munus vocatur smtp_mailaddr()
valid_localpart(), quod acceptat (MAILADDR_ALLOWED) characteres "!#$%&'*/?^`{|}~+-=_", postulante RFC 5322.

Hoc in casu, directa elapsus chordae exercetur in munere mda_expand_token(), quod notas tantum "!#$%&'*? `{|}~" (MAILADDR_ESCAPE). Postmodum linea parata in mda_expand_token() adhibita est, cum vocatum agentis traditionis (MDA) utens mandato "execle(/bin/sh", "/bin/sh", "-c", mda_ imperandi, .... In casu epistolas ad mbox per /bin/sh collocandi, linea "/usr/libexec/mail.local -f %%{mbox.from} %%{user.username}" educitur, ubi valor "% {mbox.from}" includit effugium notitia ex "MAIL FROM" parametri.

Essentia vulnerabilitas est quod smtp_mailaddr() errorem logicum habet, ex quo, si missio vacua in electronica mittitur, munus redit tesseram felicis, etiamsi pars inscriptionis ante "@" characteres invalidos contineat. . Praeterea, cum chorda parando, munus mda_expand_token() non effugit, omnes characteres speciales testaceos fieri non potest, sed tantum specialia ingenia in electronica electronica permissa sunt. Ita, ut tuum praeceptum curras, satis est ";" uti symbolo in locali inscriptionis parte. et spatium, quod non comprehenditur in MAILADDR_ESCAPE positum et non effugit. Exempli gratia:

$nc 127.0.0.1 25

HELO professor.falken
MAIL FROM:<;somno LXVI,>
RPT TO:
DATA
.
LINQUO

Post hanc sessio, OpenSMTPD cum mbox traditum, mandatum per corticem mittet

/usr/libexec/mail.local -f;somnum 66; radix

Eodem tempore, impetus possibilitates limitantur eo quod pars inscriptionis loci 64 characteres excedere non potest, ac notas speciales "$" et "|' reponuntur cum ":" euadens. Ad hanc limitationem praetermittendum, utimur eo quod corpus litterae transmittitur post decursum /usr/libexec/mail.local per input flumen, i.e. Inscriptione abusa, solum sh mandatum interpretem mittere potes et corpus epistolae uti praescripto mandatorum. Cum ministerium ESMTP capitis indicentur in epistulae initio, suggeritur uti in ansa legere praeceptum ut eas omittas. Faciendi opus aliquid simile hoc spectat:

$nc 192.168.56.143 25

HELO professor.falken
MAIL FROM:<;nam i in 0 1 2 3 4 5 6 7 8 9 abcd;do lege r, factum, sh; exit 0;>
RPT TO:[Inscriptio protected]>
DATA
#0
#1
...
#d
pro i in WOPR; do
resonare -n "($i) "&& id || confractus
factum > /root/x."`id -u`.""$$"
.
LINQUO

Source: opennet.ru