Positive Development Community
3.14K subscribers
1.56K photos
268 videos
4 files
490 links
Download Telegram
Несправедливо конечно, что мемы публикуются тогда, когда неправильная часть пятницы заканчивается у админа, а не у всех остальных. С другой стороны, жизнь вообще несправедлива, а посмотреть мемы никогда не поздно 🙂

Всем чудесного завершения пятницы и классных выходных 🤗
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8💔43😁1
🔍 Наиболее интересные уязвимости

🐛 CVE-2026-28291, обнаруженная в simple-git (версии до 3.31.1 включительно), приводит к OS Command Injection. Проблема заключалась в обходе блокировки опасных опций через манипуляцию параметрами, что позволяло выполнять произвольные команды. В исправлении разработчики отказались от проверки только точного шаблона -u и добавили более общую проверку clone-опций через CLONE_OPTIONS и isCloneSwitch(), чтобы блокировать разные варианты передачи опасного параметра.

🐛 CVE-2026-30232, обнаруженная в Chartbrew (до версии 4.8.5), приводит к Server-side Request Forgery (SSRF). Уязвимость обусловлена тем, что аутентифицированный пользователь мог создать API connection с URL без проверки, что позволяло выполнять запросы к произвольным ресурсам. В исправлении был добавлен введён флаг allowPrivateHost, чтобы обращения к внутренним адресам больше не проходили по умолчанию и разрешались только явно.

🐛 CVE-2026-40351, обнаруженная в FastGPT (версии до 4.14.9.5), приводит к NoSQL injection. Проблема заключалась в использовании TypeScript type assertion без проверки на этапе выполнения, что позволяло передать оператор запроса MongoDB в поле пароля и обойти проверку. В исправлении была добавлена runtime-валидация тела запроса через zod, и поля username и password теперь принимаются только как строки.

🐛 CVE-2026-40491, обнаруженная в gdown (версии до 5.2.2), приводит к Path Traversal. Проблема заключалась в отсутствии проверки имен файлов в архивах ZIP или TAR, что позволяло записывать файлы за пределами целевой директории. В исправлении была добавлена санитизация с помощью _sanitize_filename(), проверка путей через realpath() и _is_within_directory().

🐛 CVE-2026-41242, обнаруженная в protobuf.js до версий 8.0.1 и 7.5.5, приводит к Remote Code Execution (RCE). Проблема заключалась в том, что злоумышленник мог внедрить произвольный код в поле type protobuf-определения, после чего этот код выполнялся во время декодирования объекта с использованием такого определения. В исправлении разработчики добавили фильтрацию имени типа через name.replace(/\W/g, ""), чтобы удалять все неалфавитно-цифровые символы перед дальнейшей обработкой.
👍3
🧩 Принципы и паттерны безопасной разработки: LSP

Часть 2.

Продолжаем разбор SOLID... на очереди — принцип подстановки Барбары Лисков (Liskov Substitution Principle, LSP). Формально он гласит: объекты подклассов должны быть способны заменить объекты базовых классов без нарушения корректности программы. Проще говоря, наследник не должен «ломать» контракт, установленный родителем — ни в предусловиях (не требовать большего), ни в постусловиях (не гарантировать меньшего), ни в инвариантах (не нарушать постоянных условий).

Что неочевидно для многих, благодаря дядюшке Мартину, так это то, что LSP является поведенческим принципом, а не структурным. Иными словами, чтобы нарушить его, наследование (да и ООП в целом) — вообще не нужно. Если у нас есть одна сущность, переопределяющая поведение другой, и при этом к ней можно обратиться, как к исходной — этого достаточно. Даже, если сущности — результат функциональной композиции, без каких-либо объектов в терминах ООП в целом. Пример того, как LSP выглядит в языках, не имеющих наследования, можно посмотреть тут.

С точки зрения безопасности, нарушение LSP — это прямая дорога к обходу защитных механизмов. Когда подкласс изменяет семантику безопасности базового класса (например, отключает проверку прав доступа или меняет логику валидации), код, написанный с расчётом на родительский контракт, начинает работать непредсказуемо. Это порождает логические уязвимости, которые сложно отловить статическим анализом, поскольку формально типы совместимы, а вот их поведение — нет.

Как правило, нарушения LSP могут повлечь за собой примерно любые уязвимости, так или иначе связанные с логикой работы приложения. «В природе», однако, чаще всего они относятся ко следующим категориям:

CWE-264: Permissions, Privileges, and Access Controls
CWE-284: Improper Access Control
CWE-290: Authentication Bypass by Spoofing
CWE-703: Improper Check or Handling of Exceptional Conditions

🐛 Жизненное

CVE-2025-22223 — Spring Security (Authentication Bypass by Spoofing).

Когда аннотация безопасности (@PreAuthorize) размещена на методе обобщённого суперкласса или интерфейса, и конкретный подкласс переопределяет этот метод, механизм UniqueSecurityAnnotationScanner не находит аннотацию на переопределённом методе. Причина -- использование targetClass.getDeclaredMethod(method.getName(), method.getParameterTypes()) для поиска, что не работает после стирания типов (type erasure): сигнатура родительского метода Object mutate(Object) не совпадает с сигнатурой конкретной реализации AccountSecret mutate(AccountSecret).

public abstract class BaseService<T> {
@PreAuthorize("hasRole('ADMIN')")
public abstract T getResource(Long id);
}

// Подкласс -- Spring Security не видит аннотацию
public class UserService extends BaseService<User> {
@Override
public User getResource(Long id) {
return userRepo.findById(id);
}
}

Нарушение LSP здесь в том, что родительский тип объявляет контракт «этот метод требует роли ADMIN». Подкласс переопределяет метод, и контракт безопасности молча пропадает. При подстановке подкласса вместо родителя предусловие (авторизация) ослабляется.

Патч (коммит dc2e1af). Наивный поиск getDeclaredMethod заменен на итерацию по всем методам класса с разрешением обобщённых типов.

❗️Что делать?

• Помечайте security-critical классы как final|sealed или явно контролируйте наследование.

• Аннотации безопасности дублируйте на каждом переопределяющем методе.

• Фильтруйте и определяйте сущности по их типу, а не по имени.

• Соблюдайте явным образом все поведенческие контракты переопределяемых методов.

• Обеспечивайте инварианты объекта даже при аварийном завершении конструктора или инициализации.

TL;DR: В целом, общий принцип один: если ваш код принимает сущность по ссылке на базовую реализацию, он неявно доверяет поведенческому контракту этой сущности. Убедитесь, что это обосновано — особенно на границах доверия между компонентами системы.
Please open Telegram to view this post
VIEW IN TELEGRAM
Есть особый челлендж в том, чтобы поймать тот скоротечный момент, когда неправильная часть пятницы уже закончилась, а правильная ещё не началась.

...и успеть в нём запостить мемы.

Всем приятного вечера и хорошенько отдохнуть на выходных! 🥳
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁13👍83
🔍 Наиболее интересные уязвимости

🐛 CVE-2026-33626, обнаруженная в LMDeploy (версии до 0.12.3), приводит к Server-side Request Forgery (SSRF). Проблема заключалась в том, что функция load_image() позволяла загружать изображения по URL без проверки значений адресов, что позволяло доступ к произвольным хостам. В исправлении была добавлена функция _is_safe_url(), которая разрешает только схемы http/https, извлекает hostname, резолвит все IP-адреса через socket.getaddrinfo() и блокирует любые не global адреса с помощью is_global

🐛 CVE-2026-40565, обнаруженная в FreeScout (версии до 1.8.213), приводит к Cross-site Scripting (XSS). Проблема заключалась в том, что функция linkify() в app/Misc/Helper.php не экранировала кавычки в URL, позволяя внедрять произвольные HTML-атрибуты. В исправлении значения для href и отображаемого текста ссылки стали обрабатываться через htmlspecialchars(..., ENT_QUOTES, 'UTF-8') перед генерацией тега <a>.

🐛 CVE-2026-41229, обнаруженная в Froxlor (версии до 2.3.6), приводит к Remote Code Execution (RCE). Проблема заключалась в отсутствии экранирования одиночных кавычек в строковых литералах PHP, что позволяло внедрять произвольный PHP-код через параметр privileged_user. В исправлении разработчики добавили экранирование обратных слешей и одинарных кавычек в parseArrayToString(), а также ввели отдельную валидацию privileged_user по регулярному выражению и нормализацию mysql_ca.

🐛 CVE-2026-41304, обнаруженная в WWBN AVideo (версии 29.0 и ниже), приводит к OS Command Injection. Проблема заключалась в конкатенации пользовательского ввода в команду wget через exec(), что позволяло внедрять shell-команды с помощью метасимволов. В исправлении аргументы команды стали экранироваться через escapeshellarg()

🐛 CVE-2026-29050, обнаруженная в melange (версии с 0.32.0 до 0.43.4), приводит к Path Traversal. Проблема заключалась в возможности передаче значения pipeline[].uses с последовательностями обхода пути в filepath.Join() без проверки, что позволяло обращаться к произвольным файлам в системе. В исправлении разработчики запретили абсолютные пути и наличие символов обхода пути в uses, а также добавили дополнительную проверку через filepath.Rel() после filepath.Clean()
👍42