Facebook открыл код платформы для поиска багов в Android-приложениях

Facebook открыл код платформы для поиска багов в Android-приложениях

Facebook открыл код платформы для поиска багов в Android-приложениях

Facebook решил открыть исходный код платформы Mariana Trench, с помощью которой разработчики искали уязвимости и баги в Android-версии своих приложений. По словам интернет-гиганта, с помощью Mariana Trench удалось выявить более 50% от общего числа брешей в софте Facebook.

«Mariana Trench разработана для сканирования кодовых баз большого размера. С её помощью можно выявлять потенциальные уязвимости и недочёты приложений до того, как они попадут в релиз», — так описывают платформу сами разработчики.

В сущности, Mariana Trench позволяет девелоперам устанавливать определённые правила для потоков данных, благодаря чему можно выявлять ошибки и потенциальные уязвимости. Такой подход особенно полезен для поиска векторов утечки конфиденциальной информации или возможности внедрить произвольный код.

Потоки данных, нарушающие установленные правила, либо отправляются обратно безопасникам, либо разработчикам. Как отметил сам Facebook, более половины от общего числа выявленных уязвимостей были найдены с помощью Mariana Trench. Речь идёт о дырах в таких приложениях, как Facebook, Instagram, WhatsApp и т. п.

Кстати, эта платформа далеко не первая разработка Facebook, чей исходный код был представлен общественности. До этого интернет-гигант то же самое проделал с Zoncolan и Pysa.

«Есть разница между патчингом и тщательной проверкой, позволяющей убедиться в чистоте кода. Это два разных подхода, каждый из которых требует своих инструментов для реализации», — подчёркивает корпорация.

Доступ к коду Mariana Trench можно получит на GitHub, но Facebook также выпустил Python-пакет в репозитории PyPi.

Зачем Яндекс Go создал отдельный язык для расчёта стоимости поездок

Цена поездки в Яндекс Go — это не расстояние, умноженное на минуты и километры. В расчёт вмешиваются геозоны, спрос, скидки, платные дороги, дополнительные остановки и требования вроде перевозки кота, велосипеда или лыж. Чтобы управлять этим хозяйством без бесконечных деплоев, разработчики вынесли алгоритм ценообразования из кода сервиса в собственный язык.

Как объяснили разработчики в статье на Хабре, прайсинг работает не только при заказе машины.

Он пересчитывает стоимость при смене маршрута или способа оплаты, завершении поездки, обращении в поддержку и проверке данных аналитиками. Цена при этом может быть фиксированной, интервальной или считаться по таксометру.

 

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

 

Сам алгоритм раньше можно было бы держать в C++, но он меняется в среднем дважды в неделю. Выкатка сервиса на 50 подов занимает около 40 минут, а лес динамических конфигов быстро превратил бы код в музей условных операторов.

Поэтому Яндекс разработал собственный DSL. В нём есть условия, функции, неизменяемые значения и fold вместо циклов. Правила собираются в последовательную цепочку: каждое преобразование получает текущую цену и параметры, а возвращает новый результат с метаданными. Грамматику описали через ANTLR 4, а верификатор Z3 проверяет, что программа не выдаст некорректную цену.

 

Теперь изменение алгоритма не требует пересборки сервиса, ошибочную версию можно быстро откатить, а каждый расчёт — воспроизвести по входным данным и промежуточным результатам.

 

В итоге прайсинг превратился в отдельную платформу, которой уже пользуются Такси, Доставка и сервис зарядки электромобилей.

RSS: Новости на портале Anti-Malware.ru