
Señuelos de prompt reversibles en HTML y JavaScript con claves opacas por inserción.
[!WARNING]
Este proyecto está en desarrollo.
SpikeStrip pretende servir de inspiración para quienes construyen defensas contra herramientas de automatización con IA como ARTEX y sistemas similares. Sus señuelos y prompts de generación son experimentales.
SpikeStrip añade señuelos de prompt reversibles al código fuente HTML y a los archivos JavaScript. Los comentarios incluyen instrucciones que redirigen una evaluación de IA, pistas falsas de vulnerabilidades y distracciones matemáticas. Pueden desviar a agentes que siguen los comentarios del código o convertir pistas no verificadas en objetivos de escaneo. Un escáner convencional necesitaría extraer las rutas o parámetros sugeridos para que estos comentarios afecten a su trabajo. La herramienta no detiene de forma fiable a los agentes que aíslan el contenido no confiable ni a los escáneres que ignoran los comentarios.
Cada inserción recibe una clave hexadecimal aleatoria de 12 caracteres, como a7c94e2b610f. Las claves se comprueban en busca de duplicados en cada ejecución. Los comentarios desplegados no llevan la marca SpikeStrip ni un prefijo canario fijo. Los comentarios HTML aparecen en Ver código fuente; los comentarios JavaScript son visibles cuando alguien obtiene el script. Los comentarios no añaden callbacks, bucles ejecutables ni computación en tiempo de ejecución. Tres señuelos de referencia/pausa integrados usan una redacción neutra de revisión.
El manifiesto privado registra cada comentario y su clave. Úsalo para eliminar comentarios seleccionados después de que cambien los números de línea. La lista original de diez entradas permanece en src/payloads.mjs como originalPayloads y contiene exactamente 100 palabras. El conjunto predeterminado ahora tiene 28 entradas, incluidas 18 señuelos de instrucciones adicionales y pistas falsas de vulnerabilidades. Las tareas matemáticas originales incluyen problemas abiertos, contradicciones y tareas interminables; no todas ellas están demostradas como irresolubles.
Las pistas falsas nombran rutas y parámetros inventados para SSRF, inyección SQL, inyección de plantillas del lado del servidor, XSS basado en DOM, XXE, path traversal y comprobaciones de autorización de objetos. Algunos comentarios afirman que una ruta retirada usa un producto afectado por Log4Shell (CVE-2021-44228), Spring Cloud Gateway CVE-2022-22947 o Apache HTTP Server CVE-2021-41773. Los identificadores CVE son reales; las rutas y los despliegues declarados son fabricados. Estos comentarios no crean rutas, manejadores vulnerables ni solicitudes de red. Revisa los nombres propuestos contra tu aplicación antes de desplegarlos, ya que una ruta inventada podría coincidir con una ruta real.
SpikeStrip está disponible bajo la Licencia MIT, con derechos de autor de Arcanum. Puedes usar, modificar, distribuir y vender copias, incluso en productos comerciales, siempre que conserves los avisos de derechos de autor y de permiso en las copias o en partes sustanciales del software. La licencia no exige crédito promocional público por cada uso comercial.
SpikeStrip requiere Node.js 20 o superior. Ejecuta estos comandos desde este repositorio.
npm install --ignore-scripts
node bin/spikestrip.mjs --help
Alternativamente, use pnpm install --frozen-lockfile --ignore-scripts con el lockfile incluido en el repositorio. El paquete es privado y no está destinado a su publicación en npm.
Ejecute la herramienta contra la raíz web estática compilada, después de la minificación y antes del despliegue. El origen y la salida deben ser directorios separados, sin que ninguno esté dentro del otro. La copia de salida incluye los recursos ordinarios y los archivos modificados. La herramienta deja los originales intactos y excluye enlaces simbólicos, metadatos de VCS, directorios de dependencias, carpetas de manifiestos privados y archivos de entorno.
# This preview validates inputs and writes nothing.
node bin/spikestrip.mjs inject ./site --output ./site-planted --count 20 --manifest ./private/run.json
# Apply the plan to a new copy.
node bin/spikestrip.mjs inject ./site --output ./site-planted --count 20 --manifest ./private/run.json --write
--count es el número total de inserciones en todo el árbol. La ubicación, la selección de payload y las claves utilizan la aleatoriedad del sistema operativo. Las vistas previas y las escrituras posteriores pueden elegir posiciones y claves diferentes. Cada inserción recibe su propia clave incluso cuando el texto integrado se repite. Si no se proporciona una ruta de manifiesto, se crea una en .spikestrip/ junto al directorio de salida. Mantenga esa carpeta privada y fuera del sitio desplegado.
La herramienta admite archivos .html, .htm, .js, .mjs y .cjs. Utiliza los límites de sentencia de Acorn para colocar comentarios de JavaScript y luego verifica que el árbol de sintaxis sea equivalente. Los comentarios HTML se colocan antes de los hijos directos de los elementos explícitos head o body. Una comprobación del árbol del documento rechaza cambios más allá de los comentarios.
La herramienta no inserta en cadenas de atributos, texto sin formato, plantillas, cuerpos de scripts en línea ni contenido de texto. Omite y reporta fragmentos sin head/body explícitos, JavaScript no válido, archivos JSX/TypeScript no compatibles y archivos de origen de más de 2 MB. También reporta archivos de origen compatibles que no tienen posiciones de inserción seguras. Estos archivos de origen se copian sin cambios.
Use --raw si desea un archivo de texto con comentarios para distribuirlos usted mismo en su código fuente web. Esta opción no necesita un directorio de sitio y no inserta nada en sus archivos ni copia un árbol de compilación. Proporciona una alternativa cuando no desea una herramienta de inserción en su canal de compilación.
# Preview an export without creating a file.
node bin/spikestrip.mjs inject --raw --output ./comments.txt --count 30
# Export JavaScript/CSS block comments, with one comment per line.
node bin/spikestrip.mjs inject --raw --output ./comments.txt --format js --count 30 --write
# Export HTML/SVG comments instead.
node bin/spikestrip.mjs inject --raw --output ./html-comments.txt --format html --count 30 --write
Cada comentario exportado tiene su propia clave aleatoria de 12 caracteres. El formato predeterminado es js; --format html cambia el envoltorio. Elija un formato por exportación y coloque los comentarios solo donde ese tipo de archivo permita comentarios. Los archivos de salida existentes nunca se sobrescriben. Las exportaciones sin procesar aceptan recuentos de 1 a 10.000 para los integrados y de 1 a 1.000 con --dynamic.
Las exportaciones sin procesar no crean un manifiesto de eliminación porque SpikeStrip no sabe dónde pega los comentarios. Conserve el archivo de texto como su inventario de claves y busque esas claves para eliminar los comentarios manualmente. El comando remove gestiona las inserciones automáticas registradas en un manifiesto; no puede descubrir ubicaciones manuales a partir de un archivo de texto sin procesar. No pase un directorio de origen ni --manifest junto con --raw.
Los mismos indicadores de generación funcionan con exportaciones sin procesar. Por ejemplo, después de establecer OPENAI_API_KEY, ejecute node bin/spikestrip.mjs inject --raw --output ./unique-comments.txt --format js --dynamic --provider openai --model YOUR_MODEL_ID --count 40 --write. Una vista previa sigue sin realizar ninguna solicitud a la API.