criticalCWE-284OWASP A05:2021

Bucket S3 con Acceso Público

Tu bucket de S3 es públicamente legible debido a un ACL público, configuración de Block Public Access deshabilitada o una política de bucket con wildcard — cualquiera en internet puede listar y descargar tus archivos.

Cómo Funciona

Los buckets de AWS S3 son privados por defecto, pero una sola mala configuración los hace legibles por todo el mundo. Esto puede suceder vía un ACL público en el bucket o en objetos individuales, una política de bucket con Principal: '*', o deshabilitando la configuración Block Public Access a nivel de cuenta. Los escáneres automatizados descubren buckets públicos en horas. El resultado: cada archivo que hayas subido es descargable por cualquiera.

Código Vulnerable
// MAL: bucket creado con ACL public-read (Terraform)
resource "aws_s3_bucket_acl" "example" {
  bucket = aws_s3_bucket.example.id
  acl    = "public-read"  // hace todos los objetos públicamente legibles
}

// También MAL: deshabilitar block public access
resource "aws_s3_bucket_public_access_block" "example" {
  bucket                  = aws_s3_bucket.example.id
  block_public_acls       = false  // permite ACLs públicos
  block_public_policy     = false  // permite políticas de bucket públicas
}
Código Seguro
// BIEN: fuerza acceso privado y bloquea todo el acceso público
resource "aws_s3_bucket_public_access_block" "example" {
  bucket                  = aws_s3_bucket.example.id
  block_public_acls       = true
  block_public_policy     = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}
// Usa pre-signed URLs para dar acceso temporal a objetos específicos

Ejemplo Real

En 2019, Capital One tuvo 100 millones de registros de clientes expuestos desde un bucket S3 vía una vulnerabilidad SSRF — pero el problema subyacente era que el bucket era accesible desde una instancia EC2 con permisos excesivos. En 2020, la filtración del código fuente de Twitch se atribuyó parcialmente a buckets S3 mal configurados. Los buckets S3 públicos han expuesto datos de cientos de empresas importantes.

Cómo Prevenirlo

  • Habilita S3 Block Public Access a nivel de cuenta de AWS — esto previene que cualquier bucket sea hecho público
  • Nunca uses ACLs public-read o public-read-write — usa pre-signed URLs para acceso temporal a objetos en su lugar
  • Audita las políticas de bucket en busca de Principal: '*' que otorga acceso público
  • Habilita el logging de acceso al servidor S3 de AWS y CloudTrail para detectar acceso no autorizado
  • Usa la regla de AWS Config s3-bucket-public-read-prohibited para monitorear continuamente los buckets públicos

Tecnologías Afectadas

Node.jsPython

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas