lowCWE-200A05:2021

Feature Flags Expuestos

Feature flags incluidos en el bundle de JavaScript del frontend revelan funciones no lanzadas, configuraciones internas de testing y superficies de ataque potenciales a cualquiera que inspeccione el codigo.

Cómo Funciona

Los feature flags controlan que funciones estan habilitadas para diferentes usuarios o entornos. Cuando estos flags se incluyen en el JavaScript del lado del cliente, cualquiera puede verlos en las herramientas de desarrollador del navegador o leyendo el codigo fuente JavaScript. Esto revela funciones no lanzadas que pueden tener controles de seguridad incompletos, configuraciones de A/B test que filtran estrategia de negocio, funciones solo internas que nunca deberian ser accesibles para usuarios regulares, y a veces incluso flags de admin o debug que pueden ser activados modificando localStorage o cookies. Aunque los flags en si pueden no ser directamente explotables, la informacion que revelan ayuda a los atacantes a identificar objetivos vulnerables.

Código Vulnerable
// config/features.ts - bundled into client JS
export const FEATURES = {
  ENABLE_NEW_CHECKOUT: true,
  ADMIN_PANEL_V2: false,
  SKIP_RATE_LIMITING: process.env.NODE_ENV === 'development',
  INTERNAL_DEBUG_MODE: false,
  UNRELEASED_AI_FEATURE: false
};
Código Seguro
// Server-side only feature evaluation
export async function getFeatureFlags(userId: string) {
  const flags = await featureFlagService.evaluate(userId);
  // Only return flags relevant to this user
  return {
    enableNewCheckout: flags.ENABLE_NEW_CHECKOUT,
    showAiFeature: flags.UNRELEASED_AI_FEATURE
  };
  // ADMIN_PANEL_V2, SKIP_RATE_LIMITING never sent to client
}

Ejemplo Real

En 2020, investigadores descubrieron que multiples empresas SaaS exponian feature flags en sus bundles del frontend, revelando proximos productos meses antes de su lanzamiento. Los flags expuestos de una empresa fintech incluian BYPASS_KYC_CHECK, que al habilitarse via consola del navegador, permitia a los atacantes saltarse pasos de verificacion de identidad.

Cómo Prevenirlo

  • Evalua feature flags del lado del servidor y solo envia el resultado (no los nombres de flags) al cliente
  • Nunca incluyas flags de admin, debug o bypass de seguridad en codigo frontend
  • Usa un servicio de feature flags (LaunchDarkly, Unleash) que evalue flags del lado del servidor
  • Audita tus bundles de JavaScript regularmente buscando datos de configuracion filtrados

Tecnologías Afectadas

Node.jsReactNext.js

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas