Повторная ревизия исходного кода в Fetchmail позволила обнаружить еще одно переполнение буфера в заданной по умолчанию конфигурации. Это переполнение динамической памяти может использоваться удаленными хакерами, чтобы разрушить систему или выполнить произвольный код с привилегиями fetchmail пользователя. В зависимости от конфигурации системы, уязвимость позволяет получить root привилегии.
Когда Fetchmail получает сообщение, он выполняет так называемую проверку “reply-hack”. Это в основном означает, что все заголовки, которые содержат адреса, будут проверены на наличие локального адресе (без @domain части). Когда такой адрес найден, Fetchmail добавляет в конец @ и имя хоста почтового сервера. Чтобы избежать ненужного перераспределения выходного буфера в течение этого процесса, Fetchmail сперва рассчитывает число адресов внутри заголовков. Затем он резервирует память для случая, когда все адреса в почтовом сообщении локальные. К сожалению это вычисление неправильно, потому что Fetchmail не учитывает дополнительное пространство после @. Это означает, если у вас есть достаточно локальных адресов в почтовом заголовке, то каждый дополнительный адрес переполнит буфер на один байт. Это приводит к произвольному переполнению динамической памяти, которое может использоваться для выполнения произвольного кода на LINUX системах. Так как это переполнение происходит в malloc() области, на BSD системах уязвимость может использоваться только для DoS атаки.
Наконец важно упомянуть, что нападающий не нуждается в спуфинге DNS записей и ему не нужно управлять злонамеренным почтовым сервером, чтобы эксплуатировать эту уязвимость. Обычно достаточно послать почтовое сообщение жертве,
которое содержит специально обработанные строки в заголовке.
Уязвимость обнаружена Fetchmail <= 6.1.3.