Анализатор обнаружил в коде данные, которые могут являться конфиденциальными.
В качестве таких данных могут выступать, например, пароли. Их хранение в исходном коде может привести к нарушению контроля доступа к данным и возможностям, не предназначенным для публичного использования. Имея байт-код, любой пользователь сможет извлечь все строковые литералы, которые в нем используются. В случае open-source проектов всё ещё проще, так как злоумышленник может изучать непосредственно исходный код.
Таким образом, все секретные данные могут оказаться публично доступными. Уязвимости, связанные с недостаточной защищённостью конфиденциальных данных, выделены в отдельную категорию рисков в OWASP Top 10 Application Security Risks 2017: A2:2017-Broken Authentication.
Рассмотрим пример:
public static void main(String[] arg) { .... JSch jsch = new JSch(); Session session = jsch.getSession(user, host, 22); session.setPassword("123fj"); .... }
В указанном примере пароль хранится в коде. Следовательно, злоумышленник может легко получить эти данные.
Вместо хранения секретных данных в коде лучше использовать, например, хранилища, в которых данные будут храниться в зашифрованном виде, и к которым у обычных пользователей не будет прямого доступа.
В таком случае код может выглядеть, например, так:
public static void main(String[] arg) { .... JSch jsch = new JSch(); Session session = jsch.getSession(user, host, 22); session.setPassword(dataStorage.getPassword); .... }
Данная диагностика классифицируется как: