Skip to content

Instantly share code, notes, and snippets.

@alonsoir
Created February 23, 2026 11:45
Show Gist options
  • Select an option

  • Save alonsoir/a1e703c1764fdf05990d17a60bf01b8b to your computer and use it in GitHub Desktop.

Select an option

Save alonsoir/a1e703c1764fdf05990d17a60bf01b8b to your computer and use it in GitHub Desktop.
deserializacion insegura en Java.

La deserialización insegura (como la que puede llevar a RCE) no ha desaparecido del ecosistema Java; # sigue presente en aplicaciones del mundo real, con impacto real en seguridad. Sin embargo, su

afectación concreta depende mucho de cómo estén construidas las aplicaciones y de sus dependencias.

La vulnerabilidad de deserialización insegura sigue siendo relevante en 2026 y se observa con

frecuencia en auditorías de seguridad de aplicaciones Java.

Su presencia no es inherente al lenguaje, sino al uso indebido de mecanismos como la serialización

Java nativa y a dependencias inseguras.

El impacto real en tu proyecto depende de si:

Usas serialización Java para entrada externa.

Dependes de librerías que aceptan datos no confiables sin validación.

No aplicas filtros y prácticas de defensiva en la deserialización.

A continuación, una forma para detectar el problema en tu pipeline.

#!/usr/bin/env bash

secure-deserialization-audit.sh

set -e

REPORT="deserialization-report.json" TMP="tmp-findings.json"

echo "{" > $REPORT echo ' "static_findings": [' >> $REPORT

FIRST=true

add_finding() { if [ "$FIRST" = false ]; then echo "," >> $REPORT fi FIRST=false echo " {"type": "$1", "location": "$2"}" >> $REPORT }

Buscar patrones peligrosos

while IFS= read -r line; do add_finding "ObjectInputStream_usage" "$line" done < <(grep -R --line-number --exclude-dir=target
-E "ObjectInputStream|readObject(" src/ || true)

while IFS= read -r line; do add_finding "Dangerous_codec" "$line" done < <(grep -R --line-number --exclude-dir=target
-E "ObjectSerializationCodecFactory|ObjectDecoder" src/ || true)

echo "" >> $REPORT echo " ]," >> $REPORT

Añadir referencia a dependency check

echo ' "dependency_check_report": "target/dependency-check-report.json"' >> $REPORT echo "}" >> $REPORT

echo "Security audit JSON report generated at $REPORT"

Fallar si hay hallazgos estáticos

if grep -q '"type"' $REPORT; then echo "Unsafe deserialization patterns detected" exit 1 fi

En tu pom.xml

org.owasp dependency-check-maven 9.1.0 JSON 7 check

Esto generará:

target/dependency-check-report.json

Y fallará el build si CVSS ≥ 7.

github action que ejecuta el script anterior. Este gh action debe estar en el repo que quieres revisar

Qué cubre esta solución

Uso directo de ObjectInputStream

Codecs peligrosos en frameworks como Apache MINA

Dependencias con CVEs graves

Reporte JSON automatizable

Fallo automático del pipeline

name: Security Audit

on: [push]

jobs: security: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3

  - name: Setup JDK 21
    uses: actions/setup-java@v3
    with:
      distribution: temurin
      java-version: 21

  - name: Run Maven Security Scan
    run: mvn clean verify

  - name: Run Deserialization Audit
    run: bash secure-deserialization-audit.sh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment