Hiki ke hoʻohana mamao ʻia i ka waihona leka uila qmail

Nā mea noiʻi palekana mai Qualys hōʻike ʻia manawa maopopo hoʻoluhi nā nāwaliwali i ka kikowaena leka uila qmail, kaulana hoʻi i ka makahiki 2005 (CVE-2005-1513), akā ʻaʻole i hoʻopaʻa ʻia no ka mea ua hoʻopaʻapaʻa ka mea kākau o qmail he mea kūpono ʻole ka hana ʻana i kahi hana hana i hiki ke hoʻohana ʻia e hoʻouka i nā ʻōnaehana i ka hoʻonohonoho paʻamau. Ua hiki iā Qualys ke hoʻomākaukau i kahi hoʻohana e hōʻole i kēia manaʻo a hiki i kekahi ke hoʻomaka i ka hoʻokō code mamao ma ke kikowaena ma ka hoʻouna ʻana i kahi leka i hoʻolālā ʻia.

Hoʻokumu ʻia ka pilikia e ka integer overflow i ka hana stralloc_readyplus(), hiki ke hana i ka wā e hoʻoili ai i kahi leka nui loa. Pono ka hana i kahi ʻōnaehana 64-bit me ka ʻoi aku o 4GB o ka hoʻomanaʻo virtual. I ka wā i kālailai mua ʻia ai ka vulnerability i ka makahiki 2005, ua hoʻopaʻapaʻa ʻo Daniel J. Bernstein i ka manaʻo i loko o ke code ʻo ka nui o ka array i hoʻokaʻawale ʻia i loko o ka waiwai 32-bit ma muli o ka mea ʻaʻohe mea e hāʻawi i nā gigabytes o ka hoʻomanaʻo i kēlā me kēia kaʻina. I nā makahiki he 15 i hala iho nei, ua hoʻololi nā ʻōnaehana 64-bit ma nā kikowaena i nā ʻōnaehana 32-bit, a ua piʻi nui ka nui o ka hoʻomanaʻo i hoʻolako ʻia a me ka bandwidth pūnaewele.

Ua mālama nā mea mālama pūʻolo qmail i ka memo a Bernstein a kaupalena i ka hoʻomanaʻo i loaʻa i ka wā e hoʻomaka ai i ke kaʻina qmail-smtpd (no ka laʻana, ma Debian 10 ua hoʻonohonoho ʻia ka palena i 7MB). Akā ua ʻike nā mea ʻenekinia mai Qualys ʻaʻole lawa kēia a, ma kahi o qmail-smtpd, hiki ke hoʻokō ʻia kahi hoʻouka mamao ma ke kaʻina hana qmail-local, i waiho ʻole ʻia i nā pūʻulu hoʻāʻo a pau. Ma ke ʻano he hōʻoia, ua hoʻomākaukau ʻia kahi prototype hoʻohana i kūpono no ka hoʻouka ʻana i ka pā Debian me qmail i ka hoʻonohonoho paʻamau.
No ka hoʻonohonoho ʻana i ka hoʻokō code mamao i ka wā o ka hoʻouka ʻana, pono ke kikowaena i ka 4GB o ka hakahaka manuahi a me 8GB o RAM.
Hiki iā ʻoe ke hoʻokō i nā kauoha shell me nā kuleana o kēlā me kēia mea hoʻohana i ka ʻōnaehana, koe wale nō nā mea hoʻohana aʻa a me nā ʻōnaehana ʻaʻole i loaʻa kā lākou subdirectory ma ka papa kuhikuhi "/ home" (ua hoʻomaka ʻia ke kaʻina hana qmail-local me nā kuleana. o ka mea hoʻohana kūloko kahi i lawe ʻia ai ka lawe ʻana).

Hoʻokō ʻia ka hoʻouka ʻana
ma o ka hoʻouna ʻana i ka leka uila nui loa, me nā laina poʻomanaʻo, me ke ana ʻana ma kahi o 4GB a me 576MB. ʻO ke kaʻina ʻana o ia string i ka qmail-local ka hopena i ka integer overflow ke hoʻāʻo nei e hāʻawi i kahi leka i ka mea hoʻohana kūloko. A laila alakaʻi ka integer overflow i ka buffer overflow i ka wā e kope ai i ka ʻikepili a me ka hiki ke kākau i nā ʻaoʻao hoʻomanaʻo me ka libc code. Ma ka hoʻololi ʻana i ka hoʻolālā o ka ʻikepili i hoʻouna ʻia, hiki nō ke kākau hou i ka helu o ka hana "open()", e hoʻololi iā ia me ka helu o ka hana "system()".

A laila, i ke kaʻina o ke kāhea ʻana i qmesearch () ma qmail-local, ua wehe ʻia ka faila ".qmail-extension" ma o ka hana open (), e alakaʻi i ka hoʻokō maoli ʻana o ka hana.
ʻōnaehana (".qmail-extension"). Akā, ʻoiai ua hana ʻia ka ʻāpana "extension" o ka faila ma muli o ka helu o ka mea i loaʻa (no ka laʻana, "localuser-extension@localdomain"), hiki i nā mea hoʻouka ke hoʻonohonoho i ke kauoha e hoʻouna ʻia e holo ma ke kuhikuhi ʻana i ka mea hoʻohana "localuser-; kauoha. ;@localdomain" ma ke ʻano he mea i loaʻa ka leka.

I ka wā o ka nānā ʻana i ke code, ua ʻike ʻia ʻelua mau mea palupalu i ka patch qmail-verify hou, ʻo ia kahi ʻāpana o ka pūʻolo no Debian. ʻO ka nāwaliwali mua (CVE-2020-3811) hiki iā ʻoe ke kāpae i ka hōʻoia ʻana i ka leka uila, a ʻo ka lua (CVE-2020-3812) alakaʻi i ka leakage o ka ʻike kūloko. ʻO ka mea nui, ʻo ka nāwaliwali mua e hiki ai iā ʻoe ke kāpae i ka hōʻoia ʻana o ka pololei o ka helu i hoʻohana ʻia i ka hoʻohana ʻana e hoʻouna i kahi kauoha (ʻaʻole hana ka hōʻoia no nā ʻōlelo me ka ʻole o kahi kikowaena, e like me "localuser-; kauoha;"). Hiki ke hoʻohana ʻia ka lua o ka nāwaliwali e nānā i ka hele ʻana o nā faila a me nā papa kuhikuhi ma ka ʻōnaehana, me nā mea hiki ke loaʻa wale i ke aʻa (e holo ana ka qmail-verify me nā kuleana kumu), ma o ke kelepona pololei ʻana i ka mea lawelawe kūloko.

No ka hoʻoponopono ʻana i ka pilikia, ua ʻōlelo ʻo Bernstein i ka holo ʻana i nā kaʻina qmail me ka palena holoʻokoʻa o ka hoʻomanaʻo i loaʻa ("softlimit -m12345678"), a laila ua pāpā ʻia ka pilikia. Ma ke ʻano he ala ʻē aʻe o ka pale ʻana, ua ʻōlelo pū ʻia ka palena ʻana i ka nui o ka memo i hoʻoponopono ʻia ma o ka faila "control/databytes" (ma ka paʻamau ʻaʻole ia i hana ʻia me nā hoʻonohonoho paʻamau qmail noho palupalu). Eia kekahi, ʻaʻole mālama ʻo "control/databytes" i nā hoʻouka kūloko mai nā mea hoʻohana ʻōnaehana, no ka mea, ʻo ka palena wale nō e mālama ʻia e qmail-smtpd.

Pili ka pilikia i ka pūʻolo netqmail, i loko o nā waihona Debian. Ua hoʻomākaukau ʻia kahi pūʻulu o nā patches no kēia pūʻolo, e hoʻopau ana i nā nāwaliwali kahiko ʻelua mai 2005 (ma ka hoʻohui ʻana i nā palena hoʻomanaʻo paʻakikī i ka code function alloc()) a me nā pilikia hou i ka qmail-verify. Kaawale hoʻomākaukau hōʻano hou o ka qmail-verify patch. Nā mea hoʻomohala nā lālā aoleqmail ua hoʻomākaukau i kā lākou mau pā ponoʻī e ālai i nā pilikia kahiko, a hoʻomaka hoʻi e hana e hoʻopau i nā kahe integer āpau i ke code.

Source: opennet.ru

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