Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V5313. OWASP. Do not use old versions of SSL/TLS protocols as it may cause security issues.

04 Фев 2025

Анализатор обнаружил использование в коде устаревших версий протоколов SSL/TLS. Это может сделать приложение уязвимым к таким атакам, как man-in-the-middle, BEAST, и т.п.

Проблемы, связанные с применением устаревших протоколов, могут быть отнесены к двум категориям OWASP Top 10 2021:

Рассмотрим пример:

private void createSocket() {
    SSLContext sslContext;
    try {
        sslContext = SSLContext.getInstance("TLSv1");    // <=
    } catch (NoSuchAlgorithmException e) {
        throw new RuntimeException(e);
    }

    try {
        sslContext.init(null, null, new SecureRandom());
        var socketFactory = sslContext.getSocketFactory();
        var socket = (SSLSocket) socketFactory.createSocket();

        // ....

        socket.close();
    } catch (KeyManagementException | IOException e) {
        throw new RuntimeException(e);
    }
}

В указанном фрагменте используется значение TLSv1, представляющее протокол TLS версии 1.0. Данная версия является устаревшей и не рекомендуется к использованию, так как TLS 1.0 уязвим к ряду атак, в числе которых упоминавшаяся ранее BEAST.

Рекомендуется использовать более новые версии протоколов, например, TLS 1.2:

private void createSocket() {
    SSLContext sslContext;
    try {
        sslContext = SSLContext.getInstance("TLSv1.2");
    } catch (NoSuchAlgorithmException e) {
        throw new RuntimeException(e);
    }

    try {
        sslContext.init(null, null, new SecureRandom());
        var socketFactory = sslContext.getSocketFactory();
        var socket = (SSLSocket) socketFactory.createSocket();

        // ....

        socket.close();
    } catch (KeyManagementException | IOException e) {
        throw new RuntimeException(e);
    }
}

Версии протоколов, являющиеся более старыми, чем TLS 1.2, не рекомендуются к использованию из-за возможных проблем с безопасностью. К таким протоколам относятся SSL версий 2.0 и 3.0, а также TLS версий 1.0 и 1.1.

Как правило, наиболее подходящим значением является TLS, представляющее выбор протокола передачи данных платформе. Если по каким-либо причинам данное значение не подходит, то рекомендуется задавать самую новую версию из доступных.

Дополнительные ссылки

Выявляемые диагностикой ошибки классифицируются согласно ГОСТ Р 71207–2024 как критические и относятся к типу: Ошибки некорректного использования системных процедур и интерфейсов, связанных с обеспечением информационной безопасности (шифрования, разграничения доступа и пр.).

Данная диагностика классифицируется как: