2020 Liberica JDK– Docker containers at hub.docker.com • Full JDK with Debian or CentOS •...

20
1 WWW.BELL-SW.COM 1 WWW.BELL-SW.COM WWW.BELL-SW.COM 2020 Особенности фаззинга JIT в Liberica JDK

Transcript of 2020 Liberica JDK– Docker containers at hub.docker.com • Full JDK with Debian or CentOS •...

Page 1: 2020 Liberica JDK– 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

1

WWW.BELL-SW.COM

1

WWW.BELL-SW.COM

WWW.BELL-SW.COM

2020 Особенности фаззинга JIT в

Liberica JDK

Page 2: 2020 Liberica JDK– 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

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

Page 3: 2020 Liberica JDK– 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

3

WWW.BELL-SW.COM

3

WWW.BELL-SW.COM

We contribute to

ARM

x86

SPARC

Проекты с открытым кодом Win

Page 4: 2020 Liberica JDK– 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

4

WWW.BELL-SW.COM

4

WWW.BELL-SW.COM

Page 5: 2020 Liberica JDK– 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

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)

Page 6: 2020 Liberica JDK– 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

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

– РЕД ОС

– РОСА

Формы поставки

Page 7: 2020 Liberica JDK– 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

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, что позволяет своевременно реагировать и выпускать обновления и патчи безопасности

Page 8: 2020 Liberica JDK– 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

8

WWW.BELL-SW.COM

8

WWW.BELL-SW.COM

Java – это качественный продукт !

Да, но нужно помнить о 20 000 открытых багов в OpenJDK

Page 9: 2020 Liberica JDK– 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

9

WWW.BELL-SW.COM

9

WWW.BELL-SW.COM

Динамическая компиляция в HotSpot JVM

Первый запуск

Интерпретатор

С1 первичный профайл

С1 полный профайл

С1 С2

Деоптимизация

Page 10: 2020 Liberica JDK– 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

10

WWW.BELL-SW.COM

10

WWW.BELL-SW.COM

• Тесты на соответствие стандарту Java SE (TCK)

• Статические тесты (jtreg)

• Реальные приложения и их тесты (HiBench, Elastic, итд)

• Статический анализ (SVACE)

• Тестирование производительности

• Фаззинг

Тестирование JIT в Liberica JDK

Page 11: 2020 Liberica JDK– 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

11

WWW.BELL-SW.COM

11

WWW.BELL-SW.COM

• Шифрование

• Веб-приложения

• Базы данных

Классический фаззинг

Page 12: 2020 Liberica JDK– 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

12

WWW.BELL-SW.COM

12

WWW.BELL-SW.COM

• Профиль постоянно меняется

• Порядок компиляции также меняется

• Перекомпиляция методов происходит множество раз

Особенности JIT компиляции

Page 13: 2020 Liberica JDK– 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

13

WWW.BELL-SW.COM

13

WWW.BELL-SW.COM

Фаззер JIT

Генерация кода

Интерпретатор JIT компилятор

Сравнение состояний

Тест прошел

Тест упал

True

False

Page 14: 2020 Liberica JDK– 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

14

WWW.BELL-SW.COM

14

WWW.BELL-SW.COM

• Логика генерации кода может быть описана модифицированной Формой Бэкуса-Наура

• Реализация этой генерации для каждого теста представляет собой Марковскую цепь.

Автоматический генератор тестов

Page 15: 2020 Liberica JDK– 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

15

WWW.BELL-SW.COM

15

WWW.BELL-SW.COM

Шаг 1: Генерация IR

Page 16: 2020 Liberica JDK– 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

16

WWW.BELL-SW.COM

16

WWW.BELL-SW.COM

Шаг 2: генерация кода на базе IR

Page 17: 2020 Liberica JDK– 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

17

WWW.BELL-SW.COM

17

WWW.BELL-SW.COM

• Генерация унарных, бинарных и тернарных выражений

• Up-cast и Down-cast

• Массивы

• Управление исполнением

• Функциональные вызовы

• Синтез иерархии классов

• Расширяемость

• Ограничение времени исполнения

Имплементация

Page 18: 2020 Liberica JDK– 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

18

WWW.BELL-SW.COM

18

WWW.BELL-SW.COM

• Написан на Java

• Генерация тестов в формате jtreg

• Каждый тестовый цикл генерируются 10К тестов

• Результаты

– В первые 6 месяцев использования было обнаружено более 20 дефектов

– Сейчас в среднем 1 баг в 6 месяцев

Использование JIT фаззера

Page 19: 2020 Liberica JDK– 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

19

WWW.BELL-SW.COM

19

WWW.BELL-SW.COM

• Потенциально эффективным будет расширить JIT фаззер генератором валидного байт-кода. Это позволит получать конструкции недостижимые для компилятора javac

Следующие шаги

Page 20: 2020 Liberica JDK– 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

20

WWW.BELL-SW.COM

20

WWW.BELL-SW.COM

@gigabel @bellsoftware [email protected]