Еще одно интересное нововведение в Java 27.
Сейчас, благодаря развитию ИИ, тренд на безопасность.
И разработчики JVM решили быть в тренде)
JFR - Java Flight Recorder. Профилировщик - инструмент, сохраняющий набор событий, возникающий в Java приложении, с их таймингом в файл.
Входит в состав OpenJDK, доступен всем.
Казалось бы - при чем тут безопасность?
Вопрос в данных, сохраняемых JFR. Там же могут быть пароли и прочие секреты? Могут.
Так вот, начиная с Java 27 JFR сам маскирует все секреты, которые находит.
Ищет он в следующих местах:
1) jdk.InitialEnvironmentVariable — начальные значения переменных окружения;
2) jdk.InitialSystemProperty — начальные системные свойства, включая информацию о командной строке;
3) jdk.JVMInformation — аргументы запуска JVM и приложения.
Ищет вот такие ключи по умолчанию:
- *api*key*
- *auth*
- *credential*
- *password*
- *private*key*
- *secret*
- *token*
и заменяет в них значения.
Почему по умолчанию?
Можно расширить список ключей для маскирования значений в них через параметр -XX:FlightRecorderOptions:redact-key.
Можно также задать шаблон для значений: -XX:FlightRecorderOptions:redact-argument
Используется glob шаблон, не Regexp.
Как по мне начинание хорошее, облегчает использование JFR на ПРОМ. Благо, накладные расходы у него небольшие.
Не 100% гарантия, но если есть проблема с согласованием от ИБ - должен помочь. Сужает поверхность атаки.
#java #jdk #profilers
Сейчас, благодаря развитию ИИ, тренд на безопасность.
И разработчики JVM решили быть в тренде)
JFR - Java Flight Recorder. Профилировщик - инструмент, сохраняющий набор событий, возникающий в Java приложении, с их таймингом в файл.
Входит в состав OpenJDK, доступен всем.
Казалось бы - при чем тут безопасность?
Вопрос в данных, сохраняемых JFR. Там же могут быть пароли и прочие секреты? Могут.
Так вот, начиная с Java 27 JFR сам маскирует все секреты, которые находит.
Ищет он в следующих местах:
1) jdk.InitialEnvironmentVariable — начальные значения переменных окружения;
2) jdk.InitialSystemProperty — начальные системные свойства, включая информацию о командной строке;
3) jdk.JVMInformation — аргументы запуска JVM и приложения.
Ищет вот такие ключи по умолчанию:
- *api*key*
- *auth*
- *credential*
- *password*
- *private*key*
- *secret*
- *token*
и заменяет в них значения.
Почему по умолчанию?
Можно расширить список ключей для маскирования значений в них через параметр -XX:FlightRecorderOptions:redact-key.
Можно также задать шаблон для значений: -XX:FlightRecorderOptions:redact-argument
Используется glob шаблон, не Regexp.
Как по мне начинание хорошее, облегчает использование JFR на ПРОМ. Благо, накладные расходы у него небольшие.
Не 100% гарантия, но если есть проблема с согласованием от ИБ - должен помочь. Сужает поверхность атаки.
#java #jdk #profilers