¿Qué bytes se eliminan con info-zip?

0

Veo muchos programas que solo comprueban .. entre los separadores de ruta. Durante mucho tiempo pensé que no era posible explotar los bytes no válidos (por ejemplo, el intento de crear .‌. conducirá a .?. en osx) .

Pero vi cve ‑ 2003‑0282 ayer. Entonces, ¿cuáles son los caracteres no válidos que pueden desencadenar ese error en versiones vulnerables?

Intenté buscar más sobre esto, pero ve todos los enlaces relevantes en el informe cve están muertos .

    
pregunta user2284570 06.05.2016 - 17:22
fuente

1 respuesta

0

De el parche se puede ver que se está saltando cualquier control y algunos caracteres más ( [\x00-\x1f\x7f\xff] ) al construir el nombre del archivo de destino:

+        * SECURITY: Skip past control characters if the user
+        * didn't OK use of absolute pathnames. lhh - this is
+        * a very quick, ugly, inefficient fix; it traverses
+        * the WHOLE path, eating up these as it comes to it.
+        */
+       dp = cp;
+       do {
+           workch = (uch)(*dp);
                 ...
+            } else if (workch == '.' && !snarf_ddot) {
+               snarf_ddot = TRUE;
+           } else if (isprint(workch) ||
+                      ((workch > 127) && (workch <= 254))) {
+               /*
+                * Since we found a printable, non-ctrl char,
+                * we can stop looking for '../', the amount
+                * in ../!
+                */
+               break;
+           }
+
+           dp++;
+        } while (*dp != 0);
    
respondido por el Steffen Ullrich 06.05.2016 - 18:21
fuente

Lea otras preguntas en las etiquetas