Компания Google объявила об открытии исходных текстов проекта Atheris, развивающего специализированный инструментарий для fuzzing-тестирования кода на языке Python и расширений для CPython, написанных на C/C++. Проект использует движок на основе libFuzzer и может применяться совместно с инструментами Address Sanitizer и Undefined Behavior Sanitizer для выявления дополнительных ошибок. Код открыт под лицензией Apache 2.0...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=54204
Я одного не могу понять, а почему Гугл НЕ создал эту программу открытой изначально?
наверно потому, что сам он этого не делал, а опять купил, как и ВСЕ остальные проекты? Да-да, даже нынешний поисковик гугла - купленный.
>> нынешний поисковик гугла - купленный.Поделись, пжа, источником.
Вот здесь можно посметреть что купил google, в том числе и поисковики
https://en.wikipedia.org/wiki/List_of_mergers_and_acquisitio...
Если пройтись по ссылкам из таблицы, там написано, что наработки купленных текстовых поисковиков использовались только для вычисления рейтинга для сортировки результатов.
>Если пройтись по ссылкам из таблицы, там написано, что наработки купленных текстовых поисковиков использовались только для вычисления рейтинга для сортировки результатов.Это как-бы в поисковике самое главное. Остальное это робот для выкачки файлов по ссылкам.
В Гугле главное — это децентрализация. Он смог подняться благодаря тому, что за поиск отвечал не один-единственный супермощный и дорогой сервер, как у той же Альтависты, а скачанные страницы и индексы были с самого начала разбросаны по почти десятку разнородных машин (и интелы, и спарки, и пауэры). Чтобы угнаться за ростом Интернета, ему достаточно тупо докупать новые сервера для датацентров. Их уже миллионы.
А с чего им делиться с конкурентами полезными наработками, в которые они вложили деньги? А вот когда оно стало ненужно или полезность не оправдала ожиданий - выкидываешь в опен сорс - кушайте, не обляпайтесь. Гугл теперь выглядит белым и пушистым - "поделился", а поддерживают пусть кто хочет своими силами. Бонус поинты за рализ только сырцов без документации и инструментов сборки - вроде и открыли, а долбиться никто не захочет.
Вы правы, но это лучше чем ничего. Когда даже уже древнее ПО все еще не хотят открывать это грустно, кому-то да может понадобиться...
В компаниях вроде гугла используется тонна внутренних сервисов и библиотек: от собственной системы сборки и CI, до собственной VCS и диалекта ЯП. Оно сильно интегрировано между собой, что даёт серьезный буст производительности разработчикам, но затрудняет открытие сорцов. Нужно потратить уйму времени на рутинное отвязывание кода от всего этого NIH добра, а также настроить синхронизацию внешнего кода с внутренней монорепой, выделить человека для связи с общественностью (категоризацию багов, внешнего код ревью).
Дав ваще беспредел! Скрывают от сообщества сырые неюзабельные прототипы без документации!
Потому что код может быть написан так, что годен только для внутреннего использования.
> libFuzzerХочу такую же, но для gcc !!!
Его вроде можно и к GCC >= 9.0 прикрутить (но я не пробовал). См. man gcc /-fsanitize-coverage=
Тебе не пофиг, чем *тестовую* сборку делать?
Не пофиг
Эээ, american fuzzy loop не подойдёт?
>version = subprocess.check_output([current_path + "/setup_utils/check_libfuzzer_version.sh", libfuzzer])
вот у вас питон есть, зачем всякое говно через subprocess вызывать?
Как это ни удивительно, некоторые вещи проще и адекватнее делать на шелле. А главное быстрее. Когда это что-то сложнее запустить 1-2 программы и сравнить полтора значения, тут уже возможны варианты.
В вызываемом там скрипте не делается ничего такого, что на питоне не ложится в сравнимое или меньшее количество строчек. Просто поиск текста в выводе objdump.
Зачем из питона вызывать шел с питоном (ну или без шела)? Нужен более многострочный и менее читаемый вариант? Нормальный, не вызывающий отвращения вариант аналогичного кода, будет значительно больше. И он будет менее удобен для сопровождения.
вы ничего не понимаете.... питон - это для другого....
А чего сюда-то писать, можно же прямо к ним с этим придти и с коммитом если считаешь что неправильно.
1. Зачем мне выполнять за Гугл его работу?
2. ... с перспективой получить ответ "и без твоего PR прекрасно жили"?
А мне интересно как можно проверить на Питоне или другом языке следующее:
# libfuzzer = /path/to/libFuzzer*.a
if objdump -t "$libfuzzer" | grep "LLVMFuzzerRunDriver" > /dev/null; then
echo "up-to-date"
else
if objdump -t "$libfuzzer" | grep "__sanitizer_cov_8bit_counters_init" > /dev/null; then
echo "outdated-recoverable"
else
echo "outdated-unrecoverable"
fi
fi
Можно попробовать сделать dlopen, и получить адрес символа -- если адреса не нашлось, значит символа нету. Правда это в C, в пайтоне, наверное, всё немного иначе.
from pathlib import Pathlibfuzzer = next(Path("/path/to").glob("libFuzzer*.a"))
import sh
odt = sh.Command("objdump").bake(t=True)
ls = odt(libfuzzer).splitlines()
def chk(sym, msg):
for l in ls:
if l.find(sym) > -1:
print(msg)
sys.exit(0)
chk("LLVMFuzzerRunDriver", "up-to-date")
chk("__sanitizer_cov_8bit_counters_init", "outdated-recoverable")print("outdated-unrecoverable")
так это тоже самое + sh это pip пакет, который нужно доставлять
sh не обязательно ставить, можно обойтись subprocess, просто как через subprocess делается я навскидку не скажу.
Насчёт "то же самое" - зато извращаться не приходится с грепами. С чуть более сложным скриптом извращаться пришлось бы с седами авками и ксаргами и expr. Плюс можно избавиться от лишних процессов. При желании можно заюзать elfutils, и получать инфу вообще без парсинга вывода консольки в структурированном виде. Или наоборот можно заморочиться и сделать правильный парсер вывода без false-positiveов.
> При желании можно заюзать elfutils, и получать инфу вообще без парсинга вывода консольки в структурированном виде. Или наоборот можно заморочиться и сделать правильный парсер вывода без false-positiveов.Я посмотрел - не так это легко.
Я бы даже согласился бы, что не нужно это делать вообше ;)
Избавляются от хлама. Пора закопать пистон
я согласен с тем , что можно некоторые скрипты писать на баше или перле, но считаю питон удобным скриптовым языком. если ты относишься к нему как скриптовому языку, а не основному. писать проги надо на компилируемых языках, а мелкие обвязки или скрипты вызова можно и на питоне ( имею ввиду в операционке)
Любой скриптовый язык в операционке - дыра в безопасности. Если установлены средства разработки, коим, безусловно, питон является, значит при взломе можно воспользоваться всем этим многообразием. На боевых система должны быть только компилируемые программы. Google для этого разработал Go.
Что теперь, даже sh выкинуть?
Ты на бою разрабатываешь, Михаил?
Какая лютая ахинеечка от людей, которые даже близко к безопасности не стояли)
Жги ещё!
компилируемые программы? ты про баш забыл и про сервак с кучей не компилируемых частей. а еще про дыры, которые открываются при работе двух программ совместно. а еще горе создателей сайтов на этих"не компилируемых" поделках. как итогсамая безопасная вариация запуск скомпиленого в машинный код сайта сразу из ядра. но у нас проблемка, а как мы будем админить все это желательно по сети? и прилетаем в докер и прочие? опять неувязочка, докер не дает безопасности, только мнимую. опять приплыли. как вариант создавать каждый раз новый сайт на ядре при каждом изменении настроек. но это же маразм. извини твои доводы граничат с невозможностью. вот так и живем с дырами и криворукими поделками. и кто знает сколько там дыр прячется в сети. так что отключи комп от розетки это безопаснее всего.))
Скорей закопают тебя
Чем оно лучше hypothesis-а?
тем что оно не hypothesis