PFinger – замена GNU Finger демона. В программе обнаружена уязвимость форматной строки, которая может использоваться удаленно для выполнения произвольного кода.

Уязвимость форматной строки возникает из-за опасного вызова syslog () в функции log() в
log.c: syslog(level, syslog_mem);

Единственный способ для атакующего эксплуатировать эту уязвимость, это установить DNS имя fingering хоста, содержащее спецификации формата. 

h_ent = gethostbyaddr((char *)&remaddr.sin_addr, sizeof(remaddr.sin_addr), AF_INET);
if (h_ent)
conn.hostname = strdup(h_ent->h_name);
else
conn.hostname = «(remote)»;
log(LOG_INFO, «Connection from %s (%s)",conn.hostname,inet_ntoa(remaddr.sin_addr));

Этот код ищет имя домена fingering хоста, и регистрирует информацию подключения. Это единственное место, где пользователь управляет регистрируемыми данными. Для успешной эксплуатации, нападающий должен или управлять собственным DNS сервером, или подделать DNS ответ. Это делает эксплуатацию более трудной, но ни в коем случае невозможной.

Уязвимость обнаружена в PFinger 0.7.8.



Оставить мнение