Pull to refresh
14
4.5
shanker @shanker

Инженер по безопасности (AppSec)

Send message

OpenRedirect в IBM Instana (NotCVE-2025-0002)

Instana - платформа для мониторинга приложений и инфраструктуры. Эту особенность я нашёл пару месяцев назад совершенно случайно. Забавно, что год назад на собеседовании я не смог ответить на вопрос: что такое OpenRedirect (описан в CWE-601) - растерялся. А сейчас вот сам нашёл. Проблема довольно тривиальна: с помощью специально сформированной ссылки можно заставить браузер жертвы выполнить произвольный GET-запрос. Жертва должна быть авторизована в Instana. Пример ссылки:

https://instana.com/auth/signIn?returlUrl=https%3A%2F%2Fsite.com%2Fchangepassword%3Fuser%3Dadmin%26newpassword%3Dtest

На рисунке ниже виден результат перехода по подобной ссылке: сервер отвечает кодом 302 и через location перенаправляет пользователя на нужный ресурс.

Изначально я пытался зарегистрировать CVE. Продукт Instana принадлежит IBM. А IBM является CNA партнёром MITRE (подробнее про CNA). Т.е. для регистрации CVE нужно обращаться не к MITRE, а к IBM напрямую. Что я и сделал. Ответ от IBM был таков:

We need to see more impact beyond phishing. If you are able to chain this issue with further exploitation (ex: token theft, xss bypass, SSRF, etc…) then please let us know. You will see that other vulnerability programs (example: google) take a similar stance on open redirects.

We recommend taking a look at the following external resources for further information on open redirect issues we would be interested in addressing:

We thank you for your efforts in helping keep IBM products secure. Please reference any further communication related to this issue via your original HackeOne ticket so we can better track this finding.

Нежелание признавать уязвимость со стороны разработчиков - не такая уж и редкость. В моей практике бывало, что разработчики даже пытались оспаривать CVE. Я решил вместо дальнейших исследований по повышению импакта обратиться в NotCVE - сервис как раз для подобных случаев (делал об этом сервисе заметку). Тем более уже был опыт взаимодействия с ними. И буквально через пару дней получил ответ, что уязвимости назначен идентификатор NotCVE-2025-0002.

Проблема замечена в версии User interface v1.293.809 + Backend Tag v3.293.425-0. В этой версии проблемы нет: User interface Tag 1.267.675 + Backend Tag 3.267.347-0

Tags:
0
Comments0

NotCVE-2025-0001

Прошёл месяц с момента моего обращения в MITRE про нежелание разработчиков  делать CVE из-за фикса в Docker Engine 28.0.0. От MITRE никаких новостей больше не было. Поэтому я обратился в NotCVE (об этом сервисе я делал заметку). Спустя буквально пару дней меня оповестили о создании идентификатора NotCVE-2025-0001.
Проект NotCVE пока ещё мало известен. По этой причине по запросу "NotCVE-2025-0001" пока далеко не во всех поисковиках что-то можно найти (в Гугл нашёл 1 запись, в Яндексе и DuckDuckGo - ничего). Да и идентификаторов в NotCVE пока всего лишь 6. Очень надеюсь, что проект обретёт популярность и количество идентификаторов увеличится. И в первую очередь - из-за повышения осведомлённости об этом проекте и увеличении обращений (из-за нежелания разработчиков признавать проблему и создавать CVE). В данном случае показательно, что идентификатор NotCVE-2025-0001 завели по моему обращению несмотря на то, что проблему нашёл не я. Я просто не смог пройти мимо, увидев нежелание разработчиков регистрировать CVE.

Tags:
+6
Comments0

NotCVE - ещё одна база уязвимостей

В процессе подготовки будущей статьи искал информацию об уязвимостях, которые не были признаны разработчиками. И натнулся на проект NotCVE (он же !CVE). Проект появился как минимум с октября 2023 года. Удивительно, что в рунете практически нет упоминания этого проекта (нашёл только ссылку на этот ресурс на сайте БДУ).
Миссия проекта - предоставить общее пространство для уязвимостей, которые не признаны производителями, но при этом представляют собой серьезные проблемы безопасности. Если исследователь столкнулся с трудностями при присвоении CVE, авторы проекта готовы помочь - содействуя присвоению CVE. Либо, если это окажется безуспешным, присвоив NotCVE. База уязвимостей, которым присвоили NotCVE, пока скромная (всего 5 штук). Есть 3 варианта поиска, производящих поиск одновременно по базам CVE и NotCVE: с поддержкой фильтра по версиям, CVSS, наличию эксплоита, типу воздействия (у меня, правда, поиск по версиям плохо отработал - может, неверно составил запрос).

В часто задаваемых вопросах на сайте проекта приводят такой список причин обращаться к NotCVE:

  • Проблема безопасности, которую производитель считает своей особенностью.

  • Проблема безопасности, технически корректная, но выходящая за рамки модели угроз производителя.

  • Отклонения CVE по причине окончания срока службы и поддержки.

  • Проблема, которая может считаться уязвимостью по мнению MITRE, но не по мнению поставщика.

  • Опубликованная проблема безопасности, которой не присвоен CVE по истечении 90 дней.

  • Опубликованная проблема безопасности без присвоенного CVE.

Также есть опубликованное электронное письмо от представителей NotCVE (от 2023 года). Среди прочего там указано:

В некоторых случаях MITRE выступает за присвоение CVE, но вендор против. В таких случаях MITRE ничего не может сделать. По опыту мы можем сказать, что в итоге CVE не будет присвоен. Обратите внимание, что «проблема безопасности» не может быть даже названа «уязвимостью», потому что не является таковой (только у поставщика есть такие полномочия) в соответствии с правилами MITRE. Если что-то не является «уязвимостью», то нечего исправлять, нечего отслеживать и т. д. Поскольку такие проблемы остаются незамеченными, к ним следует относиться еще более осторожно, поскольку они, скорее всего, не будут исправлены. Поэтому платформа !CVE - это далеко не развилка, но она раскрывает проблемы безопасности, которые в противном случае останутся скрытыми для большинства из нас. Также платформа признает усилия исследователей безопасности, отдавая им заслуженное должное.

Моя личная практика это тоже подтверждает: разработчики Hyperledger Fabric всячески отказываются называть найденную мной проблему уязвимостью (CVE-2024-45244). И даже предлагали мне самому отозвать CVE (а когда я отказался - пытались оспорить назначение CVE, но безуспешно). Более того, проблему исправили в версии 3.0.0 (см. поиск по тексту "TimeWindowCheck" в описании релиза 3.0.0) - вышла 20.09.2024. И не хотят исправлять в ветке 2.5.х (в которой продолжается выпуск новых версий после 20.09.2024). В связи с чем описание CVE-2024-45244 (в части уязвимых версий) сейчас не актуально.

Возможно, и я обращусь к NotCVE по нескольким потенциальным проблемам:

P.S. По такому случаю сделал ключевое слово "не бага а фича" - надеюсь, в дальнейшем по этому выражению на Хабре станет проще находить соотвествующие статьи\посты.

Tags:
+3
Comments0

Продолжая тему взаимодействия с MITRE насчёт CVE. В прошлый раз я обращался к MITRE из-за нежелания вендора Docker создавать CVE. Теперь же я попытался внести уточнение к существующей записи CVE-2018-14847, описание которой не слишком точное:

MikroTik RouterOS through 6.42 allows unauthenticated remote attackers to read arbitrary files and remote authenticated attackers to write arbitrary files due to a directory traversal vulnerability in the WinBox interface.

По такому описанию можно подумать, что уязвимы абсолютно все версии ниже 6.42. На самом деле это не так. Более точное описание есть у вендора MikroTik:

Versions affected:

  • Affected all bugfix releases from 6.30.1 to 6.40.7, fixed in 6.40.8 on 2018-Apr-23

  • Affected all current releases from 6.29 to 6.42, fixed in 6.42.1 on 2018-Apr-23

  • Affected all RC releases from 6.29rc1 to 6.43rc3, fixed in 6.43rc4 on on 2018-Apr-23

Но, и оно не совсем правдивое. Как минимум версия 6.28 уязвима (проверял используя этот эксплоит). Я обратился в MITRE через эту форму (выбрал "Request an update to an existing CVE Entry"), объяснив всё это. В итоге MITRE лишь добавили ссылку на описание уязвимости от вендора (обновление от 28.04.2025). Это в очередной раз подтверждает, что при оценке угроз не стоит полностью полагаться ни на CVE, ни на информацию от вендора. О чём говорю не только я. Был у меня личный опыт, показывающий неточность в описании уязвимых версий со стороны вендора: Cisco UCS Manager. А если пытаться смотреть на CVE, указанные вендором по этой проблеме - так каши в голове становится лишь больше: в CVE речь о версиях bash (а какая версия bash в какой прошивке и оборудовании есть - в CVE не указывается).

Tags:
Total votes 2: ↑2 and ↓0+2
Comments0

В феврале 2025 вышел релиз Docker Engine 28.0.0, устранивший проблемы безопасности:

Fix a security issue that was allowing remote hosts to connect directly to a container on its published ports. moby/moby#49325
Fix a security issue that was allowing neighbor hosts to connect to ports mapped on a loopback address. moby/moby#49325

В официальном блоге вышла статья с подробностями проблемы и возможными сценариями атак. Но, CVE заводить разработчики не захотели. Я не знаю какими принципами руководствовались разаботчики. По мне слова "Fix a security issue" тождественны созданию CVE. Я обратился в MITRE с описанием ситуации через эту форму (выбрал Request type - other). И получил такой ответ:

Thanks for the submission. We will treat this as a dispute/escalation request and reach out to Docker next. Hopefully that will spur them on to assign (it often does) but if not, we will take a look at assignment. 

Once we hear back we'll let you know if they changed their mind and decided to assign or what the next steps will be.

Надеюсь, CVE заведут. Мне и моим коллегам по цеху по безопасности гораздо удобнее оценивать безопасность архитектуры, имея единый источник проблем безопасности (база CVE). А не рыскать по всему интернету, пытаясь собрать воедино информацию о проблемах безопасности конктерных продуктов, придумывая какие-то запросы, вовзращающие релевантную информацию. Даже если описание в самом CVE сухое - всегда проще искать подробности по уникальному идентификатору CVE, чем выдумывать разные запросы для каждого конктерного продукта.

К сожалению, нежелание признавать CVE со стороны различных разработчиков случается периодически. В моей практике была ситуация, когда разработчик не просто не хотел заводить CVE, а ещё и желал, чтоб я сам отозвал CVE. После моего отказа пытался CVE оспорить (но, неудачно).

Tags:
Total votes 6: ↑6 and ↓0+10
Comments0

Некоторые контейнеры (docker, например) могут внутри себя использовать iptables. Это означает, что и port knocking можно реализовать прямо в контейнере. Популярные вопросы: зачем нужен port knocking и какой смысл делать его в контейнере? Port knocking может снизить обнаружение сервиса (вместо попыток бороться с последствиями, когда сервис уже обнаружен: брутфорс, эксплуатация уязвимости). В случаях, когда нельзя использовать ACL. Особенно актуально в условиях, когда компании не успевают оперативно устранять уязвимости. В контейнере эта мера может быть полезной как подстраховка: если firewall (на хостовой системе или роутере) внезапно ослабнут правила защиты. Также это поможет разгрузить правила firewall хостовой системы.
Безусловно, port knocking, как и любая технология, не является "серебряной пулей". И в общем смысле не является заменителем какой-то другой. Но, используя port knocking совместно с другими решениями, можно существенно повысить безопасность сервисов. Внедрение данной защиты также потенциально увеличит доступное время для устранения уязвимости (пока её не начнут пытаться эксплуатировать на защищаемом сервисе). Использование port knocking также приводит к уменьшению логов. А, значит, логи проще обрабатывать. Кроме того, эта мера поможет решить проблему безопасности: доступности портов контейнеров (если используется docker версии ниже 28).
О проблемах на практике при внедрении port knocking, вариантах решения самых частых проблем и нюансах использования в docker контейнерах рассказано в этой статье. Сам скрипт для использования port knocking в docker контейнере тут.

Tags:
Rating0
Comments0

В этом году я впервые поучаствовал как спикер на конференции по безопасности OFFZONE. Поводом для доклада стало желание закрыть гештальт: на одной из предыдущих работ мою находку о потенциальной проблеме в Hyperledger Fabric проигнорировал тимлид. И я решил довести её до конца самостоятельно. Этот путь занял практически всё лето. Дедлайн по подаче докладов - до 15 июля. В июне я сделал PoC код, показывающий суть проблемы. Ещё месяц заняла реализация защиты. Это был мой первый open source проект. Пришлось попотеть: хотелось сделать проект понятный для использования другими. Для этого нужно было: написать понятный код, снабдить его комментариями и сделать юнит-тесты. Я не профи программист, код писать не люблю. Пришлось себя перебороть ради достижения этой цели. Я подал заявку на доклад ещё не закончив это дело. В начале августа мой доклад одобрили. Тогда же я предложил своё решение в сообществе Hyperledger Fabric. Некоторые разработчики стали доказывать, что проблемы нет: в тестах не подтверждается + приводили код проекта, где реализованы механизмы защиты. Доклад оказался под угрозой. Я бросился проверять ещё раз. Убедившись в своей правоте создал заявку в HackerOne. Вскоре появилось исправление. Но, разработчики не признали, что это уязвимость. И я самостоятельно занялся присвоением CVE идентификатора. Уже после доклада уязвимости был присвоен CVE. Закрыв гештальт, снова убедился: хороший тимлид направления безопасности с опытом только разработчика - исключение из правила.

Tags:
Total votes 10: ↑10 and ↓0+14
Comments0

Думаю, можно, наконец, поставить точку в вопросе: является ли манипуляция временем со стороны клиента в блокчейне Hyperledger Fabric уязвимостью? Как я писал ранее, разработчики попытались оспорить назначение идентификатора CVE (и даже хотели, чтоб я сам как-то отозвал этот идентификатор). Мне неизвестно, как складывалось общение разработчиков с MITRE: они общались напрямую. О факте оспаривания я узнал в конце августа (из переписки с разработчиками на HackerOne). И вот вчера запись о CVE-2024-45244 была обновлена: выставлен рейтинг уязвимости. Буду считать это точкой в вопросе оспаривания со стороны разработчиков.

В итоге
Разработчик выпустил фикс. Но, исправление сейчас недоступно для стабильных версий: фикс присутствует лишь в ветке main. Какого-либо информирования пользователей об уязвимости со стороны разработчиков я не нашёл (на странице проекта в github в списке уязвимостей не значится). Не нашёл и рекомендаций от разработчика: что делать пользователям, которые используют версию без исправлений? Со своей стороны могу предложить в качестве защиты свою разработку: Оракул времени.

Tags:
Total votes 1: ↑1 and ↓0+3
Comments0
Кадр из к\ф "Бриллиантовая рука"
Кадр из к\ф "Бриллиантовая рука"

Интересное продолжение истории о получении CVE для уязвимости в блокчейне Hyperledger Fabric. Разработчики не признают уязвимость. Это при том, что они внесли изменения, устраняющие проблему. Когда я им сообщил, что по моему обращению в MITRE присвоен идентификатор CVE - сказали, что нужно отозвать CVE: код ведь работал так, как и задумано. Как я понял, разработчики сочли, что MITRE создали идентификатор CVE автоматически, не вникая в суть моего обращения (что противоречит практике моих знакомых, у которых MITRE в ряде случаев запрашивало дополнительные данные перед назначением CVE). По этой причине, разработчики пытаются оспорить CVE (UPD: судя по обновлению от 12.09.2024, оспорить не вышло). Видимо, про уязвимость небезопасного дизайна из OWASP Top 10, они не слышали. Кроме того, по классификации, уязвимость попадает в OWASP Smart Contract Top 10: Timestamp Dependence. Допускаю, что разработчики об этом не знают. К сожалению, я им сообщить этого не могу: моё обращение на HackerOne разработчики закрыли, что заблокировало возможность мне добавлять текст к обращению. Я, кстати, не слышал, чтоб какой-либо идентификатор CVE был аннулирован. UPD: бывают отозванные CVE: CVE-2023-4881.

Лично у меня от этой истории сложилось такое впечатление: разработчики считают, что только они вправе определять: что является уязвимостью, а что - нет. Игнорируя при этом сложившуюся практику взаимодействия исследователей безопасности с MITRE.

Tags:
Total votes 2: ↑2 and ↓0+4
Comments2

Манипуляция временем транзакции в блокчейне Hyperledger Fabric - уязвимость (теперь официально).
Мне удалось добиться назначения идентификатора CVE (CVE-2024-45244) уязвимости, связанной с манипуляцием времени транзакции (о чём писал на Хабре) в блокчейне с открытым исходным кодом Hyperledger Fabric. Разработчик выпустил исправление, но не счёл это уязвимостью (о чём я узнал в переписке, по моему обращению на HackerOne). В итоге, мне пришлось самостоятельно заниматься процессом назначения CVE (воспользовавшись найденной мной на Хабре статьёй). Между обращением в MITRE и назначением CVE прошло чуть менее 2-х недель. UPD 13.09.2024 разработчик пытался оспорить, что это уязвимость - не вышло.

Согласно результатам голосования на моём докладе на конференции по кибербезопасности OFFZONE, все участники согласились, что манипуляция временем транзакции является уязвимостью. Исправление сейчас недоступно для стабильных версий (т.е., в ветке 2.4 и 2.5 исправлений нет, а ветка 3.0.0 не является стабильной). В качестве защиты, можно воспользоваться моей open source разработкой.


Блокчейн активно используется в разных сферах: цифровые валюты центробанков (Беларусии, Нигерии), операторами информационных систем цифровых финансовых активов, электронное голосование, энергетика, здравоохранение и др.

Tags:
Total votes 2: ↑2 and ↓0+4
Comments0

Information

Rating
1,043-rd
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity