2020 Liberica JDK– Docker containers at hub.docker.com • Full JDK with Debian or CentOS •...
Transcript of 2020 Liberica JDK– Docker containers at hub.docker.com • Full JDK with Debian or CentOS •...
1
WWW.BELL-SW.COM
1
WWW.BELL-SW.COM
WWW.BELL-SW.COM
2020 Особенности фаззинга JIT в
Liberica JDK
2
WWW.BELL-SW.COM
2
WWW.BELL-SW.COM
20 лет истории инжиниринга и профессионализма
BellSoft - благородные корни
1997
MCST – Moscow Center of SPARC Technologies
The company worked as a contractor for Sun Microsystems
2004
Sun Microsystems founded its own Development Center in
Saint-Petersburg.
2010
Oracle Corp. acquired Sun Microsystems
2017
3
WWW.BELL-SW.COM
3
WWW.BELL-SW.COM
We contribute to
ARM
x86
SPARC
Проекты с открытым кодом Win
4
WWW.BELL-SW.COM
4
WWW.BELL-SW.COM
5
WWW.BELL-SW.COM
5
WWW.BELL-SW.COM
Альтернативная Java от BellSoft - Liberica JDK
• Liberica Java 8, Java 11 поддерживаемые платформы:
– Linux x86 32 и 64 bit
– Windows 32 и 64 bit
– MacOS 64 bit
– Linux ARM 32 и 64
– SPARC & x86 Solaris 10, 11
– ELBRUS, Baikal
• Обновления безопасности Liberica JDK выходят параллельно
с Java обновлениями
• Liberica верифицирована TCK-тестами (BellSoft имеет лицензию TCK
http://openjdk.java.net/groups/conformance/JckAccess/jck-access.html)
6
WWW.BELL-SW.COM
6
WWW.BELL-SW.COM
• Пакеты и инсталляторы
– Windows binaries (with installer)
– MacOS binaries (with installer)
– Linux Repos: APT, YUM
– Docker containers at hub.docker.com
• Full JDK with Debian or CentOS
• Liberica JDK Lite with Alpine Linux – only 96 MB
– smallest Java 11 Docker container in the world
• Российские OS – Astra Linux
– ALT Linux
– РЕД ОС
– РОСА
Формы поставки
7
WWW.BELL-SW.COM
7
WWW.BELL-SW.COM
Своевременные обновления безопасности Коллективный подход
https://openjdk.java.net/groups/vulnerability/
OpenJDK
Vulnerability
group
Java vulnerabilities
Oracle
Red Hat
Google SAP
BellSoft
Amazon
Интеграция патчей
безопасности
Liberica JDK 14.0.X
Liberica JDK 8uXXX
Liberica JDK 11.0.X
Liberica JDK 8u262 выпущен в течение 2 часов с момента выхода Java SE
BellSoft является участником закрытой группы по безопасности OpenJDK, что позволяет своевременно реагировать и выпускать обновления и патчи безопасности
8
WWW.BELL-SW.COM
8
WWW.BELL-SW.COM
Java – это качественный продукт !
Да, но нужно помнить о 20 000 открытых багов в OpenJDK
9
WWW.BELL-SW.COM
9
WWW.BELL-SW.COM
Динамическая компиляция в HotSpot JVM
Первый запуск
Интерпретатор
С1 первичный профайл
С1 полный профайл
С1 С2
Деоптимизация
10
WWW.BELL-SW.COM
10
WWW.BELL-SW.COM
• Тесты на соответствие стандарту Java SE (TCK)
• Статические тесты (jtreg)
• Реальные приложения и их тесты (HiBench, Elastic, итд)
• Статический анализ (SVACE)
• Тестирование производительности
• Фаззинг
Тестирование JIT в Liberica JDK
11
WWW.BELL-SW.COM
11
WWW.BELL-SW.COM
• Шифрование
• Веб-приложения
• Базы данных
Классический фаззинг
12
WWW.BELL-SW.COM
12
WWW.BELL-SW.COM
• Профиль постоянно меняется
• Порядок компиляции также меняется
• Перекомпиляция методов происходит множество раз
Особенности JIT компиляции
13
WWW.BELL-SW.COM
13
WWW.BELL-SW.COM
Фаззер JIT
Генерация кода
Интерпретатор JIT компилятор
Сравнение состояний
Тест прошел
Тест упал
True
False
14
WWW.BELL-SW.COM
14
WWW.BELL-SW.COM
• Логика генерации кода может быть описана модифицированной Формой Бэкуса-Наура
• Реализация этой генерации для каждого теста представляет собой Марковскую цепь.
Автоматический генератор тестов
15
WWW.BELL-SW.COM
15
WWW.BELL-SW.COM
Шаг 1: Генерация IR
16
WWW.BELL-SW.COM
16
WWW.BELL-SW.COM
Шаг 2: генерация кода на базе IR
17
WWW.BELL-SW.COM
17
WWW.BELL-SW.COM
• Генерация унарных, бинарных и тернарных выражений
• Up-cast и Down-cast
• Массивы
• Управление исполнением
• Функциональные вызовы
• Синтез иерархии классов
• Расширяемость
• Ограничение времени исполнения
Имплементация
18
WWW.BELL-SW.COM
18
WWW.BELL-SW.COM
• Написан на Java
• Генерация тестов в формате jtreg
• Каждый тестовый цикл генерируются 10К тестов
• Результаты
– В первые 6 месяцев использования было обнаружено более 20 дефектов
– Сейчас в среднем 1 баг в 6 месяцев
Использование JIT фаззера
19
WWW.BELL-SW.COM
19
WWW.BELL-SW.COM
• Потенциально эффективным будет расширить JIT фаззер генератором валидного байт-кода. Это позволит получать конструкции недостижимые для компилятора javac
Следующие шаги