Te whakaraeraetanga tino nui i roto i te Exim e taea ai te mahi waehere ki runga i te tūmau me nga mana pakiaka

I roto i te tūmau mēra Exim kua tautuhia arohaehae whakaraeraetanga (CVE-2019-10149), ka taea te kawe i te waehere mamao i runga i te tūmau me nga mana pakiaka i te wa e tukatuka ana i tetahi tono i hangaia. Ko te tupono ki te whakamahi i te raru i tuhia i roto i nga putanga mai i te 4.87 ki te 4.91 kei roto ranei i te wa e hanga ana me te whiringa EXPERIMENTAL_EVENT.

I roto i te whirihoranga taunoa, ka taea te whakaeke me te kore he raruraru e te kaiwhakamahi o te rohe, na te mea kua tonohia te "manatoko = kaiwhiwhi" ACL, e mahi ana i etahi atu tirotiro mo nga wahitau o waho. Ka puta he whakaeke mamao ina huri nga tautuhinga, penei i te mahi hei MX tuarua mo tetahi atu rohe, te tango i te "manatoko = kaiwhiwhi" ACL, etahi huringa ranei ki local_part_suffix). Ka taea hoki te whakaeke mamao mena ka taea e te kaiwhaiwhai te pupuri i te hononga ki te tūmau kia tuwhera mo nga ra e 7 (hei tauira, te tuku i te paita kotahi mo ia meneti hei karo i te waahi). I te wa ano, tera pea he ngawari ake te whakaeke i nga vectors mo te whakamahi mamao i te raru.

Ko te whakaraeraetanga ka puta mai i te manatoko hē o te wahitau o te kaiwhiwhi i roto i te mahi deliver_message() kua tautuhia ki te konae /src/deliver.c. Ma te raweke i te whakahōputu wāhitau, ka taea e te kaiwhaiwhai te whakakapi i ana raraunga ki roto i nga tohenga o te whakahau e kiia ana ma te mahi execv() me nga mana pakiaka. Ko te mahi kaore e hiahiatia te whakamahi i nga tikanga uaua e whakamahia ana mo nga putunga putunga, te pirau mahara ranei he rawaka.

Ko te raruraru e pa ana ki te whakamahinga o te hanga mo te hurihanga wahitau:

deliver_localpart = whakawhaa_ aho(
string_sprintf("${local_part:%s}", new->address));
tuku_rohenga = whakawhaa_ aho(
string_sprintf("${rohe:%s}", hou-> wāhitau));

Ko te mahinga expand_string() he whakakotahitanga tino uaua, tae atu ki te mohio ki te whakahau "${run{command arguments}", e arai atu ana ki te whakarewatanga o te kaihautu o waho. No reira, ki te whakaeke i roto i te huihuinga SMTP, me tuku noa e te kaiwhakamahi rohe he whakahau penei 'RCPT KI “ingoakaiwhakamahi+${run{...}}@localhost”', ko localhost tetahi o nga kaihautu mai i te rarangi local_domains, a ko te ingoa kaiwhakamahi te ingoa o tetahi kaiwhakamahi rohe.

Mēnā ka mahi te tūmau hei tānga mēra, he nui noa ki te tuku mamao te tono 'RCPT KI "${run{...}}@relaydomain.com"', kei reira ko relaydomain.com tetahi o nga kaihautu kua whakarārangihia ki te relay_to_domains waahanga tautuhinga. I te mea kaore a Exim e taunoa ki te whakaheke i te aratau mana (deliver_drop_privilege = teka), ka mahia nga whakahau i tukuna ma te "${run{...}}" hei putake.

Ko te mea nui ko te whakaraerae whakakorea i roto i te tukunga 4.92 i tukuna i te marama o Hui-tanguru, me te kore e kii ko te whakatika ka arahi ki nga raruraru haumaru. Karekau he take ki te whakapono he huna i te whakaraeraetanga a nga kaiwhakawhanake Exim, na te mea i whakatikahia te raru i te waa whakatika he rahunga ka puta ina tukuna nga wahitau hee, ka kitea te whakaraeraetanga e Qualys i te wa o te arotakenga o nga huringa o Exim.

Ko te whakatika mo nga putanga o mua ka whakamahia tonu ki nga tohatoha kei te waatea noa i tenei wa papaki. Ko nga tuku whakatika mo nga peka o mua ki te whakatika i te raru kua whakaritea mo te 11 o Hune. Kua reri nga whakahōu mōkī mō Debian, Ubuntu, OpenSUSE. Arch Linux и Fedora Ka tukuna e ratou te putanga 4.92, kaore e puta mai te raru. RHEL me CentOS raruraru ehara i te kaupapa, no te mea kaore a Exim i whakauruhia ki roto i ta raatau kohinga putea paerewa.

Source: opennet.ru

Tāpiri i te kōrero