
- Главная
- Каталог
- Интернет технологии
- CodeGuard: PySec Edition
CodeGuard: PySec Edition
Канал про OSINT, DevOps, ИБ, КБ, для системных админов и специалистов ИБ, а также мотивированных энтузиастов. Фокус на практические решения, инструменты и обучение в кибербезопасности.
Отличная площадка для продвижения IT-продуктов, сервисов и курсов с высокой вовлечённостью.
Статистика канала
sudo rm -rf /* всему. Но мы здесь, живые, всё ещё в строю.
Чему научил 2025:
На 2026:🔵 Legacy код в голове можно рефакторить🔵 Иногда лучший фикс — это sleep(86400) и свежий взгляд🔵 Бэкапы нужны везде — в проектах, отношениях, голове
while alive:
learn_something_new()
build_cool_stuff()
touch_grass() # важно
sleep(enough=True) # критично{}
Серьёзно: спасибо, что читаете. Канал для вас - для тех, кто в 3 ночи дебажит эксплойт и кайфует от красивых ROP-цепочек. Мы странные люди. И это круто.
В 2026 - больше контента, глубже разборы. Идеи кидайте в чат.
$ checksec ./2026
Bugs: Inevitable
Opportunities: Enabled
Your potential: No limits{}
Happy New Year, хакеры. assert для проверки прав доступа или валидации? В продакшене эти проверки могут просто не существовать.
Проблема:
def delete_user(user_id, current_user):
assert current_user.is_admin, "Access denied"
db.delete(user_id){}
Выглядит безопасно. Но нет.
Что происходит:
# Разработка — assert работает
python app.py
# Продакшен с оптимизацией — assert удаляется полностью
python -O app.py{}
Флаг -O (optimize) удаляет все assert-ы из байткода. Gunicorn, uWSGI, некоторые Docker-образы включают его по умолчанию.
Проверь прямо сейчас:
import sys
print(sys.flags.optimize) # 0 = норм, 1+ = assert не работает{}
Где это опасно:
Правильно:🔵 Проверки авторизации🔵 Валидация входных данных🔵 Проверки бизнес-логики🔵 Всё, что влияет на безопасность
def delete_user(user_id, current_user):
if not current_user.is_admin:
raise PermissionError("Access denied")
db.delete(user_id){}
assert можно использовать для:
Найти проблемные места:🔵 Отладки во время разработки🔵 Документирования инвариантов🔵 Тестов
grep -rn "assert.*is_admin\|assert.*permission\|assert.*auth" --include="*.py"{}
assert для дебага, не для безопасности. Если проверка важна - используй if + raise.
yaml.load() делает то же самое - и это почему-то игнорируют.
Уязвимый код:
import yaml
data = yaml.load(user_input) # RCE готов{}
Payload:
!!python/object/apply:os.system ["whoami"]{}
Одна строка - и у атакующего shell.
Где встречается:
Правильно:🔵 Парсинг конфигов из внешних источников🔵 API, принимающие YAML🔵 CI/CD пайплайны с пользовательскими .yml🔵 Kubernetes-манифесты от пользователей
# Всегда используй safe_load
data = yaml.safe_load(user_input)
# Или явно укажи Loader
data = yaml.load(user_input, Loader=yaml.SafeLoader){}
safe_load() не поддерживает конструкцию !!python/object — RCE невозможен.
Проверить проект:
# Найти все небезопасные вызовы
grep -r "yaml.load(" --include="*.py" | grep -v "safe_load\|SafeLoader"{}
Мораль: если видишь yaml.load() без SafeLoader - это дыра.
Базовый сценарий: Аудит паролей в Linux Представьте, что вы системный администратор и хотите проверить, нет ли в вашей системе учетных записей со слабыми паролями.🔵 Linux /etc/shadow: Современные системы используют sha512crypt ($6$), sha256crypt ($5$) или bcrypt ($2b$). Важно: это не "чистый" SHA-512, а специальная медленная функция (KDF), созданная для защиты от подбора.🔵 Windows: Хеши NTLM (из SAM-файлов).🔵 Веб-приложения и базы данных: MD5, SHA-1, SHA-256 (часто без соли, что упрощает подбор). Архивы и документы: Пароли от ZIP, RAR, PDF и файлов Microsoft Office.
# Объединяем файлы, чтобы John правильно идентифицировал пользователей
sudo unshadow /etc/passwd /etc/shadow > users.hash{}
# Указываем формат хеша для точности и скорости (для Ubuntu/Debian это обычно sha512crypt)
john --format=sha512crypt users.hash --wordlist=rockyou.txt{}
John начнет перебор. Если пароль найден в словаре, он будет сохранен.
2 password hashes cracked, 15 left{}
Вывод: John обнаружил в системе две учетные записи со слабыми паролями, известными из публичных словарей. Это критическая уязвимость.
Как это работает изнутри:
Профилактика: Как защититься?🔵 Атака по словарю (Dictionary): Быстрая проверка пароля против заранее подготовленного списка (например, password123, qwerty).🔵 Перебор (Brute-force): Методичный перебор всех возможных комбинаций символов. Мощный, но очень медленный.🔵 Гибридная атака (Hybrid): Комбинация словаря и перебора. К словам из списка добавляются цифры или символы (например, password123).
🔴 Используйте длинные и сложные пароли. Идеально — 3-4 случайных слова через дефис (кофе-дождь-радуга-42).🔴 Применяйте менеджеры паролей (KeePass, Bitwarden). Они генерируют и хранят уникальные сложные пароли для каждого сервиса.🔴 Включайте двухфакторную аутентификацию (2FA) везде, где это возможно.🔴 Для серверов: Настройте политику блокировки учетных записей после нескольких неудачных попыток входа и используйте аутентификацию по SSH-ключам вместо паролей.
# Плохо: контейнер работает от root
docker run -it ubuntu bash
whoami # root
# Правильно: указать пользователя
docker run -it --user 1000:1000 ubuntu bash
# Или в Dockerfile:
FROM ubuntu
RUN useradd -m appuser
USER appuser{}
🔹 Проблема: 90% контейнеров в проде работают от root🔹 Решение: Всегда указывать USER в Dockerfile или --user при запуске
# НИКОГДА так не делайте в проде:
docker run --privileged nginx
# Это даёт контейнеру полный доступ к хосту:
# - Все устройства (/dev)
# - Возможность монтировать файловые системы
# - Отключение всех ограничений
# Если нужны конкретные capabilities:
docker run --cap-add NET_ADMIN nginx
# Вместо --privileged даём только нужное{}
🔹 Проблема: --privileged используют "чтобы работало", не понимая последствий🔹 Решение: Использовать --cap-add только для нужных capabilities
# Популярный антипаттерн для CI/CD:
docker run -v /var/run/docker.sock:/var/run/docker.sock myapp
# Что может сделать атакующий:
docker run -v /:/host -it alpine chroot /host
# Полный доступ к файловой системе хоста!{}
🔹 Проблема: Docker socket = root доступ к хосту🔹 Решение: Использовать Docker-in-Docker или rootless Docker
# Проверить образ на уязвимости:
docker scout cves nginx:latest
# Или использовать Trivy:
trivy image nginx:latest
# Сканирование покажет:
# CVE-2023-XXXX HIGH openssl 1.1.1k
# CVE-2023-YYYY CRITICAL curl 7.74.0{}
🔹 Проблема: Образы с Docker Hub могут содержать malware или уязвимости🔹 Решение: Использовать официальные образы, сканировать перед деплоем
# Плохо: пароль виден всем
docker run -e DB_PASSWORD=supersecret myapp
# Любой процесс видит переменные:
docker exec container cat /proc/1/environ
# Правильно: Docker secrets
echo "supersecret" | docker secret create db_pass -
docker service create --secret db_pass myapp
# Или монтировать файл:
docker run -v ./secrets:/run/secrets:ro myapp{}
🔹 Проблема: Переменные окружения логируются, видны в docker inspect🔹 Решение: Docker secrets, HashiCorp Vault, файлы с правильными правами
# Контейнер может съесть всю память хоста:
docker run -d memhog # Fork bomb = хост падает
# Установить лимиты:
docker run -d \
--memory=512m \
--memory-swap=512m \
--cpus=0.5 \
--pids-limit=100 \
nginx{}
Чек-лист безопасности Docker:🔹 Проблема: Один контейнер может положить весь хост🔹 Решение: Всегда ставить --memory, --cpus, --pids-limit
✔️ Контейнеры работают не от root✔️ Никакого --privileged в проде✔️ Docker socket не монтируется✔️ Образы сканируются на уязвимости✔️ Секреты не в ENV переменных✔️ Установлены лимиты ресурсов✔️ Используется read-only filesystem где возможно✔️ Сеть изолирована (не --network host)
Отзывы канала
всего 5 отзывов
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
CodeGuard: PySec Edition — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 7.2K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 36.2, количество отзывов – 5, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 1398.6 ₽, а за 12 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий