Утечка ключей
Задание 1Введение
Цель: Находить и скрывать секреты в тексте регулярными выражениями.
Перед публикацией логов нужно скрыть ключи доступа AWS. Напишите функцию mask_aws_keys(text): каждое вхождение AKIA + ровно 16 символов из A–Z0–9 замените на AKIA + 16 звёздочек. Поиск слева направо, без пересечений; символы после 16-го не трогать.
Задание 2Теория и инструменты
Ключи доступа AWS имеют узнаваемый формат: AKIA + 16 заглавных букв и цифр. Сканеры секретов (gitleaks, trufflehog) ищут такие шаблоны в коде и логах.
Маскирование перед публикацией логов — обычная практика защиты от утечек.
Инструменты
- Python:
re.sub - JS:
String.prototype.replaceс флагомg
Больше теории — в разделе «Обучение: Защита (код)».
Задание 3Практика: напишите код
Примеры
mask_aws_keys("aws_access_key_id = AKIAE3TN8CO9GXMDX8JF")
→ "aws_access_key_id = AKIA****************"mask_aws_keys("no secrets here")
→ "no secrets here"Ещё 6 скрытых тестов.
Пошаговый план — открывайте по одному шагу
- 1Составьте регулярное выражение:
AKIA+ класс[0-9A-Z]ровно 16 раз. - 2Замените каждое совпадение на
AKIAи 16 звёздочек. - 3Проверьте случаи из условия: строчные
akiaне совпадают, лишние символы после 16-го остаются.
Подсказки — каждая до решения стоит −25 очков
Задание 4Как защититься
Не храните ключи в коде, используйте роли IAM и менеджеры секретов, включите сканирование секретов в CI.
Разборы участников
Разборы открываются после того, как вы решите комнату, — чтобы не спойлерить ответ.