Публичный доступ к облачному хранилищу S3: утечка клиентских файлов
Облачные объектные хранилища (S3, Beget S3, Yandex Object Storage) используются для хранения файлов пользователей, документов и статических ассетов.
Если права бакета (Bucket Policy / ACL) настроены некорректно, любой внешний пользователь может запросить корневой XML-листинг (ListBucket) и скачать все файлы компании.
Степень критичности и чем опасна уязвимость
Утечки открытых бакетов регулярно приводят к раскрытию сканов паспортов клиентов, бухгалтерских актов, договоров и персональных данных.
Как наш сканер находит эту уязвимость
Site Check анализирует URL подключенных файлов и проверяет корень бакета на возможность публичного перечисления файлов (Listing Enabled).
Проверка защищенности хранилищ данных производится тестированием открытости стандартных портов и HTTP-шлюзов с проверкой флагов авторизации. Сканер не выполняет SQL-запросов и команд выборки, ограничиваясь диагностикой сетевого рукопожатия и заголовков ответа сервиса.
Как устранить уязвимость (Пошаговое руководство)
Для ликвидации риска выполните следующие действия в конфигурации вашего сервера или приложения:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyPublicListBucket",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::your-bucket-name"
}
]
}
- Запретите публичный доступ к действию s3:ListBucket в настройках бакета.
- Раздавайте публичный доступ только к конкретным статическим файлам по их хэш-ссылкам.
Анатомия атаки и реальные последствия для проекта
Неправильно настроенные ACL в AWS S3, Google Cloud Storage или Beget S3 позволяют анонимным пользователям скачивать приватные файлы клиентов или перезаписывать статические ассеты сайта вредоносным JS-кодом.
Влияние на соответствие стандартам: Нарушение требований безопасности стандартов OWASP Top 10 (A05:2021 Security Misconfiguration), ISO/IEC 27001 и отраслевых норм 152-ФЗ.
Матрица эшелонированной защиты (Defense-in-Depth)
| Уровень защиты | Техническое действие | Инструмент / Механизм |
|---|---|---|
| Периметр веб-сервера (Nginx / Edge) | Применение изолирующих правил блокировки для маршрутов, связанных с public-cloud-storage | Nginx Security Directives |
| Среда исполнения и конфигурация | Отключение отладочных механизмов и разграничение прав доступа к компоненту public-cloud-storage | Runtime Security Hardening |
| Пайплайн DevSecOps контроля | Автоматическое тестирование конфигурации public-cloud-storage в CI/CD пайплайне при каждом релизе | Site Check Security Gate |
Верификация устранения: команды для быстрой проверки
После внесения изменений в настройки сервера или исходный код приложения проверьте отсутствие уязвимости с помощью терминальных утилит:
curl -s https://ваш-домен-bucket.s3.amazonaws.com/?list-type=2 | grep "<ListBucketResult>"
# Не должно возвращать листинг бакета
Рекомендации DevSecOps для безопасного развертывания
Включите опцию S3 Block Public Access на уровне всего облачного аккаунта и отдавайте медиафайлы только через CloudFront с Origin Access Control (OAC).
- ✓ Закрыть порты 5432, 6379, 27017, 9200 на внешнем сетевом интерфейсе сервера
- ✓ Включить криптографическую аутентификацию со сложными сгенерированными паролями
- ✓ Настроить создание резервных копий с шифрованием и изоляцией в холодном хранилище
- ✓ Проверить права доступа публичных бакетов и включить блокировку Public Access
Часто задаваемые вопросы по устранению
Открытые во внешнюю сеть СУБД (PostgreSQL, Redis, MongoDB, Elasticsearch) или публичные бакеты S3 служат первоочередной мишенью программ-вымогателей (Ransomware). Обязательна сетевая изоляция через файрвол (UFW/iptables), включение криптографической аутентификации SCRAM/TLS и применение принципа минимальных привилегий доступа.
Для предотвращения вектора «Публичный доступ к облачному хранилищу S3: утечка клиентских файлов» зафиксируйте проверочные правила в CI/CD пайплайне и настройте непрерывный мониторинг внешнего периметра через Site Check.