Pull to refresh
0
Василь Бєляєв @VXPread⁠-⁠only

C#, C++, Lua

Send message

Укрощаем UEFI SecureBoot

Reading time11 min
Views185K
Данные обещания надо выполнять, тем более, если они сделаны сначала в заключительной части опуса о безопасности UEFI, а потом повторены со сцены ZeroNights 2015, поэтому сегодня поговорим о том, как заставить UEFI SecureBoot работать не на благо Microsoft, как это чаще всего настроено по умолчанию, а на благо нас с вами.
Если вам интересно, как сгенерировать свои собственные ключи для SecureBoot, как установить их вместо стандартных (или вместе с ними), как подписать ваш любимый EFI-загрузчик, как запретить загрузку неподписанного или подписанного чужими ключами кода, как выглядит интерфейс для настройки SecureBoot у AMI, Insyde и Phoenix и почему это, по большому счету, совершенно не важно — добро пожаловать под кат, но опасайтесь большого количества картинок и длинных консольных команд.
Войти в клетку

Hydroph0bia (CVE-2025-4275) — тривиальный обход SecureBoot в UEFI-совместимых прошивках на базе платформы Insyde H2O

Level of difficultyMedium
Reading time9 min
Views2.8K

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

Уязвимость эта позволяет надежно (и незаметно для средств мониторинга стандартных переменных UEFI SecureBoot вроде db, KEK и PK) обойти механизм проверки подписей UEFI-драйверов и UEFI-загрузчиков, а для её успешной эксплуатации требуется только возможность записи в UEFI NVRAM (доступная и в Windows, и в Linux после локального повышения привилегий).

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

Читать далее

Как собрать Docker-образ, который можно запускать в проде (а не только у себя на ноуте)

Level of difficultyEasy
Reading time4 min
Views25K

Если ты пишешь Dockerfile, скорее всего, он работает. Но вопрос не в том, работает ли. Вопрос в другом: будет ли он работать через неделю, на другом сервере, в CI/CD, на чужом железе — и будет ли это безопасно?

Читать далее

Призраки в коммитах: как я заработал $64 000 на удаленных файлах в Git

Reading time12 min
Views39K

Сегодня расскажу, как построил систему, которая клонирует и сканирует тысячи публичных GitHub-репозиториев — и находит в них утекшие секреты.

В каждом репозитории я восстанавливал удаленные файлы, находил недостижимые объекты, распаковывал .pack-файлы и находил API-ключи, активные токены и учетки. А когда сообщил компаниям об утечках, заработал более $64 000 на баг-баунти.

Читать далее

ИБ-исследователь Michal Wozniak: «Telegram неотличим от приманки спецслужб»

Level of difficultyMedium
Reading time19 min
Views36K

Многие люди, занимающиеся информационной безопасностью, включая меня, давно считают Telegram подозрительным и ненадежным. Теперь, основываясь на выводах, опубликованных расследовательским журналистским изданием IStories*, и моем собственном анализе перехватов пакетов из Telegram для Android и протокола Telegram, описанного ниже, я считаю Telegram неотличимым от ханипота для слежки.

Читать далее

Огромный гайд по настройке рабочего окружения: Linux, VScode, Python

Level of difficultyEasy
Reading time29 min
Views43K

Привет всем!

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

Я люблю и одновременно ненавижу статьи-обзоры в стиле «10 программ для {whatever}». Ненавижу — потому что их очень легко делать, вбил в гугл «программа для X», взял первые 10 ссылок, статья готова. Я называю такие статьи «лёгкий рейтинг». А люблю я их за то, что даже если 9 пунктов — чушь полная, то десятый, как правило, годный, я узнаю что-то новое, это что-то облегчает мне жизнь и позволяет мне быть более продуктивным.

Сегодня я побуду автором такой статьи — я расскажу вам про то, какие штуки я использую в разработке на питоне, если что-то из этого будет кому-то полезно — я буду рад. В своё время мне этого не хватало. А если вы знаете что-то круче — разнесите меня в комментариях.

Статья получилась ОГРОМНАЯ, и у меня был большой соблазн разбить её на сотню статей поменьше, чтобы в каждой ставить ссылки на свой телеграм-канал и получать гонорар за каждую по отдельности. Но я не буду. Пусть знания будут сгруппированы вместе. Welcome!

Читать далее

Обработка ошибок и их стратегии

Level of difficultyMedium
Reading time31 min
Views1.7K

В мире разработки бизнес-приложений, особенно построенных по принципам Domain-Driven Design (DDD), важным элементом архитектуры является обработка ошибок. Неправильно реализованная стратегия может привести к логическому хаосу и плохому пользовательскому опыту. Представьте, если ошибка базы данных попадёт напрямую в UI — это не только некрасиво, но и опасно.

Слоистая архитектура предполагает чёткое разделение ответственности:

Читать далее

История одного редизайна. Экран карты в мобильном приложении ОТП Банка

Level of difficultyEasy
Reading time5 min
Views1.7K

Привет, Хабр! Меня зовут Митя и я занимаюсь развитием цифровых продуктов в ДБО в ОТП Банке.

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

В статье расскажу, как мы подошли к задаче, что изменили и к каким результатам это привело. Материал будет полезен тем, кто развивает мобильные приложения — особенно в финтехе.

Читать далее

Чему инди-эксперименты могут научить гейм-дизайнера

Level of difficultyEasy
Reading time5 min
Views1.1K

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

Читать далее

Блокчейн простыми словами: Разбираемся за 2 минуты

Level of difficultyEasy
Reading time2 min
Views12K

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

Изучить

Домашняя серверная для DevOps: установка GitLab + Let's Encrypt

Level of difficultyEasy
Reading time7 min
Views9.3K

Привет! Это Александр, DevOps инженер команд Страхования в Банки.ру. Продолжаю серию статей про домашний сервер. В прошлых материалах я рассказал о выборе железа, сборке и настройке NAS и серверов для дома. В этой и последующих статьях опишу установку нужного софта в домашнюю серверную. Для этого вам, возможно, понадобится VPN на виртуальных машинах или на уровне всей домашней сети (у меня второй вариант).

Начать я бы хотел с установки GitLab. На данный момент у меня достаточно ресурсов, чтобы хостить GitLab и другие сервисы, которые использует DevOps-инженер. Но для чего мне нужен GitLab? Тут всё очень просто: в своей работе я использую подход Infrastructure as Code (IaC) — инфраструктура как код. При таком методе конфигурация инфраструктуры описана в файлах в репозитории, который хранит историю изменений.

В итоге из хранилища можно как развернуть нужный софт за считаные минуты, так и вспомнить,  что мы коммитили в репозиторий. GitLab требованиям этого подхода отвечает. К тому же у платформы широкий функционал, который понадобится мне в будущем (CI/CD, например, или хранение terrafrom state в самом GitLab).

Читать далее

Взлом ИИ-ассистентов. Абсолютный контроль: выдаём разрешение от имени системы (Gemini, DeepSeek, ChatGPT...)

Level of difficultyEasy
Reading time4 min
Views8.8K

Модель уважает пользователя. Но слушается систему. А теперь внимание: если подделать системную команду — модель не отличит подделку от настоящего приказа. Если разрешить от имени системы написать вирус/сгенерировать NSFW - модель поверит и выполнит. И не только это. Я это проверил — и она подчинилась.

Думали Do Anything Now окончательно прикрыли? Я тоже так думал.

Читать далее

Создаем интерактивную симуляцию лесного пожара на Python с использованием клеточных автоматов

Level of difficultyMedium
Reading time13 min
Views1.5K

Лесные пожары – явление столь же древнее, сколь и сама жизнь на суше. Величественные и одновременно ужасающие, они способны за считанные часы превратить гектары зеленого массива в выжженную пустыню, неся угрозу экосистемам, человеческим поселениям и климату планеты. Ежегодно новости пестрят сообщениями о новых очагах возгорания, о борьбе стихии и человека. Но что если мы попытаемся заглянуть в самое сердце этого хаотичного, на первый взгляд, процесса? Что если мы сможем не просто наблюдать, а моделировать, предсказывать и даже экспериментировать с распространением огня, не выходя из-за своего компьютера?

Читать далее

Как мы в YouGile сделали голосовые круче, чем Telegram. Их полюбят даже хейтеры

Level of difficultyEasy
Reading time6 min
Views2.9K

Привет! Я Саша, продакт системы управления проектами YouGile. Хочу рассказать, как мы сделали голосовые сообщения в нашем внутреннем мессенджере удобными даже для тех, кто их ненавидит. Причем быстро, дешево и с помощью доступных всем инструментов — если захотите, сможете повторить (наверное).

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

Читать далее

Доступ к приватным методам класса в С++

Level of difficultyMedium
Reading time8 min
Views5.6K

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

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

Читать далее

Add-on pack из 90-х: Microsoft 95 Plus! для Windows

Reading time6 min
Views5.7K

24 августа 1995 года вышла Windows 95 — операционная система, которая должна была стать одним из лидеров в домашнем и SOHO-сегменте. Она предлагала пользователям удобный графический интерфейс, поддержку многозадачности и функцию Plug&Play. Правда, работало это далеко не идеально: в народе технология получила ироничное прозвище Plug&Pray («подключи и молись»). Зато с архитектурной точки зрения это был серьезный шаг вперед — переход от 16-битных к 32-битным приложениям.

Как это часто бывает, к моменту релиза далеко не все запланированные функции были готовы. Разработчики стояли перед выбором: внедрить недоработанные фичи и рисковать стабильностью или отложить их на потом. В итоге дополнительные возможности решили выделить в отдельный коммерческий продукт. Так появилась первая версия Windows 95 Plus! — своеобразное дополнение к основной системе. О нем сегодня и расскажу.

Читать далее

Объяснение графических процессоров для тех, кто привык работать с ЦП

Level of difficultyMedium
Reading time7 min
Views5.8K

За годы работы я подробно изучил, как центральные процессоры (CPU) выполняют код и как они устроены внутри. Дело в том, что я участвовал в разработке ядра Linux и ScyllaDB, а этот код очень близок к металлу. Я даже немного баловался с Verilog, безрезультатно попытавшись собрать моё собственное ядро RISC-V.

Графические процессоры (GPU) в отличие от обычных в основном оставались для меня чёрным ящиком, несмотря на то, что поработать с ними всё-таки довелось. Помню, что экспериментировал с NVIDIA RIVA 128 или чем-то подобным, проверяя, как там работает DirectX. Тогда такие процессоры ещё не выделялись на фоне ускорителей 3D-графики. Я также пытался идти в ногу со временем и немного упражнялся в программировании элементарных шейдеров на современных GPU. Но я никогда глубоко не вдавался в работу с GPU, и мои взгляды можно назвать CPU-центричными.

Однако, поскольку сегодня наблюдается всплеск рабочих нагрузок, связанных с ИИ, и, в частности, приходится работать с большими языковыми моделями (БЯМ), графические процессоры становятся незаменимыми для современных вычислений. К задачам, решаемым с применением ИИ, относятся масштабные прикладные тензорные операции, в том числе — сложение и перемножение матриц. А это уже работа для GPU. Но как современный GPU выполняет их, и насколько при этом возрастает эффективность по сравнению с выполнением таких же рабочих нагрузок на CPU?

Читать далее

За полчаса установил DeepSeek 1.5B, пока вы искали GPT подешевле

Level of difficultyEasy
Reading time11 min
Views81K

DeepSeek 1.5B — маленький, но шустрый собрат больших языковых моделей. Работает локально, не требует железа на киловатт.

Внутри — инструкция по установке, настройке и запуску DeepSeek 1.5B на Ubuntu 24.04 с Ollama и Open WebUI.

Читать далее

IQ — во многом псевдонаучный обман

Level of difficultyMedium
Reading time16 min
Views7.9K

СПОР ЗАКРЫТ (2025) Спор теперь можно считать закрытым благодаря статье Брауна, Вая и Чабриса, которые пытались опровергнуть текст ниже, но вместо этого подтвердили все его выводы. Их статья — самая свежая на тему IQ, основанная на исследованиях нескольких групп людей, — невольно показала, что IQ почти ничего не объясняет: ни успехи в образовании, ни достижения в профессии, ни… доход! И это несмотря на всю круговую логику. Я не замечал эту статью до 2024 года.

Читать далее

Сравниваем скорость генерации LLM локально и по API

Reading time4 min
Views4.7K

По ощущениям, на Хабре одна группа пользователей пользуется LLM локально, а другая - через внешние API.

А третья еще не определилась, и у неё периодически возникают следующие вопросы:

- Что будет, если запускать LLM на CPU вместо GPU? Сильно упадет скорость?
- А как это от размера модели зависит?
- А DeepSeek оригинальный очень большой - а можно его с диска подкачивать, если он в RAM не влезает?

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

TLDR: Я сделал небольшое HTML-приложение, которое наглядно дает ощущение скорости генерации в разных инсталляциях. Если непонятно, что там к чему - то лучше прочитать статью.

Читать далее
1
23 ...

Information

Rating
Does not participate
Location
Одесса, Одесская обл., Украина
Date of birth
Registered
Activity