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
#!/usr/bin/env bash
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 }
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
echo ' "dependency_check_report": "target/dependency-check-report.json"' >> $REPORT echo "}" >> $REPORT
echo "Security audit JSON report generated at $REPORT"
if grep -q '"type"' $REPORT; then echo "Unsafe deserialization patterns detected" exit 1 fi
org.owasp dependency-check-maven 9.1.0 JSON 7 checkgithub action que ejecuta el script anterior. Este gh action debe estar en el repo que quieres revisar
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