Forwarded from Протестировал (Sergey Bronnikov)
Репост из канала Данилы Кутенина (орфография и пунктуация автора) про тестирование движка для регулярных выражений:
В последние 2 недели периодически, когда мне было лень работать, я пытался сделать что-то интересное, но до большого и громкого поста не дотягивало. В любом случае, поделиться стоит.
Меня задолбали различные движки регулярных выражений и каждый раз, когда я смотрел на них, мне хотелось понять, как они под капотом тестируются. После изучения многих библиотек, я понял, что поддержка огромного количества токенов так грустно покрыто юнит тестами, что я захотел либо найти достойное тестирование (спойлер, не нашёл), либо десятки багов в этих движках. Суммарно за несколько дней я нашёл 11 багов, 2 в boost (уже были зарепорчены 1, 2), 4 новых в hyperscan, 5 новых в compile time regular expressions (будущие regex в плюсовом стандарте) и огромное количество (нет, просто капец тьму) несоответствия между синтаксисами различных движков, например, что в RE2 синтаксисе whitespace (\s) не поддерживается вертикальный tab \v, хотя во всех остальных движках оно одинаково поддерживается. Или даже лучше (не баг, различие в грамматиках):
В отличие от стандартного тестирования, я пытался сделать что-то новое, а именно
1. Создаем случайное валидное регулярное выражение, например, с помощью случайного дерева или автомата
2. Если движок отказывается его компилировать, это баг. Можно здесь ещё считать majority от движков и репортить те, которые не подчиняются ему
3. Создаем строки подходящие под это регулярное выражение, если они не матчатся, то это баг. Создаём почти подходящие строки, если они матчатся, это баг. Здесь я использовал идеи из статьи egret и питонячнее .sre_parse
4. Фаззим с помощью libfuzzer входные строки для поиска, пытаемся найти рантайм баги и сверяем корректность у majority движков
У многих движков настроен фаззинг, только они не проверяют полноту. К счастью, видимо, весь хлеб такого тестирования фаззинг у меня и забрал, мой план лишь быстрее увеличивал покрытие. Например, такой план увеличивал покрытие hyperscan до 90% за 2 часа, когда как обычный фаззинг делал это 3 дня.
Несмотря на баги, hyperscan всё ещё считаю лучшим движком by far от всех остальных. Там очень много очень классного кода, написано хорошо, работает очень быстро (сотни мегабайт в секунду). Недавно узнал, что там можно собирать регулярные выражения в satisfiability дерево, например, в
Если говорить про различие синтаксисов, то есть неплохая табличка.
Ну, 11 багов, that ain't much but that's honest work. Надеялся на много десятков минимум :)
В последние 2 недели периодически, когда мне было лень работать, я пытался сделать что-то интересное, но до большого и громкого поста не дотягивало. В любом случае, поделиться стоит.
Меня задолбали различные движки регулярных выражений и каждый раз, когда я смотрел на них, мне хотелось понять, как они под капотом тестируются. После изучения многих библиотек, я понял, что поддержка огромного количества токенов так грустно покрыто юнит тестами, что я захотел либо найти достойное тестирование (спойлер, не нашёл), либо десятки багов в этих движках. Суммарно за несколько дней я нашёл 11 багов, 2 в boost (уже были зарепорчены 1, 2), 4 новых в hyperscan, 5 новых в compile time regular expressions (будущие regex в плюсовом стандарте) и огромное количество (нет, просто капец тьму) несоответствия между синтаксисами различных движков, например, что в RE2 синтаксисе whitespace (\s) не поддерживается вертикальный tab \v, хотя во всех остальных движках оно одинаково поддерживается. Или даже лучше (не баг, различие в грамматиках):
#include <boost/regex.hpp>Python RE, PCRE/PCRE2, RE2 прошли тестирование. Видимо, big tech является для них самым главным тестировщиком :)
#include <regex>
#include <iostream>
int main() {
{
std::regex e{"\\<\\<\\w+"};
std::cout << std::regex_search("a ", e) << std::endl; // prints 0
}
{
boost::regex e{"\\<\\<\\w+"};
std::cout << boost::regex_search("a ", e) << std::endl; // prints 1
}
}
В отличие от стандартного тестирования, я пытался сделать что-то новое, а именно
1. Создаем случайное валидное регулярное выражение, например, с помощью случайного дерева или автомата
2. Если движок отказывается его компилировать, это баг. Можно здесь ещё считать majority от движков и репортить те, которые не подчиняются ему
3. Создаем строки подходящие под это регулярное выражение, если они не матчатся, то это баг. Создаём почти подходящие строки, если они матчатся, это баг. Здесь я использовал идеи из статьи egret и питонячнее .sre_parse
4. Фаззим с помощью libfuzzer входные строки для поиска, пытаемся найти рантайм баги и сверяем корректность у majority движков
У многих движков настроен фаззинг, только они не проверяют полноту. К счастью, видимо, весь хлеб такого тестирования фаззинг у меня и забрал, мой план лишь быстрее увеличивал покрытие. Например, такой план увеличивал покрытие hyperscan до 90% за 2 часа, когда как обычный фаззинг делал это 3 дня.
Несмотря на баги, hyperscan всё ещё считаю лучшим движком by far от всех остальных. Там очень много очень классного кода, написано хорошо, работает очень быстро (сотни мегабайт в секунду). Недавно узнал, что там можно собирать регулярные выражения в satisfiability дерево, например, в
((1 & 2) | (!3 & 2)), где 1, 2, 3 — регулярные выражения. Так они ещё там внутри и оптимизируются.Если говорить про различие синтаксисов, то есть неплохая табличка.
Ну, 11 багов, that ain't much but that's honest work. Надеялся на много десятков минимум :)
Telegram
Experimental chill
В последние 2 недели периодически, когда мне было лень работать, я пытался сделать что-то интересное, но до большого и громкого поста не дотягивало. В любом случае, поделиться стоит.
Меня задолбали различные движки регулярных выражений и каждый раз, когда…
Меня задолбали различные движки регулярных выражений и каждый раз, когда…
Forwarded from Пост Лукацкого
Facebook выложил в паблик инструмент Mariana Trench для анализа исходных кодов для Android и Java. До этого они уже выкладывали свои анализаторы исходников Zoncolan и Pysa (для Hack и Python) https://t.co/omuM4FuKqn
— Alexey Lukatsky (@alukatsky) Sep 30, 2021
— Alexey Lukatsky (@alukatsky) Sep 30, 2021
mariana-tren.ch
Mariana Trench | Mariana Trench
Security focused static analysis tool for Android and Java applications.
Forwarded from Tech Cheat Sheet (Oleg Kovalov)
Forwarded from oleg_log (Oleg Kovalov)
Вау, оказывается есть общие(?) хоткеи для навигации по командной строке. Некоторые в моем iTerm даже работают. Дадада, я не знал. (Спасибо подписчику :)
Forwarded from AI для Всех (Artemii)
This media is not supported in your browser
VIEW IN TELEGRAM
Как написать целый абзац для статьи на английском языке, всего лишь из одного предложения на русском?
Пишем одно предложение, переводим его на английский с помощью DeepL. Подаем его на вход в GPT-J, затем перефразируем его с помощью Wordtune и проверим грамматику Grammarly.
Поздравляю - у вас есть целый абзац текста. Нейросети рулят!
#ScientificML #writing
Пишем одно предложение, переводим его на английский с помощью DeepL. Подаем его на вход в GPT-J, затем перефразируем его с помощью Wordtune и проверим грамматику Grammarly.
Поздравляю - у вас есть целый абзац текста. Нейросети рулят!
#ScientificML #writing
Forwarded from Neural Shit
Годный репозиторий - rclip
С помощью этих наших искусственных интеллектов и терминала ищет изображения на локальном диске по текстовому запросу. Потестил, справляется достаточно хорошо. Пока доступно только для Linux-бояр.
Под капотом CLIP от OpenAI
С помощью этих наших искусственных интеллектов и терминала ищет изображения на локальном диске по текстовому запросу. Потестил, справляется достаточно хорошо. Пока доступно только для Linux-бояр.
Под капотом CLIP от OpenAI
Forwarded from infosecurity
🚪 Lightweight UNIX backdoor for ethical hacking.
JadedWraith is a powerful backdoor capable of either listening on a TCP port or sniffing packets for a "magic" ICMP packet instructing the backdoor to either callback or listen. This is partly inspired by tools such as PRISM, however, unlike PRISM JadedWraith incorporates shoddy cryptography to obfuscate command and control. JadedWraith can be used to execute remote commands or upload follow on payloads.
🧷 https://github.com/phath0m/JadedWraith
#backdoor #hacking #UNIX
JadedWraith is a powerful backdoor capable of either listening on a TCP port or sniffing packets for a "magic" ICMP packet instructing the backdoor to either callback or listen. This is partly inspired by tools such as PRISM, however, unlike PRISM JadedWraith incorporates shoddy cryptography to obfuscate command and control. JadedWraith can be used to execute remote commands or upload follow on payloads.
🧷 https://github.com/phath0m/JadedWraith
#backdoor #hacking #UNIX
Forwarded from DOFH - DevOps from hell
Twitter
PT SWARM
🔥 We have reproduced the fresh CVE-2021-41773 Path Traversal vulnerability in Apache 2.4.49. If files outside of the document root are not protected by "require all denied" these requests can succeed. Patch ASAP! httpd.apache.org/security/vulne…
Forwarded from Open Source
nzyme
Nzyme - это свободная открытая система защиты Wi-Fi нового поколения.
Проект nzyme использует адаптеры Wi-Fi в режиме мониторинга для сканирования частот на предмет подозрительного поведения, в частности, мошеннических точек доступа и известных платформ атак WiFi.
Каждый записанный беспроводной кадр анализируется и, при необходимости, отправляется в систему управления журналами Graylog для долгосрочного хранения, что позволяет выполнять криминалистическую экспертизу и реагировать на инциденты.🤔
Вы когда-нибудь задумывались, что делать, если поймаете злоумышленника?😉 С помощью nzyme вы сможете восстановить, что произошло, кто был злодеем, а кто был успешно взломан. nzyme также позволяет физически найти злоумышленника😳
Автоматически поддерживает несколько типов предупреждений. Используемые методы варьируются от анализа ожидаемой сетевой инфраструктуры на основе сигнатур, оценки ландшафта угроз с использованием отпечатков устройств до установки ловушек с возможностью обмана злоумышленника.😎
https://github.com/lennartkoopmann/nzyme
Сайт: https://www.nzyme.org/
Документация и видео-инструкции: https://www.nzyme.org/docs/intro/
=============
Если нашел интересный софт, поделись с сообществом: @FOSS_triangle_bot
Nzyme - это свободная открытая система защиты Wi-Fi нового поколения.
Проект nzyme использует адаптеры Wi-Fi в режиме мониторинга для сканирования частот на предмет подозрительного поведения, в частности, мошеннических точек доступа и известных платформ атак WiFi.
Каждый записанный беспроводной кадр анализируется и, при необходимости, отправляется в систему управления журналами Graylog для долгосрочного хранения, что позволяет выполнять криминалистическую экспертизу и реагировать на инциденты.🤔
Вы когда-нибудь задумывались, что делать, если поймаете злоумышленника?😉 С помощью nzyme вы сможете восстановить, что произошло, кто был злодеем, а кто был успешно взломан. nzyme также позволяет физически найти злоумышленника😳
Автоматически поддерживает несколько типов предупреждений. Используемые методы варьируются от анализа ожидаемой сетевой инфраструктуры на основе сигнатур, оценки ландшафта угроз с использованием отпечатков устройств до установки ловушек с возможностью обмана злоумышленника.😎
https://github.com/lennartkoopmann/nzyme
Сайт: https://www.nzyme.org/
Документация и видео-инструкции: https://www.nzyme.org/docs/intro/
=============
Если нашел интересный софт, поделись с сообществом: @FOSS_triangle_bot
Forwarded from Sysadmin Tools 🇺🇦
Damon is a terminal user interface for Nomad. It provides functionality to observe and interact with Nomad resources such as Jobs, Deployments, or Allocations.
https://github.com/hashicorp/damon
#hashicorp #nomad
https://github.com/hashicorp/damon
#hashicorp #nomad
GitHub
GitHub - hashicorp/damon: A terminal UI (TUI) for HashiCorp Nomad
A terminal UI (TUI) for HashiCorp Nomad. Contribute to hashicorp/damon development by creating an account on GitHub.
Forwarded from Алиса рассказывает
WIND - Windows in Docker — WHY? So you can run Windows "as a container"