OpenMercantil · Vulnerability Disclosure

Openmercantil Vulnerability Disclosure

Vulnerability disclosure

OpenMercantil publishes a responsible-disclosure policy in prose on its technical security page, with a named contact, an acknowledgement SLA and CVSS-banded remediation targets. It does NOT serve /.well-known/security.txt, and it runs no bug bounty program.

OpenMercantil publishes a vulnerability disclosure policy for reporting security issues.

BDNSBORMEBusiness RegistryCIFCNAECNMVCSVCompany DataCompany SearchCorporate RegistryDCAT-APDaily SummaryGeocodingJSONLegal DataMercantile LawOEPMOpen DataOpen Government DataOpenAPIOpenSanctionsPLACSPPublic ProcurementPublic RecordsPublic-Interest DataREST APIRegistry TimelineRisk SignalsSanctionsSpainSpanish CompaniesSpanish Open DataTendersTrust ScoreWebhook
Program:

Disclosure Policy

Security Contact

Source

Vulnerability Disclosure

Raw ↑
generated: '2026-08-14'
method: searched
source: https://openmercantil.es/seguridad
docs: https://openmercantil.es/seguridad
provider: OpenMercantil
providerId: openmercantil
description: >-
  OpenMercantil publishes a responsible-disclosure policy in prose on its
  technical security page, with a named contact, an acknowledgement SLA and
  CVSS-banded remediation targets. It does NOT serve
  /.well-known/security.txt, and it runs no bug bounty program.
program:
  published: true
  type: responsible-disclosure
  bug_bounty: false
  bounty_platform: null
  policy_url: https://openmercantil.es/seguridad
  contact_page: https://openmercantil.es/seguridad
  contact_email: >-
    Published on the security page behind the site's email-obfuscation script;
    the subject line "Security disclosure" is specified. The page's other
    published contacts are hola@openmercantil.es (general),
    privacidad@openmercantil.es (GDPR) and rectificacion@openmercantil.es
    (data corrections).
  subject_line_required: 'Security disclosure'
  acknowledgement_sla_hours: 72
  coordinated_disclosure_requested: true
  researcher_credit: >-
    Public acknowledgement of the researcher in the changelog is offered, at
    the researcher's option.
  safe_harbor_stated: false
remediation_targets:
  - severity: critical
    cvss: '9.0-10.0'
    temporary_mitigation: within 24 hours
    permanent_patch: within 7 days
  - severity: high
    cvss: '7.0-8.9'
    permanent_patch: within 14 days
  - severity: medium
    cvss: '4.0-6.9'
    permanent_patch: next monthly release cycle
  - severity: low
    cvss: '<4.0'
    permanent_patch: documented and prioritised
security_txt:
  served: false
  probed_paths:
    - url: https://openmercantil.es/.well-known/security.txt
      status: 404
  note: >-
    A documented disclosure policy with a stated 72-hour acknowledgement and
    CVSS-banded targets exists but is not machine-discoverable. Mirroring it to
    /.well-known/security.txt per RFC 9116 is the single cheapest improvement
    available on this provider's security surface.
published_controls:
  transport:
    - HTTPS enforced site-wide
    - 'HSTS max-age=31536000; includeSubDomains (preload not yet submitted)'
    - TLS 1.2+ with modern ciphers; no RC4, 3DES, MD5 or SHA-1
    - Content-Security-Policy with explicit allowlist
    - 'X-Frame-Options: SAMEORIGIN, X-Content-Type-Options: nosniff'
    - 'Referrer-Policy: strict-origin-when-cross-origin'
    - Permissions-Policy denying geolocation, camera and microphone
    - Certificate via OVH AutoSSL (Let's Encrypt), auto-renewed 30 days before expiry
  at_rest:
    - SQLite database with UNIX 600 permissions
    - 'Passwords hashed with bcrypt (password_hash, cost 12); never logged in clear'
    - 'API tokens and session ids from random_bytes() CSPRNG, minimum 32 bytes / 256 bits'
    - Daily backups encrypted with AES-256-GCM before leaving the server, 30-day rotation
    - Card data never stored — Stripe Checkout and Customer Portal only
  access_control:
    - Email + password or Google Sign-In
    - Passwords checked against HaveIBeenPwned on change
    - Exponential lockout after 5 attempts on login, password reset and API key request
    - 'Session cookies HttpOnly, Secure, SameSite=Lax; 4h idle expiry, 30d if remembered'
    - CSRF tokens on every state-changing form
    - Admin access restricted by IP allowlist plus mandatory TOTP 2FA
  pipeline_integrity:
    - Every processed BORME act retains the original official PDF URL
    - SHA-256 of each downloaded PDF compared against the AEBOE-published hash
    - Daily cron is idempotent — reprocessing a day yields the same result
    - Versioned schema migrations (0001..0028) with documented rollback
  privacy:
    - IP addresses anonymised in persisted logs (final octet zeroed)
    - Technical logs retained 30 days; security audit logs up to 1 year
    - No third-party advertising trackers beyond consented GA4/Clarity
    - No sale or transfer of personal data
deliberately_declined:
  - Third-party tracking services beyond consented GA4 and Microsoft Clarity
  - AI models inferring undeclared characteristics from personal data
  - Selling or transferring company or natural-person lists
  - Storing card data at any point
  - Dark patterns in cookie consent or plan upgrades