Ну что, пора заканчивать неправильную часть пятницы и переходить к правильной? Всем поскорее осуществить переход и ещё пару дней из него не возвращаться 😌 🫶
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍3🔥3🤣3
Forwarded from Искусство. Код... ИИ?
🧩 Принципы и паттерны безопасной разработки: OCP и fail-closed
(Open/Closed Principle) — классы и функции открыты для расширения, но закрыты для модификации. Говоря проще: проектируем приложение так, чтобы для новых фичей требовались минимальные изменения в уже существующем (протестированном и стабильном, ну... как правило) коде.
С точки зрения безопасности, это снижает риски сломать уже существующие защитные меры и получить на ровном месте регрессии вроде:
• CWE-840 — логическая уязвимость из-за изменения условий
• CWE-489 — ослабление проверки при модификации кода
... и охапки прочих, на правах их прямых последствий.
🐛 Жизненное
В Apache HTTPD (CVE-2021-41773) разработчики изменили ядро обработки путей — и открыли обход директорий
Та же история с Dirty Pipe (CVE-2022-0847) в Linux: неаккуратная «оптимизация» существующего кода pipe нарушила старые гарантии → повышение локальных привилегий.
💡 Пример: PEP-750, t-строки и шаблоны
По мотивам предыдущего поста:
Плохой пример:
Новый формат → новая ветка → новый риск сломать там что-то ранее работавшее (вспоминаем goto fail;).
Хороший пример:
Ядро неизменно — добавляем только новые обработчики, неизвестные спецификации блокируются (fail-closed*): безопаснее, предсказуемее, тестируется в разы проще.
⚠️ OCP — не догма
«Модификация» в OCP не про рефакторинг, баги или уязвимости. Если в существующем коде нашли нашли проблему, то нужно править. Безопасность и здравый смысл приоритетнее. OCP всё же — не тотальный запрет на изменения, а гигиена расширяемости: добавление фичей, без изменения того, что уже защищено и протестировано.
TL;DR:
• Стоит разумно следовать OCP, чтобы не сломать защиту, добавляя фичи.
• Расширять, а не модифицировать, если речь не идёт о рефакторинге, багах или уязвимостях.
• Из-за нарушений OCP «увидели свет» многие, в том числе именитые, CVE.
(Open/Closed Principle) — классы и функции открыты для расширения, но закрыты для модификации. Говоря проще: проектируем приложение так, чтобы для новых фичей требовались минимальные изменения в уже существующем (протестированном и стабильном, ну... как правило) коде.
С точки зрения безопасности, это снижает риски сломать уже существующие защитные меры и получить на ровном месте регрессии вроде:
• CWE-840 — логическая уязвимость из-за изменения условий
• CWE-489 — ослабление проверки при модификации кода
... и охапки прочих, на правах их прямых последствий.
🐛 Жизненное
В Apache HTTPD (CVE-2021-41773) разработчики изменили ядро обработки путей — и открыли обход директорий
../. Если бы новую логику добавили отдельным модулем, а не правили существующую, старая проверка осталась бы нетронутой.Та же история с Dirty Pipe (CVE-2022-0847) в Linux: неаккуратная «оптимизация» существующего кода pipe нарушила старые гарантии → повышение локальных привилегий.
💡 Пример: PEP-750, t-строки и шаблоны
По мотивам предыдущего поста:
t"..." создаёт объект Template, а его части (Interpolation) форматируются по format_spec. Здесь напрашивается типичная ошибка — дописывать в обработчике if/elif для новых форматов (HTML, SQL, shell). Каждый раз приходится лезть в уже написанный код, и, тем самым, нарушать OCP.Плохой пример:
def render(t):
for part in t:
if spec == "html":
out.append(html_escape(v))
elif spec == "sql":
out.append(sql_param(v))
else:
out.append(format(v))
Новый формат → новая ветка → новый риск сломать там что-то ранее работавшее (вспоминаем goto fail;).
Хороший пример:
_handlers = []
def register(h): _handlers.append(h); return h
def render(t):
for it in t:
if isinstance(it, str): yield it
elif h := next((h for h in _handlers if h.supports(it)), None):
yield h.apply(it)
else:
raise ValueError(f"Unsupported spec: {it.format_spec}")
@register
class HtmlHandler:
def supports(self, it): return it.format_spec.startswith("html")
def apply(self, it): return html_escape(str(it.value))
Ядро неизменно — добавляем только новые обработчики, неизвестные спецификации блокируются (fail-closed*): безопаснее, предсказуемее, тестируется в разы проще.
*️⃣ Fail-closed (безопасный отказ) — принцип проектирования, при котором система в случае ошибки или неопределённости выбирает безопасное поведение, даже если это мешает работе.
Примеры:
• парсер не знает формат входных данных → отклоняет запрос;
• фильтр не смог проверить токен → доступ запрещён;
• обработчик t-строк встретил неизвестный `format_spec` → бросает исключение вместо неэкранированного вывода.
Такой подход предотвращает «тихие» обходы проверок и делает поведение системы предсказуемым даже при сбоях.
⚠️ OCP — не догма
«Модификация» в OCP не про рефакторинг, баги или уязвимости. Если в существующем коде нашли нашли проблему, то нужно править. Безопасность и здравый смысл приоритетнее. OCP всё же — не тотальный запрет на изменения, а гигиена расширяемости: добавление фичей, без изменения того, что уже защищено и протестировано.
TL;DR:
• Стоит разумно следовать OCP, чтобы не сломать защиту, добавляя фичи.
• Расширять, а не модифицировать, если речь не идёт о рефакторинге, багах или уязвимостях.
• Из-за нарушений OCP «увидели свет» многие, в том числе именитые, CVE.
❤3👍2
🔍 Наиболее интересные уязвимости
🐛 CVE-2025-62364, обнаруженная в oobabooga (версии до 3.14), приводит к Local File Inclusion (LFI). Проблема заключалась в обработке загрузки файлов, где приложение следовало символическим ссылкам и раскрывало содержимое произвольных файлов. В исправлении была добавлена жёсткая проверка пути и блокировка symlink: введена функция
🐛 CVE-2025-62156, обнаруженная в argoproj Argo Workflows (версии до 3.6.12 и 3.7.0–3.7.2), приводит к Path traversal. Проблема заключалась в отсутствии проверки, что header.Name при распаковке архива остаётся внутри целевой директории, что позволяло создавать или перезаписывать файлы вне
🐛 CVE-2025-62374, обнаруженная в Parse Javascript SDK (версии до 7.0.0), приводит к Prototype Pollution. Проблема заключалась в возможности инъекции вредоносного кода через функции
🐛 CVE-2025-11849, обнаруженная в mammoth (версии до 1.11.0), приводит к Path traversal. Проблема заключалась в отсутствии проверки пути или типа файла при обработке docx-файла с изображением, содержащим внешний
🐛 CVE-2025-62413, обнаруженная в MQTTX (версия 1.12.0), приводит к Cross-site Scripting (XSS). Проблема заключалась в некорректной обработке рендеринга
🐛 CVE-2025-62364, обнаруженная в oobabooga (версии до 3.14), приводит к Local File Inclusion (LFI). Проблема заключалась в обработке загрузки файлов, где приложение следовало символическим ссылкам и раскрывало содержимое произвольных файлов. В исправлении была добавлена жёсткая проверка пути и блокировка symlink: введена функция
open_image_safely() с os.path.islink() и проверкой существования файла, UI-компоненты Gradio переключены с type='pil' на type='filepath', чтобы работать с путями и применять валидацию до открытия изображения.🐛 CVE-2025-62156, обнаруженная в argoproj Argo Workflows (версии до 3.6.12 и 3.7.0–3.7.2), приводит к Path traversal. Проблема заключалась в отсутствии проверки, что header.Name при распаковке архива остаётся внутри целевой директории, что позволяло создавать или перезаписывать файлы вне
/work/tmp, включая системные каталоги. В исправлении добавлена валидация результирующего пути: отклоняются абсолютные и traversal-пути, а извлекаемые записи разрешаются только если их итоговый путь остаётся префиксом директории назначения.🐛 CVE-2025-62374, обнаруженная в Parse Javascript SDK (версии до 7.0.0), приводит к Prototype Pollution. Проблема заключалась в возможности инъекции вредоносного кода через функции
ParseObject.fromJSON и другие, что позволяло удаленно выполнять произвольный код. В исправлении была добавлена валидация и фильтрация опасных ключей при сериализации/десериализации и регистрации классов, ужесточена проверка типов и отказ при обнаружении недопустимых путей.🐛 CVE-2025-11849, обнаруженная в mammoth (версии до 1.11.0), приводит к Path traversal. Проблема заключалась в отсутствии проверки пути или типа файла при обработке docx-файла с изображением, содержащим внешний
r:link, что позволяет читать произвольные файлы. В исправлении была по умолчанию отключена работа с внешними файлами: externalFileAccess переведён в false в стандартных опциях.🐛 CVE-2025-62413, обнаруженная в MQTTX (версия 1.12.0), приводит к Cross-site Scripting (XSS). Проблема заключалась в некорректной обработке рендеринга
MQTT message payload, что позволяло выполнять произвольные скрипты через HTML или JavaScript в контексте UI приложения. В исправлении была добавлена безопасная обработка XML-пейлоадов: введены функции isXML() и escapeXmlForHtml(), а в компоненте TreeNodeInfo.vue при определении формата xml вывод переведён на экранированный текст.GitHub
Safer profile picture uploading · oobabooga/text-generation-webui@282aa19
The definitive Web UI for local AI, with powerful features and easy setup. - Safer profile picture uploading · oobabooga/text-generation-webui@282aa19
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Анализ смарт-контрактов на примере Solidity
Блокчейн-индустрия переживает период беспрецедентного роста. Общая стоимость заблокированных активов (total value locked, TVL) в децентрализованных финансовых протоколах превышала 200 млрд долларов по...
3🔥4❤3
Итоги State of DevOps Russia 2025
На вебинаре представим результаты «Исследования состояния DevOps в России 2025» — анализа индустрии, основанного на опросе более 4000 специалистов. Ежегодно «Экспресс 42» вместе с партнёрами выявляет технологические тренды и оценивает их влияние на эффективность разработки. В эфире примет участие Антон Жаболенко, директор по продуктам application security Positive Technologies, обсудит результаты исследования и поделится опытом построения DecSecOps.
Помимо ИБ в этом году исследовали Developer Experience, ИИ- и DevOps-инструменты, Kubernetes, внутренние платформы для разработки.
Вы узнаете:
• какие инструменты сейчас популярны;
• какие характеристики Developer Experience отличают высокоэффективные команды;
• для каких задач используют ИИ-инструменты;
• как внедряют ИБ в процесс разработки;
• какие цели развития у внутренних платформ для разработки;
• какие изменения произошли на рынке труда за год.
Ждём вас на вебинаре!
Онлайн | 31 октября в 12:00
Зарегистрироваться https://clc.to/web_7sod25
На вебинаре представим результаты «Исследования состояния DevOps в России 2025» — анализа индустрии, основанного на опросе более 4000 специалистов. Ежегодно «Экспресс 42» вместе с партнёрами выявляет технологические тренды и оценивает их влияние на эффективность разработки. В эфире примет участие Антон Жаболенко, директор по продуктам application security Positive Technologies, обсудит результаты исследования и поделится опытом построения DecSecOps.
Помимо ИБ в этом году исследовали Developer Experience, ИИ- и DevOps-инструменты, Kubernetes, внутренние платформы для разработки.
Вы узнаете:
• какие инструменты сейчас популярны;
• какие характеристики Developer Experience отличают высокоэффективные команды;
• для каких задач используют ИИ-инструменты;
• как внедряют ИБ в процесс разработки;
• какие цели развития у внутренних платформ для разработки;
• какие изменения произошли на рынке труда за год.
Ждём вас на вебинаре!
Онлайн | 31 октября в 12:00
Зарегистрироваться https://clc.to/web_7sod25
👍2❤1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Шла третья неделя неправильных пятниц у админа... 🥺 Ну, а всем — не быть, как он, и достойно проводить эту рабочую неделю 🫶
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣15❤6🔥5
До 70 % уязвимостей веб-приложений носят высокий или критический уровень, что приводит к утечкам, сбоям и прямым убыткам. Безопасная разработка помогает находить уязвимости до продакшена, избежать доработок, ускорить релизы и укрепить доверие клиентов.
На практикуме «Безопасность приложений для инженеров» от Positive Education мы поделимся проверенными методологиями и подходами. Эксперты программы – специалисты с многолетним опытом построения DevSecOps.
Команда экспертов поделится:
◦ дорожными картами внедрения безопасной разработки с учетом ролей и их ответственности
◦ методологиями по работе с SAST, DAST, SCA, моделированием угроз, фаззингом и интеграцией в CI/CD
На протяжении всего практикума участников будут сопровождать эксперты Positive Technologies. А все материалы останутся доступными в течение года – можно пересматривать и использовать реальных в проектах.
Подробнее о практикуме читайте на нашем сайте.
На практикуме «Безопасность приложений для инженеров» от Positive Education мы поделимся проверенными методологиями и подходами. Эксперты программы – специалисты с многолетним опытом построения DevSecOps.
Команда экспертов поделится:
◦ дорожными картами внедрения безопасной разработки с учетом ролей и их ответственности
◦ методологиями по работе с SAST, DAST, SCA, моделированием угроз, фаззингом и интеграцией в CI/CD
На протяжении всего практикума участников будут сопровождать эксперты Positive Technologies. А все материалы останутся доступными в течение года – можно пересматривать и использовать реальных в проектах.
Подробнее о практикуме читайте на нашем сайте.
❤2
🔍 Наиболее интересные уязвимости
🐛 CVE-2025-62422, обнаруженная в dataease (версии до 2.10.14), приводит к SQL Injection. Проблема заключалась в том, что параметр
🐛 CVE-2025-62597, обнаруженная в WeGIA (версии до 3.5.1), приводит к Cross-Site Scripting (XSS). Уязвимость обусловлена тем, что эндпоинт
🐛 CVE-2025-62725, выявленная в Docker Compose в версиях до 2.40.2, приводит к Path Traversal. Проблема заключалась в том, что при работе с удалёнными OCI-артефактами Compose доверял аннотациям
🐛 CVE-2025-8709, обнаруженная в LangGraph (пакет langgraph-checkpoint-sqlite 2.0.10), приводит к SQL Injection. Уязвимость возникает из-за некорректной обработки ключей фильтрации, при которой используется прямая конкатенация строк без корректной параметризации, что позволяло произвольный SQL код. В исправлении добавлена проверка ключей фильтра регулярным выражением
🐛 CVE-2025-57325, обнаруженная в rollbar.js в версиях до 2.26.5 (≤ 2.26.4), приводит к Prototype Pollution. Проблема заключалась в том, что вспомогательная функция
🐛 CVE-2025-62422, обнаруженная в dataease (версии до 2.10.14), приводит к SQL Injection. Проблема заключалась в том, что параметр
tableName интерфейса /de2api/datasetData/tableField напрямую подставлялся в SQL-строку без валидации, что позволяло выполнять произвольные SQL-команды. В исправлении была добавлена белый список имен таблиц: перед выполнением запроса значение tableName сверяется с результатом getTables()🐛 CVE-2025-62597, обнаруженная в WeGIA (версии до 3.5.1), приводит к Cross-Site Scripting (XSS). Уязвимость обусловлена тем, что эндпоинт
/WeGIA/html/pessoa/editar_info_pessoal.php отражал содержимое параметра sql в ответе без экранирования, что позволяло выполнить произвольный JS-код в браузере пользователя. В исправлении был удалён вывод параметров запроса в ответ, добавлена централизованная обработка ошибок через Util::tratarException.🐛 CVE-2025-62725, выявленная в Docker Compose в версиях до 2.40.2, приводит к Path Traversal. Проблема заключалась в том, что при работе с удалёнными OCI-артефактами Compose доверял аннотациям
com.docker.compose.extends и com.docker.compose.envfile: значение из com.docker.compose.file/com.docker.compose.envfile конкатенировалось с локальным кэшем и файл записывался по сформированному пути, что позволяло выйти за пределы каталога кэша и перезаписывать произвольные файлы. В исправлении добавлены санитизация и валидация путей с помощью функции validatePathInBase() 🐛 CVE-2025-8709, обнаруженная в LangGraph (пакет langgraph-checkpoint-sqlite 2.0.10), приводит к SQL Injection. Уязвимость возникает из-за некорректной обработки ключей фильтрации, при которой используется прямая конкатенация строк без корректной параметризации, что позволяло произвольный SQL код. В исправлении добавлена проверка ключей фильтра регулярным выражением
^[a-zA-Z0-9_.-]+$ в методе _validate_filter_key()🐛 CVE-2025-57325, обнаруженная в rollbar.js в версиях до 2.26.5 (≤ 2.26.4), приводит к Prototype Pollution. Проблема заключалась в том, что вспомогательная функция
utility.set() позволяла записывать свойства в Object.prototype, что могло приводить как минимум к DoS и непредсказуемому поведению приложений. В исправлении в merge.js результирующий объект создаётся как Object.create(null), а в utility.set() перед разбором пути прототип целевого объекта обнуляется через Object.setPrototypeOf(obj, null)👍5