Обновить
128K+

GitHub *

Веб-сервис для хостинга и разработки IT-проектов

79,12
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Взлом GitHub-репозиториев Grafana Labs: как атака на цепочку поставок npm привела к краже кодовой базы и вымогательству

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели8.1K

Часть I: Первопричина - атака Mini Shai-Hulud на экосистему TanStack

Цепочка поставок как вектор атаки

11 мая 2026 года, в промежутке с 19:20 до 19:26 UTC, произошло одно из наиболее технически изощрённых событий в истории атак на цепочку поставок npm. Группировка TeamPCP опубликовала 84 вредоносные версии пакетов в рамках 42 пакетов из пространства имён @tanstack/* - и всё это за шесть минут.

Кампания получила название Mini Shai-Hulud - отсылка к гигантским песчаным червям из вселенной «Дюны» Фрэнка Герберта. Это не первая волна активности TeamPCP: до этого они скомпрометировали сканер Trivy от Aqua Security в марте 2026-го и npm-пакет Bitwarden CLI в апреле 2026-го. Каждая следующая волна технически сложнее предыдущей.

Как работала атака: три уязвимости в одной цепочке

Атака объединила три уязвимости, каждая из которых по отдельности была бы недостаточна. Злоумышленник создал форк репозитория TanStack/router, открыл pull request, который запустил workflow с триггером pull_request_target, и отравил кэш GitHub Actions через границу доверия fork↔base. Когда легитимный workflow сработал, отравленный кэш был восстановлен, а вредоносный код извлёк OIDC-токен прямо из памяти процесса runner'а.

Ключевой момент: злоумышленники не крали статические npm-токены. Вместо этого они извлекали runtime OIDC-токены напрямую из памяти процесса runner'а, что позволило им аутентифицироваться легитимным образом через trusted publisher bindings и публиковать скомпрометированные обновления в npm-реестр.

Масштаб заражения

Читать далее

Настраиваем CI/CD в GitHub для Python-проекта с нуля

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели13K

Настройка CI/CD часто кажется новичкам чем-то сложным и доступным только DevOps-инженерам. На самом деле автоматизировать рутину Python-проекта можно всего за полчаса. В этой статье мы по шагам разберем, как с нуля настроить GitHub Actions для простого FastAPI-приложения: от автоматического запуска тестов и быстрого линтера Ruff до сборки Docker-образа и публикации его в Docker Hub.

Читать далее

Как я спас компьютеры миллионов юзеров Winget. История одного форка «Запрета»

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели15K

Недавно я обнаружил вредоносный форк Zapret — да-да, тот самый Zapret 2 GUI. А дальше вы можете почитать нажав «Узнать больше!»

Узнать больше!

GitPulse: как я перестал угадывать, что происходит в команде, и начал смотреть на данные

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели6.8K

Меня зовут Игорь, я тимлид в e-commerce. Когда у меня появилась вторая команда, стало понятно, что вручную следить за двумя Jira, двумя GitLab и метриками одновременно — нереально. В итоге сделал инструмент, который собирает всё в одном месте

Читать

Настройка self-hosted gitlab runner (CI/CD)

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели13K

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

Часть 2 серии об осмысленном CI/CD: настраиваем self-hosted GitLab Runner. Пройдем от docker-compose.yml до работающего runner, попутно разбирая ошибки permissions, SELinux context и особенности rootless Podman. Все то же самое актуально и для Docker.

Читать далее

Cпециальное предложение для разработчиков нейросетей:

Уровень сложностиПростой
Время на прочтение1 мин
Охват и читатели7.8K

ПО для ПК дорого уже потому, что нужен ПК, да еще и с такой же дорогой видеокартой(ами). ПК проигрывает и в надежности, и в обслуживании, в тысячи раз проигрывает в работе без электропитания.

Спецлаб предоставляет разработчикам Non-PC-based устройство по цене оборудования с возможностью имплантации собственных нейронных сетей – поддерживается семейство ONNX.

FPGA продвинутого типа является универсальным устройством для большого круга задач. В нем есть место и распознаванию объектов, и контролю физических величин, и управлению устройствами, и промтовой логике, и архивам хранения, и аппаратным кодерам с декодерами в рамках разрешения 8К, и всем компьютерным интерфейсам.

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

Получить предложение...

Что именно сломалось: разбираем блокировки РКН/ТСПУ по слоям сетевого стека. Rkn Block Checker

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели28K

У вас не открывается сайт. Браузер пишет «Не удалось установить соединение». Это всё, что он знает — и это бесполезно.

Потому что «не открывается» - это как минимум четыре разных истории. DNS-резолвер провайдера соврал. ISP режет пакеты по IP. ТСПУ прочитал имя хоста в открытом поле TLS ClientHello и оборвал соединение. Или вы получили честный 200 OK - и страницу-заглушку «доступ ограничен по решению Роскомнадзора». В каждом случае нужно делать разное, и без понимания, на каком слое стоит фильтр, можно тыкаться в любую сторону и не угадать.

В статье разбираю все четыре механизма по слоям - снизу вверх, от DNS до HTTP - и показываю Python CLI, который запускает probes на каждом уровне и выдаёт диагноз: TCP_RESET, TLS_BLOCK, DNS_BLOCK, HTTP_STUB. Отдельно - про то, как «TCP открылся, а TLS handshake умер» становится надёжным отпечатком DPI на SNI, и почему параллельный стриминг результатов через as_completed радикально меняет UX по сравнению с pool.map().

Это диагностический инструмент, не средство обхода. Открытый код, MIT, pip install rkn-block-checker.

Читать далее

Троянский форк: от шалости до крита

Время на прочтение5 мин
Охват и читатели9.6K

Форк репозитория — операция настолько привычная, что на нее редко смотрят с подозрением. Но что, если через обычный форк можно запустить произвольный код на CI/CD-воркере чужой приватной компании? 

Именно такую цепочку мы обнаружили в GitFlic — отечественной платформе для совместной разработки ПО и хранения исходного кода от компании «РеСолют». 

GitFlic во многом похож на GitLab — что логично, ведь создавался как его альтернатива. И получилось у разработчиков сносно: если вы работали с GitLab, то GitFlic вызовет у вас приятное чувство дежавю.

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

Обнаруженные нами уязвимости были оперативно исправлены разработчиками компании «РеСолют» и зарегистрированы в БДУ ФСТЭК: BDU:2025-12462, BDU:2025-12463, BDU:2025-12464.

Читать далее

ИИ. ЦПУ против ГПУ — Данные и Выводы

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели6.5K

Для начала — просто гляньте на те фото и видео, которые я сгенерировал, вообще не прикасаясь к мышке или планшету. Конечно, до и после было проделано немало работы, но сам процесс создания цифрового арта не требовал ручного рисования. Так что скажем спасибо моим CPU и GPU — они реально тащили 💪

По ходу этого пути возникли интересные вопросы: когда вообще есть смысл использовать СPU, и как модели разного размера ведут себя при параллельных нагрузках? В целом, результаты получились довольно любопытными.

Жми чтоб узнать подробности!

Настройка GitLab CI/CD: понимаем принципы работы и запускаем первый pipeline

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели22K

Все русскоязычные гайды по GitLab CI/CD — это «сделай вот так под Node.js/Java/.NET». А как оно вообще работает? Написал подробный туториал: термины, схемы, разбор .gitlab-ci.yml, логи runner’а построчно. Первая часть из трёх — от простейшего pipeline до понимания, что конкретно вам нужно в вашем случае.

Читать далее

Оркестрация runner-ов на Nomad

Время на прочтение15 мин
Охват и читатели10K

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

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

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

Читать далее

Я добавил на заблокированный экран macOS красивую обложку текущего трека с адаптивным задним фоном как на iPhone

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели14K

Продолжаю делать свое macOS приложение DynamicNotch. В последнем обновлении делал реализацию добавления обложки текущего воспроизведения на заблокированный экран.

Читать далее

Робот, способный создать себя сам. Режим «Инженера» в робототехнике

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели11K

Скажите роботу «настрой манипулятор» — и он напишет драйвер сам. Звучит как фантастика из тех самых фильмов 80-х и 90-х, но мы уже реализовали это в OpenGrall. Рассказываю, как работает режим Инженера и почему последнее слово всегда остаётся за человеком

Читать далее

Ближайшие события

Простой мониторинг Synology NAS с Grafana и Prometheus

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели14K

Всем привет! Храню 7 терабайт фото и видео у себя дома на Synology DS224+ с DSM 7.3+

Это сетевое хранилище поддерживает Docker. Я дополнительно установил плашку памяти и теперь у меня 18 ГБ ОЗУ.

Но суть в том, что ночами я слышу "булькание" и "шуршание" дисков, кстати диски красные, прямо созданные под сетевые хранилища: WD120EFBX-68B0EN0 две штуки по 12 ТБ с зеркалированием.

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

Выложил проект в репозиторий

Читать далее

Попробовали научить AI искать то, чего никто не замечает — слабые рыночные сигналы

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели8.2K

За одни сутки и шесть долларов алгоритм самостоятельно провёл почти две тысячи экспериментов на российском фондовом рынке.

Он не ждал команды. Сам формулировал гипотезу, сам писал запрос к данным, сам оценивал результат — и сразу задавал следующий вопрос. Цикл за циклом, пока мы спали.

Красиво. Но красота здесь ловушка. Потому что самое сложное — не запустить машину, а понять, стоит ли верить тому, что она нашла. Как мерить. Как проверять. Как отличить настоящий сигнал от эха собственного кода.

Под катом — история одной ночи, почти двух тысяч вопросов и нескольких ответов, которые пришлось заслужить. Если интересно, как звучит рынок в четыре утра — заходите.

Читать далее

Unity Builder — как мы победили боль с ручными сборками и написали своё приложение

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели8.4K

Как мы автоматизировали сборку Unity-проектов под несколько платформ: прошли через Jenkins, GitHub Actions с game-ci и сорокаминутные билды — и в итоге написали собственный инструмент.

В статье:

Почему Jenkins и GitHub Actions не подошли

Что такое Unity Builder и какую боль закрывает

Визуальный пайплайн, параллельные задачи, FTP-интеграция

Читать далее

Теряет ли GitHub доверие индустрии?

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели10K

Почему для некоторых GitHub перестал быть безопасным дефолтом, и что с этим делать - если вы, конечно, не хотите узнать об этом в день блокировки аккаунта или когда ваши закрытые репозитории могут общественным достоянием?

Думаю, для многих GitHub почти стал именем нарицательным. Помню, как я не знал, что такое git, но уже публиковал исходный код маленькой игры на GitHub через загрузку файлов. Многое было другим на тот момент: ИТ не был на пике мейнстрима, ИИ казался чем-то очень далеким и GitHub был де-факто стандартом.

Времена меняются и довольно быстро: теперь многие задаются вопросом так ли перспективен ИТ, появились LLM, которые используются ежедневно, GitHub уже не справляется с нагрузкой, а его приватные репозитории оказывается не такие уж и приватные.

28 апреля 2026 года стало по-настоящему плохим днём для GitHub. Утром CTO платформы опубликовал длинное извинение за кризис стабильности - 8 серьёзных сбоев за два месяца. Этим же днём Wiz Research опубликовал детали критической уязвимости CVE-2026-3854: один обычный git push мог выполнить произвольный код на серверах GitHub.

По порядку разберём и свежие, и давние события с точки зрения обычного разработчика, которые происходят с GitHub сейчас

Читать далее

Как использовать GitHub Actions и настроить интеграцию с PyPI для Python-проектов

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели9.6K

Когда я создавал свой первый Python-пакет я столкнулся с интересной задачей:как настроить CI/CD в GitHub так, чтобы при отправке новых изменений ничего не ломалось, а код автоматически публиковался в PyPI.

Обычно, чтобы проверить любой коммит, попадающий в master-ветку через pull request, необходимо запускать тесты. Кроме того, полезно использовать линтеры для проверки стиля кода, особенно если над проектом работают несколько разработчиков.

В этой статье я расскажу как все это настроить в Github, чтоб оно выполнялось автоматически.

Читать далее

Как я написал движок распознавания лиц на C, который обогнал ONNX Runtime

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели15K

Полгода назад я начал портировать нейросеть EdgeFace-XS из ONNX в чистый C. Думал — граф небольшой, 1.77M параметров, что может пойти не так? Первый наивный порт выдал 24мс. ONNX Runtime — 3.9мс. В 6 раз медленнее. А потом началась оптимизация

Читать далее

Вся ваша жизнь помещается в 4000 клеток. Добавим GitHub‑коммиты, среднюю продолжительность жизни и 21 фактор смертности

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели14K

Всем привет! У человека в среднем около 4000 недель жизни. Четыре тысячи. Если нарисовать каждую неделю как маленькую клеточку — вся ваша жизнь поместится на один экран. Вот прям вся. От рождения до смерти. Мне 37 — значит примерно 1900 клеток уже закрашены, а оставшиеся… ну, это мы ещё посчитаем.

Эта концепция не моя и не новая — но на днях она всплыла в одном бизнес‑чате. Товарищ скинул скриншот из бота который как раз рисует такой grid. Закрашивает прожитые недели, оставляет пустые те что впереди. Красиво, минималистично, грустно. И я спросил: «А тебя это не тревожит?»

Читать далее