07 / Reglas de Detección
97 reglas. Sin configuración.
El conjunto completo de reglas de TigerMole. 3 familias. 97 patrones. Compiladas en el binario — sin actualizaciones externas, sin telemetría.
ALTA PRECISIÓN · 76 REGLAS
| ID | Nombre | Qué detecta |
|---|---|---|
| A001 | GitHub PAT (clásico) | Token con prefijo ghp_ |
| A002 | GitHub Fine-grained Token | Prefijo github_pat |
| A003 | AWS Access Key ID | Prefijo AKIA, 20 chars |
| A004 | AWS Secret Access Key | Detección por contexto |
| A005 | OpenAI API Key | Prefijos sk-proj-, sk-svcacct-, o magic string T3BlbkFJ |
| A006 | Anthropic API Key | Prefijos sk-ant-api03- / sk-ant-admin01-, termina en AA |
| A007 | Stripe Secret Key | Prefijos sk_live_ / sk_test_ |
| A008 | Slack Bot/User Token | Prefijos xoxb- / xoxp- |
| A009 | JWT | Prefijo base64 eyJ con estructura de 3 segmentos |
| A010 | RSA/SSH Private Key | Bloques PEM |
| A011 | Número de tarjeta de crédito | Visa/MC/Amex, validado con algoritmo Luhn |
| A012 | Google API Key | Prefijo AIza, 39 chars totales |
| A013 | Slack Webhook URL | URLs con hooks.slack.com |
| A014 | SendGrid API Key | Prefijo SG., 69 chars |
| A015 | Twilio Account SID | Prefijo AC + 32 hex chars |
| A016 | npm Auth Token | Prefijo npm_ + 36 alfanumérico |
| A017 | PyPI Upload Token | Prefijo pypi-, 50+ chars |
| A018 | Terraform Cloud Token | Formato .atlasv1. |
| A019 | SSH DSA Private Key | Bloques PEM DSA |
| A020 | GCP Service Account JSON | JSON con service_account |
| A021 | GitLab Personal Access Token | Prefijo glpat- |
| A022 | GitHub OAuth Access Token | Prefijo gho_, 36 chars |
| A023 | GitHub App Token | Prefijos ghu_ / ghs_, 36 chars |
| A024 | GitHub Refresh Token | Prefijo ghr_, 36 chars |
| A025 | Hugging Face Access Token | Prefijo hf_, 34 chars |
| A026 | Hugging Face Org Token | Prefijo api_org_, 34 chars |
| A027 | DigitalOcean PAT | Prefijo dop_v1_, 64 hex chars |
| A028 | Grafana Service Account Token | Prefijo glsa_ |
| A029 | Perplexity API Key | Prefijo pplx-, 48 chars |
| A030 | Azure AD Client Secret | Patrón q~, 31–34 chars |
| A031 | Shopify Access Token | Prefijos shpat_ / shpss_ / shppa_, 32 hex |
| A032 | GitLab CI/Deploy Token | Prefijos glptt- / gldt- / glcbt- / glrt- |
| A033 | Discord Bot Token | 64 hex chars |
| A034 | Cloudflare API Key | Contexto con keyword cloudflare |
| A035 | Datadog API Key | Contexto con keyword datadog |
| A036 | Linear API Key | Prefijo lin_api_, 40 chars |
| A037 | Heroku API Key v2 | Prefijo HRKU-AA, 60+ chars |
| A038 | Vercel Token | Contexto con keyword vercel, 24+ chars |
| A039 | Netlify PAT | Prefijo nfp_ o contexto |
| A040 | Cohere API Key | Prefijo co- (38+ chars) o contexto |
| A041 | Mistral API Key | Contexto con keyword mistral |
| A042 | Grafana API Key | Prefijo base64 eyJrIjoi, 70–400 chars |
| A043 | Replicate API Token | Prefijo r8_, 40 chars |
| A044 | Stripe Webhook Secret | Prefijo whsec_, 32+ chars |
| A045 | Stripe Restricted Key | Prefijos rk_live_ / rk_test_ |
| A046 | Sentry Auth Token | Prefijo sntrys_, 64+ chars |
| A047 | Firebase Server Key | Prefijo AAAA con formato específico |
| A048 | HashiCorp Vault Token | Prefijo hvs., 90+ chars |
| A049 | New Relic API Key | Prefijo NRAK-, 27 chars |
| A050 | Together AI API Key | Contexto con keyword together |
| A051 | AWS Session Token | Contexto, 100+ chars base64 |
| A052 | CircleCI Personal API Token | Prefijo CCIPAT_, 40 hex |
| A053 | Discord Webhook URL | Formato de URL de webhook Discord |
| A054 | Supabase API Key | Prefijo sbp_, 40 hex |
| A055 | PagerDuty API Key | Patrón base64 con separador + |
| A056 | Elastic API Key | Contexto con keyword elastic |
| A057 | Mailgun API Key | Prefijo key-, 32 hex |
| A058 | GitLab Runner Registration Token | Prefijo glrt- |
| A059 | Travis CI Access Token | Contexto con keyword travis, 22 chars |
| A060 | JFrog API Key/Token | Contexto con keywords jfrog / artifactory |
| A061 | Azure SAS Token | Patrón con parámetros sv=, sig= |
| A062 | Postmark Server Token | Formato UUID |
| A063 | SonarQube Token | Prefijo sqp_, 40 hex |
| A064 | Jenkins API Token | Contexto con keyword jenkins |
| A065 | Linode Personal Access Token | 64 hex chars |
| A066 | Generic pk_ token | Prefijo pk_, 20+ chars |
| A067 | Telegram Bot Token | Formato {id}:AA{alfanumérico+guión} |
| A068 | Atlassian API Token | Prefijo ATATT3, 40+ chars |
| A069 | Docker Hub PAT | Prefijo dckr_pat_, 27 chars |
| A070 | Doppler Token | Prefijos dp.st. / dp.pt. / dp.ct. / dp.sa., 40+ chars |
| A071 | Fly.io Access Token | Prefijo fo1_, 40+ chars |
| A072 | Google OAuth Client Secret | Prefijo GOCSPX-, 28 chars |
| A073 | Mapbox Access Token | Prefijos pk.eyJ / sk.eyJ |
| A074 | PlanetScale Database Token | Prefijo pscale_tkn_, 30+ chars |
| A075 | Plaid Access Token | Formato access-{sandbox|development|production}-{uuid} |
| A076 | Square Access Token | Prefijo sq0{3 letras}-, 22+ chars |
BASADO EN ENTROPÍA · 8 REGLAS
| ID | Nombre | Keywords de contexto | Req. mínimos |
|---|---|---|---|
| B001 | Password/secret assignment | password, passwd, pwd, pass, secret, credential | ≥8 chars, entropía ≥3.5 |
| B002 | Generic API key | api_key, apikey, api-key, access_key, x-api-key | ≥16 chars, entropía ≥3.8 |
| B003 | Generic token | token, auth_token, access_token, bearer | ≥20 chars, entropía ≥3.8 |
| B004 | Database connection string | postgres, mysql, mongodb, redis, mssql | URI de base de datos, entropía ≥3.0 |
| B005 | .env variable con valor de alta entropía | Variables con nombres relacionados a secretos | entropía ≥3.8 |
| B006 | Authorization Bearer header | Authorization: Bearer {valor} | ≥20 chars, entropía ≥3.5 |
| B007 | Authorization Basic header | Authorization: Basic {base64} | ≥16 chars base64, entropía ≥3.0 |
| B008 | Catch-all semántico | password, secret, token, api_key, etc. | ≥4 chars, sin req. de entropía |
RGPD ART. 4 · 13 REGLAS
| ID | Nombre | Qué detecta | Validación |
|---|---|---|---|
| C001 | Email address | Formato de email estándar | — |
| C002 | IP privada (RFC 1918) | Rangos 10.x, 172.16-31.x, 192.168.x | — |
| C003 | DNI/NIF español | 8 dígitos + letra | Módulo 23 |
| C004 | Path Unix/macOS con usuario | /home/{user}/ o /Users/{user}/ | — |
| C005 | Path Windows con usuario | C:\Users\{user}\ | — |
| C006 | IBAN | Código país 2 letras + 2 dígitos + BBAN | Módulo 97 (ISO 7064) |
| C007 | Teléfono internacional | +{código_país} {7–13 dígitos} | — |
| C008 | SSN (Social Security Number EE.UU.) | Formato XXX-XX-XXXX | Validación de rangos SSN |
| C009 | Pasaporte español | 3 letras mayúsculas + 6 dígitos | — |
| C010 | Teléfono español | 9 dígitos comenzando con 3, 6, 7 o 9 | — |
| C011 | Cuenta bancaria española (CCC) | 20 dígitos en grupos | Dígito de control CCC |
| C012 | IPv6 link-local | Prefijo fe80: | — |
| C013 | NIE español | Prefijo X/Y/Z + 7 dígitos + letra | Módulo 23 |
Pipeline de Detección
7 etapas. Cada petición.
Cada petición saliente pasa por las 7 etapas del pipeline en menos de 2 ms.
↓
Texto de entrada
1
Preflight (Aho-Corasick): filtra candidatos por keywords
2
Regex matching sobre candidatos
3
Validación de entropía (solo Familia B)
4
Validadores matemáticos (Luhn, mod-97, mod-23, rangos SSN)
5
Filtro de allowlist (placeholders, valores de test, ejemplos)
6
Scoring de confianza (keyword, entropía, validador, contexto)
7
Acción según umbral
Acción según umbral
MASK
≥ 0.7 → enmascarado
LOG_ONLY
0.4–0.69 → solo registrado
IGNORED
< 0.4 → ignorado
Total: 97 reglas — 76 (Familia A) + 8 (Familia B) + 13 (Familia C)
ALTA PRECISIÓN
Las 97 reglas. Activas desde el primer día.
Sin configuración. Sin setup. Solo protección.