Përditësimi i Exim 4.94.2 me rregullime për 10 dobësi të shfrytëzuara nga distanca

Lëshimi i serverit të postës Exim 4.94.2 është publikuar me eliminimin e 21 dobësive (CVE-2020-28007-CVE-2020-28026, CVE-2021-27216), të cilat u identifikuan nga Qualys dhe u prezantuan me emrin e koduar 21 Thonjtë. 10 probleme mund të shfrytëzohen nga distanca (përfshirë ekzekutimin e kodit me të drejta rrënjësore) përmes manipulimit të komandave SMTP kur ndërveproni me serverin.

Të gjitha versionet e Exim, historia e të cilit është gjurmuar në Git që nga viti 2004, janë prekur nga problemi. Prototipet e punës të shfrytëzimeve janë përgatitur për 4 dobësi lokale dhe 3 probleme në distancë. Shfrytëzimi për dobësitë lokale (CVE-2020-28007, CVE-2020-28008, CVE-2020-28015, CVE-2020-28012) ju lejojnë të ngrini privilegjet tuaja te përdoruesi rrënjë. Dy çështje në distancë (CVE-2020-28020, CVE-2020-28018) lejojnë që kodi të ekzekutohet pa vërtetim si përdorues i Exim (më pas mund të fitoni akses rrënjësor duke shfrytëzuar një nga dobësitë lokale).

Dobësia CVE-2020-28021 lejon ekzekutimin e menjëhershëm të kodit në distancë me të drejta rrënjësore, por kërkon qasje të vërtetuar (përdoruesi duhet të krijojë një sesion të vërtetuar, pas së cilës ata mund të shfrytëzojnë cenueshmërinë përmes manipulimit të parametrit AUTH në komandën MAIL FROM). Problemi shkaktohet nga fakti që një sulmues mund të arrijë zëvendësimin e vargut në kokën e një skedari spool duke shkruar vlerën authenticated_sender pa ikur siç duhet karakteret speciale (për shembull, duke kaluar komandën "MAIL FROM:<> AUTH=Raven+0AReyes ”).

Për më tepër, vihet re se një dobësi tjetër në distancë, CVE-2020-28017, është e shfrytëzuar për të ekzekutuar kodin me të drejta të përdoruesit "exim" pa vërtetim, por kërkon më shumë se 25 GB memorie. Për 13 dobësitë e mbetura, potencialisht mund të përgatiten edhe shfrytëzime, por puna në këtë drejtim ende nuk është kryer.

Zhvilluesit e Exim u njoftuan për problemet në tetor të vitit të kaluar dhe kaluan më shumë se 6 muaj duke zhvilluar rregullime. Të gjithë administratorët rekomandohen të përditësojnë urgjentisht Exim në serverët e tyre të postës në versionin 4.94.2. Të gjitha versionet e Exim para lëshimit të 4.94.2 janë deklaruar të vjetëruara. Publikimi i versionit të ri u koordinua me shpërndarjet që publikuan njëkohësisht përditësimet e paketave: Ubuntu, Arch Linux, FreeBSD, Debian, SUSE dhe Fedora. RHEL dhe CentOS nuk preken nga problemi, pasi Exim nuk përfshihet në depon e tyre standarde të paketave (EPEL nuk ka ende një përditësim).

Dobësitë e hequra:

  • CVE-2020-28017: Vërshimi i numrit të plotë në funksionin receive_add_recipient();
  • CVE-2020-28020: Mbyllja e numrave të plotë në funksionin receive_msg();
  • CVE-2020-28023: Lexuar jashtë kufijve në smtp_setup_msg();
  • CVE-2020-28021: Zëvendësimi i linjës së re në kokën e skedarit spool;
  • CVE-2020-28022: Shkruani dhe lexoni në një zonë jashtë tamponit të caktuar në funksionin extract_option();
  • CVE-2020-28026: Shkurtimi dhe zëvendësimi i vargut në spool_read_header();
  • CVE-2020-28019: Ndërprerje kur rivendosni një tregues funksioni pasi ndodh një gabim BDAT;
  • CVE-2020-28024: Rrjedha e tamponit në funksionin smtp_ungetc();
  • CVE-2020-28018: Përdorimi pa pagesë në tampon në tls-openssl.c
  • CVE-2020-28025: Një lexim jashtë kufijve në funksionin pdkim_finish_bodyhash().

Dobësitë lokale:

  • CVE-2020-28007: Sulm simbolik i lidhjes në drejtorinë e regjistrave Exim;
  • CVE-2020-28008: Sulmet e direktoriumit Spool;
  • CVE-2020-28014: Krijimi i skedarit arbitrar;
  • CVE-2021-27216: Fshirja arbitrare e skedarit;
  • CVE-2020-28011: Mbyllja e buferit në queue_run();
  • CVE-2020-28010: Shkruaj jashtë kufijve në main();
  • CVE-2020-28013: Mbyllja e buferit në funksionin parse_fix_phrase();
  • CVE-2020-28016: Shkruaj jashtë kufijve në parse_fix_phrase();
  • CVE-2020-28015: Zëvendësimi i linjës së re në kokën e skedarit spool;
  • CVE-2020-28012: Mungon flamuri i ngushtë në ekzekutim për një tub të privilegjuar pa emër;
  • CVE-2020-28009: Mbyllja e numrave të plotë në funksionin get_stdinput().



Burimi: opennet.ru

Shto një koment