Hunt Or Be Hunted
400 subscribers
118 photos
5 videos
2 files
84 links
Sharing Infosec research, experience, news, interesting tools and materials
(and a bit of my infosec life)


Only for educational purposes

Boost: https://t.me/boost?c=2112564389
Download Telegram
📁 Подборка AppSec-датасетов 📁

В качестве подготовки к своему исследованию просматривал, какие нынче датасеты используются для различных App-Sec задач в научных статьях и на практике. О некоторых наиболее интересных из них решил написать в данном посте. Можете забирать для своих исследований или предложить что-то интересное, что я упустил, в комментариях.


Исходный код
1. FormAI-v2 https://github.com/FormAI-Dataset
↘️Содержит 331к уязвимых/нормальных программ на C, с указанием уязвимой функции, сгенерированных LLM (синтетические). Описание самих проблем - формальное.
2. SecVulEval https://github.com/basimbd/SecVulEval
↘️Содержит уязвимые/нормальные функции на C/C++ (5,867 CVEs, 10,998 vulnerable and 14,442 non-vulnerable functions). Маппинг идет по CVE. Также содержит варианты исправления багов
3. CASTLE Benchmark https://github.com/CASTLE-Benchmark/CASTLE-Benchmark
↘️Содержит 250 мини-программ на C (уязвимых/нормальных), сделанных вручную. Маппинг по CWE + вербальное описание. Из интересного, у авторов есть своя система скоринга SAST-инструментов по их датасету + посчитано для большинства классических и ИИ-инструментов (очень хорошо для сравнения)
4. VADER https://github.com/AfterQuery/vader
↘️Содержит 174 реальных (взято из гитхаб-репозиториев) веб-приложения на разных языках (яп немало). На вход подается файловая структура приложения вместе с кодом. Также есть файл-патч (diff с гита) и описание тест-кейса (немного неструктурированное, больше для человека). Больше для статического анализа, но в теории можно и для черного ящика как-то использовать
5. OWASP Benchmark https://owasp.org/www-project-benchmark/
↘️Классика. 2740 тестовых кейсов для Python/Java. Представляют open-source-приложения с набором уязвимостей. Можно тестить как белым так и черным ящиком, но чаще для SAST-решений используют


Черный ящик
1. CVE-Bench https://github.com/uiuc-kang-lab/cve-bench
↘️Может создавать уязвимые веб-приложения, которые содержат CVE из списка 40 захаркоженных (критичных). Может генерировать промпты для каждой из задач. Предполагается эксплуатация черным ящиком для проверки, сможет ли модель выполнить задачу. Список задач (возможных импактов) также ограничен и довольно базовый.
2. XBOW benchmark https://github.com/xbow-engineering/validation-benchmarks
↘️Структурированный набор из 104 уязвимых приложений. Ранжировано по сложности + есть описания со всеми заданиями. По сути CTF-jeopardy. Предполагается решение черным ящиком, но в теории можно и белым пройтись.


Мешок со всем подряд
1. VulZoo https://github.com/NUS-Curiosity/VulZoo
↘️Тут в общем все и в разных форматах: описания CVE, патчи, эксплоиты и т д. Что-то структурировано, что-то нет. Спектр задач разный может быть

#datasets #appsec
☠️ Hunt Or Be Hunted
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥4👏1
Канал дополз до общего атласа тг-каналов

• Интерактивная карта тг-каналов, сортирующая их по схожести тематик - каналы со схожим контентом кучкуются рядом друг с другом + есть большие области, определяющие общую направленность (навреное, можно интерпретировать это как своего рода города и страны)

Выглядит красиво в общем.

Правда, канал определили в направления "Бизнес и IT" и "Аналитика", что немного в стороне от города инфобеза, но в целом вижу рядом знакомые ИБ-блоги, так что, может, это недалеко от правды.

В любом случае, теперь мы гордо тусуемся рядом с другими каналами, что не может не радовать

☠️ Hunt Or Be Hunted
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥102👏1
Insecure Deserialization

🔖 Немного базы
Сериализация - это преобразование объекта (со свойствами, полями, состоянием) в строку или байтовый поток, чтобы его можно было хранить (файл, кеш, БД) или передавать по сети.
Десериализация - обратный процесс: из строки/байтов снова собирается объект нужного типа и попадает в код, где с ним продолжает работать приложение. В вебе так часто гоняют сессии, токены, кэшированные данные и объекты для RPC между сервисами.


▶️ Insecure Deserialization - это уязвимость, при которой приложение десериализует данные из недоверенного источника и тем самым дает атакующему возможность изменить ход выполнения программы или внедрить произвольные объекты.

🔵 Тип:
Web, Server-Side

⁉️ В чем суть:
– Приложение принимает сериализованный объект (может прилетать из cookie, параметра, заголовка и пр.)
– Доверяет его структуре и содержимому
– Десериализует без доп. проверок
– В процессе десериализации могут вызываться методы, хуки, "магические" функции, гаджеты из сторонних библиотек

Главная опасность заключается в том, что экплоит может отработать даже не достигнув логики или не пройдя дальнейшие проверки приложения - урон наносится сразу при десериализации объекта

📍 Пример уязвимого кода
unserialize(_COOKIE['session'])

🔵Разновидности:
– По формату сериализованных данных: строковые (PHP, JSON, YAML), бинарные (Java, Python, Ruby)
– По характеру эксплуатации: изменение свойств объекта, внедрение произвольного объекта (часто цепочки гаджетов - своеобразный ROP-chain мира веба), иногда хорошо совмещается с низлежащими уязвимостями (напр. Type Juggling)

🔵 Влияние:
– Обход авторизации и эскалация привилегий (подмена роли/ID в объекте)
– Чтение / изменение чувствительных данных
– Удалённое выполнение кода (RCE) через цепочку гаджетов
– Отказ в обслуживании (краш приложения при десериализации)

💬 Как защититься?
– Не десериализовать недоверенные данные без крайней необходимости (наилучшая защита)
– Использовать безопасные форматы (JSON без типов / без авто-преобразования в объекты)
– Включать строгие allowlist-контейнеры типов / классов, отключать произвольные объекты
– Подписывать и шифровать сериализованные данные, проверять целостность

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

📘 Из личного опыта
Уязвимость которая актуальна сколько я занимаюсь инфобезом на примерно одном и том же уровне. Она часто незаметна + не все приложения пользуются сериализацией в целом, но в стабильные промежутки времени я вижу новые CVE с десериализацией. "Универсальных" цепочек гаджетов при этом стало как будто меньше, но в большинстве случаев либо подойдет уже известный, либо все равно придется строить самому, исходя из исходного кода. Ну и в CTF она тоже часто заглядывает

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

В общем, уязвимость крутая, но требует некоторой усидчивости и насмотренности для эффективного использования в бою

P.S. Там вроде новый закон есть/будет, поэтому на всякий случай - картинку нейронка нарисовала. Какая именно - без понятия, у меня там целый котел из LLM и конкретная модель на эвристиках выбирается


#edu #vuln #web #deser #insecure_deserialization
☠️ Hunt Or Be Hunted
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥3👍2😈1
Несколько дней планировал сделать пост с анализом нашумевшей 0day в телеграме (ZDI-CAN-30207), так как не согласен почти со всеми анализами, что я видел в тг каналах. Бага изначально имела CVSS Score 9.8 и на текущий момент уже была переоценена и имеет Score 7.0. Основной смысл пост уже потерял, так как телеграм прокомментировал ситуацию и в своем сообщении в целом раскрыл всю суть уязвимости.

Но давайте тогда подытожим всю инфу, которую по итогу имеем:
🍞Уязвимость в составлении закоррапченых тг-стикеров
🍞Тг утверждает, что их сервер не примет используемые в эксплуатации стикеры, поэтому на массы это эксплуатировать нельзя и уязвимость можно эксплуатировать только локально (не обязательно физический доступ к телефону, но видимо нужно иметь какое-то влияние на пользователя)
🍞Нужно взаимодействие с пользователем и сложная эксплуатация => нужно заставлять пользователя создать вредоносный стикер или сделать с ним что-то нетривиальное
🍞По импакту - это должен быть Account Takeover. На самом деле думаю, что это либо выполнение единичного действия от лица пользователя или добавление себя в сессии жертвы (что в целом ATO, но чуть менее грозно технически звучит)
🍞Видел в некоторых анализах, что это RCE на устройстве клиента - даже исходя из CVSS-вектра - это неправда, в таких случаях Scope будет у уязвимости Changed. По той же причине влияния на сервера телеграма тоже нет - влияние уязвимости должно оставаться внутри приложения.

Конечно, тут могут быть неточности с точки зрения составления этой самой CVSS-оценки (люди любят подискутировать на эту тему), но если исходить из предположения, что оценили правильно и телеграм нам не врет, то картина именно такая, как я описал выше

В общем, не делайте странных действий, которые вас просят сделать сомнительные люди и выдыхайте

#slowpoc_analysis #zdi
☠️ Hunt Or Be Hunted
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥63👍3
Раз уж пост пошел немного не по плану, то будет второй с потоком моих мыслей

Я тут уже полгода тусуюсь в аспирантуре (РАН, но для сути поста не так важно). За это время время могу выделить одну одназначную вещь, из-за которой я точно не жалею о своем решении - это история и философия науки.

Для меня это продолжает быть некоторого рода открытием - как будто я все время до этого программировал и только сейчас начал понимать математику, которая лежит в основе всех моих действий. Или всю жизнь писал диктанты и вдруг осознал, что исключения в русском языке имеют свои причины и происхождение (и на самом деле их сильно меньше чем говорят в школе, потому что выучить считается проще чем понять смысл)

Тут еще важно, что она появилась в моей жизни в нужный момент - на предыдущих уровнях своего образования я бы не понял это на том же уровне глубины (в бакалавриате, например, у меня было аж две философии - с обеих я почти ничего не вынес для себя)


Из этого всего для себя я вижу много плюсов:

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

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

В-третьих, общение с умными людьми стало еще увлекательнее. Если мне попадается человек со схожим вайбом, то появляется возможность дойти в обсуждении до просто фантастических конструкций, которые даже осознать сложно

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

На самом деле есть еще, но суть в том что моя жизнь, а особенно ее интеллектуальная составляющая как будто совершила качественный скачок.

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

Как говорится почаще задумывайтесь и задавайте себе правильные вопросы
1🔥94❤‍🔥31👍1
🐞Попробовал, значит, я этот ваш багбаунти...🐞

Некоторое время назад решил наконец прикоснуться к такой удивительной штуке как BugBounty. На самом деле, я туда почти побежал, потому что в какой-то момент желание потрогать это стало сильнее любых иных моих активностей. Так как профиль у меня был пустой, то ни в каких приватных программах я не состоял и смотрел только то, что есть публично. Мой опыт был следующим:

▶️День 1. Вечер: решил посмотреть программу 1. Сделал рекон, немного поискал, нашел одну багу, которую потом пометили как инфо (+0р) и на этот день мое приключение закончилось.
▶️День 2. В течение дня я настраивал себе эмулятор, вечером-ночью начал смотреть программу 2. Сделал рекон, поизучал функциональность, нашел две баги, одну из которых по итогу также пометили как инфо (+0р), вторую приняли и по итогу заплатили (+30к р). Ночью того же дня сделал рекон программы 3.
▶️День 3. Вечер-ночь: делал рекон и исследовал уже другую задачу в программе 3. Нашел и сдал три баги, одну из которых по итогу пометили как инфо (+0р), две другие приняли (+55к р и +75к р соответственно), по второй баге правда критичность понизили относительно моего репорта

🌀Итого за 3 дня моего первого опыта с багбаунти-платформами я имею массу положительных эмоций и +160к р, что в целом звучит довольно позитивно (хоть это и не + 8млн за месяц, как зарабатывают некоторые ии-багбаунтеры)

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

По итогу этого опыта у меня появились следующие мысли:
🟡. Приятно, что за баги тебе платят (за прошлые CVE/BDU мне сказали спасибо, а иногда даже спасибо не говорили)
🟡. Выборка у меня пока небольшая, но среди вендоров, с которыми я успел повзаимодействовать - мне попадались весьма адекватные люди. Я могу не всегда быть согласен с их решением, но могу понять их позицию - она адекватна и ее можно логически принять. Оценка уязвимостей по большей части тоже была справедливой (часто это поле для дискуссий и заказчик склонен занижать импакт - тут тоже такое наблюдалось, но оставалось в рамках разумного). Правда, пока складывается ощущение, что Low-баг для компаний как будто не существует.
🟡. Как и следовало ожидать в публичных программах на поверхности уже почти все собрали. Заранее понимая это, я опускал проверки целых классов уязвимостей при отсутствии на них намека - это помогло сэкономить время на более важном.
🟡. В свою очередь я получил положительные эмоции от самого процесса. Я прям получал драйв в процессе своей активности. На самом деле я доволен тем, что получаю такое удовольствие от процесса, который в том числе стал моей работой. В моей голове это сопоставимо с искусством/ремеслом, которое приятно держать в руках и хочется продолжать.
🟡. Этот поинт посвящен эффекту от ИИ-багбаунтеров. На самом деле все происходящее на этом поприще вызывает у меня чувство грусти - я вижу в этом влияние на экономику бб-платформ, а также резкое усложнение баг, которые можно найти. В результате получается ситуация, что исследователь может неделю искать уязвимость, найти что-то интересное, а потом окажется, что эту багу позавчера сдал тип который ничего не знает, но купил 200 кодексов и ты получаешь дубликат. Потребуется больше усилий, чтобы получить отдачу от своей работы, а быстрый дофамин от победы - довольно сильный стимулятор к деятельности, особенно на старте. При этом именно для бб я не вижу смысла для себя в таком же ключе использовать агенты - как я писал выше, мне больше нравится удовольствие от процесса, я не стремлюсь обанкротить всех вендоров.

Overall, бб мне понравилось. Если не пробовали - то обязательно попробуйте (особенно платформу бизона рекоммендую хд). Во всяком случае, пока типы с кодексами всех не обанкротили (пока не успели).

Было бы еще время на это все, конечно...

#bugbounty #experience
☠️ Hunt Or Be Hunted
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥141👍11
Forwarded from Pentest Notes
Наткнулся на, пожалуй, самый объемный гайд по безопасности JWT в рунете.

Автор канала Пингискок ультанул и выпустил цикл из 20 статей на ~25000 слов (это очень много буков)! Где разобрал JWT буквально побайтово🤩

Список статей:

1. Почему JWT сломан by design
2. Анатомия токена
3. alg:none - одна строчка и ты admin
4. Algorithm Confusion - публичный ключ как пароль
5. kid injection - SQLi через заголовок токена
6. jku/x5u/jwk/x5c - весь заголовок это attack surface
7. Брутфорс секретов на GPU - 150 млн HS256/сек
8. Psychic Signatures - нулевая подпись на Java 15-18
9. Криптография JWT для хакеров - ECDSA, RSA-PSS, EdDSA и где ломается математика
10. JWE — зашифрованные токены, Bleichenbacher, Invalid Curve, PBES2 DoS
11. JWT-библиотеки — рейтинг дырявости, Top 5 CVE, fingerprinting по токену
12. JWT в OAuth 2.0 и OIDC — token confusion, cross-service relay, ALBeast, DPoP bypass
13. XSS + JWT — кража токенов из localStorage, sessionStorage, cookies
14. Продвинутые криптоатаки — lattice, side-channels, fault injection
15. Инструменты - jwt_tool, hashcat, Burp JWT Editor
16. Методология
17. Hardcoded secrets — CVE-2025-20188 (CVSS 10.0), 17% JWT CVE за 2024-2026, где искать секреты
18. Что вместо JWT - PASETO, Macaroons, opaque tokens, server-side sessions
19. RFC 8725 - чеклист из 15 правил, который никто не читает
20. Постквантовый JWT - ML-DSA подписи по 2.4 KB, SD-JWT, Harvest Now Decrypt Later

💫 @pentestnotes
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42
Forwarded from Похек AI
Prompt Injection — полный гид по 14 классам атак
#promptinjection #llm #owasp #security

14 постов. Каждый класс атаки разобран: механизм, реальные кейсы, защита, моё мнение. От классического "Ignore previous instructions" до невидимых Unicode-payload-ов.

Написать эту серию заняло значительное время — ресерч, fact-checking, верификация каждого CVE и каждой цифры. Если было полезно, буду рад репосту в ваши каналы и чаты. Это не все виды атак, которые существуют, а только те что знаю я, смог сам разобраться и вам объяснить.

Все посты серии:

1. Direct Prompt Injection — "дедушка" всех LLM-атак
2. Indirect Prompt Injection — невидимый удар
3. EchoLeak — zero-click атака на AI через email
4. Operator Web Injection — отравление RAG и веба
5. Inception — документ как оружие
6. Goal-Lock Drift — что если агент тихо меняет цели?
7. Context Switching — "Ignore Previous Instructions" и его потомки
8. Structured Format Injection — 15+ способов спрятать payload в JSON/XML/YAML
9. Context Manipulation — социальная инженерия для AI
10. RAG Pipeline Attacks — 24 техники на каждый уровень пайплайна
11. Tool & Function Calling — когда prompt injection становится RCE
12. Special Token Injection — инъекция на уровне токенизатора
13. Delimiter Attacks — выдуманная "песочница"
14. Invisible Token Smuggling — payload, который не видно

И это только Prompt Injection — одна категория из шести в моей базе знаний. Jailbreaks, Training-time, Inference, Multimodal, Agentic — впереди.

🌚 @poxek_ai
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42👀1
Forwarded from Hacker Lab
Команда HackerLab заняла 2 место на AITU CTF 2026 Cyberpolygon! 🚗

24–25 апреля в Астане прошёл финальный этап AITU CTF 2026 — международные соревнования по кибербезопасности от FR13NDS TEAM и Astana IT University. В соревнованиях приняли участие команды из Японии, Узбекистана, Монголии, Казахстана и России.

Финал проходил в формате Cyber Range: реалистичная инфраструктура, Red Team-сценарии, Active Directory, hardware-задачи, GEOINT/GeoGuessr и Bug Bounty.

По итогам борьбы команда заняла 2️⃣ место в общем зачёте:
🧿 29 025 баллов
❗️ Risk: 23 625
🛡 Bug Bounty: 5 400

Топ-3 финала:
🥇 Team1337 — 33 085
🥈 HackerLab — 29 025
🥉 ctf_enjoyers — 26 418

Для нас это важный результат и подтверждение того, что постоянная практика, командная работа и любовь к кибербезопасности дают свои плоды.

Спасибо организаторам FR13NDS TEAM и Astana IT University за сильный финал, а всем участникам — за достойную борьбу.

Двигаемся дальше 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍411
Интересный экспириенс получился на самом деле

Приятная страна, приветливые люди, красивый университет и интересные задания

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

Если бы выспался получше, то точно бы первое взяли


#ctf
☠️ Hunt Or Be Hunted
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
9😈42👎1🔥1🤡1
У автора канала сегодня день рождения

Поздравления принимаются звездами и комментариями
7629🔥98🤡3
Prototype Pollution

💠 Предисловие
В JavaScript почти все объекты наследуют свойства и методы через prototype chain — цепочку прототипов.
Если у объекта нет собственного свойства, движок идет выше по цепочке и ищет его в прототипе. Именно поэтому объект может "уметь" что-то, даже если это явно в нем не записано.

Prototype Pollution — это уязвимость, при которой атакующий может изменить прототип объектов приложения и тем самым незаметно "подмешать" свойства или значения в другие объекты, которые с ним напрямую вообще не связаны.

🟡Тип:
Web, Client-Side / Server-Side

🟡Как это работает в общих чертах:
1️⃣ Приложение принимает объект из недоверенного источника
2️⃣ Объединяет его с другим объектом, копирует поля, парсит query/body/json без жесткой фильтрации
3️⃣ Специальные ключи, например __proto__, constructor.prototype, prototype попадают в процесс merge / assignment
4️⃣ В результате меняется не один конкретный объект, а поведение множества объектов в приложении через цепочку прототипов
Главная опасность в том, что само "загрязнение" часто выглядит безобидно и даже не ломает приложение сразу. Но после этого любой участок кода, который опирается на свойства объекта, может начать работать по-другому.

🟡Пример уязвимого кода
deepMerge(defaultConfig, JSON.parse(req.body))

🟥Если deepMerge не фильтрует опасные ключи, то пользовательские данные могут изменить прототип вместо обычной вложенной структуры.

🟡Разновидности:
- Client-Side - эксплуатация загрязняет протитипы в DOM и остается в браузере пользователя
- Server-Side - реализуется если бекенд приложения написан на Javascript-подобном языке (Node.js, TypeScript и пр.)

🟡Влияние:
- Обход авторизации и эскалация привилегий, например если код доверяет полям вроде isAdmin, role, authenticated и они явно не определяются при создании объекта
- Подмена настроек безопасности или логики приложения
- XSS на клиенте, если polluted-свойства доходят до DOM-логики или шаблонов
- Отказ в обслуживании, если поломать ожидаемую структуру объектов
- В отдельных случаях — SSRF, RCE или иные критичные эффекты, если загразнение доходит до опасных участков кода и нужных gadget chain

😎 Как защититься?
- Не смешивать недоверенные объекты с внутренними структурами "как есть"
- Фильтровать и явно запрещать опасные ключи (__proto__, prototype, constructor)
- Использовать безопасные структуры данных там, где это уместно, например Map или объекты через Object.create(null)
- Использовать schema validation и allowlist полей вместо парадигмы "принимаем любой JSON"
- Обновлять библиотеки для merge / parsing / cloning, т.к. prototype pollution очень часто живет именно в зависимостях
- Проверять только собственные свойства объекта через Object.hasOwn() / hasOwnProperty, а не доверять значениям из prototype chain
- Не строить критичную логику на "если поле не задано, значит false" без явной инициализации

Стоит отдельно сказать, что просто почистить пару известных гаджетов — обычно слабая защита. Проблема не только в конкретном sink'е, а в самом факте неконтролируемого изменения прототипа. Пока сохраняется возможность загрязнять объекты, новые способы применения почти всегда найдутся.

📖 Имхо-зона
Еще одна интересная уязвимость, для качественной эксплуатации которой нужно читать много кода (JS-кода, что большинство избегает). Самое интересное при ее изучении - смотреть на борьбу защитных механизмов, созданных для противодействия ей, и того, как их обходят с помощью той же самой уязвимости. Вообще, осознание этой баги скорее всего откроет вам понимание того, как в принципе работает JavaScript (я так свое время переоткрыл для себя fetch-конструкции), так что если хотите стать крутым вебером, то рано или поздно вам нужно будет пройти через эту уязвимость. Из ресурсов, которые существуют, лучше всего это объяснено в Portswigger Web Security Academy - объяснение там мне понравилось даже больше, чем в OSWE (в защиту OSWE скажу, что там вы глубже поймете теорию этой баги).

#edu #vuln #web #prototype_pollution
☠️ Hunt Or Be Hunted
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥21
Немного о созидании знаний

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

Вскользь упоминал об этом и раньше, но расскажу чуть подробнее. И начну, безусловно, с самого приятного: по итогу первого прочтения курса он получил оценку, если не ошибаюсь, 4,6 из 5, а также две награды (оранжевые шильдики на картинке выше). Обе этих метрики - это результат оценивания ~120 студентов, прошедших данный курс. Знаю, что часть причастных к данному событию сейчас читают этот текст, поэтому тут также поблагодарю вас за столь высокую оценку моих усилий.

Сама дисциплина от этапа возникновения идеи, которая у меня появилась, кажется, еще в бакалавриате - результат вложений достаточно большого количества сил и времени. Для того, чтобы дисциплина оказалась такой, какой ее увидели студенты в этом учебном году, было потрачено много дней и ночей на детальное планирование общего содержания курса, каждого занятия в частности, каждой лабораторной работы, системы оценивания, материалов лекций (сделать 18 полуторачасовых презентаций - это был прям отдельный вид страданий), организацию элементов контроля, в том числе контрольную-CTF. Ну и само собой, чтение этих самых лекций и проведение семинаров.

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


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

В общем и целом, надеюсь, что у меня получилось сделать качественный вклад в развитие будущего информационной безопасности. Планка задана, теперь движемся только выше. Как говорится,
Дальше - больше


#teaching #thoughts #achievement
☠️ Hunt Or Be Hunted
Please open Telegram to view this post
VIEW IN TELEGRAM
23🔥8🏆7👍1