Критична рањивост у Екиму која омогућава извршавање кода на серверу са роот привилегијама

У Еким серверу поште идентификован критическаа рањивост (ЦВЕ-КСНУМКС-КСНУМКС), што може довести до удаљеног извршавања кода на серверу са роот правима приликом обраде посебно креираног захтева. Могућност искоришћавања проблема је забележена у верзијама од 4.87 до 4.91 укључујући и када се гради са опцијом ЕКСПЕРИМЕНТАЛ_ЕВЕНТ.

У подразумеваној конфигурацији, напад може да се изведе без непотребних компликација од стране локалног корисника, пошто се примењује АЦЛ "верифи = реципиент", који врши додатне провере за спољне адресе. До удаљеног напада може доћи када се промене подешавања, као што је деловање као секундарни МКС за други домен, уклањање „верифи=реципиент“ АЦЛ-а или одређене промене у лоцал_парт_суффик). Даљински напад је такође могућ ако је нападач у стању да задржи везу са сервером отворену 7 дана (на пример, шаље један бајт у минути да заобиђе временско ограничење). Истовремено, могуће је да постоје једноставнији вектори напада за даљинско коришћење проблема.

Рањивост је узрокована нетачном верификацијом адресе примаоца у функцији достави_мессаге() дефинисаној у датотеци /срц/деливер.ц. Манипулишући форматирањем адресе, нападач може да постигне замену својих података у аргументе команде позване преко функције екецв() са роот правима. Операција не захтева употребу сложених техника које се користе за прекорачење бафера или оштећење меморије; довољна је једноставна замена карактера.

Проблем је повезан са употребом конструкције за конверзију адреса:

достави_лоцалпарт = екпанд_стринг(
стринг_спринтф("${лоцал_парт:%с}", ново->адреса));
достави_домен = проширити_стринг(
стринг_спринтф("${домен:%с}", ново->адреса));

Функција екпанд_стринг() је превише компликован комбинатор, укључујући препознавање команде „${рун{цомманд аргументс}“, што доводи до покретања екстерног руковаоца. Дакле, да би напао у оквиру СМТП сесије, локални корисник треба само да пошаље команду као што је 'РЦПТ ТО “усернаме+${рун{...}}@лоцалхост”', где је лоцалхост један од хостова са листе лоцал_домаинс, а корисничко име је име постојећег локалног корисника.

Ако сервер ради као релеј поште, довољно је даљински послати команду 'РЦПТ НА "${рун{...}}@релаидомаин.цом"', где је релаидомаин.цом један од хостова наведених у релаи_то_домаинс одељак подешавања. Пошто Еким подразумевано не испушта режим привилегија (деливер_дроп_привилеге = фалсе), команде прослеђене преко „${рун{...}}“ биће извршене као роот.

Важно је напоменути да је рањивост била елиминисан у издању 4.92 објављеном у фебруару, без наглашавања да би поправка могла довести до безбедносних проблема. Нема разлога да се верује да је дошло до намерног прикривања рањивости од стране Еким програмера, пошто је проблем решен током поправке грешка која се јавља када се пренесу нетачне адресе, а рањивост је идентификована од стране Куалиса током ревизије промена у Еким-у.

Исправка за претходне верзије које се и даље користе у дистрибуцијама тренутно је доступна само као закрпа. Исправна издања за претходне филијале како би се решио проблем заказана су за 11. јун. Ажурирања пакета су спремна за Дебиан, убунту, openSUSE. Арцх Линук и федора Они испоручују верзију 4.92, у којој се проблем не појављује. РХЕЛ и ЦентОС проблем није подложан, пошто Еким није укључен у њихово редовно складиште пакета.

Извор: опеннет.ру

Додај коментар