threatover Patrik Grobshäuser
Revisión de código

Plugin & theme audit.

A manual source-code security review of a WordPress plugin or theme.

precio fijo por código

Qué hacemos con ello

Static source review.

Obtenemos una copia del código fuente de tu plugin o tema y lo leemos. Función a función. Endpoint a endpoint. Buscamos los patrones que se convierten en compromisos seis meses después — los que un linter y un escáner pasan por alto porque tienen que ver con la intención, no con la sintaxis.

Después documentamos qué encontramos, cómo reproducir cada problema y cómo arreglarlo sin romper la funcionalidad en la que está.

Quién contrata esto

  • Autores de plugins preparando un envío al repositorio de WordPress.org o a un marketplace de pago.
  • Desarrolladores entregando una integración custom a un cliente concreto que ha pedido una auditoría.
  • Dueños de sitios que heredaron un plugin o tema custom y no se fían.
  • Agencias que adquieren un plugin y quieren due diligence sobre el código antes de firmar.

Cobertura

Ejemplos de lo que buscamos.

Comprobaciones de capabilities

Cada acción reservada a admin verificada con current_user_can() y la capability correcta — no sólo is_user_logged_in().

Nonces y CSRF

Cada petición que cambia estado verificada con un nonce válido y vinculado a la acción. Fácil de olvidar; causa común de cadenas CSRF-a-RCE.

Manejo de entradas

Saneamiento y validación de cada entrada de usuario — no sólo al guardar, sino en cada capa (REST, AJAX, shortcode, bloque, comando CLI).

Escape de salida

Cada echo / printf / variable de plantilla envuelta en el escaper correcto (esc_html, esc_attr, esc_url, wp_kses). El XSS reflejado sigue siendo el hallazgo más común en WordPress.

Acceso a base de datos

Prepared statements en todo el código. Sin concatenación de strings en $wpdb->query(). $wpdb->prepare() con los especificadores de formato correctos.

Operaciones con archivos

Manejadores de subidas, borrado de archivos, lecturas de archivos — todo verificado contra path traversal, validación de tipo y prevención de ejecución en directorios de uploads.

Funciones peligrosas

Usos de eval, unserialize, system, exec, preg_replace /e, extract — marcados y revisados en contexto.

Autorización

Login custom, restablecimiento de contraseña, OAuth, manejo de tokens de API — cada vez que el plugin mueve identidad, miramos de cerca.

Dependencias

Librerías incluidas (jQuery, paquetes de Composer, builds de npm) revisadas contra versiones con vulnerabilidades conocidas y cualquier fork de código upstream.

Telemetría y egress

Cualquier petición HTTP saliente revisada — qué se envía, a dónde y si la respuesta se confía ciegamente.

Canal de actualización

Si el plugin se autoactualiza desde una fuente que no es WordPress.org, la integridad del canal de actualización se revisa de extremo a extremo.

Multisite y roles

Separación entre network admin y site admin, rutas de escalada a super-admin, acciones restringidas por rol en toda la red.

Cómo funciona

How the audit runs.

  1. Paso 1

    Entrega del código

    Código fuente (zip, git o commit fijado) con el contexto del build.

  2. Paso 2

    Seguir leyendo

    Revisión línea por línea. Hallazgos con referencias archivo:línea.

  3. Paso 3

    Comprobación dinámica

    Hallazgos prometedores confirmados en una instalación real.

  4. Paso 4

    Informe y debrief

    Informe, repaso y una ronda de re-test.

Precios

Por código, fijo.

Cotizado por adelantado según tamaño y complejidad. Los números de abajo son puntos de partida típicos; enviamos una cotización fija tras ver el código.

Pequeño

Quoted

Hasta ~3.000 líneas de PHP

Plugin o tema de un solo propósito. Ejemplos: manejador de formulario, custom post type, integración ligera.

Hablemos
Grande

Personalizado

Más de 10.000 líneas

Plugin mayor (extensión de WooCommerce, capa multilingüe), código tipo plataforma o cualquier cosa con un canal de actualización complejo y capa de licencias.

Hablemos

Preguntas frecuentes

Preguntas frecuentes.

¿Esto es sólo ejecutar un escáner?

No. Los escáneres forman parte del flujo de trabajo (los corremos para triage rápido), pero cada hallazgo del informe ha sido leído en contexto por un humano. Los escáneres traen falsos positivos — nosotros no.

¿Podéis firmar un NDA antes de que enviemos el código?

Sí. Tenemos un NDA mutuo estándar y nos vale usar el tuyo si lo prefieres. El código se borra al final del encargo más 30 días para fines de re-test.

¿También auditáis JavaScript y código de assets?

Sí en lo que es JS relevante para seguridad — scripts de UI de admin, bloques de Gutenberg, manejadores de subida de assets. No revisamos el código frontend por bugs no relacionados con seguridad.

¿Firmáis para envíos a marketplace?

Podemos emitir una carta de confirmación de auditoría apta para marketplaces que la pidan. No certificamos que un código tenga cero bugs — nadie honesto lo hace.

Correo [email protected] or use the contact form.