2026-07-12 12:41:35 +00:00
<!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 : 8 px ;
--radius-md : 14 px ;
--radius-lg : 24 px ;
}
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 40 px ; height : 64 px ;
background : rgba ( 255 , 255 , 255 , 0.88 ) ;
backdrop-filter : blur ( 16 px ) ; -webkit- backdrop-filter : blur ( 16 px ) ;
border-bottom : 1 px solid var ( - - border ) ;
}
. nav-logo {
font-size : 18 px ;
font-weight : 700 ;
letter-spacing : -0.3 px ;
color : #1d1d1f ; }
. nav-links { display : flex ; gap : 32 px ; list-style : none ; }
. nav-links a { font-size : 14 px ; color : var ( - - text - dim ) ; transition : color 0.2 s ; }
. nav-links a : hover { color : #1d1d1f ; }
. btn { display : inline-flex ; align-items : center ; gap : 6 px ; padding : 10 px 22 px ; background : var ( - - blue ) ; color : #1d1d1f ; font-size : 14 px ; font-weight : 600 ; border-radius : var ( - - radius - md ) ; border : none ; cursor : pointer ; transition : background 0.2 s , transform 0.15 s ; }
. btn : hover { background : var ( - - blue - dark ) ; transform : translateY ( -1 px ) ; }
/* PAGE HERO */
. page-hero {
padding : 140 px 24 px 80 px ; text-align : center ;
position : relative ; overflow : hidden ;
}
. page-hero :: before {
content : '' ; position : absolute ; top : -100 px ; left : 50 % ; transform : translateX ( -50 % ) ;
width : 900 px ; height : 500 px ;
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 : 8 px ;
background : rgba ( 0 , 102 , 255 , 0.1 ) ; border : 1 px solid rgba ( 0 , 102 , 255 , 0.25 ) ;
color : #5599ff ; font-size : 12 px ; font-weight : 600 ; letter-spacing : 0.08 em ;
text-transform : uppercase ; padding : 6 px 16 px ; border-radius : 100 px ; margin-bottom : 28 px ;
}
. page-hero h1 { font-size : clamp ( 32 px , 5 vw , 56 px ) ; font-weight : 800 ; letter-spacing : -1.5 px ; line-height : 1.1 ; color : #1d1d1f ; max-width : 700 px ; margin : 0 auto 20 px ; }
. page-hero-sub { font-size : clamp ( 15 px , 2 vw , 18 px ) ; color : var ( - - text - dim ) ; max-width : 520 px ; margin : 0 auto ; line-height : 1.65 ; }
/* CONTENT */
section { padding : 72 px 24 px ; }
. container { max-width : 900 px ; margin : 0 auto ; }
. surface-bg { background : var ( - - surface ) ; }
. section-label { font-size : 12 px ; font-weight : 700 ; letter-spacing : 0.1 em ; text-transform : uppercase ; color : var ( - - blue ) ; margin-bottom : 12 px ; }
. section-title { font-size : clamp ( 22 px , 3 vw , 34 px ) ; font-weight : 800 ; letter-spacing : -0.8 px ; line-height : 1.1 ; color : #1d1d1f ; margin-bottom : 20 px ; }
. prose p { font-size : 16 px ; color : var ( - - text - dim ) ; line-height : 1.8 ; margin-bottom : 16 px ; }
. prose p : last-child { margin-bottom : 0 ; }
. prose ul { padding-left : 24 px ; margin-bottom : 16 px ; }
. prose ul li { font-size : 15 px ; color : var ( - - text - dim ) ; line-height : 1.7 ; margin-bottom : 8 px ; }
. 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 : 1 px solid var ( - - border ) ;
border-radius : var ( - - radius - lg ) ; padding : 40 px ; margin-bottom : 40 px ;
}
. report-card h2 { font-size : 22 px ; font-weight : 700 ; color : #1d1d1f ; margin-bottom : 12 px ; letter-spacing : -0.3 px ; }
. report-card p { font-size : 15 px ; color : var ( - - text - dim ) ; line-height : 1.7 ; margin-bottom : 20 px ; }
. report-email {
display : inline-flex ; align-items : center ; gap : 10 px ;
background : rgba ( 0 , 102 , 255 , 0.12 ) ; border : 1 px solid rgba ( 0 , 102 , 255 , 0.25 ) ;
border-radius : var ( - - radius - md ) ; padding : 14 px 24 px ;
font-size : 16 px ; font-weight : 700 ; color : #5599ff ;
font-family : 'SF Mono' , 'Fira Code' , 'Courier New' , monospace ; letter-spacing : 0.01 em ;
transition : background 0.2 s , border-color 0.2 s ;
}
. report-email : hover { background : rgba ( 0 , 102 , 255 , 0.2 ) ; border-color : rgba ( 0 , 102 , 255 , 0.4 ) ; }
. pgp-note { font-size : 13 px ; color : rgba ( 0 , 0 , 0 , 0.75 ) ; margin-top : 12 px ; display : block ; }
/* SLA GRID */
. sla-grid { display : grid ; grid-template-columns : repeat ( 3 , 1 fr ) ; gap : 16 px ; margin-bottom : 40 px ; }
. sla-box { background : var ( - - surface -2 ) ; border : 1 px solid var ( - - border ) ; border-radius : var ( - - radius - md ) ; padding : 24 px 20 px ; }
. sla-num { font-size : 2 rem ; font-weight : 900 ; color : var ( - - blue ) ; letter-spacing : -0.04 em ; line-height : 1 ; margin-bottom : 6 px ; }
. sla-label { font-size : 13 px ; font-weight : 700 ; color : #1d1d1f ; margin-bottom : 6 px ; }
. sla-desc { font-size : 13 px ; color : var ( - - text - dim ) ; line-height : 1.55 ; }
/* POLICY CARDS */
. policy-card {
background : var ( - - surface -2 ) ; border : 1 px solid var ( - - border ) ;
border-radius : var ( - - radius - lg ) ; padding : 28 px 32 px ; margin-bottom : 16 px ;
display : flex ; gap : 20 px ; align-items : flex-start ;
}
. policy-icon { flex-shrink : 0 ; width : 44 px ; height : 44 px ; border-radius : var ( - - radius - md ) ; background : var ( - - blue - glow ) ; border : 1 px 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 : 16 px ; font-weight : 700 ; color : #1d1d1f ; margin-bottom : 6 px ; }
. policy-card p { font-size : 14 px ; color : var ( - - text - dim ) ; line-height : 1.65 ; margin : 0 ; }
/* FOOTER */
footer { border-top : 1 px solid var ( - - border ) ; padding : 40 px ; }
. footer-inner { max-width : 1140 px ; margin : 0 auto ; display : flex ; align-items : center ; justify-content : space-between ; flex-wrap : wrap ; gap : 20 px ; }
. footer-logo { font-size : 17 px ; font-weight : 700 ; color : #1d1d1f ; }
. footer-copy { font-size : 13 px ; color : var ( - - text - muted ) ; }
. footer-tagline { font-size : 12 px ; color : var ( - - text - muted ) ; margin-top : 4 px ; }
. footer-links { display : flex ; gap : 24 px ; align-items : center ; flex-wrap : wrap ; }
. footer-links a { font-size : 14 px ; color : var ( - - text - muted ) ; transition : color 0.2 s ; }
. footer-links a : hover { color : #1d1d1f ; }
. footer-social { width : 32 px ; height : 32 px ; border : 1 px solid var ( - - border ) ; border-radius : var ( - - radius - md ) ; display : flex ; align-items : center ; justify-content : center ; transition : border-color 0.2 s , background 0.2 s ; }
. 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 16 px ; } . nav-links { display : none ; } . sla-grid { grid-template-columns : 1 fr 1 fr ; } }
@ media ( max-width : 640px ) { . page-hero { padding : 120 px 16 px 64 px ; } section { padding : 48 px 16 px ; } . policy-card { flex-direction : column ; gap : 12 px ; padding : 20 px ; } footer { padding : 32 px 16 px ; } . footer-inner { flex-direction : column ; text-align : center ; } . footer-links { justify-content : center ; gap : 12 px 16 px ; } . sla-grid { grid-template-columns : 1 fr ; } }
< / 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 >
2026-07-14 15:27:33 +00:00
< div style = "font-size:11px;color:var(--text-muted);margin-top:8px;line-height:1.6" > Landvex AB · Org.nr 559141-7042< br > Stockholm, Sweden · < a href = "mailto:contact@landvex.com" style = "color:inherit" > contact@landvex.com< / a > < / div >
2026-07-12 12:41:35 +00:00
< / 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 & 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 → < / 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 >