Facebook открыл исходный код Mariana Trench (“Марианская впадина”), инструмента, который используется в компании для выявления и предотвращения ошибок безопасности и конфиденциальности в приложениях Android и Java.
Инструмент описан на GitHub как «платформа статического анализа, ориентированная на безопасность Android-приложений». В то время как Mariana Trench ориентирована на Java, Facebook недавно выпустил и другие инструменты, в частности Zoncolan и Pysa, которые используются для аналогичных целей для кода Hack и Python соответственно.
Описывая Mariana Trench, Доминик Габи из Facebook сказал, что мобильные приложения компании, включая Facebook, Instagram и Whatsapp, работают с миллионами строк кода, и для обработки этих объемов кода компании необходимо создавать системы, которые помогают инженерам по безопасности обнаруживать и проверять код на предмет потенциальных проблем, вместо того, чтобы полагаться только на ручную проверку кода:
В первой половине 2021 года более 50% уязвимостей безопасности, которые мы обнаружили в нашем семействе приложений, были обнаружены с помощью автоматизированных инструментов.
Mariana Trench позволяет сканировать большие мобильные кодовые базы и отмечать потенциальные проблемы в пул реквестах, прежде чем они попадут в рабочие приложения. Инструмент был создан в результате тесного сотрудничества между инженерами по безопасности и программистами в Facebook, которые обучают MT смотреть на код и анализировать, как через него проходят данные. Габи сказал, что анализ потоков данных полезен, потому что многие проблемы с безопасностью и конфиденциальностью можно представить как данные, поступающие туда, где они не должны находиться.
В Mariana Trench потоки данных указываются в терминах источника и приемника, где источник — это точка происхождения, такая как, например, вводимая пользователем строка, а приемник — это пункт назначения, который в Android может быть, например, вызовом функции или запись в лог.
Mariana Trench позволяет разработчику указывать правила для иллюстрации определенных потоков данных, поэтому аналитики безопасности могут искать потоки данных, которые являются «преднамеренным перенаправлением» — проблемами, которые позволяют злоумышленникам перехватывать конфиденциальные данные. Одним из примеров могут быть SQL-инъекции, когда текст, введенный в приложении Android, не должен попадать в API, который выполняет SQL-запросы.
Помимо создания системы статического анализа, Facebook также создал инструмент с открытым исходным кодом для просмотра и анализа полученных результатов. Это Static Analysis Post Processor (Постпроцессор статического анализа, SAPP).
SAPP берет исходные данные из Mariana Trench и Pysa и наглядно демонстрирует, как данные могут потенциально перетекать из источника в приемники, чтобы эксперты могли понять оценку инструмента.
И Mariana Trench, и SAPP теперь доступны на GitHub.