Технологический Болт Генона
8.49K subscribers
3.08K photos
380 videos
214 files
3.95K links
До Декарта никогда не существовало рационализма.

Музыкальный Болт Генона: @mus_b0lt_Genona
Мемный Болт Генона: @mem_b0lt_Genona
Кадровый Болт Генона @kadr_b0lt_Genona

Обратная связь: @rusdacent
Download Telegram
.
Леннарт Поттеринг (Lennart Poettering) предложил включить в системный менеджер systemd изменение, позволяющие загружать систему с использованием образа корневой ФС, получаемого c внешнего хоста по протоколу HTTP. Изменение сводится к расширению systemd возможностью не только скачивать дисковый образ по HTTP на начальной стадии загрузки, но и распаковывать загруженный образ, связывать с блочным устройством в loopback-режиме, монтировать блочное устройство как /sysroot и загружать с него систему.
. . .
Предполагается, что загрузка с образов, получаемых с внешнего хоста, упростит организацию тестирования современных неизменяемых ("immutable") операционных систем на реальном оборудовании. Разработчик может на своём компьютере сформировать образ с системным окружением утилитой mkosi и сделать его доступным через HTTP командой "mkosi -f serve". На компьютере, на котором требуется протестировать работу системы, достаточно включить в EFI загрузку по HTTP и добавить URL загружаемого образа командой:

kernel-bootcfg --add-uri=http://192.168.47.11:8081/image.efi --title=testloop --boot-order=0

После чего можно просто перезагрузить компьютер и он загрузит типовой образ ядра UKI, который затем загрузит подготовленный разработчиком дисковый образ с корневой ФС. До отключения в EFI загрузки по HTTP каждая последующая перезагрузка компьютера будет приводить к загрузке свежего системного образа. При подобном тестировании никак не затрагиваются локальные диски.

Для systemd развивается возможность загрузки системных образов по HTTP
https://www.opennet.ru/opennews/art.shtml?num=62711

Оригинальный тред
https://mastodon.social/@pid_eins/113979730693247159
👀13🤡9🔥5🫡5👍4👌2🗿1
Четверг, а значит время проектов от подписчиков! 🌝

Тем, кто пропустил, что такое четверговые проекты от подписчиков, можно прочитать тут - https://xn--r1a.website/tech_b0lt_Genona/4983

Слово автору @Ihippik
---
Есть совершенно простое решение для публикации изменений данных в ваших таблицах PostgreSQL в брокер сообщений. Change Data Capture (CDC).
Например удалили какую-то строку, изменили или быть может добавили - вы сразу же получаете сообщение об этом со всеми подробностями в ваш брокер сообщений.
Благодаря этому вы сможете строить сложные event-driven системы или просто как-то реагировать на изменения ваших данных.
Механизм построен на логической репликации и использовании WAL.

https://github.com/ihippik/wal-listener
---
👍23👎1🤡1
Продолжаем четверг!

В Москве есть абсолютно замечательный музей криптографии
https://cryptography-museum.ru/

А ещё там проводится разговорный клуб "Секреты стаи слонов" (в который как-то раз даже чуть не попал, когда был проездом)

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

Я её как-то цитировал про Docs-as-Code
https://xn--r1a.website/tech_b0lt_Genona/4718

Слово автору @freyapero
---
На базе Музея криптографии у нас действует бесплатный разговорный клуб в формате открытых подкастов.
https://cryptography-museum.ru/events/klub-sekrety-stai-slonov

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

Мы хотим привлекать в проект новых интересных людей из IT и не только — как спикеров, так и слушателей. А ещё мы собираемся неформально для нетворкинга и совместных активностей: спорта, досуга и т.п.

Вот немного о нас:
Телеграм-канал с анонсами - @slonomoikaevent
Сайт - https://www.slonomoika.space

Будем ждать новых слонов ❤️
---
🔥175👎5❤‍🔥42
Правительство РФ утвердило параметры эксперимента по внедрению системы добровольного подтверждения компетенций для разработчиков ПО. Это возможность для работодателей и образовательных учреждений точнее определять уровень ИТ-компетенций и подбирать подходящих сотрудников, а для специалистов — проверить свои знания и получить сертификат, подтверждающий их уровень. С 31 мая 2025 года любой желающий, независимо от уровня образования, сможет пройти тесты и выполнить практические задания. В этом году на платформе планируется разместить материалы по 21 направлению (Python, Java, Git и другие).

Примечательно, что Ассоциация предприятий компьютерных и информационных технологий (АПКИТ; входят VK, 1C, Softline) работает над другим способом подтверждения компетенций в IT — путем сертификации, по аналогии с вендорскими системами ушедших из РФ компаний. Председатель совета АПКИТ по развитию сертификации IT‑специалистов Наталья Починок сообщила СМИ, что ассоциация, помимо создания своей системы, участвует в разработке аналогичной сторонней системы на правах экспертов. В инициативе АПКИТ «заложена гармонизация требований к сертификатам участников, включая идентификацию по СНИЛС, что даст возможность в будущем интегрироваться с госсервисами».
В «Хабре» пояснили СМИ, что видят интерес аудитории сайта к оценке навыков на базе сайта: «Считаем, что на российском рынке должен быть набор разных возможностей оценки от разных игроков».
У каждой компании существуют собственные требования к квалификации специалистов, уточнила СМИ директор по персоналу Postgres Professional Ксения Замуховская. По её словам, «если у IT‑компаний будут запрашивать такие данные, то маловероятно, что найдутся желающие их распространять — есть риск раскрытия чувствительной информации».
Основатель IT‑компании Tiqum Юрий Гизатуллин считает, что систему подтверждения навыков нужно строить не на базе текущего решения одной компании, а в формате отдельной платформы.

Утверждены параметры эксперимента по внедрению системы добровольного подтверждения компетенций для разработчиков ПО в РФ
https://habr.com/en/news/882096/

Оригинал
http://government.ru/news/54223/
🤡61👍7😁5👎311🥰1🤬1💊1
В экосистеме языка программирования Go обнаружен вредоносный пакет, остававшийся незамеченным три года...злоумышленники подменили популярный пакет базы данных BoltDB, используемый тысячами организаций, включая Shopify и Heroku
. . .
BoltDB, расположенный на GitHub по адресу github.com/boltdb/bolt , был создан девять лет назад и перестал обновляться спустя год после релиза. Атакующие использовали технику тайпосквоттинга, создав поддельный пакет github.com/boltdb-go/bolt. Разница в названии минимальна, но при установке подделки в проекте появляется бэкдор, позволяющий выполнять удалённый код.
. . .
Несмотря на то, что вредоносная версия оставалась доступной на Go Module Proxy в течение трёх лет, следов её массового использования не найдено. По данным Бойченко, поддельный пакет импортировался лишь дважды, причём оба раза — одним криптовалютным проектом, у которого всего семь подписчиков. Статистика скачиваний в Go не ведётся, но отсутствие звёзд и форков на GitHub за три года говорит о том, что модуль не получил широкого распространения.

Тем не менее, инцидент выявил уязвимость в системе управления пакетами Go. При первой загрузке новый пакет кешируется сервисом Go Module Mirror и остаётся доступным бессрочно. Злоумышленники воспользовались этим, сначала разместив безобидную версию, а затем изменив Git-теги, чтобы при проверке пакет выглядел легитимным. В то же время в кеше продолжала распространяться вредоносная версия.
. . .
неизменяемость модулей одновременно улучшает безопасность экосистемы и создаёт возможности для атак. Он призвал разработчиков тщательно проверять целостность пакетов перед установкой, анализировать зависимости и использовать инструменты для глубокого аудита кода.

Три года в тени: тайпсквоттинг стал угрозой для всей экосистемы Go
https://www.securitylab.ru/news/556167.php

Оригинал
Go Supply Chain Attack: Malicious Package Exploits Go Module Proxy Caching for Persistence
https://socket.dev/blog/malicious-package-exploits-go-module-proxy-caching-for-persistence
😁20👀10👍4🤯2👎1🤩1
Хороший пост от Cloudflare в котором показаны примеры различных ситуаций при, по сути, одинаковом уведомлении ядра Linux о зависшей задаче.

INFO: task XXX:1495882 blocked for more than YYY seconds.
Tainted: G O 6.6.39-cloudflare-2024.7.3 #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
task:XXX state:D stack:0 pid:1495882 ppid:1 flags:0x00004002
. . .


Example #1 or XFS
. . .
Summary: In this case, nothing critical happened to the system, but the hung tasks warnings gave us an alert that our file system had slowed down.

Example #2 or Coredump
. . .
Summary: This example showed that even if everything suggests that the application is the problem, the real root cause can be something else — in this case, coredump.

Example #3 or rtnl_mutex
. . .
Summary: The hung task messages were the only ones which we had in the kernel log. Each stack trace of these messages was unique, but by carefully analyzing them, we could spot similarities and continue debugging with other instruments.

Epilogue

Your system might have different hung task warnings, and we have many others not mentioned here. Each case is unique, and there is no standard approach to debug them. But hopefully this blog post helps you better understand why it’s good to have these warnings enabled, how they work, and what the meaning is behind them. We tried to provide some navigation guidance for the debugging process as well:

- analyzing the stack trace might be a good starting point for debugging it, even if all the messages look unrelated, like we saw in example #3

- keep in mind that the alert might be misleading, pointing to the victim and not the offender, as we saw in example #2 and example #3

- if the kernel doesn’t schedule your application on the CPU, puts it in the D state, and emits the warning – the real problem might exist in the application code

Searching for the cause of hung tasks in the Linux kernel
https://blog.cloudflare.com/searching-for-the-cause-of-hung-tasks-in-the-linux-kernel/
👍141
🫡

Скончался болгарский художник и арт-директор видеоигр Виктор Антонов.

Виктор Антонов — художник, дизайнер, режиссёр, писатель и сценарист, известный прежде всего как художественный директор и главный дизайнер игры Half-Life 2.

https://halflife.fandom.com/ru/wiki/%D0%92%D0%B8%D0%BA%D1%82%D0%BE%D1%80_%D0%90%D0%BD%D1%82%D0%BE%D0%BD%D0%BE%D0%B2
🫡87😢6🎉1🤩1🍾1
В результате атаки злоумышленникам удалось получить ключ для доступа к API, применяемому для удалённого оказания услуг технической поддержки клиентам SaaS-сервисов BeyondTrust. Данный API был использован для сброса пароля и компрометации инфраструктуры Министерства финансов США, пользующегося продуктами BeyondTrust. В ходе атаки злоумышленники смогли загрузить конфиденциальные документы и получили доступ к рабочим станциям сотрудников министерства.

Уязвимость проявляется в библиотеке libpq, предоставляющей API для взаимодействия с СУБД из программ на языке Си (поверх библиотеки также реализованы библиотеки-обвязки для C++, Perl, PHP и Python). Проблема затрагивает приложения, использующие для экранирования спецсимволов и нейтрализации кавычек функции PQescapeLiteral(), PQescapeIdentifier(), PQescapeString() или PQescapeStringConn().

Атакующий может добиться подстановки своего SQL-кода, если получаемый извне текст перед использованием внутри SQL-запроса экранируется при помощи вышеотмеченных функций libpq. В приложениях BeyondTrust экранированные подобным образом запросы передавались через утилиту командной строки psql. Уязвимость вызвана отсутствием в функциях экранирования проверки корректности используемых в тексте Unicode-символов, что позволяет обойти нормализацию кавычек через указание некорректных многобайтовых последовательностей UTF-8.

Для эксплуатации уязвимость можно использовать некорректный UTF-8 символ, состоящий из байт 0xC0 и 0x27 ("└'"). Байт 0x27 в ASCII-кодировке соответствует одинарной кавычке ("'"), подлежащей экранированию. В коде экранирования сочетание байтов 0xC0 и 0x27 обрабатывается как один Unicode-символ. Соответственно, байт 0x27 в такой последовательности остаётся не экранирован, при том, что при обработке SQL-запроса в утилите psql он обрабатывается как кавычка.

При запуске SQL-запросов при помощи утилиты psql для организации выполнения произвольного кода можно использовать подстановку в строку команды "\!", предназначенной в psql для запуска произвольных программ. Например, для запуска на сервере утилиты "id" можно передать значение "hax\xC0'; \! id #". В примере ниже для экранирования вызывается PHP-скрипт dbquote, использующий PHP-функцию pg_escape_string, работающую поверх функции PQescapeString из libpq:

$ echo -e "hello \xC0'world'" | ./dbquote
'hello └'world'''

$ quoted=$(echo -e "hax\xC0'; \! id # " | ./dbquote)

$ echo "SELECT COUNT(1) FROM gw_sessions WHERE session_key = $quoted AND session_type = 'sdcust' AND (expiration IS NULL OR expiration>NOW())" | psql -e

SELECT COUNT(1) FROM gw_sessions WHERE session_key = 'hax└';
ERROR: invalid byte sequence for encoding "UTF8": 0xc0 0x27

uid=1000(myexamplecompany) gid=1000(myexamplecompany)

В PostgreSQL устранена уязвимость, использованная при атаке на BeyondTrust
https://www.opennet.ru/opennews/art.shtml?num=62722

Ссылка на подробный разбор баги
CVE-2024-12356
https://attackerkb.com/topics/G5s8ZWAbYH/cve-2024-12356/rapid7-analysis
🔥21🎉3🤩3😐2👍1🍾1
Forwarded from useful security dump
Вышла моя долгожданная статья по мотивам одного прошлогоднего пентеста. её я без при увеличения писал месяц, это был(о) тяжело

внутри вас ждет:

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

https://luntry.ru/lomaem-vashi-videokarty-raspakovka-eksplojta-dlya-cve-2024-0132-pod-nvidia-container-toolkit
12🥴32👍1
Что такое GIL в Python?

Кажется, один из золотых вопросов для всех питонистов на собеседованиях.
Обычно, на встречный вопрос "а что конкретно в питоне является GIL?" не может ответить ни один спрашивающий.

Сегодня мы закроем данный пробел в знаниях питонистов.

Global Interpreter Lock не позволяет работать более чем одному треду работать с Python API за раз. Его можно отключить через --disable-gil в 3.13+, но сегодня мы про такое не будем.

Обратите внимание на ключевую фразу "c Python API". С системными треды могут и должны работать в режиме настоящей параллельности, без GIL. Что и позволяет получить ускорение при использовании threading, когда C код поддерживает такой способ.

Знакомьтесь – вот структура GIL _gil_runtime_state и поведение в ceval_gil.c.

Как можно отпустить GIL?

На уровне C есть макросы: Py_BEGIN_ALLOW_THREADS и Py_END_ALLOW_THREADS, которые отпускают GIL в нужных местах. Пример из модуля mmap:


Py_BEGIN_ALLOW_THREADS
m_obj->data = mmap(NULL, map_size, prot, flags, fd, offset);
Py_END_ALLOW_THREADS


Или time.sleep, который тоже дает работать другим тредам, пока ждет.

Что происходит, когда мы используем данный макрос? Они разворачиваются в:


{
PyThreadState *_save;
_save = PyEval_SaveThread();
// your code here
PyEval_RestoreThread(_save);
}


PyThreadState является текущим состоянием треда в CPython. Внутри хранится много контекста. Нас особо сильно интересует часть с полями про GIL:


struct PyThreadState {
struct {
unsigned int initialized:1;
/* Has been bound to an OS thread. */
unsigned int bound:1;
/* Has been unbound from its OS thread. */
unsigned int unbound:1;
/* Has been bound aa current for the GILState API. */
unsigned int bound_gilstate:1;
/* Currently in use (maybe holds the GIL). */
unsigned int active:1;
/* Currently holds the GIL. */
unsigned int holds_gil:1;
} _status;

// Thread state (_Py_THREAD_ATTACHED, _Py_THREAD_DETACHED, _Py_THREAD_SUSPENDED).
int state;

// ...
}


Когда вызывается PyEval_SaveThread и GIL отпускается, то на самом деле мы просто помечаем текущий PyThreadState как:


tstate->_status.active = 0;
tstate->_status.unbound = 1;
tstate->_status.holds_gil = 0;
tstate->state = detached_state;


И вызываем _PyEval_ReleaseLock, который уже правильно изменит _gil_runtime_state.
Как итог – текущий стейт теряет возможность вызывать какие-либо Python АПИ. Даже, например Py_DECREF, и в тредах есть свой refcount, который работает локально, чтобы можно было его вызывать без GIL.

Как треды берут GIL?

Смотрим на thread_run из _threadmodule.c.


_PyThreadState_Bind(tstate);
PyEval_AcquireThread(tstate);
_Py_atomic_add_ssize(&tstate->interp->threads.count, 1);


Там используется PyEval_AcquireThread, который берет GIL в конкретном треде для работы с Python API.
И дальше – отпускаем.

В следующих сериях поговорим про переключение тредов, ParkingLot API, Mutex'ы и прочее.
Обсуждение: сталкивались ли вы на собесах с вопросами про GIL? Стало ли теперь понятнее?

| Поддержать | YouTube | GitHub | Чат |
🔥12👍6🤡32
Технологический Болт Генона
13 февраля выступаю на ТБ Форуме в треке "Подходы и инструменты управления процессом РБПО (Разработки Безопасного Программного Обеспечения)". Буду вести мастер-класс, где покажу и расскажу, как можно проводить анализ СЗИ (средств защиты информации) в контейнерном…
Media is too big
VIEW IN TELEGRAM
Запись моего мастер-класса на ТБ Форуме 2025

Презентация доступна по ссылке (в комменты тоже скину)
https://www.tbforum.ru/hubfs/Digital/SS/SS_ADAPT/TBF_13-02-25_MK_RBPO_Karpenko.pdf

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

UPD Один из подписчиков фиксанул звук, за что ему большое спасибо. Залил в комментарии поправленную версию.
🔥18👍3
Коммит моё почтение
https://github.com/ValveSoftware/source-sdk-2013/commit/0759e2e8e179d5352d81d0d4aaded72c1704b7a9

Valve открыла сырцы для Team Fortress 2

Mod makers, rejoice! We've just released a massive update to the Source SDK, adding all the Team Fortress 2 client and server game code. This update will allow content creators to build completely new games based on TF2. We're also doing a big update to all our multiplayer back-catalogue Source engine titles (TF2, DoD:S, HL2:DM, CS:S, and HLDM:S), adding 64-bit binary support, a scalable HUD/UI, prediction fixes, and a lot of other improvements!

The TF2 SDK has arrived!
https://www.teamfortress.com/post.php?id=238809

Source SDK 2013
https://developer.valvesoftware.com/wiki/Source_SDK_2013
🔥506😁5👍1
Чо началось то

From: "H. Peter Anvin" <hpa@zytor.com>
. . .
Once again, let me emphasize that I do *not* suggest that the kernel code should use STL, RTTI, virtual functions, closures, or C++ exceptions. However, there are a *lot* of things that we do with really ugly macro code and GNU C extensions today that would be much cleaner – and safer – to implement as templates. I know ... I wrote a lot of it :)

One particular thing that we could do with C++ would be to enforce user pointer safety.

https://lore.kernel.org/rust-for-linux/326CC09B-8565-4443-ACC5-045092260677@zytor.com/
😁13🤓6🤡4👍21
Hello CNCF TOC,

A CNCF member brought to my attention governance related messaging in the context of https://www.whitehouse.gov/presidential-actions/2025/01/ending-illegal-discrimination-and-restoring-merit-based-opportunity/"

Should online documentation be re-worded to clarify the spirit of terms like inclusive (respectful constructive feedback on PRs), diversity (of companies involved in a project to ensure its not skewed), ..

Regards

Malini

https://lists.cncf.io/g/cncf-toc/topic/111271310#msg8749

За наводку спасибо @glina_nauchit
😁11🥰4
Четверг, а значит время проектов от подписчиков! 🌝

Тем, кто пропустил, что такое четверговые проекты от подписчиков, можно прочитать тут - https://xn--r1a.website/tech_b0lt_Genona/4983

Слово автору @devfm
---
Мой бесплатный курс по линукс-терминалу для разработчиков

https://stepik.org/course/169291

1.5к записавшихся и 4.8 рейтинга на 50 отзывов

Покрывает важные аспекты работы в консоли, которые, на мой взгляд, слабовато раскрыты в книгах, и приходят только с опытом работы. Покрыты:
- навигация в терминале со всякими штуками типа ctrl-r
- короткие и длинные флаги команд
- консольные редакторы
- управление процессами типа jobs, fg, bg
- азы конвейера и вообще логика построения цепочек команд
- настройка терминала
- права доступа
---
🔥31👍113
Продолжаем четверг!

Слово автору @misha_enterprise
---
Буду рад если расскажете о моем проекте (может быть вы даже слышали о нем раньше 🙂)

TLDR - 50 секундное демо - https://www.youtube.com/watch?v=hzYE6afbvzY

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

1. Курс инженера по безопасности - 9 лаб, в каждой 4-8 заданий, каждое с теорией. Мы проведем пользователей от использования баша до детектов инцидентов по логам- ссылка чтобы попробовать 1 лабу без регистрации и смс - https://defbox.io/workshop/invite/0ZSO

2. Подробная лаба о том как малварь может использовать ДНС трафик чтобы скрытно общаться с С2 сервером - учит использовать тулы для пост-эксплуатации через DNS а потом учит как такое найти используя логи DNS сервера - https://defbox.io/workshop/invite/OWAC

3. Несколько челленджей для девопсов, например задания по удалению файлов логов, но так чтобы не помешать программе которая логи пишет - https://defbox.io/workshop/invite/AUUP
---
🔥1917👍3
Close to 4 years ago I talked about reverse engineering the Stream Deck to gain full control of the device and remove the dependence on the Stream Deck software. Well, I still really enjoy the hardware, but the software has gotten worse - it now goes as far as to requiring users for an account to download extensions.
. . .
If we’ve interacted in the past, I am big on respecting customer privacy and choices, and that means - if I want to use a device without an account, I better be damn able to do that. Luckily, building on my past work with DeckSurf, I finally was determined to push the pedal to the metal and make my project a viable alternative to proprietary software for this extremely versatile and flexible button box.

This post is going to be looking at the workings of the Stream Deck Plus, a $179.99 (discounted by $20 at the time of this writing) and how you, dear reader, can use it even if you don’t want to install Elgato’s own software.

Reverse Engineering The Stream Deck Plus
https://den.dev/blog/reverse-engineer-stream-deck-plus/

Пост 2021 года
Reverse Engineering The Stream Deck
https://den.dev/blog/reverse-engineering-stream-deck/
+
DeckSurf - Open Stream Deck SDK & Tooling
https://docs.deck.surf/
👍15❤‍🔥4