
Research
/Security News
Weaponizing Discord for Command and Control Across npm, PyPI, and RubyGems.org
Socket researchers uncover how threat actors weaponize Discord across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.
ci-validation
Advanced tools
🇺🇾 Complete TypeScript/JavaScript library for validating Uruguayan CI (Cédula de Identidad) with official algorithm and government service integration
📅 ACTUALIZACIÓN TÉCNICA 04/08/2025:
� MEJORAS IMPLEMENTADAS:
- ✅ Extracción de datos mejorada: Soporte para el nuevo formato de formularios AIN_FRM_GRAL_DATOS_PERSONALES
- ✅ Información adicional: Tipo de documento, país emisor, y componentes individuales de nombres y apellidos
- ✅ Manejo de errores optimizado: Mensajes más descriptivos y manejo específico por tipo de error
- ✅ Validación mejorada: Verificación de formato de cédula antes del procesamiento
- ✅ Compatibilidad dual: Funciona con formatos antiguos y nuevos de formularios gubernamentales
- ✅ Logging mejorado: Mayor detalle en los logs para debugging y monitoreo
�🚨 CRISIS OPERACIONAL GUBERNAMENTAL: El endpoint vulnerable fue deshabilitado, pero esto ROMPIÓ COMPLETAMENTE el sistema de trámites:
- ❌ Formularios de identificación NO FUNCIONAN: Cualquier cédula ingresada es rechazada como "inválida"
- ❌ Trámites para personas físicas IMPOSIBLES: Los ciudadanos no pueden completar trámites que requieren identificación con cédula
- ⚠️ Otros formularios AÚN VULNERABLES: El endpoint sigue activo en otros formularios gubernamentales con autocompletado de datos personales
- 🔄 Solución incompleta: Se deshabilitó solo UN formulario, pero la vulnerabilidad persiste en múltiples puntos del sistema
📊 Estado actual: Los servicios gubernamentales están PARCIALMENTE ROTOS - ni seguros ni funcionales.
Ver reporte completo actualizado para detalles técnicos.
⚠️ IMPORTANTE PARA TODOS LOS URUGUAYOS ⚠️
Este proyecto fue desarrollado y hecho público debido a:
🔴 FALTA DE INCENTIVOS MONETARIOS para reportes de seguridad en entes públicos
🔴 AUSENCIA DE PROGRAMAS DE BUG BOUNTY gubernamentales
🔴 NULA RESPUESTA a reportes responsables de vulnerabilidades
🔴 FALTA DE ACCIONES CORRECTIVAS ante problemas de seguridad reportados🎯 OBJETIVO: Concientizar a los ciudadanos uruguayos sobre lo POCO CUIDADO que está el sistema informático de los entes públicos, donde la información personal de todos nosotros está expuesta sin protección adecuada.
📋 Este trabajo se hace público para:
- Generar presión social para que se solucionen estos problemas
- Mostrar la realidad del estado de la ciberseguridad pública
- Educar sobre la importancia de proteger datos personales
- Exigir transparencia y responsabilidad en la gestión de sistemas públicos
Lee el 📄 Reporte Completo de Vulnerabilidad para entender la gravedad del problema.
Una API RESTful construida con TypeScript y Express siguiendo los principios SOLID para validar cédulas de identidad uruguayas y consultar información a través del formulario oficial del MEF (Ministerio de Economía y Finanzas).
{
"success": true,
"data": {
"persona": {
"nombre": "EDELMA",
"apellido": "de SOUZA",
"cedula": "14115499",
"tipoDocumento": "Cédula de Identidad",
"paisEmisor": "URUGUAY",
"primerNombre": "EDELMA",
"primerApellido": "de SOUZA",
"processingTime": 1250,
"hasSession": true
}
}
}
¡Esta funcionalidad también está disponible como paquete npm!
# Instalar el paquete
npm install ci-validation
# Uso básico
import { validateCIAndQuery } from 'ci-validation';
const result = await validateCIAndQuery('19119365');
console.log(result);
// Output (solo validación local - endpoints gubernamentales inhabilitados):
// {
// "success": true,
// "data": {
// "ci": "19119365",
// "isValid": true,
// "normalizedCi": "19119365",
// "info": "Validación local únicamente - Servicios gubernamentales no disponibles desde 02/08/2025"
// }
// }
🔗 Enlaces del paquete:
CiValidator
: Solo se encarga de validar cédulasCiService
: Solo maneja las consultas a la API externaCiController
: Solo maneja las peticiones HTTP# Instalar la librería
npm install ci-validation
# Uso básico
import { validateCI, validateCIAndQuery } from 'ci-validation';
// Validación simple
console.log(validateCI('19119365')); // true
// Validación con consulta
const result = await validateCIAndQuery('19119365');
console.log(result);
# Instalar globalmente para usar desde línea de comandos
npm install -g ci-validation
# Usar el CLI
ci-validate 19119365
ci-validate 19119365 --query
# Clonar repositorio
git clone <url-del-repo>
cd ci-validation-api
# Instalar dependencias
npm install
# Modo desarrollo
npm run dev
# Construir para producción
npm run build
# Iniciar en producción
npm start
Verifica el estado de la API
Respuesta:
{
"status": "ok",
"timestamp": "2025-07-30T12:00:00.000Z"
}
Valida una cédula de identidad uruguaya
Request Body:
{
"ci": "19119365"
}
Respuesta exitosa:
{
"success": true,
"data": {
"ci": "19119365",
"isValid": true,
"info": "Información obtenida del formulario oficial del MEF..."
}
}
Respuesta con error:
{
"success": false,
"error": "Cédula inválida: formato incorrecto"
}
Endpoint de demostración con una cédula de ejemplo
Página web interactiva para probar la API
La página de demostración incluye:
Características técnicas:
# Ejecutar tests
npm test
# Ejecutar linting
npm run lint
# Corregir problemas de linting
npm run lint:fix
El proyecto está optimizado para deployment serverless en Vercel:
/api/
/public/
vercel.json
maneja el routingapi/
├── index.ts # Endpoint raíz (GET /)
├── health.ts # Health check (GET /health)
├── validate.ts # Validación (POST /api/ci/validate)
└── demo.ts # Demo API (GET /api/ci/demo)
public/
└── index.html # Página demo (GET /demo)
https://ci-validation.vercel.app/
https://ci-validation.vercel.app/health
https://ci-validation.vercel.app/api/ci/validate
https://ci-validation.vercel.app/demo
NODE_ENV
: production
PORT
: Puerto del servidor (automático en Vercel)src/
├── controllers/ # Controladores HTTP
│ └── CiController.ts
├── services/ # Servicios de negocio
│ └── CiService.ts
├── validators/ # Validadores
│ └── CiValidator.ts
├── interfaces/ # Definiciones de tipos
│ ├── ICiValidator.ts
│ ├── ICiService.ts
│ └── ApiResponse.ts
├── middleware/ # Middlewares personalizados
│ └── errorHandler.ts
├── routes/ # Definición de rutas
│ └── ciRoutes.ts
├── utils/ # Utilidades
│ └── dependencyContainer.ts
└── index.ts # Punto de entrada
La validación sigue el algoritmo oficial uruguayo:
git checkout -b feature/AmazingFeature
)git commit -m 'Add some AmazingFeature'
)git push origin feature/AmazingFeature
)Si tienes permisos de publicación:
# Verificar build
npm run build
# Dry run
npm run publish:dry
# Publicar
npm run publish:npm
# O incrementar versión y publicar
npm version patch # o minor/major
npm run publish:npm
Ver guía completa de publicación para más detalles.
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE
para más detalles.
FAQs
🇺🇾 Complete TypeScript/JavaScript library for validating Uruguayan CI (Cédula de Identidad) with official algorithm and government service integration
The npm package ci-validation receives a total of 26 weekly downloads. As such, ci-validation popularity was classified as not popular.
We found that ci-validation demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
Socket researchers uncover how threat actors weaponize Discord across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.
Security News
Socket now integrates with Bun 1.3’s Security Scanner API to block risky packages at install time and enforce your organization’s policies in local dev and CI.
Research
The Socket Threat Research Team is tracking weekly intrusions into the npm registry that follow a repeatable adversarial playbook used by North Korean state-sponsored actors.