PVS-Studio: поиск ошибок в коде
1.84K subscribers
1.67K photos
91 videos
2 files
1.65K links
Статический анализатор на страже качества, защищённости (SAST) и безопасности кода.

Наш стек: C, C++, C#, Java, JS, TS, Go

Сайт: https://pvs-studio.ru/

E-Mail: support@viva64.com
Телефон: +7(903)844-02-22

Для бизнеса: https://xn--r1a.website/pvsstudio_business
Download Telegram
Мы начинаем цикл статей, в котором рассказываем, с чем придётся столкнуться разработчику при переходе между 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
OWASP Top 10 2025 — от кода к цепочке поставок: расширение границ безопасности

В статье мы рассмотрели новые категории уязвимостей из обновлённого списка OWASP Top 10 2025 и показали, как некоторые из этих угроз можно выявить с помощью статического анализатора PVS-Studio.

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

OWASP Top 10 — это список десяти наиболее опасных угроз безопасности веб-приложений. Он служит ориентиром для разработчиков, архитекторов и специалистов по информационной безопасности, помогая сосредоточиться на самых критических рисках при создании веб-приложений.


#article #java #csharp #owasp
Интересные срабатывания анализатора в коде open source проекта OpenAPI Generator

Потерянный инкремент, пустое регулярное выражение, странная санитизация строк — всё это и не только мы разбираем в новой статье.

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

#java #opensource #статья
3
Применяем кодогенерацию в Java для решения алгоритмических задач

Часто задачи с деревьями на LeetCode решают "магическим" кодом. Но в энтерпрайзе важны читаемость и поддерживаемость на годы. И что делать, когда ещё и объём задачи такой, что на работу руками ушли бы недели? Разберём, как с этим помогает кодогенерация в новой статье.

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

#java #статья
2