PVS-Studio: поиск ошибок в С/С++, С# и Java
1.78K subscribers
1.51K photos
71 videos
2 files
1.49K links
Статический анализатор на страже качества, защищённости (SAST) и безопасности кода.

Сайт: https://pvs-studio.ru/ru/
Download Telegram
В конце октября мы провели митап "Карты, деньги, JVM" 🔥

Вместе с гостями обсудили внутренности JVM и компилятора: разобрали, как JVM оптимизирует динамические вызовы, чем MethodHandle лучше рефлексии, и как компилятор обрабатывает код — от фронтенда до практического применения.

И вот, наконец-то, мы делимся с вами записью!

Посмотреть можно тут 🔗

#видео #java
Please open Telegram to view this post
VIEW IN TELEGRAM
10
Media is too big
VIEW IN TELEGRAM
Рассказываем, что такое XSS уязвимость 🧐

P.s можно попробовать анализатор на своем проекте бесплатно: https://pvs-studio.ru/xss_tg

#видео #java
Please open Telegram to view this post
VIEW IN TELEGRAM
631
В этой статье посмотрим на багов-путешественников, найденных с помощью статического анализатора PVS-Studio в LanguageTool — инструменте для проверки орфографии, стилистики и грамматики.

#статья #java
4
Java пополняется новыми модными механизмами, а вместе с ней и её усыпальница — место, куда отправляются устаревшие механизмы, такие как Vector, Finalization, NashornScriptEngine, SecurityManager и Unsafe. Взглянем на эти "реликвии" и посмотрим, что пришло им на замену.

Подробности по ссылке 🔗

#статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
5
Анализ исходного кода — задача непростая. Особенно когда дело касается выявления потенциальных уязвимостей. В новой статье расскажем, как мы учитывали поток данных, проходящий через поля объектов.

Переходите по ссылке 🔗

#статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
5
По старой доброй традиции представляем вам ТОП-10 самых интересных ошибок в Java проектах за 2025 год 🔥

Minecraft моды, каталонский язык и неочевидные взаимодействия с тернарным оператором — с чем только не успел познакомиться наш анализатор. А значит, самое время вам об этом рассказать.

Переходите по ссылке 🔗

#статья #java
641
Статья для любителей геймдева и Minecraft 🔥

Уверен, что многие владельцы Minecraft-проектов сталкивались с игроками, которые хотели взломать сервер и выдать себе права администратора. Я понимаю, что подобное случается не только в играх, и из научного интереса изучаю, как и почему это происходит. В этой статье мы рассмотрим уязвимость в моде Integrated Scripting.

Читать тут 🔗

#статья #java #gamedev
Please open Telegram to view this post
VIEW IN TELEGRAM
143
🎉21 января — День, когда выпустили Java 1.0.

💻День, когда компьютеры стали говорить "Hello, world!" на новом языке. Всё благодаря компании Sun Microsystems, которая в 1996 году выпустила первую официальную версию Java.

PVS-Studio поддерживает анализ Java, и наша команда регулярно пишет статьи о багах, найденных в открытых проектах на этом языке. Подписывайтесь на дайджест статей, чтобы ничего не пропустить!

#праздник #java
Please open Telegram to view this post
VIEW IN TELEGRAM
10
Мы начинаем цикл статей, в котором рассказываем, с чем придётся столкнуться разработчику при переходе между LTS-версиями Java. В этой статье рассмотрим основные изменения, которые ждут программиста, если он решит перейти с Java 8 на Java 11.

Читать тут 🔗

#статья #java
Please open Telegram to view this post
VIEW IN TELEGRAM
4
💻 Java по сей день – один из главных языков для разработки серверных программ. А для серверных программ самое главное – не быть уязвимыми к актуальным на данный момент угрозам.

OWASP Top 10 – это одна из главных классификаций веб уязвимостей. В ней представлены 10 обобщенных категорий, каждая из которых агрегирует набор актуальных атак на веб-приложения. А PVS-Studio – это статический анализатор, и Java является одним из поддерживаемых им языков.

Можем ли мы находить потенциальные уязвимости из перечня OWASP Top 10? Да!

На протяжении большого количества времени мы делали так, чтобы PVS-Studio для языка Java умел находить потенциальные уязвимости в большем количестве категорий OWASP Top 10. На данный момент, диагностики анализатора попадают в 9 из 10 её категорий. Среди таковых, возможные SQL-инъекции, Path-Traversal, XSS-инъекции и многое другое.

Взглянуть одним глазком можно в статье "OWASP Top Ten 2021 через простые примеры на Java. И немного про SAST". Но, всегда лучше попробовать самому. Получить пробную лицензию PVS-Studio для своего Java проекта можно по этой ссылке 🔗

#java #PVS_Studio
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Спешим поделиться интересной ошибкой, которую нашел наш анализатор. В примере ошибка из проекта OpenIDE:

public final class UsageType {
....
public static final UsageType
DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED = new UsageType(
UsageViewBundle.messagePointer(
"usage.type.delegate.to.another.instance.method.parameters.changed"
)
);

private static final Logger LOG = Logger.getInstance(UsageType.class);

public UsageType(@NotNull Supplier<....> nameComputable) {
myNameComputable = nameComputable;
if (ApplicationManager.getApplication().isUnitTestMode()) {
String usageTypeString = myNameComputable.get();
if (usageTypeString.indexOf('{') != -1) {
LOG.error(....);
}
}
}
....
}


Срабатывание анализатора PVS-Studio: V6050 Class initialization cycle is present. Initialization of 'DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED' appears before the initialization of 'LOG'. UsageType.java 46

Анализатор говорит, что мы имеем дело с циклической зависимостью при инициализации статических полей. Снова не самый очевидный момент, связанный с нюансами языка Java.
Для инициализации поля DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED используется конструктор. А в нём мы обращаемся к логгеру LOG.

Всё дело в том, что поля инициализируются в порядке их объявления. Как вы можете видеть, DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED располагается выше LOG, т.е. инициализируется раньше. Как следствие, LOG на момент исполнения конструктора будет равен null, и при обращении к нему мы столкнёмся с NPE.

Исправление, как и в большинстве случаев выше, будет донельзя простым. Нужно просто разместить объявление LOG выше, чем DELEGATE_TO_ANOTHER_INSTANCE_PARAMETERS_CHANGED.

Не совершай такую ошибку в своем проекте! А узнать о других багах из проекта можно по этой ссылке 🔗

#java #programming #ошибка
Please open Telegram to view this post
VIEW IN TELEGRAM
53