Files
boc/landvex-site/responsible-disclosure/index.html
T
Bernt 6de2455917 v1.2.0: Add Global Markets footer, translated to 9 languages
- Added GLOBAL_MARKETS_TITLE to all translation files
- Updated footer with 12 markets (4 active + 8 upcoming)
- Translated market section to: zh-cn, zh-tw, ja, ko, th, vi, id, ms, hi
- Built and deployed to production
- CloudFront invalidation: I3RTMXVFDJXWLG3SYX208OP1CC
2026-07-08 19:56:03 +00:00

312 lines
18 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Responsible Disclosure — Landvex</title>
<meta name="description" content="Landvex responsible disclosure policy — how to report security vulnerabilities. 48-hour response SLA, safe harbour, PGP encryption available.">
<link rel="canonical" href="https://www.landvex.com/responsible-disclosure/">
<meta property="og:type" content="website">
<meta property="og:url" content="https://www.landvex.com/responsible-disclosure/">
<meta property="og:title" content="Responsible Disclosure — Landvex">
<meta property="og:description" content="Report security vulnerabilities to Landvex. We respond within 48 hours and operate safe harbour for good-faith researchers.">
<meta property="og:image" content="https://www.landvex.com/og-image.jpg">
<meta name="twitter:card" content="summary_large_image">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="icon" type="image/x-icon" href="/favicon.ico">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
--bg-dark: #f5f5f7;
--blue: #0066FF;
--blue-dark: #0052CC;
--blue-glow: rgba(0,102,255,0.15);
--text-light: #1d1d1f;
--text-dim: #6B6B6B;
--text-muted: #6B6B6B;
--surface: #ffffff;
--surface-2: #f5f5f7;
--border: rgba(0,0,0,0.08);
--radius-sm: 8px;
--radius-md: 14px;
--radius-lg: 24px;
}
html { scroll-behavior: smooth; }
body { font-family: -apple-system, BlinkMacSystemFont, 'Inter', 'Helvetica Neue', sans-serif; background: var(--bg-dark); color: var(--text-light); line-height: 1.6; -webkit-font-smoothing: antialiased; }
a { color: inherit; text-decoration: none; }
/* NAV */
nav {
position: fixed; top: 0; left: 0; right: 0; z-index: 100;
display: flex; align-items: center; justify-content: space-between;
padding: 0 40px; height: 64px;
background: rgba(255,255,255,0.88);
backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
border-bottom: 1px solid var(--border);
}
.nav-logo {
font-size: 18px;
font-weight: 700;
letter-spacing: -0.3px;
color: #1d1d1f; }
.nav-links { display: flex; gap: 32px; list-style: none; }
.nav-links a { font-size: 14px; color: var(--text-dim); transition: color 0.2s; }
.nav-links a:hover { color: #1d1d1f; }
.btn { display: inline-flex; align-items: center; gap: 6px; padding: 10px 22px; background: var(--blue); color: #1d1d1f; font-size: 14px; font-weight: 600; border-radius: var(--radius-md); border: none; cursor: pointer; transition: background 0.2s, transform 0.15s; }
.btn:hover { background: var(--blue-dark); transform: translateY(-1px); }
/* PAGE HERO */
.page-hero {
padding: 140px 24px 80px; text-align: center;
position: relative; overflow: hidden;
}
.page-hero::before {
content: ''; position: absolute; top: -100px; left: 50%; transform: translateX(-50%);
width: 900px; height: 500px;
background: radial-gradient(ellipse at center, rgba(0,102,255,0.08) 0%, transparent 70%);
pointer-events: none;
}
.hero-eyebrow {
display: inline-flex; align-items: center; gap: 8px;
background: rgba(0,102,255,0.1); border: 1px solid rgba(0,102,255,0.25);
color: #5599ff; font-size: 12px; font-weight: 600; letter-spacing: 0.08em;
text-transform: uppercase; padding: 6px 16px; border-radius: 100px; margin-bottom: 28px;
}
.page-hero h1 { font-size: clamp(32px, 5vw, 56px); font-weight: 800; letter-spacing: -1.5px; line-height: 1.1; color: #1d1d1f; max-width: 700px; margin: 0 auto 20px; }
.page-hero-sub { font-size: clamp(15px, 2vw, 18px); color: var(--text-dim); max-width: 520px; margin: 0 auto; line-height: 1.65; }
/* CONTENT */
section { padding: 72px 24px; }
.container { max-width: 900px; margin: 0 auto; }
.surface-bg { background: var(--surface); }
.section-label { font-size: 12px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--blue); margin-bottom: 12px; }
.section-title { font-size: clamp(22px, 3vw, 34px); font-weight: 800; letter-spacing: -0.8px; line-height: 1.1; color: #1d1d1f; margin-bottom: 20px; }
.prose p { font-size: 16px; color: var(--text-dim); line-height: 1.8; margin-bottom: 16px; }
.prose p:last-child { margin-bottom: 0; }
.prose ul { padding-left: 24px; margin-bottom: 16px; }
.prose ul li { font-size: 15px; color: var(--text-dim); line-height: 1.7; margin-bottom: 8px; }
.prose a { color: #5599ff; text-decoration: underline; text-decoration-color: rgba(85,153,255,0.35); }
.prose a:hover { text-decoration-color: #5599ff; }
/* REPORT CARD */
.report-card {
background: var(--surface); border: 1px solid var(--border);
border-radius: var(--radius-lg); padding: 40px; margin-bottom: 40px;
}
.report-card h2 { font-size: 22px; font-weight: 700; color: #1d1d1f; margin-bottom: 12px; letter-spacing: -0.3px; }
.report-card p { font-size: 15px; color: var(--text-dim); line-height: 1.7; margin-bottom: 20px; }
.report-email {
display: inline-flex; align-items: center; gap: 10px;
background: rgba(0,102,255,0.12); border: 1px solid rgba(0,102,255,0.25);
border-radius: var(--radius-md); padding: 14px 24px;
font-size: 16px; font-weight: 700; color: #5599ff;
font-family: 'SF Mono', 'Fira Code', 'Courier New', monospace; letter-spacing: 0.01em;
transition: background 0.2s, border-color 0.2s;
}
.report-email:hover { background: rgba(0,102,255,0.2); border-color: rgba(0,102,255,0.4); }
.pgp-note { font-size: 13px; color: rgba(0,0,0,0.75); margin-top: 12px; display: block; }
/* SLA GRID */
.sla-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-bottom: 40px; }
.sla-box { background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--radius-md); padding: 24px 20px; }
.sla-num { font-size: 2rem; font-weight: 900; color: var(--blue); letter-spacing: -0.04em; line-height: 1; margin-bottom: 6px; }
.sla-label { font-size: 13px; font-weight: 700; color: #1d1d1f; margin-bottom: 6px; }
.sla-desc { font-size: 13px; color: var(--text-dim); line-height: 1.55; }
/* POLICY CARDS */
.policy-card {
background: var(--surface-2); border: 1px solid var(--border);
border-radius: var(--radius-lg); padding: 28px 32px; margin-bottom: 16px;
display: flex; gap: 20px; align-items: flex-start;
}
.policy-icon { flex-shrink: 0; width: 44px; height: 44px; border-radius: var(--radius-md); background: var(--blue-glow); border: 1px solid rgba(0,102,255,0.2); display: flex; align-items: center; justify-content: center; }
.policy-icon svg { color: var(--blue); }
.policy-card h3 { font-size: 16px; font-weight: 700; color: #1d1d1f; margin-bottom: 6px; }
.policy-card p { font-size: 14px; color: var(--text-dim); line-height: 1.65; margin: 0; }
/* FOOTER */
footer { border-top: 1px solid var(--border); padding: 40px; }
.footer-inner { max-width: 1140px; margin: 0 auto; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 20px; }
.footer-logo { font-size: 17px; font-weight: 700; color: #1d1d1f; }
.footer-copy { font-size: 13px; color: var(--text-muted); }
.footer-tagline { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
.footer-links { display: flex; gap: 24px; align-items: center; flex-wrap: wrap; }
.footer-links a { font-size: 14px; color: var(--text-muted); transition: color 0.2s; }
.footer-links a:hover { color: #1d1d1f; }
.footer-social { width: 32px; height: 32px; border: 1px solid var(--border); border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; transition: border-color 0.2s, background 0.2s; }
.footer-social:hover { border-color: rgba(0,0,0,0.25); background: rgba(0,0,0,0.04); }
@media (max-width: 900px) { nav { padding: 0 16px; } .nav-links { display: none; } .sla-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 640px) { .page-hero { padding: 120px 16px 64px; } section { padding: 48px 16px; } .policy-card { flex-direction: column; gap: 12px; padding: 20px; } footer { padding: 32px 16px; } .footer-inner { flex-direction: column; text-align: center; } .footer-links { justify-content: center; gap: 12px 16px; } .sla-grid { grid-template-columns: 1fr; } }
</style>
<link rel="alternate" hreflang="x-default" href="https://www.landvex.com/">
<link rel="alternate" hreflang="en" href="https://www.landvex.com/">
<link rel="alternate" hreflang="sv" href="https://landvex.se/">
<link rel="alternate" hreflang="de" href="https://landvex.de/">
<link rel="alternate" hreflang="fr" href="https://landvex.fr/">
<link rel="alternate" hreflang="en-GB" href="https://landvex.co.uk/">
</head>
<body>
<nav aria-label="breadcrumb" style="padding: 10px 20px; color: rgba(235,235,245,0.6); font-size: 14px;">
<a href="/" style="color: #007AFF; text-decoration: none;">Home</a> / <span>responsible-disclosure</span>
</nav>
<nav>
<a href="/" class="nav-logo">Landvex</a>
<ul class="nav-links">
<li><a href="/">Platform</a></li>
<li><a href="/methodology/">Methodology</a></li>
<li><a href="/for-organisations/">For organisations</a></li>
<li><a href="/about/">About</a></li>
</ul>
<a href="mailto:contact@landvex.com" class="btn">Contact us</a>
</nav>
<section class="page-hero">
<div class="hero-eyebrow">Security</div>
<h1>Responsible Disclosure</h1>
<p class="page-hero-sub">If you have identified a potential vulnerability in Landvex systems, we want to hear from you. We take all reports seriously.</p>
</section>
<section>
<div class="container">
<div class="report-card">
<h2>Report a vulnerability</h2>
<p>Send details of the vulnerability to our security team. Include a clear description, reproduction steps, affected component, and potential impact. All reports are handled confidentially.</p>
<div>
<a href="mailto:security@landvex.com" class="report-email">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/><polyline points="22,6 12,13 2,6"/></svg>
security@landvex.com
</a>
<span class="pgp-note">PGP key available on request. Reference "PGP Request" in your subject line.</span>
</div>
</div>
<div class="sla-grid">
<div class="sla-box">
<div class="sla-num">48h</div>
<div class="sla-label">Initial response</div>
<div class="sla-desc">We acknowledge all reports within 48 hours of receipt.</div>
</div>
<div class="sla-box">
<div class="sla-num">7d</div>
<div class="sla-label">Triage update</div>
<div class="sla-desc">Triage assessment and severity classification within 7 days.</div>
</div>
<div class="sla-box">
<div class="sla-num">90d</div>
<div class="sla-label">Disclosure window</div>
<div class="sla-desc">We aim to remediate and disclose confirmed issues within 90 days.</div>
</div>
</div>
<div style="margin-bottom:48px;">
<div class="section-label">Scope</div>
<div class="prose" style="margin-top:8px;">
<p>The following are in scope for responsible disclosure:</p>
<ul>
<li>www.landvex.com and all subdomains</li>
<li>The Landvex platform and API (api.landvex.com)</li>
<li>Intelligence product delivery infrastructure</li>
<li>Client dashboard and authentication systems</li>
</ul>
<p>Third-party services integrated by Landvex are not in scope. Please report those directly to the respective vendor.</p>
</div>
</div>
<div style="margin-bottom:48px;">
<div class="section-label">Safe harbour</div>
<div style="margin-top:16px;">
<div class="policy-card">
<div class="policy-icon">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
</div>
<div>
<h3>No legal action against good-faith researchers</h3>
<p>Landvex will not initiate legal proceedings against researchers who identify and report vulnerabilities in accordance with this policy. Good-faith research that avoids user data exposure, system disruption, or privacy violations is protected.</p>
</div>
</div>
<div class="policy-card">
<div class="policy-icon">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>
</div>
<div>
<h3>Confidential handling</h3>
<p>We will not share your identity or contact details with any third party without your explicit consent, except where required by law.</p>
</div>
</div>
<div class="policy-card">
<div class="policy-icon">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg>
</div>
<div>
<h3>What is excluded from safe harbour</h3>
<p>Research that involves accessing, modifying, or exfiltrating client or user data; disrupting platform availability; or social engineering of Landvex staff is not covered and may be subject to legal consequences.</p>
</div>
</div>
</div>
</div>
<div class="prose">
<div class="section-label">Hall of fame</div>
<div style="margin-top:8px;">
<p>Landvex publicly acknowledges researchers who responsibly disclose verified vulnerabilities. Recognition is made with the researcher's consent and listed on our <a href="/security/">Security page</a>.</p>
<p>Landvex does not operate a formal bug bounty programme at this time. We are grateful to every researcher who contributes to the security of our platform and the integrity of the data we serve to clients.</p>
</div>
<div style="margin-top:32px;">
<div class="section-label">Expectations for researchers</div>
<ul style="margin-top:8px; list-style:disc; padding-left:24px;">
<li style="font-size:15px; color:var(--text-dim); margin-bottom:8px; line-height:1.65;">Report vulnerabilities promptly and do not exploit them beyond what is required to demonstrate the issue</li>
<li style="font-size:15px; color:var(--text-dim); margin-bottom:8px; line-height:1.65;">Do not access, modify, or retain client or user data beyond what is incidentally accessed during testing</li>
<li style="font-size:15px; color:var(--text-dim); margin-bottom:8px; line-height:1.65;">Do not conduct denial-of-service attacks, spam, or social engineering</li>
<li style="font-size:15px; color:var(--text-dim); margin-bottom:8px; line-height:1.65;">Allow us reasonable time to respond and remediate before public disclosure</li>
<li style="font-size:15px; color:var(--text-dim); margin-bottom:0; line-height:1.65;">Act in good faith at all times</li>
</ul>
</div>
</div>
</div>
</section>
<footer>
<div class="footer-inner">
<div>
<div class="footer-logo">Landvex</div>
<div class="footer-copy">© 2026 Landvex Inc · Landvex AB (org.nr 559141-7042)</div>
<div class="footer-tagline">Decision intelligence for the physical world.</div>
<div style="font-size:11px;color:var(--text-muted);margin-top:8px;line-height:1.6">Landvex AB · Org.nr 559141-7042<br>Tyreso, Sweden · <a href="mailto:contact@landvex.com" style="color:inherit">contact@landvex.com</a></div>
</div>
<div class="footer-links">
<a href="/about/">About</a>
<a href="/privacy/">Privacy</a>
<a href="/terms/">Terms</a>
<a href="/methodology/">Methodology</a>
<a href="/data-quality/">Data Quality</a>
<a href="/security/">Security</a>
<a href="/comparison/">Compare</a>
<a href="/sla/">SLA &amp; Coverage</a>
<a href="/careers/">Careers</a>
<a href="/accessibility/">Accessibility</a>
<a href="/responsible-disclosure/" style="color: #1d1d1f">Responsible disclosure</a>
<a href="https://www.quixzoom.com/" target="_blank" rel="noopener">quiXzoom &rarr;</a>
<a href="mailto:contact@landvex.com">contact@landvex.com</a>
<a href="https://www.linkedin.com/company/landvex" target="_blank" rel="noopener" class="footer-social" title="LandveX on LinkedIn">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" stroke="#888" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><rect x="2" y="9" width="4" height="12" stroke="#888" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><circle cx="4" cy="4" r="2" stroke="#888" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</a>
<a href="https://x.com/landvex" target="_blank" rel="noopener" class="footer-social" title="LandveX on X">
<svg width="15" height="15" viewBox="0 0 24 24" fill="#888"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.746l7.73-8.835L1.254 2.25H8.08l4.253 5.622 5.912-5.622Zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>
</a>
</div>
</div>
</footer>
</body>
</html>