Бюллетень безопасности FreeBSD-SA-17:04.ipfilter (неофициальный перевод)

Первоисточник: https://www.freebsd.org/security/advisories/FreeBSD-SA-17:04.ipfilter.asc
 
Тема: ipfilter сбой при обработке фрагментов
Категория: contrib
Модуль: ipfilter
Анонсировано: 27.04.2017
Благодарности: Cy Schubert
Влияет на: все поддерживаемые версии FreeBSD.
Исправлено в: 2017-04-21 01:51:49 UTC (stable/11, 11.0-STABLE)
2017-04-27 06:52:30 UTC (releng/11.0, 11.0-RELEASE-p10)
2017-04-21 01:51:49 UTC (stable/10, 10.3-STABLE)
2017-04-27 06:52:30 UTC (releng/10.3, 10.3-RELEASE-p19)
CVE ID: CVE-2017-1081
 
Для получения общей информации о рекомендациях по безопасности FreeBSD, посетите https://security.FreeBSD.org/.
 
I. Общая информация
 
IP Filter, также известный как ipfilter, представляет собой кроссплатформенный пакетный фильтр (файрвол) с открытым исходным кодом, первоначально написанный для операционных систем BSD, среди которых FreeBSD, NetBSD и OpenBSD, а также для Solaris. ipfilter — один из трех файрволов, включенных в FreeBSD по умолчанию (другие два это ipfw и pf). Он выполняет функции файрвола и NAT, используя инфраструктуру pfil, как и другие файрволы в ядре FreeBSD.
 
II. Описание проблемы
 
ipfilter, допускающий инспекцию пакетов с хранением состояния (технологию Stateful Packet Inspection), используя правила с опцией «keep state» или «keep frags», будет не только поддерживать состояние таких соединений, как TCP или UDP, но также поддерживать состояние фрагментированных пакетов. При получении фрагментов пакета, они кэшируются в хеш-таблице (и связанном списке). При получении, фрагмент сравнивается на соответствие с фрагментами, уже кэшированными в хэш-таблице. Если соответствия нет, создается новая запись в хеш-таблице. Если же соответствие есть, то, к сожалению, освобождается неправильная запись в хеш-таблице. Это приводит к сбою use after free (и в течение короткого момента до сбоя, из-за освобождения неправильной записи, происходит утечка памяти).
 
III. Влияние
 
Подача специально созданных фрагментов, разрешенных для прохождения через ipfilter, может быть использована для того, чтобы вызвать сбой с последующей DoS атакой.
 
IV. Временное решение
 
Временных решений нет, но системы, не использующие ipfilter, не подвержены уязвимости. Ipfilter, при установке по умолчанию, отключен. Конфигурации ipfilter, не использующие «keep state» или «keep frags», также не подвержены уязвимости. Пользователи могут временно заменить инспекцию с хранением состояния (stateful inspection) на правила без учета состояния (stateless rules), однако это будет менее безопасно.
 
V. Решение
 
Выполните одно из следующих действий:
 
1) Обновите вашу систему до поддерживаемой FreeBSD stable или release / releng версии, выпущенной датой после устранения уязвимости.
 
Перезапустите модуль ядра ipl.ko или перезагрузите систему.
 
2) Обновите систему бинарными патчами:
 
Системы с RELEASE версией FreeBSD на i386 и amd64 платформах могут быть обновлены утилитой freebsd-update.

# freebsd-update fetch
# freebsd-update install

 

Перезапустите модуль ядра ipl.ko или перезагрузите систему.
 
3) Обновите систему при помощи исходного кода патча:
 
Ниже указанные патчи будут добавлены в релизные ветки FreeBSD.
 
а) Загрузите соответствующий патч, используя ниже приведенные ссылки и проверьте PGP подпись, используя вашу утилиту PGP.

# fetch https://security.FreeBSD.org/patches/SA-17:04/ipfilter.patch
# fetch https://security.FreeBSD.org/patches/SA-17:04/ipfilter.patch.asc
# gpg --verify ipfilter.patch.asc

 

b) Примените патч, используя следующие команды под пользователем root:

# cd /usr/src
# patch < /path/to/patch

 

с) Перекомпилируйте операционную систему, как описано в https://www.FreeBSD.org/handbook/kernelconfig.html и перезагрузите систему или перезапустите модуль ядра ipl.ko.
 
VI. Сведения об исправлении
 
Список ниже содержит номера ревизий каждой из уязвимых ветвей FreeBSD.

Ветвь                                                             Ревизия
- -------------------------------------------------------------------------
stable/10/                                                        r317241
releng/10.3/                                                      r317487
stable/11/                                                        r317241
releng/11.0/                                                      r317487
 - -------------------------------------------------------------------------

 

Чтобы узнать, какие файлы были изменены в конкретной ревизии, запустите на машине с установленным Subversion указанную ниже команду, заменив NNNNNN на номер ревизии.

# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base

 

Или посетите следующий URL, заменив NNNNNN на номер ревизии:

URL: https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN

 

VII. Рекомендации
 
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-1081

 

Новости

Оставить комментарий