pkg is tool design to bundle Node.js projects into an executables. Any native code packages built by `pkg` are written to a hardcoded directory. On unix systems, this is `/tmp/pkg/*` which is a shared directory for all users on the same local system. There is no uniqueness to the package names within this directory, they are predictable. An attacker who has access to the same local system has the ability to replace the genuine executables in the shared directory with malicious executables of the same name. A user may then run the malicious executable without realising it has been modified. This package is deprecated. Therefore, there will not be a patch provided for this vulnerability. To check if your executable build by pkg depends on native code and is vulnerable, run the executable and check if `/tmp/pkg/` was created. Users should transition to actively maintained alternatives. We would recommend investigating Node.js 21’s support for single executable applications. Given the decision to deprecate the pkg package, there are no official workarounds or remediations provided by our team. Users should prioritize migrating to other packages that offer similar functionality with enhanced security.
pkg es una herramienta de diseño para agrupar proyectos de Node.js en archivos ejecutables. Cualquier paquete de código nativo creado por `pkg` se escribe en un directorio codificado. En sistemas Unix, este es `/tmp/pkg/*` que es un directorio compartido para todos los usuarios en el mismo sistema local. Los nombres de los paquetes dentro de este directorio no son únicos, son predecibles. Un atacante que tiene acceso al mismo sistema local tiene la capacidad de reemplazar los ejecutables genuinos en el directorio compartido con ejecutables maliciosos del mismo nombre. Luego, un usuario puede ejecutar el ejecutable malicioso sin darse cuenta de que ha sido modificado. Este paquete está en desuso. Por lo tanto, no se proporcionará ningún parche para esta vulnerabilidad. Para verificar si su ejecutable compilado por pkg depende del código nativo y es vulnerable, ejecute el ejecutable y verifique si se creó `/tmp/pkg/`. Los usuarios deben hacer la transición a alternativas mantenidas activamente. Recomendamos investigar la compatibilidad de Node.js 21 con aplicaciones ejecutables únicas. Dada la decisión de dejar de usar el paquete pkg, nuestro equipo no ha proporcionado soluciones ni soluciones oficiales. Los usuarios deben priorizar la migración a otros paquetes que ofrezcan funciones similares con seguridad mejorada.