Интересный и важный разбор о том, как стоит (и не стоит) управлять версиями зависимостей в Python-проектах.
Если вы — разработчик библиотеки, то:
dependencies = [
"urllib3>=2",
]
— это нормальная практика для указания совместимости, а не безопасности.
❗ Но изменение на:
"urllib3>=2.6.3"
из-за уязвимости — обычно плохая идея для библиотек.
⚠️ Почему нельзя фиксировать security через version specifiers
Библиотеки:
• должны поддерживать широкий диапазон версий
• отвечают за совместимость, а не за безопасность пользователей
• не должны “жёстко чинить” уязвимости зависимостей
Приложения:
• используют lock-файлы (requirements.txt, uv.lock и т.д.)
• фиксируют конкретные безопасные версии
• отвечают за безопасность своего runtime
💥 Проблема массового эффекта
Если бы все библиотеки начали обновлять зависимости из-за CVE:
• urllib3 → 10,000+ зависимостей
• numpy → ~80,000
• requests → ~70,000
• pandas → ~55,000
👉 одна уязвимость = тысячи релизов ежедневно
Это создало бы постоянный "release storm", который не масштабируется.
Есть исключения:
• если фикс уязвимости требует несовместимого API
• если зависимость больше не поддерживает безопасные версии
• если обновление не ломает обратную совместимость
🔗 Ссылка на статью
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека питониста
#буст
