So-leòntachd ann an OpenSMTPD a leigeas le còd iomallach a chuir an gnìomh mar fhreumh

Anns an fhrithealaiche puist a chaidh a leasachadh leis a 'phròiseact OpenBSD Fosgail SMTPD aithnichte so-leòntachd èiginneach (CVE-2020-7247) a leigeas leat òrdughan slige a chuir an gnìomh air astar air frithealaiche le còraichean cleachdaiche freumh. Chaidh an so-leòntachd a chomharrachadh aig ath-sgrùdadh a rinn Qualys Security (sgrùdadh roimhe air OpenSMTPD chaidh a chumail ann an 2015, agus tha an so-leòntachd ùr air a bhith an làthair bhon Chèitean 2018). Trioblaid air a chuir às ann an sgaoileadh OpenSMTPD 6.6.2. Thathas a’ comhairleachadh a h-uile neach-cleachdaidh an ùrachadh a chuir a-steach gu h-èiginneach (airson OpenBSD, faodar am paiste a chuir a-steach tro syspatch).

Chaidh dà sheòrsa ionnsaigh a mholadh. Bidh a’ chiad roghainn ag obair ann an rèiteachadh bunaiteach OpenSMTPD (a ’faighinn iarrtasan a-mhàin bho localhost) agus a’ leigeil leat brath a ghabhail air an duilgheadas gu h-ionadail, nuair a gheibh an neach-ionnsaigh cothrom air an eadar-aghaidh lìonra ionadail (loopback) air an fhrithealaiche (mar eisimpleir, air siostaman aoigheachd) . Bidh an dàrna roghainn a’ nochdadh nuair a tha OpenSMTPD air a rèiteachadh gus gabhail ri iarrtasan lìonra bhon taobh a-muigh (frithealaiche puist a ghabhas ri post treas-phàrtaidh). Tha luchd-rannsachaidh air brath prototype ullachadh a bhios ag obair gu soirbheachail an dà chuid leis an tionndadh OpenSMTPD bho OpenBSD 6.6 agus le dreach so-ghiùlain airson siostaman obrachaidh eile (air a dhèanamh ann an Deuchainn Debian).

Tha an duilgheadas air adhbhrachadh le mearachd anns a’ ghnìomh smtp_mailaddr(), ris an canar gus dearbhadh dè cho ceart ‘s a tha na luachan anns na raointean“ POST FROM ”agus“ RCPT TO ”a bhios a’ dearbhadh an neach a chuir / a gheibh e agus a thèid a ghluasad tron ​​​​cheangal chun an fhrithealaiche puist. Canar an gnìomh smtp_mailaddr() ann an smtp_mailaddr() gus sgrùdadh a dhèanamh airson a’ phàirt den t-seòladh puist a tha a’ tighinn ron charactar “@”.
valid_localpart(), a tha a' beachdachadh air "!#$%&'*/?^`{|}~+-=_" caractaran mar a tha ceadaichte (MAILADDR_ALLOWED), mar a dh'fheumar le RFC 5322.

Anns a’ chùis seo, thèid an t-sreang a theicheadh ​​gu dìreach san ghnìomh mda_expand_token(), nach gabh ach àite nan caractaran “!#$%&’*?`{|}~” (MAILADDR_ESCAPE). A bharrachd air an sin, thèid an sreang a chaidh ullachadh ann am mda_expand_token () a chleachdadh nuair a chuireas tu fios chun àidseant lìbhrigidh (MDA) a’ cleachdadh an àithne ‘execle (“/ bin/sh”, “/ bin/sh”, “-c”, mda_command,…’. gu mbox via /bin/sh, tha an loidhne "/usr/libexec/mail.local -f %%{mbox.from} %%{username}" air a ruith, far a bheil an luach "%{mbox.from}" a’ toirt a-steach dàta a theich bhon pharameter “MAIL FROM”.

Is e brìgh na so-leòntachd gu bheil mearachd loidsigeach aig smtp_mailaddr() air sgàth sin, ma thèid àrainn falamh a chuir gu post-d, tillidh an gnìomh còd dearbhaidh soirbheachail, eadhon ged a tha caractaran neo-dhligheach anns a’ phàirt den t-seòladh ro “@”. A bharrachd air an sin, nuair a bhios tu ag ullachadh sreang leis a’ ghnìomh mda_expand_token(), cha tèid a h-uile caractar sònraichte slige a theicheadh, ach dìreach caractaran sònraichte ceadaichte san t-seòladh puist. Mar sin, gus an àithne agad a ruith, tha e gu leòr an samhla ";" a chleachdadh anns a 'phàirt ionadail den phost-d. agus space, nach eil san t-seata MAILADDR_ESCAPE agus nach tèid air teicheadh. Mar eisimpleir:

$nc 127.0.0.1 25

HELO ollamh.falken
POST BHO: <;cadal 66;>
RCPT GU:
DÀTA
.
CUIDHTICH

Às deidh an t-seisein seo, ruithidh OpenSMTPD, nuair a thèid a lìbhrigeadh gu mbox, an àithne tro shlige

/usr/libexec/mail.local -f; cadal 66; freumh

Aig an aon àm, tha comas ionnsaigh cuingealaichte leis nach urrainn don phàirt ionadail den t-seòladh a dhol thairis air 64 caractar, agus na caractaran sònraichte '$' agus '|' air an cur nan àite le " : " nuair a thèid thu às. Gus faighinn seachad air a’ chuingealachadh seo, is e an fhìrinn gu bheil corp na teachdaireachd air a chuir a-mach às deidh ruith /usr/libexec/mail.local tron ​​t-sruth inntrigidh, i.e. tro làimhseachadh leis an t-seòladh, chan urrainn dhut ach an eadar-theangair sh command a chuir air bhog agus corp na litreach a chleachdadh mar sheata stiùiridh. Leis gu bheil cinn-cinn SMTP seirbheis air an sònrachadh aig toiseach na litreach, thathas a’ moladh an àithne leughaidh a chleachdadh ann an lùb gus an leum. Tha an cleachdadh obrach a’ coimhead rudeigin mar seo:

$nc 192.168.56.143 25

HELO ollamh.falken
POST BHO:<;oir i ann an 0 1 2 3 4 5 6 7 8 9 abcd; dèan leughadh r;done;sh; fàgail 0;>
RCPT GU:[post-d fo dhìon]>
DÀTA
#0
#1
...
#d
oir tha mi ann an WOPR; dèan
mac-talla -n "($i)" && id || briseadh
dèanta> / root/x." `id -u`"."$$"
.
CUIDHTICH

Source: fosgailtenet.ru

Cuir beachd ann