es
Feedback

¡No caigas en manos de tramposos! Telemetrio encuentra y marca estos canales 👉 Si quieres ver la etiqueta, suscríbete

Блог*

Блог*

Ir al canal en Telegram

Блог со звёздочкой. Много репостов, немножко программирования. Небольшое прикольное комьюнити: @decltype_chat_ptr_t Автор: @insert_reference_here

Mostrar más
1 982
Suscriptores
-324 horas
-57 días
-430 días
Archivo de publicaciones

Поздравляю с Тыквенным Спасом

BTW я в документации заметил это: This is very similar to using repeat() with Iterator::take(), but there are two differences: * repeat_n() can return the original value, rather than always cloning. * repeat_n() produces an ExactSizeIterator. Второе замечание перестало быть верным в той же версии, как я и написал в своих заметках о релизе. Я решил это исправить и сделал PR (который в итоге оперативно смержили). Как оказалось, я не один такой умный — другой человек менее чем через час прислал PR с абсолютно идентичным диффом. Конечно, он его потом закрыл, как дубликат.

Коллеги, добрый день Решили поделиться опытом фаззинга dhcp сервера с помощью фаззера nyx-net. Перед нами стояла задача пофаззить dnsmasq, причём функционал, отвечающий за dhcp сервер. Мы решили, что данная цель хорошо подходит для того, чтобы потренироваться фаззингу клиент-серверных приложений с сохранением состояния (Crusher, AFLNet, StateAFL, SGFuzz). Мы давно хотели попробовать запустить [SGFuzz](https://github.com/bajinsheng/SGFuzz), но он к сожалению работает только с tcp протоколами, а dhcp протокол работает на udp. Поэтому сначала мы решили попробовать запустить AFLNet. Fuzzing dnsmasq with AFLNet AFLNet - это graybox фаззер, который позволяет тестировать имплементацию протоколов в сетевых серверах или клиентах. AFLNet выступает в качестве клиента, отправляя серверу смутированные пакеты. При этом фаззер учитывает не только покрытие кода тестируемого проекта, но и его состояние. Состояние сервера определяется с помощью кода возврата в ответе от сервера (например, код 200 в HTTP протоколе). При этом в качестве начального корпуса фаззер использует записанные с помощью tcpdump (или другой утилиты для захвата сетевого трафика) пакеты. Таким образом, AFLNet пытается обеспечить максимальную имитацию реальных условий использования целевой программы. Ведь фаззить сетевое приложение с помощью стандартных подходов зачастую оказывается довольно сложно, так как какую-нибудь отдельную функцию сложно выделить из приложения из-за глобального состояния сервера. Поэтому в некоторых случаях настройка фаззинга сетевого приложения с помощью AFLNet является в разы проще чем стандартными фаззерами (AFL++, LibFuzzer). Но к сожалению, у AFLNet есть большой недостаток - скорость фаззинга: - AFLNet передаёт пакеты по сети, что довольно медленно в условиях фаззинга. - AFLNet использует задержку по времени для инициализации сервера. То есть AFLNet ждёт определённое количество времени для инициализации сервера прежде чем отправить пакет. - AFLNet использует задержку по времени чтобы дождаться ответа от сервера. То есть фаззер будет просто ждать некоторое время ответа от сервера и если ответа не поступило, то только после истечения этого таймаута фаззер завершит сессию. Всё это приводит к очень низкой скорости фаззинга (в наших условиях было ~10 запусков в секунду). Fuzzing dnsmasq with nyx-net Мы решили посмотреть, какие существуют альтернативы AFLNet, которые позволяют нам решить перечисленные проблемы. Нас заинтересовал инструмент nyx-net. Nyx-Net - это snapshot based graybox фаззер, основанный на фаззере nyx. Использование снепшотов для фаззинга позволяет решить озвученные проблемы: - nyx-net подменяет общение по сети на работу с shared memory. Этот механизм используется не только для увеличения скорости доставки тесткейса до целевой программы, но и для определения состояния сервера (например, сервер готов к считыванию пакета). - nyx-net отслеживает вызовы чтения и записи в сетевой сокет. Таким образом, фаззер создаст базовый снепшот (root snapshot) перед вызовом функции для чтения из сокета. В дальнейшем при фаззинге фаззер будет откатываться до этого базового снепшота, чтобы начать новую сессию. Такой метод позволяет избежать задержки по времени при инициализации серевера. - nyx-net создаёт возрастающие (incremental) снепшоты. То есть после отправки нескольких пакетов фаззер может сделать снепшот и потом откатываться уже до этого состояния, а не до базового снепшота. Таким образом, фаззеру не нужно воспроизводить цепочку пакетов, чтобы исследовать, как ведёт себя сервер в открытом состоянии при получении новых пакетов. Но к сожалению, в nyx-net не было реализовано функции для подмены вызова recvmsg(), которая используется в dnsmasq для чтения сообщения и дополнительной информации из сокета. Поэтому мы написали свой патч, который эмулирует работу этого вызова, и отправили его разработчикам. Таким образом, у нас получилось увеличить скорость фаззинга dnsmasq с помощью Nyx-Net примерно в 450 раз по сравнению с AFLNet. Поэтому рекомендуем добавить этот фаззер в свой набор инструментов.

Repost from Neural Machine
Очень грустно, что мне лично приходится нести последствия своих решений.

photo content

#лингво?..

Repost from N/a
Думав над руським словом закадичний і як перекласти це англомовній людині Прийшов до deepthroat friend

Repost from sad dev diary
photo content

#rust #meme Source
#rust #meme Source

Repost from sad dev diary
photo content

#prog #rust #meme >_>

Repost from N/a
photo content

Напоминаю

Кто это поставил? Покажись!
Кто это поставил? Покажись!

пожалуй, проклято
пожалуй, проклято

sticker.webp0.14 KB

photo content

Харальд Вельте (Harald Welte), известный разработчик ядра Linux, лауреат премии за значительный вклад в развитие свободного ПО, основатель организации gpl-violations.org, создатель проекта Openmoko и один из разработчиков netfilter/iptables, опубликовал своё мнение относительно удаления участников из списка мэйнтейнеров ядра Linux на основании их предполагаемой работы в подсанкционных компаниях. По словам Харальда, он гордился вовлечённостью в работу сообщества разработчиков ядра, но нынешнее сообщество не похоже на то, которое он помнит, и ему больно видеть, что сейчас там происходит. По его мнению нет ничего хуже дискриминации людей только из-за их паспорта, места жительства или места работы.
. . .
Помимо дискриминации разработчиков на основе их имени, email или работодателя, удивление вызвало то, что удаление произведено без каких-либо объяснений. Последующие разъяснения дали понять, что дело в санкциях, и удаление выполнено на основе консультации с юристами, но при этом не было предоставлено полного юридического анализа и не были отмечены вовлечённые в необходимость выполнения санкций субъекты (Linux Foundation? разработчики из США? Создатели дистрибутивов?).

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

Но даже в случае предоставления убедительных юридических доводов, перед фактическим исключением мэйнтейнеров было бы правильным провести публичное обсуждение, попытаться найти способ обойти требования юристов и организовать общественное движение против. В крайнем случае, если обходные пути не были бы найдены, по мнению Вельте, можно было ожидать гражданского неповиновения или оставления в файле MAINTAINERS пояснений о том, что удаление стало вынужденной мерой. Вместо этого наиболее значимые разработчики без лишней огласки в составе исправлений символьных драйверов применили патч с размытой формулировкой и тем самым проявили неуважение к работе удалённых участников и показали другим разработчикам как в сообществе люди относятся друг к другу.
Харальд Вельте выразил сожаление о том, во что превратилось Linux-сообщество https://www.opennet.ru/opennews/art.shtml?num=62112