Volver a Labs
Debilidad (CWE)

CWE-427

Elemento de ruta de búsqueda no controlado

Acerca de

El producto usa una ruta de búsqueda fija o controlada para encontrar recursos, pero una o más ubicaciones de esa ruta pueden estar bajo el control de actores no previstos.

Aunque esta debilidad puede ocurrir con cualquier tipo de recurso, con frecuencia se introduce cuando un producto usa una ruta de búsqueda de directorios para encontrar ejecutables o bibliotecas de código, pero la ruta contiene un directorio que puede ser modificado por un atacante, como "/tmp" o el directorio de trabajo actual. En los sistemas basados en Windows, cuando se llama a la función LoadLibrary o LoadLibraryEx con un nombre de DLL que no contiene una ruta completamente cualificada, la función sigue un orden de búsqueda que incluye dos elementos de ruta que podrían no estar controlados: - el directorio desde el que se ha cargado el programa - el directorio de trabajo actual. En algunos casos, el ataque puede llevarse a cabo de forma remota, como cuando se utilizan recursos compartidos de red SMB o WebDAV. Una o más ubicaciones de esa ruta podrían incluir la raíz de la unidad de Windows o sus subdirectorios. Esto suele existir en código basado en Linux que asume la naturaleza controlada del directorio raíz (/) o de sus subdirectorios (/etc, etc.), o en código que accede de forma recursiva al directorio padre. En Windows, la raíz de la unidad y algunos de sus subdirectorios tienen permisos débiles de forma predeterminada, lo que los vuelve no controlados. En algunos sistemas basados en Unix, se podría crear un PATH que contenga un elemento vacío, por ejemplo, al empalmar una variable vacía dentro del PATH. Este elemento vacío puede interpretarse como equivalente al directorio de trabajo actual, que podría ser un elemento de búsqueda no confiable. En los marcos de gestión de paquetes de software (por ejemplo, npm, RubyGems o PyPi), el marco puede identificar dependencias de bibliotecas de terceros u otros paquetes, y luego consultar un repositorio que contiene el paquete deseado. El marco puede buscar en un repositorio público antes que en uno privado. Esto podría ser explotado por atacantes al colocar un paquete malicioso en el repositorio público que tenga el mismo nombre que un paquete del repositorio privado. La ruta de búsqueda podría no estar directamente bajo el control del desarrollador que se apoya en el marco, pero este orden de búsqueda contiene, en efecto, un elemento no confiable.

Consecuencias comunes

  • Confidencialidad, Integridad, Disponibilidad → Ejecutar código o comandos no autorizados

Mitigaciones

  • Arquitectura y diseño, Implementación: Fije de forma rígida la ruta de búsqueda a un conjunto de valores de seguridad conocida (como los directorios del sistema), o permita que solo la especifique el administrador en un archivo de configuración. No permita que estos ajustes sean modificados por una parte externa. Tenga cuidado de evitar debilidades relacionadas, como la CWE-426 y la CWE-428.
  • Implementación: Al invocar otros programas, especifique dichos programas usando rutas completamente cualificadas. Si bien este es un enfoque efectivo, el código que usa rutas completamente cualificadas podría no ser portable a otros sistemas que no usen las mismas rutas. La portabilidad puede mejorarse ubicando las rutas completamente cualificadas en una ubicación centralizada y fácilmente modific
  • Implementación: Elimine o restrinja todos los ajustes de entorno antes de invocar otros programas. Esto incluye la variable de entorno PATH, LD_LIBRARY_PATH y otros ajustes que identifiquen la ubicación de las bibliotecas de código, así como cualquier ruta de búsqueda específica de la aplicación.
  • Implementación: Compruebe su ruta de búsqueda antes de usarla y elimine cualquier elemento que probablemente sea inseguro, como el directorio de trabajo actual o un directorio de archivos temporales. Dado que este es un enfoque de lista de denegación, podría no ser una solución completa.
  • Implementación: Use otras funciones que requieran rutas explícitas. Hacer uso de cualquiera de las otras funciones fácilmente disponibles que requieren rutas explícitas es una forma segura de evitar este problema. Por ejemplo, system() en C no requiere una ruta completa, ya que el shell puede encargarse de encontrar el programa usando la variable de entorno PATH, mientras que execl() y execv() req

CVEs con esta debilidad

Preguntas frecuentes

¿Qué es CWE-427?

El producto usa una ruta de búsqueda fija o controlada para encontrar recursos, pero una o más ubicaciones de esa ruta pueden estar bajo el control de actores no previstos.

¿Qué plataformas afecta CWE-427?

CWE-427 se ha observado en: Not OS-Specific, Not Technology-Specific.

¿Cuántas CVE rastrea Rainforest para CWE-427?

Rainforest Labs rastrea actualmente 1 CVE publicadas asociadas a CWE-427. Están listadas en esta página.

Potencia tu estrategia de seguridad con Rainforest

Descubre vulnerabilidades a tiempo, prioriza amenazas críticas y protege lo que realmente importa. Rainforest simplifica tus operaciones de seguridad, ahorrando tiempo y reduciendo costos, para que te enfoques en lo que impulsa tu negocio.