@@ -33,7 +33,7 @@ const withBase = (path) => `${base}${path.replace(/^\/+/, '')}`;
3333 </p >
3434 </div >
3535
36- <h2 >Eligibility</h2 >
36+ <h2 id = " eligibility " >Eligibility < a href = " #eligibility " class = " anchor-link " >#</ a > </h2 >
3737
3838 <p class =" section-intro" >Ledger Bug Bounty Program covers our hardware devices as well as our web services.</p >
3939
@@ -93,7 +93,7 @@ const withBase = (path) => `${base}${path.replace(/^\/+/, '')}`;
9393 </div >
9494
9595 <div class =" prose-section" >
96- <h2 >Responsible Disclosure Policy</h2 >
96+ <h2 id = " responsible-disclosure-policy " >Responsible Disclosure Policy < a href = " #responsible-disclosure-policy " class = " anchor-link " >#</ a > </h2 >
9797
9898 <p >
9999 At Ledger, we believe that Coordinated Vulnerability Disclosure is the right approach to
@@ -107,7 +107,7 @@ const withBase = (path) => `${base}${path.replace(/^\/+/, '')}`;
107107 legal liability, so long as they follow responsible disclosure guidelines and principles.
108108 </p >
109109
110- <h3 >Guidelines</h3 >
110+ <h3 id = " guidelines " >Guidelines < a href = " #guidelines " class = " anchor-link " >#</ a > </h3 >
111111
112112 <ul >
113113 <li >Do not engage in testing that degrades Ledger's information systems and products</li >
@@ -116,7 +116,7 @@ const withBase = (path) => `${base}${path.replace(/^\/+/, '')}`;
116116 <li >Do not exploit vulnerabilities on our infrastructure — the Bounty Program is about improving security, not deliberately putting the community at risk</li >
117117 </ul >
118118
119- <h2 >Submission Process</h2 >
119+ <h2 id = " submission-process " >Submission Process < a href = " #submission-process " class = " anchor-link " >#</ a > </h2 >
120120
121121 <p >
122122 Submission reports should include a detailed description of your discovery with clear,
@@ -151,7 +151,7 @@ const withBase = (path) => `${base}${path.replace(/^\/+/, '')}`;
151151
152152 <p >The Ledger Security Team will be in touch, usually within 24 hours.</p >
153153
154- <h2 >Remediation & Disclosure</h2 >
154+ <h2 id = " remediation-disclosure " >Remediation & Disclosure < a href = " #remediation-disclosure " class = " anchor-link " >#</ a > </h2 >
155155
156156 <p >
157157 After triage, we will send a quick acknowledgement and commit to being as transparent
@@ -163,7 +163,7 @@ const withBase = (path) => `${base}${path.replace(/^\/+/, '')}`;
163163 fix issues within 90 days upon receipt of a vulnerability report.
164164 </p >
165165
166- <h2 >Reward</h2 >
166+ <h2 id = " reward " >Reward < a href = " #reward " class = " anchor-link " >#</ a > </h2 >
167167
168168 <p >You may be eligible to receive a reward if:</p >
169169
@@ -182,7 +182,7 @@ const withBase = (path) => `${base}${path.replace(/^\/+/, '')}`;
182182
183183 <p ><strong >Bounties will be paid directly to the researcher using Bitcoin.</strong ></p >
184184
185- <h3 >Eligibility Requirements</h3 >
185+ <h3 id = " eligibility-requirements " >Eligibility Requirements < a href = " #eligibility-requirements " class = " anchor-link " >#</ a > </h3 >
186186
187187 <p >To be eligible for a reward, you must not:</p >
188188
@@ -194,7 +194,7 @@ const withBase = (path) => `${base}${path.replace(/^\/+/, '')}`;
194194 <li >Be less than 18 years of age (if under 18, you must get your parents' or legal guardian's permission)</li >
195195 </ul >
196196
197- <h2 >Hall of Fame</h2 >
197+ <h2 id = " hall-of-fame " >Hall of Fame < a href = " #hall-of-fame " class = " anchor-link " >#</ a > </h2 >
198198
199199 <p >
200200 In mutual consultation, we can, if you desire, display a researcher's name or its pseudonym
@@ -203,7 +203,7 @@ const withBase = (path) => `${base}${path.replace(/^\/+/, '')}`;
203203 to the Devices Bug Bounty Program.
204204 </p >
205205
206- <h2 >Code of Conduct</h2 >
206+ <h2 id = " code-of-conduct " >Code of Conduct < a href = " #code-of-conduct " class = " anchor-link " >#</ a > </h2 >
207207
208208 <ul >
209209 <li >Be kind</li >
@@ -384,6 +384,24 @@ const withBase = (path) => `${base}${path.replace(/^\/+/, '')}`;
384384 font-style: italic;
385385 }
386386
387+ .anchor-link {
388+ color: var(--color-text-tertiary);
389+ text-decoration: none;
390+ font-weight: 400;
391+ margin-left: var(--space-2);
392+ opacity: 0;
393+ transition: opacity 0.2s ease;
394+
395+ &:hover {
396+ color: var(--color-accent-primary);
397+ }
398+ }
399+
400+ h2:hover .anchor-link,
401+ h3:hover .anchor-link {
402+ opacity: 1;
403+ }
404+
387405 .disclaimer {
388406 font-size: var(--text-sm);
389407 color: var(--color-text-tertiary);
0 commit comments