ʻO ka nāwaliwali koʻikoʻi ma Exim e hiki ai ke hoʻokō ʻia ke code ma ke kikowaena me nā pono kumu

Ma ke kikowaena leka uila Exim ʻike ʻia koʻikoʻi palupalu (CVE-2019-10149), hiki ke alakaʻi i ka hoʻokō code mamao ma ke kikowaena me nā kuleana kumu i ka wā e hana ai i kahi noi i hana ʻia. Ua ʻike ʻia ka hiki ke hoʻohana i ka pilikia ma nā mana mai ka 4.87 a i ka 4.91 a i ʻole ke kūkulu ʻana me ke koho EXPERIMENTAL_EVENT.

Ma ka hoʻonohonoho paʻamau, hiki ke hoʻokō ʻia ka hoʻouka ʻana me ka ʻole o nā hoʻopiʻi pono ʻole e kahi mea hoʻohana kūloko, no ka mea, ua hoʻohana ʻia ka "hōʻoia = recipient" ACL, e hana ana i nā loiloi hou no nā helu o waho. Hiki ke hoʻouka ʻia kahi hoʻouka mamao ke hoʻololi ʻia nā hoʻonohonoho, e like me ka hana ʻana ma ke ʻano he MX kiʻekiʻe no kahi kikowaena ʻē aʻe, e wehe ana i ka "hōʻoia = recipient" ACL, a i ʻole kekahi mau hoʻololi i local_part_suffix). Hiki nō hoʻi ke hoʻouka kaua mamao inā hiki i ka mea hoʻouka ke mālama i ka pilina me ke kikowaena no 7 mau lā (e like me ka hoʻouna ʻana i hoʻokahi byte i kēlā me kēia minuke e kāpae i kahi manawa manawa). I ka manawa like, hiki ke loaʻa nā vectors hoʻouka maʻalahi no ka hoʻohana mamao ʻana i ka pilikia.

Hoʻokumu ʻia ka nāwaliwali ma muli o ka hōʻoia hewa ʻana o ka helu o ka mea hoʻokipa ma ka hana deliver_message() i wehewehe ʻia ma ka faila /src/deliver.c. Ma ka hoʻopunipuni ʻana i ka hoʻopili ʻana i ka helu wahi, hiki i ka mea hoʻouka ke hoʻokō i ka hoʻololi ʻana i kāna ʻikepili i nā manaʻo o kahi kauoha i kapa ʻia ma o ka execv() hana me nā kuleana kumu. ʻAʻole koi ka hana i ka hoʻohana ʻana i nā ʻenehana paʻakikī i hoʻohana ʻia no ka buffer overflows a i ʻole ka palaho hoʻomanaʻo; ua lawa ka hoʻololi maʻalahi.

Pili ka pilikia i ka hoʻohana ʻana i ke kūkulu no ka hoʻololi ʻana i ka ʻōlelo:

deliver_localpart = expand_string(
string_sprintf("${local_part:%s}", new->address));
deliver_domain = expand_string(
string_sprintf("${domain:%s}", hou-> helu wahi));

ʻO ka hana expand_string() he mea hoʻohui paʻakikī, me ka ʻike ʻana i ke kauoha "${run{command arguments}", e alakaʻi ana i ka hoʻomaka ʻana o kahi mea lawelawe waho. No laila, e hoʻouka i loko o kahi kau SMTP, pono ka mea hoʻohana kūloko e hoʻouna i kahi kauoha e like me 'RCPT TO "username+${run{...}}@localhost"', kahi localhost kekahi o nā pūʻali mai ka papa inoa local_domains, a ʻo ka inoa inoa ka inoa o kahi mea hoʻohana kūloko.

Inā hana ke kikowaena ma ke ʻano he leka uila, ua lawa ia e hoʻouna mamao i ke kauoha 'RCPT TO "${run{...}}@relaydomain.com"', kahi ʻo relaydomain.com kekahi o nā pūʻali i helu ʻia ma ka relay_to_domains ʻāpana hoʻonohonoho. No ka mea ʻaʻole paʻa ʻo Exim i ka haʻalele ʻana i ke ʻano hiʻona (deliver_drop_privilege = false), e hoʻokō ʻia nā kauoha i kau ʻia ma o "${run{...}}" ma ke ʻano he kumu.

He mea pono ke hoʻomaopopo ʻia ʻo ka nāwaliwali hoʻopau ʻia i ka 4.92 hoʻokuʻu i hoʻokuʻu ʻia i Pepeluali, me ka ʻole o ka hoʻopaʻa ʻana i hiki ke alakaʻi i nā pilikia palekana. ʻAʻohe kumu e manaʻoʻiʻo ai ua hūnā ʻia ka nāwaliwali e nā mea hoʻomohala Exim, ʻoiai ua hoʻoponopono ʻia ka pilikia i ka wā hoʻoponopono hiki ʻole i ka wā i hoʻouna ʻia ai nā helu kuhi hewa, a ua ʻike ʻia ka nāwaliwali e Qualys i ka wā o ka loiloi o nā loli ma Exim.

ʻO kahi hoʻoponopono no nā mana o mua e hoʻohana mau ʻia ana i ka hāʻawi ʻana i kēia manawa aia wale nō kāʻei. ʻO nā hoʻokuʻu hoʻoponopono no nā lālā mua e hoʻoponopono i ka pilikia e hoʻonohonoho ʻia no Iune 11th. Ua mākaukau nā hōʻano hou no Debian, Ubuntu, openSUSE. Kūnaewele Linux и ʻO Fedora Hāʻawi lākou i ka mana 4.92, kahi i ʻike ʻole ʻia ai ka pilikia. RHEL a me CentOS pilikia hiki ole, no ka mea, ʻaʻole i hoʻokomo ʻia ʻo Exim i kā lākou waihona pūʻolo maʻamau.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka