New Thread
Name
×
Email
Subject
Message
Files Max 5 files10MB total
Tegaki
Password
Captcha*
[New Thread]


ansible — система управления конфигурациями, написанная на языке программирования Python, с использованием декларативного языка разметки для описания конфигураций.

документация:
* https://docs.ansible.com/ansible/latest/index.html
* https://redhat-cop.github.io/automation-good-practices
* https://docs.ansible.com/ansible/2.8/user_guide/playbooks_best_practices.html

полезное:
* https://github.com/sandervanvugt/rhce8-book
* https://github.com/geerlingguy/ansible-for-devops

курсы/видосы:
* Ansible: From Basics to Guru by Sander van Vugt
* Red Hat RHCE 8 (EX294)

Message too long. View the full text
Есть такая контора southbridge. И они недавно запустили бесплатные курсы по ansible. Пошел смотреть и сначала было интересно, потом смешно, а потом уже не смешно.

Например, они говорят:

так делать плохо:
- name: Rpmcheck exclusions file templated
  template:
    src: "{{ base_sb_srv_dir }}/etc/{{ base_fix_rpm_file }}.j2"
    dest: "/{{ base_sb_srv_dir }}/etc/{{ base_fix_rpm_file }}"
    owner: root
    group: root
    mode: "0644"

так хорошо:
- name: Rpmcheck exclusions file templated
Message too long. View the full text
Открыл для себя циклические зависимости в ансибле! Можно смело уходить на выходные.

В общем, если сделать так:

node:
  unit:
    name: node-01
    service: "{{ node.unit.name }}.service"
    path: /etc/systemd/system/
    full: "{{ node.unit.path }}/{{ node.unit.service }}"
  drop-in:
    name: 10-drop-in.conf
    path: "{{ node.unit.path }}/{{ node.unit.name }}.d"
    full: "{{ node.drop-in.path }}/{{ node.drop-in.name }}"

Message too long. View the full text
Вообще все чаще думаю о переходе с ansible на nix/guix. Пора в футуре шагнуть обеими ногами.
как оказалось такой вариант править  непросто

node:
  unit:
    name: node-01
    service: "{{ node.unit.name }}.service"
    path: /etc/systemd/system/
    full: "{{ node.unit.path }}/{{ node.unit.service }}"
  drop-in:
    name: 10-drop-in.conf
    path: "{{ node.unit.path }}/{{ node.unit.name }}.d"
    full: "{{ node.drop-in.path }}/{{ node.drop-in.name }}"

похоже реально в ямле  нужно по минимуму использовать переменные

новостей тред
17 replies omitted. View the full thread
Исследователи из компании Eclypsium выявили аномальное поведение на системах с материнскими платами тайваньской компании Gigabyte Technology. Используемая в платах прошивка UEFI без информирования пользователя во время загрузки системы осуществляла подстановку и запуск исполняемого файла для платформы Windows. В свою очередь, запущенный исполняемый файл загружал из сети и запускал сторонние исполняемые файлы. Дальнейший разбор ситуации показал, что идентичное поведение проявляется на сотнях разных моделей плат Gigabyte и связано с работой поставляемого компанией приложения App Сenter.

Запускаемый файл был встроен в прошивку UEFI и в процессе инициализации во время загрузки сохранялся на диск. На стадии запуска драйверов (DXE, Driver Execution Environment) при помощи модуля прошивки WpbtDxe.efi данный файл загружался в память и прописывался в таблицу WPBT ACPI, содержимое которой в дальнейшем загружается и запускается менеджером сеансов Windows (smss.exe, Windows Session Manager Subsystem). Перед загрузкой модуль проверял включение в BIOS/UEFI функции "APP Center Download & Install" (отключена по умолчанию). Во время запуска на стороне Windows код подставлял в систему исполняемый файл "%SystemRoot%\system32\GigabyteUpdateService.exe", который прописывался как системный сервис.

После запуска сервис GigabyteUpdateService.exe выполнял загрузку обновления с серверов Gigabyte, но производил это без должной верификации загруженных данных по цифровой подписи и без использов
Message too long. View the full text
ClipboardImage.png
[Hide] (26.6KB, 500x87)
ClipboardImage.png
[Hide] (34.2KB, 400x145)
ClipboardImage.png
[Hide] (123.7KB, 700x274)
ClipboardImage.png
[Hide] (95KB, 500x347)
Некоторые серверы с nginx остаются уязвимы для техники Nginx Alias Traversal, которая была предложена на конференции Blackhat ещё в 2018 году и позволяет получить доступ к файлам и каталогам, размещённым вне корневого каталога, заданного в директиве "alias". Проблема проявляется только в конфигурациях с директивой "alias", размещённой внутри блока "location", параметр которой не завершается на символ "/", в то время как "alias" завершается на "/".

Суть проблемы в том, что файлы для блоков с директивой alias отдаются через прикрепление запрошенного пути, после его сопоставления с маской из директивы location и вырезания заданной в этой маске части пути. Для показанного выше примера уязвимой конфигурации атакующий может запросить файл "/img../test.txt" и этот запрос подпадёт под указанную в location маску "/img", после чего остающийся хвост "../test.txt" будет прикреплён к пути из директивы alias "/var/images/" и в итоге будет запрошен файл "/var/images/../test.txt". Таким образом, атакующим может получить доступ к любым файлам в каталоге "/var", а не только к файлам в "/var/images/", например, для загрузки лога nginx можно отправить запрос "/img../log/nginx/access.log".

В конфигурациях, в которых значение директивы alias не завершается символом "/" (например, "alias /var/images;"), атакующий не может перейти в родительский каталог, но имеет возможность запросить другой каталог в /var, начало имени которого совпадает с указанным в конфигурации. Например, запросив "/img.ol
Message too long. View the full text
Опубликован выпуск пакетного фильтра nftables 1.0.8, унифицирующего интерфейсы фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов (нацелен на замену iptables, ip6table, arptables и ebtables). В пакет nftables входят компоненты пакетного фильтра, работающие в пространстве пользователя, в то время как на уровне ядра работу обеспечивает подсистема nf_tables, входящая в состав ядра Linux начиная с выпуска 3.13. На уровне ядра предоставляется лишь общий интерфейс, не зависящий от конкретного протокола и предоставляющий базовые функции извлечения данных из пакетов, выполнения операций с данными и управления потоком.

Непосредственно правила фильтрации и специфичные для протоколов обработчики компилируются в байткод в пространстве пользователя, после чего данный байткод загружается в ядро при помощи интерфейса Netlink и выполняется в ядре в специальной виртуальной машине, напоминающей BPF (Berkeley Packet Filters). Подобный подход позволяет значительно сократить размер кода фильтрации, работающего на уровне ядра и вынести все функции разбора правил и логики работы с протоколами в пространство пользователя.

Основные изменения:

    Добавлена возможность установки меток "meta" и "ct" из других полей в правилах. Например, для создания метки "meta" на основе манипуляций с IP-адресом из заголовка DSCP можно использовать конструкции вида:

        ... meta mark set ip dscp
        ... meta mark set ip dscp and 0x0f
        ... meta mark set ip dscp < 8
        ... meta mark set (ip dscp and 0xf) < 8

    В оптимизаторе правил, вызываемом при указании опции "-o" ("--optimize"), улучшена упаковка выражений, связанных с трансляцией адресов (NAT). Например, правила

Message too long. View the full text
Лия Роу (Leah Rowe), основной разработчик и основатель дистрибутива Libreboot, представила первый выпуск новой загрузочной прошивки GNU Boot, представляющей собой форк Libreboot, адаптированный для соответствия требованиям Фонда СПО к полностью свободным дистрибутивам. GNU Boot планируют развивать в составе проекта GNU в качестве свободного системного окружения, которое можно использовать вместо проприетарных прошивок, обеспечивающих загрузку (полностью свободный дистрибутив CoreBoot). Сопровождение GNU Boot, как и Libreboot, будет обеспечивать Лия Роу.

Причиной создания форка является расхождение в подходе к допустимости использования в прошивках бинарных компонентов у проекта Libreboot и Фонда СПО. Осенью прошлого года проект Libreboot перешёл на более прагматичные правила использования бинарных компонентов, позволившие заметно расширить спектр поддерживаемого аппаратного обеспечения. Новой целью проекта Libreboot стала поддержка всего оборудования, поддерживаемого в CoreBoot, за исключением бинарных компонентов, влияющих на безопасность и надёжность (например, в Libreboot используеься me_cleaner для отключения Intel ME). При этом Libreboot потерял статус полностью свободного дистрибутива с позиции Фонда Свободного ПО.

10 июля была сформирована экспериментальная сборка Censored Libreboot c20230710, предлагающая редакцию Libreboot 20230625, в которой оставлены только компоненты, соответствующие критериям Фонда СПО, не допускающим поставку бинарных прошивок (firmware) и любых бинарных компонентов драйверов. В итоге в Censored Libreboot была удалена поддержка 2 материнских плат для ПК и 12 ноутбуков, т.е. почти половина из ранее поддерживаемых систем.

Проект GNU Boot стал продолжением опробованной в Censored Libreboot идеи по созданию полностью свободного ответвления Libreboot. Первый выпуск GNU Boot 20230717 вобрал в себе соответствующие критериям Фонда СПО изменения, накопившиеся с момента формирования прошлогоднего выпуска Libreboot 20220710, который является последним выпуском Libreboot, подготовленным до принятия проектом новых правил. По сравнению с Libreboot 20220710 в GNU Boot 20230717 реализована поддержка ноутбука Dell Latitude E6400 и двух Chromebook на базе архитектуры ARM - ASUS Chromebook Flip C101 и Samsung Chromebook Plus. В опубликованном выпуске также расширена поддержка плат ASUS KFSN4-DRE, KCMA-D8 и KGPE-D16, значительно переработана система сборки и проведена чистка документации.

Полный список поддерживаемого в GNU Boot 20230717 оборудования:

   * Серверы:
        ASUS KGPE-D16
        ASUS KFSN4-DRE 
   * Десктоп-системы:
        ASUS KCMA-D8
Message too long. View the full text
На конференции Black Hat USA 2023 объявлены победители ежегодной премии Pwnie Awards 2023, выделяющей наиболее значительные уязвимости и абсурдные провалы в области компьютерной безопасности. Pwnie Awards считается аналогом Оскара и Золотой малины в области компьютерной безопасности.

Основные победители:

    Лучшая уязвимость, приводящая к повышению привилегий. Победа присуждена уязвимости USB Excalibur (CVE-2022-31705) в реализации USB-контроллера, применяемого в продуктах виртуализации VMware ESXi, Workstation и Fusion. Уязвимость позволяет получить доступ к хост-окружению из гостевой системы и выполнить код с правами процесса VMX. Среди номинантов отмечается серия уязвимости в ядре Linux, связанная с использованием небезопасного макроса container_of().
    Лучшая уязвимость, приводящая к удалённому выполнению кода. Победа присуждена уязвимости (CVE-2023-20032) в свободном антивирусном пакете ClamAV, позволяющей выполнить код при сканировании файлов со специально оформленными дисковыми образами в формате HFS+ (например, при сканировании на почтовом сервере файлов, извлекаемых из писем). В числе номинантов упоминались уязвимости в системе мониторинга Checkmk и балансировщике нагрузки Windows (CVE-2023-28240).
    Лучшая криптографическая атака. Присуждается за выявление наиболее значимых брешей в реальных системах, протоколах и алгоритмах шифрования. Победу одержал метод атак по сторонним каналам, позволяющий удалённо восстановить значения ключей шифрования на базе а
Message too long. View the full text

обсуждаем всякое разное на технические темы
зайду с козырей

https://archive.is/fnXVz

А вот вам несколько историй с другой стороны. Я DevOps инженер с опытом более 15 лет. Когда-то давно начинал как системный администратор. Умею настраивать Linux и сети. Есть несколько сертификатов. Например Red Hat Certified Engineer (RHCE), Red Hat Certified Systems Administrator (RHCSA), AWS Certified Solutions Architect - Associate (SAA). Это для контекста. Можете погуглить RHCE Exam objectives, что бы понять объём области знаний.

Так вот, последние полгода прохожу интервью и пока ни одного оффера.

Собеседовался в один банк - завалил кодинг интервью. Не смог за полчаса распарсить лог веб сервера Apache и найти топ самых часто встречаемых IP адресов.

Ну да, не хватает практики. Зарегистрировался на leetcode и hackerrank. Начал решать задачки регулярно. Подтянул Python.

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


Message too long. View the full text

GNU GUIX (произносится гикс /ɡiːks/) — функциональный пакетный менеджер и операционная система, разработанные Ludovic Courtès. Отличительной особенностью является создание полностью воспроизводимых билдов и декларативное описание. Guix можно поставить на существующий дистрибутив GNU/Linux или в качестве отдельной системы на базе Linux или GNU Hurd. Раньше существовало разделение менеджера пакетов Guix и операционной системы GuixSD.

Определения пакетов описываются на диалекте языка Scheme – GNU/Guile. Большая часть исходников написана на нём же. Система изначально была основана на Nix. Отличиями от Nix(OS) являются язык для описания пакетов и сервисов, система инициализации (GNU Shepherd), использование ядра Linux-Libre (Linux без блобов) и отсутствие проприетарных пакетов.

Чем интересен Guix: https://habr.com/ru/post/436938/

GNU Guix (из коробки) не имеет проприетарного firmware. Потому при переходе на эту систему надо учитывать, что возможно wifi адаптер, gpu и другие компоненты системы могут не работать полностью или частично.

Список свободных wifi адаптеров:
https://gist.github.com/sirikid/2817f36d67d1480a428cbf33b220cfcc

Как завести систему с несвободным железом:
* Канал с несвободными пакетами NonGuix
* Установочный образ с несвободным ядром и firmware
Last edited by Hidden User
Message too long. View the full text
Доступен системный менеджер GNU Shepherd 0.10 (бывший dmd), сочетающий возможности системы инициализации и инструментария для управления системными сервисами. Проект развивается разработчиками дистрибутива GNU Guix System в качестве альтернативы системе инициализации SysV-init, поддерживающей зависимости. Управляющий демон и утилиты Shepherd написаны на языке Guile (одна из реализаций языка Scheme), который также используется для определения настроек и параметров запуска сервисов. Shepherd уже применяется в дистрибутиве GNU Guix System и нацелен также на использование в GNU/Hurd, но может работать в любой POSIX-совместимой ОС, для которой доступен язык Guile.

Shepherd выполняет работу по запуску и остановке сервисов, учитывая взаимосвязь между сервисами, динамически определяя и запуская сервисы, от которых зависит выбранный сервис. Shepherd также поддерживает определение конфликтов между сервисами и предотвращает их одновременное выполнение. Проект может использоваться как в роли основной системы инициализации (init c PID 1), так и в обособленном виде для управления фоновыми процессами отдельных пользователей (например, для запуска tor, privoxy, mcron и т.п.) с выполнением с правами данных пользователей.

Основные новшества:

    * Добавлены новые промежуточные состояния сервисов - "starting" и "stopping", отображаемые при выполнении команды "herd status" и определяющие нахождение сервиса в процессе запуска или остановки (ранее поддерживались только состояния "running" и "stopped").
    * Обеспечена блокировка повторного выполнения операций "start" и "stop", если сервис уже запущен или остановлен (ранее выполнение "herd start SERVICE" приводило к попытке запуска второго экземпляра сервиса).
    * Обеспечено распараллеливание запуска зависимостей и сервисов, запускаемых в режиме "start-in-the-background".
    * Реализован учёт времени сбоев и изменений состояний каждого сервиса. Накопленная статистика показывается при выполнении команды "herd status".
    * Добавлена команда "herd log" для показа сводного лога событий и списка всех изменений состояния сервиса.
    * Добавлена команда "herd graph" для генерации данных, позволяющих при помощи Graphviz ("herd graph | xdot -") отобразить наглядный граф зависимостей.
    * Реализовано цветное подсвечивание вывода команды herd.
    * Добавлены новые сервисы: "monitoring" для отслеживания потребления ресурсов процессом shepherd и "repl" для запуска отладочного интерфейса REPL (read-eval-print loop).
    * Объявлен устаревшим интерфейс GOOPS (Guile’s Object-Oriented Programming System). 
Message too long. View the full text

68747470733a2f2f64336b6f3533337475316f7a66712e636c6f756466726f6e742e6e65742f636c69636b73746172742f65726c616e672e706e67.png
[Hide] (16.5KB, 256x232)
Стоит ли рассматривать более подробно данный ЯП?
6 replies and 2 files omitted. View the full thread
Генераторы: двоичные и списка. Имеют структуру
NewList = [Выражение || Генератор1, Генератор2,..., ГенераторN. Условие1, Условие2,..., УсловиеM]

language: erlang
% общий вид двоичного генератора в литературе, которую я читаю, не приводится. Поэтому напишу здесь усреднённый вид генератора, чтобы понимать потом.
[X || <<X>> <= <<1, 2, 3, 4, 5>>, X rem 2 == 0].
ClipboardImage.png
[Hide] (41.4KB, 583x418)
Продолжаем.
Это код простого udp-сокета. Решил немного уйти дальше просто посмотреть. Очень доставил встроенная бесконечная функция loop.
Replies: >>56
>>55
Расширенный код сокета. Объединён с tcp-сокетом в один файл. Оба сокета запускаются параллельно.

-module(socket_server).
-export([start/0]).

start() ->
    TcpPort = 1337,
    UdpPort = 1488,
    TcpOptions = [{active, false}, {reuseaddr, true}],
    UdpOptions = [{active, false}, {reuseaddr, true}],
    {ok, TcpSocket} = gen_tcp:listen(TcpPort, TcpOptions),
    {ok, UdpSocket} = gen_udp:open(UdpPort, UdpOptions),
    io:format("TCP server started and listening on port ~w~n", [TcpPort]),
    io:format("UDP server started and listening on port ~w~n", [UdpPort]),
Message too long. View the full text
Replies: >>57
>>56
В будущем применимый для этого сокет-сервера модуль с использованием mysql

-module(db).
-export([connect/0, insert_user/2, insert_log/3]).

connect() ->
    mysql:start_link([{host, "localhost"}, {user, "root"}, {password, "password"}, {database, "chatgpt_db"}]).

insert_user(Username, Password) ->
    mysql:query(mysql:prepare(<<"INSERT INTO users (username, password) VALUES (?, ?)">>, [Username, Password])).

insert_log(FromUser, ToUser, Message) ->
    mysql:query(mysql:prepare(<<"INSERT INTO message_logs (from_user, to_user, message) VALUES (?, ?, ?)">>, [FromUser, ToUser, Message])).

Message too long. View the full text
Сама sql-схема прилагается.
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(255) UNIQUE NOT NULL,
    password VARCHAR(255) NOT NULL
);

CREATE TABLE messages (
    id INT AUTO_INCREMENT PRIMARY KEY,
    sender_id INT NOT NULL,
    receiver_id INT NOT NULL,
    message TEXT NOT NULL,
    sent_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (sender_id) REFERENCES users(id),
    FOREIGN KEY (receiver_id) REFERENCES users(id)
Message too long. View the full text

тред посвящается околинуксовым всяким разным штукам
Last edited by Hidden User
спидран по установке arch

https://youtu.be/8utpbbdj0LQ

После полутора лет разработки опубликован четвёртый бета-выпуск операционной системы Haiku R1. Изначально проект был создан как реакция на закрытие ОС BeOS и развивался под именем OpenBeOS, но был переименован в 2004 году из-за претензий, связанных с использованием в названии торговой марки BeOS. Для оценки работы нового выпуска подготовлено несколько загрузочных Live-образов (x86, x86-64). Исходные тексты большей части ОС Haiku распространяются под свободной лицензией MIT, исключение составляют некоторые библиотеки, медиа-кодеки и компоненты, заимствованные из других проектов.

ОС Haiku ориентирована на персональные компьютеры, использует собственное ядро, построенное на основе модульной архитектуры, оптимизированное для высокой отзывчивости на действия пользователя и эффективного выполнения многопоточных приложений. Для разработчиков представлен объектно-ориентированный API. Система напрямую базируется на технологиях BeOS 5 и нацелена на бинарную совместимость с приложениями для данной ОС. Минимальное требование к оборудованию: CPU Pentium II и 384 МБ ОЗУ (рекомендовано Intel Core i3 и 2 ГБ ОЗУ).

В качестве файловой системы используется OpenBFS, поддерживающая расширенные атрибуты файлов, журналирование, 64-разрядные указатели, поддержку хранения мета-тэгов (для каждого файла можно сохранить атрибуты в форме ключ=значение, что делает ФС похожей на БД) и специальных индексов для ускорения выборки по ним. Для организации структуры директорий используются "B+ tree" деревья. Из кода BeOS в состав Haiku включён файловый менеджер Tracker и панель Deskbar, исходные тексты которых были открыты после ухода BeOS со сцены.

Основные новшества:

    Улучшена работа на экранах с высокой плотностью пикселей (HiDPI). Реализовано корректное масштабирование интерфейса, не ограничивающееся изменением размера шрифтов. При первой загрузке Haiku теперь пытается автоматически определить наличие HiDPI-экрана и выбрать необходимые размеры для масштабирования. Выбранные параметры могут быть изменены в настройках, но для их применения пока требуется перезагрузка. Параметры масштабирования поддерживаются в большинстве родных приложений и в некоторых портированнных, но не во всех.
    Предоставлена возможность использования внешнего вида с плоским декоратором окон и плоским оформлением кнопок, вместо оформления с активным использованием градиентов. Плоское оформление поставляется в пакте Haiku Extras и включается в разделе настроек внешнего вида.
    Добавлена прослойка для обеспечения совместимости с библиотекой Xlib, позволяющая запускать X11-приложения в Haiku без запуска X-сервера. Прослойка реализована через эмуляцию функций Xlib при помощи трансляции вызовов в высокоуровневый графический API Haiku.
    Подготовлена прослойка для обеспечения совместимости с Wayland, позволяющая запускать тулкиты и приложения, использующие данный протокол, в том числе приложения на базе библиотеки GTK. Прослойка предоставляет библиотеку libwayland-client.so, основанную на коде libwayland и совместимую на уровне API и ABI, что позволяет запускать приложения Wayland без изменений. В отличие от типовых композитных серверов Wayland, прослойка не запускается в форме отдельного серверного процесса, а загружается как плагин к клиентским процессам. Вместо сокетов в сервере используется нативный цикл обработки сообщений на основе BLooper.
    Благодаря прослойкам для совместимости с X11 и Wayland удалось подготовить рабочий порт библиотеки GTK3. Из приложений, которые можно запустить при помощи порта отмечены GIMP, Inkscape, Epiphany (GNOME Web), Claws-mail, AbiWord и HandBrake.
    Добавлен рабочий порт с Wine, который можно использовать для запуска Windows-приложений в Haiku. Из ограничений отмечается возможность запуска только в 64-разрядных сборках Haiku и способность выполнения только 64-разрядных приложений Windows.
    Добавлен порт текстового редактора GNU Emacs, работающий в графическом режиме. Пакеты размещены в репозитории HaikuDepot.
Message too long. View the full text

появилось в версии 15.7.0

https://www.youtube.com/watch?v=IrK83nKi8HA

We are pleased to announce the release of GNU Guix version 1.4.0!

The release comes with ISO-9660 installation images, a virtual machine image, and with tarballs to install the package manager on top of your GNU/Linux distro, either from source or from binaries—check out the download page. Guix users can update by running guix pull.

It’s been 18 months since the previous release. That’s a lot of time, reflecting both the fact that, as a rolling release, users continuously get new features and update by running guix pull; but let’s face it, it also shows an area where we could and should collectively improve our processes. During that time, Guix received about 29,000 commits by 453 people, which includes important new features as we’ll see; the project also changed maintainers, structured cooperation as teams, and celebrated its ten-year anniversary!

A happy frog sitting at a Guix-powered computer with an almighty benevolent Guix humanoid in its back.

    Illustration by Luis Felipe, published under CC-BY-SA 4.0.

This post provides highlights for all the hard work that went into this release—and yes, these are probably the longest release notes in Guix’s history, so make yourself comfortable, relax, and enjoy.

    Bonus! Here’s a chiptune (by Trevor Lentz, under CC-BY-SA 3.0) our illustrator Luis Felipe recommends that you listen to before going further.

Improved software environment management
Message too long. View the full text

Во FreeBSD выявлена уязвимость (CVE-2022-23093) в утилите ping, входящей в базовую поставку. Проблема потенциально может привести к удалённому выполнению кода с правами root при проверке при помощи ping внешнего хоста, подконтрольного злоумышленнику. Исправление предложено в обновлениях FreeBSD 13.1-RELEASE-p5, 12.4-RC2-p2 и 12.3-RELEASE-p10. Подвержены ли другие BSD-системы выявленной уязвимости пока не ясно (отчётов об уязвимости в NetBSD, DragonFlyBSD и OpenBSD пока не появилось).

Уязвимость вызвана переполнением буфера в коде разбора ICMP-сообщений, приходящих в ответ на проверочный запрос. Код отправки и приёма ICMP-сообщений в ping использует raw-сокеты и выполняется с повышеннымми привилегиями (утилита поставляется с флагом setuid root). Обработка ответа производится на стороне ping через реконструкцию IP- и ICMP-заголовков пакетов, получаемых из raw-сокета. Выделенные IP- и ICMP-заголовки копируются функцией pr_pack() в буферы, но принимая во внимание то, что в пакете после заголовка IP могут присутствовать дополнительные расширенные заголовки.

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

Message too long. View the full text

Show Post Actions

Actions:

Captcha:

- feedback - news - rules - faq -
jschan 1.4.1