Files
egutierrez 47fac22230 chore: auto-commit (799 archivos)
- .claude/CLAUDE.md
- .claude/commands/subagentes.md
- .claude/rules/INDEX.md
- .mcp.json
- bash/functions/cybersecurity/analyze_dns.md
- bash/functions/cybersecurity/audit_http_headers.md
- bash/functions/cybersecurity/audit_ssh_config.md
- bash/functions/cybersecurity/check_firewall.md
- bash/functions/cybersecurity/detect_suspicious_users.md
- bash/functions/cybersecurity/encrypt_file.md
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 00:28:20 +02:00

1.8 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
safe_extract_zip function py infra 1.0.0 impure def safe_extract_zip(zip_path: str, dest_dir: str) -> None Extrae un archivo ZIP con proteccion contra Zip Slip (path traversal attack). Valida que cada archivo extraido quede dentro del directorio destino antes de extraerlo. Normaliza nombres de archivo UTF-8 antes de extraer.
zip
extract
security
zip-slip
path-traversal
infra
io
pendiente-usar
normalize_zip_filenames_py_infra
false error_go_core
os
zipfile
pathlib
name desc
zip_path ruta del archivo ZIP a extraer
name desc
dest_dir directorio destino para la extraccion
None (extrae archivos al disco en dest_dir) true
ZIP normal extrae correctamente dentro del destino
ZIP con path traversal lanza ValueError
ZIP con paths absolutos lanza ValueError
python/functions/infra/safe_extract_zip_test.py python/functions/infra/safe_extract_zip.py

Ejemplo

from safe_extract_zip import safe_extract_zip

# Extraccion segura
try:
    safe_extract_zip("archive.zip", "/tmp/output")
except ValueError as e:
    print(f"Zip Slip bloqueado: {e}")
except zipfile.BadZipFile:
    print("Archivo ZIP invalido")

Notas

Funcion impura: escribe archivos en disco.

La proteccion contra Zip Slip consiste en resolver el path absoluto de cada miembro antes de extraerlo y verificar que empiece con str(dest_dir) + os.sep. Esto bloquea tanto ../../etc/passwd como /etc/passwd.

La normalizacion de nombres UTF-8 se delega a normalize_zip_filenames y se ejecuta antes de la validacion de paths.