
Анализируем heap-дампы с прода, не привлекая внимания безопасников
Toparvion 20 минут назад Анализируем heap-дампы с прода, не привлекая внимания безопасников Средний 13 мин 972 Блог компании Spring АйО Java * Информационная безопасность * Программирование * Текстовые редакторы и IDE *...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. Toparvion 20 минут назад Анализируем heap-дампы с прода, не привлекая внимания безопасников Средний 13 мин 972 Блог компании Spring АйО Java * Информационная безопасность * Программирование * Текстовые редакторы и IDE * Обзор Heap-дампы JVM – бесценный источник информации при разборе аварий с OutOfMemory и оптимизации производительности. Но вместе с тем они же – потенциальные каналы утечки данных, ведь будучи снятыми с боевого сервиса, дампы уносят в себе всё, с чем работал сервис на момент снимка: логины, пароли (иногда в открытом виде), важные ID и т. – словом, всяческие sensitive данные, которые не нужны для анализа, но которые навлекают на получателя дампа серьёзную ответственность и риски.
Как этого избежать без ущерба делу – разбираемся под катом. Для начала возьмём лабораторный, но реалистичный пример – Spring PetClinic REST – бэкендовую версию популярного демо-приложения. Эта версия из коробки включает Spring Security, который, в свою очередь, при каждом запуске генерирует пароль для ограничения доступа к методам API.
Технические детали
И хотя пароль там “игрушечный” (логируется в открытом виде на старте приложения), механизм его попадания в память и дальнейшего распространения вполне соответствует реальным кейсам у других конфиденциальных данных, поэтому для примера он нам подходит. Прежде чем искать варианты решения проблемы, надо её увидеть. Благо, на выбранном примере для этого достаточно только:Склонировать репозиторийgit clone его в OpenIDE или другой среде разработкиОткрыть там же терминал (или отдельно) и выполнить в нём:.
/mvnw spring-boot:run. Эта команда запустит PetClinic с дефолтными настройками (со встроенной БД). Дальше снимаем дамп памяти и открываем его для анализа, например, с помощью Eclipse Memory Analyzer Tool (File -> Acquire Heap Dump…):Фрагмент первого окна Eclipse MAT после открытия дампаСреди этого полумиллиона объектов конфиденциальными данными может оказаться что угодно, поэтому ни в Eclipse MAT, ни в других популярных opensource-инструментах нет волшебной кнопки “Покажи мне все возможные утечки”.
Зато в них (в частности, в MAT и VisualVM) есть возможность выполнять SQL-подобные запросы к дампу, выуживая таким образом наиболее подозрительные объекты для проверки. Основная идея этого подхода в том, что каждый класс представляется как таблица, каждое поле класса – как столбец таблицы, а каждый экземпляр – как её строка. Подробнее об этом можно узнать, например, из моего доклада на Joker 2024.
В данном случае из описания и исходников проекта мы знаем, что Spring Security используется в самом простом режиме, когда все данные для доступа хранятся прямо в памяти, а сами явки-пароли представлены классом org. User:public static class User { /** * Default user name. */ private String name = "user"; /** * Password for the default user name.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





