- PVSM.RU - https://www.pvsm.ru -

Как я зарегистрировал CVE и разозлил вендора

Из мф "Головоломка", 2015, США (реж.  Пит Доктер, Роналдо Дель Кармен)

Из мф "Головоломка", 2015, США (реж. Пит Доктер, Роналдо Дель Кармен)

Статьи про багхантинг часто говорят о пользе для резюме, багбаунти, повышении безопасности продуктов, доступе на закрытые мероприятия [1]. Информация о проблемах во взаимодействии с разработчиками в процессе багхантинга упоминается лишь изредка (и часто - вскользь). Но, это тоже важная часть багхантинга: начинающим бахгантерам полезно знать, с какой реакцией разработчиков они могут столкнуться. Всё-таки, это определённая психологическая нагрузка. Я хочу показать на личном примере прекрасную иллюстрацию того, насколько различны в оценке проблемы разработчики и багхантер. Случай уникален тем, что мне удалось задокументировать многие тезисы разработчиков в их первоначальном виде (в т.ч. попытку отозвать CVE). И подсветить важный момент: уже сам факт оформления CVE по проблеме, которую вендор не признаёт, может вызвать раздражение у вендора.

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

Дисклеймер: в статье приведены скриншоты из моих личных переписок с разработчиками. Публикация таких переписок одной из сторон не требует согласия другой (согласно законодательства РФ [2]).

Предыстория

Речь идёт о CVE-2024-45244 [3]. Вкратце: злоумышленник может перевести время на своём локальном компьютере — и именно это время будет взято уязвимым смарт-контрактом (если используются функции GetTxTimestamp() [4]  и GetHistoryForKey() [5] ). Манипуляция временем входит в OWASP Smart Contract Top 10 2023: SC03:2023 [6] (после обновления в 2025 [7] манипуляция временем покинула топ).
Импакт зависит от логики смарт-контракта, развёрнутого в блокчейне Hyperledger Fabric:
используется ли там отметка времени и как именно это влияет на бизнес-логику. Для
демонстрации я сделал уязвимый смарт-контракт [8], имитирующий цифровой финансовый
актив. Удалось заставить логику смарт-контракта начислять проценты на вклад будто прошёл год со вклада (в реальности прошло несколько минут). Описание уязвимого смарт-контракта и атаки на него есть в моей статье [9].
Т.к. проблема в общем виде известна минимум с 2019 года [10] - изначально я не планировал оформлять CVE: задача была представить своё решение [11] проблемы. К обсуждению моего решения в телеграмм-канале подключились разработчики. Они сочли, что проблемы нет - так что и решение бесполезно.

Отрицание

Один из разработчиков (Фёдор) засомневался в наличии описанной мной проблемы: начал призывать меня к честности [12]. Моё предложение проверить самостоятельно всё изложенное мной в статье изначально посчитал ненужным - т.к. полагается на свои знания [13]. Я всё же попытался у него узнать какая часть моего эксперимента неверная. Он почему-то решил [14], что я сдвинул время у клиента и сервера (т.е. разницы времени по сути и нет). И в этом минус моего эксперимента и предлагаемого решения [15]. Второй разработчик (Артём, по его же словам [16] состоит в Linux Foundation Security Committee) высказал ту же мысль [17]. Фёдор заверил, что провёл эксперимент на стенде [18] и проблема не подтверждается. Далее аргументация свелась к ссылкам на настройки по-умолчанию [19], препятствующие реализации атаки. А также на строчки кода [20], где происходит проверка согласно этим настройкам. Артём также в своих выводах полагался на знание исходного кода и свой опыт [21]. Фёдор тоже пытался мне объяснить [22], что их с Артёмом аргументации, ссылок на код и настройки достаточно, чтоб сделать вывод: проблемы нет. Было ощущение попытки задавить авторитетом. Фёдор сказал, что я борюсь с ветряными мельницами [23]. Артём заверил, что приложит усилия [24] для борьбы с "мистической проблемой" (я снова улавливаю нотки сомнения в наличии проблемы).

Принятие

Причина, по которой я не удовлетворился доводами разработчиков (в т.ч. учитывая их явное превосходство в знании кода проекта) - профессиональная привычка доверять своим глазам. Я много лет занимаюсь поиском уязвимостей в разных продуктах. Наблюдательность ни один раз приводила меня к обнаружению уязвимостей там, где я изначально их не искал (например, в этом случае [25]). И различные разработчики периодически мне пытались доказать, что найденной мной проблемы якобы нет и им-то лучше знать как работает их код. Но, я со временем понял: есть разница между тем, что разработчик хотел сделать и что он в итоге сделал. Безусловно, блокчейн - штука своеобразная. И знанияопыт в информационной безопасности не гарантируют понимание сути проблем в блокчейне (может, именно поэтому эта проблема не всплыла в рамках публично доступных аудитов безопасности [26] проекта от 2017 и 2021 годов). Но, у меня есть опыт поиска уязвимостей и в блокчейн проектах: я участник багбаунти программ в таких проектах (мой профиль [27] на Stronghold). Поэтому, проверив свой эксперимент и убедившись в его корректности, я решил сообщить о находке через HackerOne, детально описав суть эксперимента. В процессе переписки через HackerOne, я получил подтверждение правильности эксперимента, благодарность за то, что подсветил ситуацию. А также ссылку [28] на PR в github проекта (за авторством того самого Фёдора, кстати). Но, уязвимостью это не сочли.

Скриншот с HackerOne: изменение в коде есть, уязвимости - нет
Как я зарегистрировал CVE и разозлил вендора - 2

Спустя время и Фёдор поблагодарил меня и даже признал ошибкой [29] поведение блокчейна. Фикс для стабильных версий вышел 17.09.2024 в рамках версии 3.0.0 [30] . При этом в ветке 2.5.х до сих пор продолжается выпуск версий без фикса [31].

Уроки от Артёма

Я написал через HackerOne (а не в гитхаб, о чём писал [24] Артём). Поэтому Артём объясняет, что значит "правильно": когда нужно через HackerOne обращаться, когда - через гитхаб тикет открывать. При этом ссылки на правила не приводит, обучает "правильности" на примерах.

Скриншоты переписок с Артёмом: куда сообщать о проблеме
Как я зарегистрировал CVE и разозлил вендора - 3
Как я зарегистрировал CVE и разозлил вендора - 4

Попытка согласования доклада с разработчиками

В рамках подготовки к своему докладу [32] на OffZONE 2024 я продолжил общение с разработчиками. В докладе хотел по возможности донести позицию разработчиков: почему они не считают это уязвимостью, какие меры рекомендуют для смягчения последствий (к этому времени фикса в стабильной версии ещё не было). О чём и сообщил через HackerOne. Заодно попытаться найти формулировки в докладе такие, которые не вызывали бы негативной реакции со стороны разработчиков (я много лет общаюсь с различными разработчиками относительно проблем безопасности и знаю, что некоторые достаточно болезненно воспринимают подобную информацию о своих продуктах). Да и изначально я планировал приводить в докладе цитаты разработчиков (впоследствии отказался от цитат) - по этой причине Артём пожелал ознакомиться с презентацией. Я отправил ему часть слайдов (те, где упоминаются разработчики). К этому моменту CVE не был зарегистрирован (CVE на слайдах [33] был указан как факт, что разработчики не стали его открывать). Обратите внимание: Артём пока что называет CVE спорным, не более того.

Скриншоты переписок с Артёмом: обсуждение тезисов моего доклада
Как я зарегистрировал CVE и разозлил вендора - 5
Как я зарегистрировал CVE и разозлил вендора - 6

Артём сообщает об устранении проблемы за 2 недели (т.е. проблема - есть, уязвимости - нет).

Скриншот переписки с Артёмом: проблема устранена
Как я зарегистрировал CVE и разозлил вендора - 7

Проблема должна решаться разработчиками смарт-контрактов. Но, как именно - не сообщается (и откуда разработчики в принципе должны узнать о наличии потенциальной проблемы?).

Скриншот переписки с Артёмом: проблему должны решать разработчики
Как я зарегистрировал CVE и разозлил вендора - 8
Как я зарегистрировал CVE и разозлил вендора - 9

В докладе на OffZONE 2024 я спросил зрителей считают ли они это уязвимостью или нет. Результат голосования [34] - все сочли это уязвимостью (мнение Артёма [35] насчёт этого голосования).

Гнев

Параллельно с подготовкой доклада на OffZONE я занялся регистрацией CVE. После дискуссии с разработчиками картина для меня поменялась. Теперь я воспринимал это не как архитектурную особенность by design, а как защиту, которая оказалась неполноценной. И это был повод оформить CVE. Что я и сделал (воспользовавшись этой статьёй [36]). CVE-2024-45244 [3] был опубликован 24.08.2024 (впоследствии появились аналогичные GHSA-48gg-32q2-4r6m [37] и GO-2024-3099 [38]). Этот момент я считаю поворотным во всей истории: с тех пор отношение разработчиков ко мне стало явно негативным. Факт оформления CVE я не скрывал и сообщил об этом разработчикам через HackerOne. На что они сказали, что я должен отозвать CVE. Я предложил им донести свою позицию до MITRE самостоятельно - пусть там решают CVE это или нет.

Скриншот из HackerOne: реакция на CVE-2024-45244
Как я зарегистрировал CVE и разозлил вендора - 10

Но, разработчики решили, что дело не в MITRE, а во мне. Что я якобы ввёл в заблуждение экспертов MITRE: составляя заявку на CVE я проигнорировал доводы разработчиков. Также сообщили, что назначение CVE, видимо, произошло автоматически - т.е. наличие CVE не означает, что в MITRE сочли это уязвимостью. И будут оспаривать CVE.

Скриншот из HackerOne: реакция на CVE-2024-45244 (продолжение)
Как я зарегистрировал CVE и разозлил вендора - 11

Текст оспаривания CVE разработчиками тоже сохранился.

Скриншот из HackerOne: текст оспаривания CVE-2024-45244
Как я зарегистрировал CVE и разозлил вендора - 12

Ну, и в финале отказали мне в запросе на публикацию отчёта HackerOne, сославшись на нарушение мной правил раскрытия информации об уязвимостях [39] (попутно заблокировав возможности переписки на HackerOne). Отчёт на HackerOne до сих пор в закрытом доступе (ссылка [40] на отчёт).

Скриншот из HackerOne: отказ в публикации отчёта HackerOne
Как я зарегистрировал CVE и разозлил вендора - 13

Как видно из хронологии изменений CVE-2024-45244 [3], запись несколько раз обновлялась. При этом она ни разу не находилась в статусе RESERVED (об этом статусе [41]). В отличие от другого зарегистрированного мной CVE-2024-57695 [42], который в этом статусе уже более полугода (т.к. MITRE не принимает видео доказательства из YouTube [43]). Что отрицает факт автоматического назначения и публикации деталей по CVE (о чём говорят разработчики). Знакомые, взаимодействовашие с MITRE по служебным обязанностям, подтверждают, что MITRE не публикуют подробности CVE, если у них есть вопросы или сомнения по уязвимости.

Торг (+ депрессия?)

Спустя более полугода в телеграмм канале блокчейна снова появилось обсуждение той ситуации. Теперь виновен в CVE не только я, но и MITRE. В сообщениях можно увидеть, что со мной якобы пытались о чём-то договориться. А также сетование на стремление сделать из мухи слона (за KPI): что с моей стороны, что со стороны MITRE.

Мем: "когда разработчики узнали о CVE, с которым не согласны"

Артём:

Скриншот переписки с Артемом: я оцениваю серьёзность CVE-2024-45244
Как я зарегистрировал CVE и разозлил вендора - 14

А что имел ввиду Фёдор, рассказывая про двоечника и CVE [53] - я вообще не понял (может, до кого-то дойдёт).

Почему это не уязвимость (по мнению разработчиков)

Здесь соберу тезисы от разработчиков почему, по их мнению, уязвимости нет. Тезисы были разбросаны (по времени и месту), решил попробовать собрать всё вместе.

Начну с моего любимого: Артём пишет, что за 10 лет проблема никому не мешала.

Скриншот переписки с Артемом: за 10 лет проблема никому не мешала
Как я зарегистрировал CVE и разозлил вендора - 15

А любимое - потому, что я очень часто слышу такую аргументацию от разных разработчиков. Недавно так ответил разработчик по другому проекту, когда я указал на необходимость перейти с HTTP на HTTPS при передаче данных (конкретику рассказывать не могу из-за соглашения о неразглашении между мной и моим работодателем). Но, слышать такое от участника LF Security Committee [16] ранее не приходилось.

Ещё один классический тезис - так и должно быть, такой дизайн.

Скриншот переписки с Артемом: такой дизайн ПО
Как я зарегистрировал CVE и разозлил вендора - 16

Следующее - вопрос описания API (и его интерпретации).

Скриншоты переписки с Артемом: проблема в API
Как я зарегистрировал CVE и разозлил вендора - 17
Как я зарегистрировал CVE и разозлил вендора - 18

Разработчики смарт-контрактов должны быть достаточно квалифицированными.

Скриншот переписки с Артемом: разработчики смарт-контрактов должны быть достаточно квалифицированными
Как я зарегистрировал CVE и разозлил вендора - 19

Вот тут остановимся. Видимо, речь идёт об использовании API функций GetTxTimestamp() [4]  и GetHistoryForKey() [5] (ссылки на коммит от 20.06.2022). А могут ли разработчики смарт-контрактов писать правильно, если "АПИ недостаточно подробно описан и может быть неверно интерпретирован"? Ну, наверное, из-за всей этой ситуации описание API исправили, проблем с интерпретацией теперь нет. Давайте посмотрим коммит посвежее... и там не поменялось [54]! Ну, наверное для Go забыли, сделали для JS [55], ни для Java [56]. Интересно: где же взять разработчикам смарт-контрактов информацию о том, как не наступать на грабли?

Для полноты картины - тезис Артёма, что я изначально написал код смарт-контракта с багом [47] (так в этом и суть PoC). А как написать код без бага? Может, Артём знает? Может, и знает, но не сказал: ведь, по его словам, универсального решения нет.

Скриншот переписки с Артемом: универсального решения нет
Как я зарегистрировал CVE и разозлил вендора - 20

Артём пишет, что разработчики смарт-контракта каким-то чудным образом должны проверять время [57], а не блокчейн:

вопрос решения задач со временем просто вынесли на клиента

А разработчикам об этом как-то сообщили?

Артём пишет, что проблема имеет чисто академический интерес [58] и без модели безопасности - не стоит внимания. Имелось ввиду, что помимо PoC и описания шагов для воспроизведения ситуации я ещё должен модель безопасности описывать? Я-то привык, что разработчики после изучения отчёта багхантера сами выпускают бюллетень безопасности с описанием кто (из потребителей продукта) и при каких условиях может столкнуться с проблемой.

Ещё один вариант: архитектура такова [59], что транзакцию (с отметкой времени) отправляет не злоумышленник, а бэк сервис. И если бек скомпрометирован - проблемы будут сильно больше, чем отправка транзакции с неверным временем.

Картинка сценария, когда пользователь напрямую не вызывает проблемную функцию
Как я зарегистрировал CVE и разозлил вендора - 21

Судя по логике, единственной компрометацией бека считается тут [60] (из личного опыта пентеста добавлю: не рассмотренным вариантом является компрометация маршрутизатора, который по DHCP [61] может клиенту сообщать адрес сервера NTP). Ну, и не стоит забывать такую банальность, как севшая батарейка на материнской плате [62].

Почему я считаю это уязвимостью

Я придерживаюсь терминологии, что уязвимость - это недостаток [63], через который может быть реализована угроза безопасности информации. В данном случае речь о нарушении достоверности данных (как части целостности [64]). А условия реализации атаки влияют лишь на оценку уровня уязвимости (угрозы), а не самого факта наличия уязвимости. Условия возникновения угрозы безопасности продемонстрированы в моём PoC [8].

Лично у меня - стойкое ощущение, что разработчики сами запутались: как же должен работать код по задумке. Сначала целых 2 разработчика отрицали факт проблемы и говорили, что защита уже предусмотрена. Потом выяснилось (с моей помощью), что работает не совсем так и зависит от версии или конфигурации [29]. Даже устроили дискуссию о необходимости дополнительной проверки времени.

Скриншот из HackerOne про дискуссию разработчиков
Как я зарегистрировал CVE и разозлил вендора - 22

Риторический вопрос: что включала дискуссия - как на самом деле работает код или нужно ли делать фикс только для того, чтобы меня успокоить [44]?
После этого доводы про "так и задумано" напоминают мем "не бага, а фича [65]" (и ещё - ситуацию из жизни, когда представитель кафе уверял, что разваливающийся сырник - это такой рецепт [66]). Но, даже если так действительно было задумано - небезопасный дизайн входит в OWASP Top 10 2021 (A04:2021 [67]).

Потребителей блокчейна (в т.ч. разработчиков смарт-контрактов) общедоступным способом не уведомили об этих "граблях": ни до, ни после освещения проблемы мной. Даже после того, как разработчики признали проблемность описания API-функции. Как можно донести по-другому информацию о потенциальной проблеме? Через CVE (что я и сделал).

Очень избирательный подход в плане освещения потенциальных проблем для потребителей: про фантомные чтения написали аж для нескольких функций (1 [68], 2 [69], 3 [70], 4 [71], 5 [72], 6 [73], 7 [74]). А про манипуляцию временем - нигде.

Метка времени нужна для детерминизма [75] в блокчейне. Но, её можно реализовать по-разному. В т.ч. так, чтобы этой проблемы не было. Например, в EVM блокчейнах метка времени присваивается не транзакции, а всему блоку. При этом реализован механизм проверки корректности времени [76] при валидации блоков. Т.о., возможно, речь идёт об архитектурной проблеме. И если изначально задаться подобными вопросами на уровне модели угроз (а не перекладывать это на других [58]) - может быть, проблемы не было бы вовсе.

Как я уже упоминал, манипуляция временем входит в OWASP Smart Contract Top 10 2023: SC03:2023 [6]. И исключение из OWASP Smart Contract Top 10 2025 [7] не означает, что манипуляции временем теперь - вообще не уязвимость.

Учитывая всё это - странным выглядит перекладывание проблемы то на потребителей (мол, они должны как-то использовать продукт безопасно), то на меня и MITRE (за публикацию CVE якобы "на ровном месте"). Жаль, что все силы потрачены на попытки оспорить CVE и ноль - на редактирование описания API-функций.

О CVE

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

У CVE-2024-45244 [3] на данный момент есть некоторые проблемы. Например, указано CWE-294 [77]. Что вряд ли подходящий вариант. Импакт сильно зависит от бизнес-логики смарт-контрактов: если в смарт-контракте не используются функции GetTxTimestamp() [4]  и GetHistoryForKey() [5] - импакта нет вовсе. Если используется, например, только для вывода времени операции на чеке - тоже нет импакта. А вот когда идёт расcчет финансов на основании времени операций (что я и показал [8] в PoC) - импакт уже существенный. В этом смысле определение уровня угрозы для CVE имело объективные сложности. И уровень "medium" кажется вполне честной "золотой серединой". Описание в части версий некорректно: на момент создания CVE версия 2.5.9 была крайней в своей ветке. Но, далее в этой ветке продолжился выпуск версий без фикса. Учитывая слова Фёдора [29], есть ощущение, что описание в части версий всё же останется не совсем корректной. И разработчики, имея больше информации о своём продукте, могли бы повлиять на более точное описание CVE. Но, вместо этого им захотелось устроить борьбу "за честь мундира".
Описание CVE также очень сухое. Поиск в интернете по "CVE-2024-45244" ведёт на страницы с неким расширенным субъективным толкованием различных авторов. Но, эти толкования больше похожи на "испорченный телефон" и лично у меня вызывают лишь недоумение. Учитывая, что вендор отклонил запрос на опубликование моего отчёта в HackerOne [40], найти технические подробности по проблеме не так уж и просто (хотя, можно ориентироваться на мой PoC в github [8]). Я планирую обратиться в MITRE с целью улучшить содержательную часть CVE (не только автор, но и любой человек может обратиться в MITRE с этой же целью).

Заключение

К сожалению, попытки игнорирования проблем безопасности - не такая уж редкость со стороны разработчиков. Про нежелание разработчиков заводить CVE говорят и другие люди [78]. И такой подход приводит к "медвежьей услуге": при анализе систем на безопасность могут не учитываться особенности систем, влияющих на безопасность при определённых условиях. Просто потому, что разработчик не стал заводить CVE. Именно эта проблема и стала поводом для появления сервиса NotCVE.org [79] (делал заметку о сервисе [80]). Сервис, по сути, и является ещё одной централизованной базой, где можно искать проблемы безопасности: как те, для которых есть CVE, так и те, для которых CVE нет. Создатели сервиса отмечают [81]: в определённых случаях CVE зарегистрировать не получится даже через MITRE (мой опыт [82] это тоже подтверждает). В этом году я зарегистрировал в этом сервисе 4 идентификатора [83]. Их всех объединяет нежелание вендора создавать CVE. Само исправление вендоры часто называют не уязвимостью, а хардерингом [84]. А в одном случае [82] вендор отказался создавать CVE просто потому, что недостаточно импакта.

В этой статье [1] также отмечаются популярность проблемы с триажом в багбаунти. Всё это стоит учитывать и при выборе должности: не всегда профессиональный поиск уязвимостей (хорошее понимание технологий) означает отсуствие взаимодействия с людьми.
Причина же подобных ситуаций часто в том, что разработчики и "безопасники" по-разному воспринимают ситуацию. Разработчики могут действительно лучше знать код своего продукта, чем багхантер. Но, иногда разработчики могут и запутаются в условиях работы собственного продукта. Кроме того, у профессиональных багхантеров часто знаний о потенциальных угрозах и способах их реализации больше, чем у разработчиков. В данной истории это также прослеживается: разработчики полагали, что для манипуляции временем должен быть скомпроментирован бэк. Хотя на самом деле, это далеко не единственный вариант. А иногда причина - в неумении человека признавать ошибки (свои или коллег).

Другие мои статьи по теме:

Автор: shanker

Источник [86]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/cve/425442

Ссылки в тексте:

[1] пользе для резюме, багбаунти, повышении безопасности продуктов, доступе на закрытые мероприятия: https://habr.com/ru/specials/893728/

[2] согласно законодательства РФ: https://dzen.ru/a/XER1fOu65QCsZGnD

[3] CVE-2024-45244: https://nvd.nist.gov/vuln/detail/CVE-2024-45244

[4] GetTxTimestamp(): https://github.com/hyperledger/fabric-chaincode-go/blob/0431f709af2c/shim/interfaces.go#L360C5-L363C48

[5] GetHistoryForKey(): https://github.com/hyperledger/fabric-chaincode-go/blob/release-2.3/shim/interfaces.go#L220C5-L236C43

[6] SC03:2023: https://owasp.org/www-project-smart-contract-top-10/2023/en/src/SC03-timestamp-dependence.html

[7] обновления в 2025: https://owasp.org/www-project-smart-contract-top-10/

[8] уязвимый смарт-контракт: https://github.com/shanker-sec/HLF_TxTime_spoofing

[9] статье: https://habr.com/ru/articles/823834/

[10] известна минимум с 2019 года: https://lists.lfdecentralizedtrust.org/g/fabric/topic/30037606

[11] своё решение: https://habr.com/ru/articles/832090/

[12] призывать меня к честности: https://web.archive.org/web/20250508174233/https://t.me/hyperledger_russia/10968

[13] полагается на свои знания: https://web.archive.org/web/20250508173831/https://t.me/hyperledger_russia/10970

[14] почему-то решил: https://web.archive.org/web/20250508174736/https://t.me/hyperledger_russia/10972

[15] минус моего эксперимента и предлагаемого решения: https://web.archive.org/web/20250508181451/https://t.me/hyperledger_russia/10994

[16] по его же словам: https://t.me/hyperledger_russia/11660

[17] ту же мысль: https://t.me/hyperledger_russia/10973

[18] провёл эксперимент на стенде: https://web.archive.org/web/20250508175751/https://t.me/hyperledger_russia/11025

[19] ссылкам на настройки по-умолчанию: https://web.archive.org/web/20250508180253/https://t.me/hyperledger_russia/10976

[20] строчки кода: https://t.me/hyperledger_russia/10980

[21] полагался на знание исходного кода и свой опыт: https://t.me/hyperledger_russia/10999

[22] пытался мне объяснить: https://web.archive.org/web/20250508183628/https://t.me/hyperledger_russia/11000

[23] борюсь с ветряными мельницами: https://web.archive.org/web/20250508184046/https://t.me/hyperledger_russia/11006

[24] приложит усилия: https://t.me/hyperledger_russia/11030

[25] в этом случае: https://habr.com/ru/articles/161393/

[26] публично доступных аудитов безопасности: https://lf-hyperledger.atlassian.net/wiki/spaces/SEC/pages/20283630/Security+Code+Audits

[27] мой профиль: https://strongholdsec.io/profile/0x38510E00F676B867b07197A1DFEE02B4752E5d09

[28] ссылку: https://github.com/hyperledger/fabric/pull/4942

[29] поблагодарил меня и даже признал ошибкой: https://web.archive.org/web/20250505042128/https://t.me/hyperledger_russia/11043

[30] версии 3.0.0: https://github.com/hyperledger/fabric/releases/tag/v3.0.0

[31] продолжается выпуск версий без фикса: https://github.com/hyperledger/fabric/releases/tag/v2.5.13

[32] своему докладу: https://2024.offzone.moscow/program/zashchita-ot-manipulyatsii-vremenem-tranzaktsii-v-blokcheyne-hyperledger-fabric/

[33] слайдах: https://2024.offzone.moscow/upload/iblock/presentations/AppSec.Zone_Agievich_OFFZONE2024.pdf

[34] Результат голосования : https://surveys.yandex.ru/quicksurvey/statistics/YNtpnCg7ugk4qDaJCJEd6o/public

[35] мнение Артёма: https://t.me/hyperledger_russia/11629

[36] этой статьёй: https://habr.com/ru/companies/ppr/articles/496262/

[37] GHSA-48gg-32q2-4r6m: https://github.com/advisories/GHSA-48gg-32q2-4r6m

[38] GO-2024-3099: https://pkg.go.dev/vuln/GO-2024-3099

[39] правил раскрытия информации об уязвимостях: https://www.hackerone.com/terms/disclosure-guidelines

[40] ссылка: https://hackerone.com/reports/2635279

[41] об этом статусе: https://www.cve.org/ResourcesSupport/FAQs#pc_cve_recordsreserved_signify_in_cve_record

[42] CVE-2024-57695: https://www.cve.org/CVERecord?id=CVE-2024-57695

[43] MITRE не принимает видео доказательства из YouTube: https://habr.com/ru/posts/918950/

[44] не из-за того, что это уязвимость, а чтобы меня успокоить: https://t.me/hyperledger_russia/11628

[45] удивился: https://web.archive.org/web/20250508191656/https://t.me/hyperledger_russia/11621

[46] продолжил настаивать: https://t.me/hyperledger_russia/11627

[47] видимо финансово заинтересованы: https://t.me/hyperledger_russia/11637

[48] тоже финансово заинтересован в CVE: https://t.me/hyperledger_russia/11622

[49] MITRE не отвечают: https://t.me/hyperledger_russia/11634

[50] участвовал сотрудник из Linux Foundation Security Group: https://t.me/hyperledger_russia/11659

[51] при малейшем подозрении: https://t.me/hyperledger_russia/11662

[52] набиваю свою значимость на надуманной проблеме: https://t.me/hyperledger_russia/11619

[53] Фёдор, рассказывая про двоечника и CVE: https://web.archive.org/web/20250505052920/https://t.me/hyperledger_russia/11623

[54] и там не поменялось: https://github.com/hyperledger/fabric-chaincode-go/blob/fc2b4bb62e38eb681c621c9a46aa0fbd335732ff/shim/interfaces.go#L385-L388

[55] JS: https://github.com/hyperledger/fabric-chaincode-node/blob/753bf8af0fdda5ee8d8aabcd80d5851f1063413b/libraries/fabric-shim/lib/stub.js#L414-L417

[56] Java: https://github.com/hyperledger/fabric-chaincode-java/blob/4939a15c6611be6f8f313fcd8ef00be428bc3d5e/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/shim/ChaincodeStub.java#L636-L640

[57] разработчики смарт-контракта каким-то чудным образом должны проверять время: https://t.me/hyperledger_russia/10960

[58] проблема имеет чисто академический интерес: https://t.me/hyperledger_russia/11022

[59] архитектура такова: https://t.me/hyperledger_russia/11004

[60] тут: https://ieeexplore.ieee.org/abstract/document/10746474

[61] по DHCP: https://help.mikrotik.com/docs/spaces/ROS/pages/24805500/DHCP#DHCP-Network

[62] севшая батарейка на материнской плате: https://remontka.pro/time-resets-on-pc/

[63] уязвимость - это недостаток: https://bdu.fstec.ru/ubi/terms/terms/view/id/66

[64] как части целостности: https://www.securitylab.ru/analytics/533035.php

[65] не бага, а фича: https://codernet.ru/articles/drugoe/ne_bag_a_ficha_chto_eto_znachit_i_otkuda_poyavilas_eta_fraza/

[66] разваливающийся сырник - это такой рецепт: https://2gis.ru/reviews/70000001047099428/review/83983963

[67] A04:2021: https://owasp.org/Top10/A04_2021-Insecure_Design/

[68] 1: https://github.com/hyperledger/fabric-chaincode-go/blob/fc2b4bb62e38eb681c621c9a46aa0fbd335732ff/shim/interfaces.go#L115-L127

[69] 2: https://github.com/hyperledger/fabric-chaincode-go/blob/fc2b4bb62e38eb681c621c9a46aa0fbd335732ff/shim/interfaces.go#L148-L162

[70] 3: https://github.com/hyperledger/fabric-chaincode-go/blob/fc2b4bb62e38eb681c621c9a46aa0fbd335732ff/shim/interfaces.go#L207-L222

[71] 4: https://github.com/hyperledger/fabric-chaincode-go/blob/fc2b4bb62e38eb681c621c9a46aa0fbd335732ff/shim/interfaces.go#L240-L257

[72] 5: https://github.com/hyperledger/fabric-chaincode-go/blob/fc2b4bb62e38eb681c621c9a46aa0fbd335732ff/shim/interfaces.go#L319-L328

[73] 6: https://github.com/hyperledger/fabric-chaincode-go/blob/fc2b4bb62e38eb681c621c9a46aa0fbd335732ff/shim/interfaces.go#L330-L342

[74] 7: https://github.com/hyperledger/fabric-chaincode-go/blob/fc2b4bb62e38eb681c621c9a46aa0fbd335732ff/shim/interfaces.go#L344-L355

[75] детерминизма: https://github.com/hyperledger/fabric-chaincode-go/blob/0431f709af2c/shim/interfaces.go#L362C38-L362C73

[76] реализован механизм проверки корректности времени: https://ethereum-magicians.org/t/eip-1482-define-a-maximum-block-timestamp-drift/1556/6

[77] CWE-294: http://cwe.mitre.org/data/definitions/294.html

[78] говорят и другие люди: https://t.me/avleonovrus/739

[79] NotCVE.org: http://NotCVE.org

[80] заметку о сервисе: https://habr.com/ru/posts/910466/

[81] отмечают: https://seclists.org/oss-sec/2023/q4/205

[82] мой опыт: https://habr.com/ru/posts/918400/

[83] 4 идентификатора: https://notcve.org/hall.php

[84] часто называют не уязвимостью, а хардерингом: https://habr.com/ru/posts/924940/

[85] Мой вклад в безопасность блокчейна Hyperledger Fabric: https://habr.com/ru/articles/911220/

[86] Источник: https://habr.com/ru/articles/927672/?utm_source=habrahabr&utm_medium=rss&utm_campaign=927672