adịghị ike na OpenSMTPD nke na-enye ohere igbu koodu dịpụrụ adịpụ na ikike mgbọrọgwụ

N'ime ihe nkesa ozi nke mmemme OpenBSD mepụtara MepeeSMTPD mara adịghị ike dị egwu (CVE-2020-7247), nke na-enye gị ohere ịme iwu shei na sava ahụ na ikike onye ọrụ mgbọrọgwụ. Achọpụtara adịghị ike ahụ n'oge nyochagharị nke Qualys Security (nyocha OpenSMTPD gara aga. e rụrụ na 2015, na adịghị ike ọhụrụ ahụ adịla kemgbe Mee 2018). Nsogbu kpochapuru na OpenSMTPD 6.6.2 ntọhapụ. A na-atụ aro ndị ọrụ niile ka ha wụnye mmelite ozugbo (maka OpenBSD, enwere ike itinye patch ahụ site na syspatch).

A na-atụpụta nhọrọ mbuso agha abụọ. Nhọrọ nke mbụ na-arụ ọrụ na ndabara OpenSMTPD nhazi (nabata arịrịọ naanị site na localhost) ma na-enye gị ohere iji nsogbu ahụ mee ihe na mpaghara, mgbe onye na-awakpo nwere ike ịnweta netwọk netwọk mpaghara (loopback) na ihe nkesa (dịka ọmụmaatụ, na nhazi usoro) . Nhọrọ nke abụọ na-eme mgbe ahaziri OpenSMTPD ka ọ nata arịrịọ netwọk mpụga (ihe nkesa ozi na-anabata ozi ndị ọzọ). Ndị nyocha akwadola ụdị nrigbu nke na-arụ ọrụ nke ọma ma ụdị OpenSMTPD gụnyere na OpenBSD 6.6 yana ụdị mkpanaka maka sistemụ arụmọrụ ndị ọzọ (emere na Nnwale Debian).

A na-akpata nsogbu ahụ site na njehie na ọrụ smtp_mailaddr (), nke a na-akpọ ịlele izi ezi nke ụkpụrụ dị na mpaghara "MAIL FROM" na "RCPT TO" nke na-akọwapụta onye na-ezigara / onye nnata ma na-agafe n'oge njikọ. ya na ihe nkesa ozi. Iji lelee akụkụ nke adreesị ozi-e nke na-abịa n'ihu akara "@", a na-akpọ ọrụ smtp_mailaddr()
valid_localpart(), nke na-anabata (MAILADDR_ALLOWED) mkpụrụedemede "!#$%&'*/?^`{|}~+-=_", dị ka RFC 5322 chọrọ.

N'okwu a, a na-eme ụzọ mgbapụ nke eriri ahụ na ọrụ mda_expand_token(), nke na-anọchi naanị mkpụrụedemede "!#$%&'*?`{|}~" (MAILADDR_ESCAPE). N'ikpeazụ, a na-eji ahịrị a kwadebere na mda_expand_token () mgbe ị na-akpọ onye na-ebubata ya (MDA) site na iji iwu 'execle("/bin/sh","/bin/sh","-c",mda_command,...' Ọ bụrụ na itinye akwụkwọ ozi na mbox site /bin/sh, a na-ewepụta ahịrị “/usr/libexec/mail.local -f %%{mbox.from} %%{user.username}”, ebe uru “% {mbox.from}” gụnyere data agbanarị site na oke "MAIL FROM".

Ihe kachasị mkpa nke adịghị ike bụ na smtp_mailaddr () nwere njehie ezi uche dị na ya, n'ihi ya, ọ bụrụ na ezigara ngalaba efu na email, ọrụ ahụ na-eweghachite koodu nkwenye na-aga nke ọma, ọbụlagodi na akụkụ nke adreesị tupu "@" nwere mkpụrụedemede na-ezighi ezi. . Ọzọkwa, mgbe ị na-akwadebe eriri, ọrụ mda_expand_token() anaghị agbanarị mkpụrụedemede pụrụ iche nke shei, kama ọ bụ naanị mkpụrụedemede pụrụ iche kwere na adreesị ozi-e. Ya mere, iji mee iwu gị, ọ ga-ezuru iji akara ";" n'akụkụ mpaghara nke email ahụ. na oghere, nke anaghị etinye na MAILADDR_ESCAPE set na anaghị agbanarị. Ọmụmaatụ:

$ nc 127.0.0.1 25

HELO prọfesọ.falken
Ozi si: <;ụra 66;>
RCPT na:
data
.
Kwụsị

Mgbe nnọkọ a gachara, OpenSMTPD, mgbe ebugara ya na mbox, ga-ebido iwu site na shei

/usr/libexec/mail.local -f ;ụra 66; mgbọrọgwụ

N'otu oge ahụ, ohere mbuso agha na-ejedebe n'eziokwu na mpaghara mpaghara nke adreesị enweghị ike ịfe mkpụrụedemede 64, yana mkpụrụedemede pụrụ iche '$' na '|' a na-eji ":" dochie anya mgbe ị na-agbapụ. Iji zere mmachi a, anyị na-eji eziokwu ahụ bụ na a na-ebufe ahụ nke akwụkwọ ozi ahụ mgbe ọ gbasịrị /usr/libexec/mail.local site na ntinye ntinye, i.e. Site n'ịgbanwe adreesị ahụ, naanị ị nwere ike ibido onye ntụgharị okwu iwu sh ma jiri ahụ nke mkpụrụedemede ahụ dị ka ntuziaka ntuziaka. Ebe ọ bụ na egonyere nkụnye eji isi mee SMTP ọrụ na mbido akwụkwọ ozi ahụ, a na-atụ aro ka iji iwu gụpụta na akaghị aka ka ịwụpụ ha. Ihe eji eme ihe na-arụ ọrụ dị ka nke a:

$ nc 192.168.56.143 25

HELO prọfesọ.falken
MAIL FROM:<;maka i na 0 1 2 3 4 5 6 7 8 9 abcd;guo r;mere;sh;wepu 0;>
RCPT na:[email protected]>
data
#0
#1
...
#d
maka m na WOPR; mee
echo -n "($i)" && id || agbaji
emela > / mgbọrọgwụ/x."`id -u`.""$$"
.
Kwụsị

isi: opennet.ru

Tinye a comment