| 1 | <!doctype html> |
| 2 | <html lang="en"> |
| 3 | <head> |
| 4 | <meta charset="utf-8"> |
| 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | <title>Zion Boggan | Security Engineering, Detection Engineering, and Research</title> |
| 7 | <meta name="description" content="Zion Boggan, SOC analyst and independent security researcher. Detection engineering, vulnerability research, and applied cryptography, including Oversight Protocol, a post-quantum data-provenance system in Rust."> |
| 8 | <meta name="author" content="Zion Boggan"> |
| 9 | <meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1"> |
| 10 | <link rel="canonical" href="https://zionboggan.com/"> |
| 11 | <meta property="og:type" content="profile"> |
| 12 | <meta property="og:site_name" content="Zion Boggan"> |
| 13 | <meta property="og:title" content="Zion Boggan | Security Engineering, Detection Engineering & Research"> |
| 14 | <meta property="og:description" content="SOC analyst and independent security researcher. Vulnerability research with full proof-of-concept exploits, detection engineering, and applied cryptography."> |
| 15 | <meta property="og:url" content="https://zionboggan.com/"> |
| 16 | <meta property="og:image" content="https://zionboggan.com/assets/og-default.png"> |
| 17 | <meta property="og:image:alt" content="Zion Boggan: Security Engineering & Research"> |
| 18 | <meta property="profile:first_name" content="Zion"> |
| 19 | <meta property="profile:last_name" content="Boggan"> |
| 20 | <meta name="twitter:card" content="summary_large_image"> |
| 21 | <meta name="twitter:title" content="Zion Boggan | Security Engineering, Detection Engineering & Research"> |
| 22 | <meta name="twitter:description" content="SOC analyst and independent security researcher. Vulnerability research, detection engineering, and applied cryptography."> |
| 23 | <meta name="twitter:image" content="https://zionboggan.com/assets/og-default.png"> |
| 24 | <script type="application/ld+json"> |
| 25 | { |
| 26 | "@context": "https://schema.org", |
| 27 | "@type": "Person", |
| 28 | "name": "Zion Boggan", |
| 29 | "givenName": "Zion", |
| 30 | "familyName": "Boggan", |
| 31 | "url": "https://zionboggan.com/", |
| 32 | "image": "https://zionboggan.com/assets/og-default.png", |
| 33 | "email": "mailto:zionboggan0@gmail.com", |
| 34 | "jobTitle": "Security Researcher & Detection Engineer", |
| 35 | "description": "SOC analyst and independent security researcher specializing in vulnerability research, detection engineering, and applied cryptography.", |
| 36 | "knowsAbout": ["Vulnerability Research", "Detection Engineering", "SOC Analysis", "Applied Cryptography", "Threat Detection", "Security Engineering"], |
| 37 | "sameAs": [ |
| 38 | "https://www.linkedin.com/in/zion-boggan", |
| 39 | "https://oversightprotocol.dev" |
| 40 | ] |
| 41 | } |
| 42 | </script> |
| 43 | <script type="application/ld+json"> |
| 44 | { |
| 45 | "@context": "https://schema.org", |
| 46 | "@type": "WebSite", |
| 47 | "name": "Zion Boggan", |
| 48 | "url": "https://zionboggan.com/", |
| 49 | "author": { "@type": "Person", "name": "Zion Boggan" } |
| 50 | } |
| 51 | </script> |
| 52 | |
| 53 | |
| 54 | |
| 55 | <link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='6' fill='%230c0e12'/%3E%3Ctext x='16' y='22' font-family='monospace' font-size='15' fill='%236cc7b8' text-anchor='middle'%3Ezb%3C/text%3E%3C/svg%3E"> |
| 56 | <style> |
| 57 | :root{ |
| 58 | --bg:#0c0e12; --bg2:#0f1217; --panel:#14181f; --panel2:#171c24; |
| 59 | --line:#222936; --line2:#2c3543; |
| 60 | --ink:#e8eaed; --soft:#c3cad4; --muted:#8a94a3; --faint:#5d6675; |
| 61 | --accent:#6cc7b8; --accent-dim:#274b47; |
| 62 | --maxw:1020px; |
| 63 | } |
| 64 | *{box-sizing:border-box;} |
| 65 | html{scroll-behavior:smooth;} |
| 66 | body{margin:0;background:var(--bg);color:var(--ink); |
| 67 | font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif; |
| 68 | font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased;} |
| 69 | .mono{font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;} |
| 70 | a{color:var(--accent);text-decoration:none;} |
| 71 | a:hover{color:#8fe0d2;} |
| 72 | .wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px;} |
| 73 | |
| 74 | /* nav */ |
| 75 | nav{position:sticky;top:0;z-index:20;background:rgba(12,14,18,.82); |
| 76 | backdrop-filter:blur(10px);border-bottom:1px solid var(--line);} |
| 77 | nav .wrap{display:flex;align-items:center;justify-content:space-between;height:58px;} |
| 78 | nav .brand{font-weight:600;letter-spacing:.2px;} |
| 79 | nav .brand .dot{color:var(--accent);} |
| 80 | nav .links{display:flex;gap:26px;font-size:13.5px;} |
| 81 | nav .links a{color:var(--muted);} |
| 82 | nav .links a:hover{color:var(--ink);} |
| 83 | @media(max-width:680px){nav .links{display:none;}} |
| 84 | |
| 85 | /* hero */ |
| 86 | header.hero{padding:74px 0 54px;border-bottom:1px solid var(--line); |
| 87 | background:radial-gradient(900px 380px at 78% -10%, #11201e 0%, transparent 60%);} |
| 88 | .avail{font-size:12.5px;letter-spacing:1.5px;text-transform:uppercase;color:var(--accent); |
| 89 | display:flex;align-items:center;gap:9px;margin-bottom:20px;} |
| 90 | .avail .pulse{width:7px;height:7px;border-radius:50%;background:var(--accent); |
| 91 | box-shadow:0 0 0 0 rgba(108,199,184,.5);animation:p 2.4s infinite;} |
| 92 | @keyframes p{0%{box-shadow:0 0 0 0 rgba(108,199,184,.45)}70%{box-shadow:0 0 0 8px rgba(108,199,184,0)}100%{box-shadow:0 0 0 0 rgba(108,199,184,0)}} |
| 93 | h1{font-size:clamp(34px,6vw,52px);line-height:1.05;margin:0 0 8px;letter-spacing:-1px;font-weight:680;} |
| 94 | .hero .sub{font-size:clamp(16px,2.4vw,20px);color:var(--soft);margin:0 0 24px;font-weight:500;} |
| 95 | .hero .lede{max-width:660px;color:var(--soft);font-size:17px;margin:0 0 28px;} |
| 96 | .hero .lede b{color:var(--ink);font-weight:600;} |
| 97 | .cta{display:flex;flex-wrap:wrap;gap:12px;align-items:center;} |
| 98 | .btn{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border-radius:8px; |
| 99 | font-size:14.5px;font-weight:550;border:1px solid var(--line2);color:var(--ink);background:var(--panel);} |
| 100 | .btn:hover{border-color:var(--accent-dim);background:var(--panel2);color:var(--ink);} |
| 101 | .btn.primary{background:var(--accent);color:#06231f;border-color:var(--accent);font-weight:650;} |
| 102 | .btn.primary:hover{background:#8fe0d2;color:#06231f;} |
| 103 | .meta{margin-top:26px;display:flex;flex-wrap:wrap;gap:8px 22px;font-size:13px;color:var(--muted);} |
| 104 | .meta .mono{color:var(--faint);} |
| 105 | |
| 106 | /* proof / live-exploit demo */ |
| 107 | .proof{padding-top:48px;} |
| 108 | .proof-intro{max-width:760px;color:var(--soft);font-size:15.5px;line-height:1.6;margin:0 0 28px;} |
| 109 | .demo{border:1px solid var(--line2);border-radius:12px;overflow:hidden;background:#0a0c10; |
| 110 | box-shadow:0 0 0 1px rgba(108,199,184,.08), 0 26px 64px -28px rgba(0,0,0,.75);} |
| 111 | .demo + .demo{margin-top:30px;} |
| 112 | .step{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.6px;color:#06231f; |
| 113 | background:var(--accent);padding:2px 8px;border-radius:5px;margin-right:9px;vertical-align:1px;} |
| 114 | .step.crit{background:#ff6b6b;color:#2a0606;} |
| 115 | .demobar{display:flex;align-items:center;gap:8px;padding:11px 14px;background:#11151b;border-bottom:1px solid var(--line);} |
| 116 | .demobar .d{width:11px;height:11px;border-radius:50%;} |
| 117 | .demobar .r{background:#ff5f57;}.demobar .y{background:#febc2e;}.demobar .g{background:#28c840;} |
| 118 | .demobar .dlabel{color:var(--faint);font-size:12.5px;margin-left:8px;} |
| 119 | .demobar .dbadge{margin-left:auto;color:#06231f;background:var(--accent);font-size:11px;font-weight:700; |
| 120 | padding:3px 9px;border-radius:5px;letter-spacing:.5px;} |
| 121 | .demobar .dbadge.alt{background:#7aa2f7;color:#06122a;} |
| 122 | .demovid{display:block;width:100%;height:auto;background:#0a0c10;cursor:pointer;} |
| 123 | .democap{margin:0;padding:15px 18px;color:var(--soft);font-size:14px;line-height:1.55; |
| 124 | background:var(--panel);border-top:1px solid var(--line);} |
| 125 | .democap b{color:var(--ink);font-weight:600;} |
| 126 | |
| 127 | /* sections */ |
| 128 | section{padding:64px 0;border-bottom:1px solid var(--line);} |
| 129 | .shead{display:flex;align-items:baseline;gap:14px;margin-bottom:30px;} |
| 130 | .shead .idx{font-size:13px;color:var(--accent);letter-spacing:1px;} |
| 131 | .shead h2{font-size:14px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin:0;font-weight:600;} |
| 132 | .shead .rule{flex:1;height:1px;background:var(--line);} |
| 133 | |
| 134 | /* flagship */ |
| 135 | .flag{background:linear-gradient(180deg,var(--panel) 0%,var(--bg2) 100%); |
| 136 | border:1px solid var(--line2);border-radius:14px;overflow:hidden;} |
| 137 | .flag .top{padding:30px 32px 8px;} |
| 138 | .flag .tag{font-size:12px;letter-spacing:1.5px;text-transform:uppercase;color:var(--accent);margin-bottom:12px;} |
| 139 | .flag h3{font-size:27px;margin:0 0 6px;letter-spacing:-.4px;} |
| 140 | .flag h3 .v{font-size:13px;color:var(--muted);font-weight:500;margin-left:8px;letter-spacing:0;} |
| 141 | .flag .grid{display:grid;grid-template-columns:1.25fr 1fr;gap:30px;padding:14px 32px 30px;} |
| 142 | .flag p{color:var(--soft);margin:0 0 16px;} |
| 143 | .flag .stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:6px;} |
| 144 | .stat{background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:13px 15px;} |
| 145 | .stat .n{font-size:21px;font-weight:680;color:var(--ink);} |
| 146 | .stat .k{font-size:12px;color:var(--muted);margin-top:2px;} |
| 147 | .spec{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:18px 18px;} |
| 148 | .spec .sk{font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:var(--faint);margin-bottom:10px;} |
| 149 | .spec ul{margin:0;padding:0;list-style:none;font-size:13.5px;} |
| 150 | .spec li{padding:6px 0;border-top:1px solid var(--line);color:var(--soft);display:flex;justify-content:space-between;gap:14px;} |
| 151 | .spec li:first-child{border-top:none;} |
| 152 | .spec li span{color:var(--muted);} |
| 153 | .flag .foot{padding:0 32px 28px;display:flex;gap:18px;flex-wrap:wrap;font-size:14px;} |
| 154 | @media(max-width:720px){.flag .grid{grid-template-columns:1fr;}} |
| 155 | |
| 156 | /* lab cards */ |
| 157 | .cards{display:grid;grid-template-columns:1fr 1fr;gap:20px;} |
| 158 | @media(max-width:680px){.cards{grid-template-columns:1fr;}} |
| 159 | .card{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--panel); |
| 160 | display:flex;flex-direction:column;transition:border-color .15s,transform .15s;} |
| 161 | .card:hover{border-color:var(--accent-dim);transform:translateY(-2px);} |
| 162 | .card .thumb{height:172px;overflow:hidden;border-bottom:1px solid var(--line);background:#fff;} |
| 163 | .card .thumb img{width:100%;height:100%;object-fit:cover;object-position:top left;display:block;} |
| 164 | .card .body{padding:18px 20px 20px;display:flex;flex-direction:column;flex:1;} |
| 165 | .card h3{margin:0 0 9px;font-size:17px;} |
| 166 | .card p{margin:0 0 14px;font-size:14px;color:var(--soft);flex:1;} |
| 167 | .tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px;} |
| 168 | .tags span{font-size:11.5px;color:var(--muted);background:var(--bg);border:1px solid var(--line); |
| 169 | border-radius:5px;padding:3px 8px;} |
| 170 | .card .lnk{font-size:13.5px;font-family:ui-monospace,Menlo,monospace;} |
| 171 | .card .lnk::after{content:" →";} |
| 172 | |
| 173 | /* research */ |
| 174 | .rlede{color:var(--soft);max-width:680px;margin:-6px 0 26px;} |
| 175 | .research{display:flex;flex-direction:column;gap:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;} |
| 176 | .ritem{display:grid;grid-template-columns:120px 1fr auto;gap:18px;align-items:center; |
| 177 | padding:18px 22px;border-top:1px solid var(--line);} |
| 178 | .ritem:first-child{border-top:none;} |
| 179 | .ritem:hover{background:var(--panel);} |
| 180 | .ritem .cls{font-size:11px;letter-spacing:.5px;text-transform:uppercase;color:var(--accent);} |
| 181 | .ritem h3{margin:0 0 3px;font-size:16px;} |
| 182 | .ritem p{margin:0;font-size:13.5px;color:var(--muted);} |
| 183 | .ritem .go{font-family:ui-monospace,Menlo,monospace;font-size:13px;white-space:nowrap;} |
| 184 | @media(max-width:680px){.ritem{grid-template-columns:1fr;gap:6px;}.ritem .go{margin-top:4px;}} |
| 185 | .progs{margin-top:22px;} |
| 186 | .progs .sk{font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:var(--faint);margin-bottom:11px;} |
| 187 | .progs .row{display:flex;flex-wrap:wrap;gap:7px;} |
| 188 | .progs .row span{font-size:12.5px;color:var(--soft);background:var(--panel);border:1px solid var(--line); |
| 189 | border-radius:6px;padding:4px 10px;} |
| 190 | |
| 191 | /* credentials */ |
| 192 | .cred{display:grid;grid-template-columns:1.1fr 1fr;gap:28px;} |
| 193 | @media(max-width:680px){.cred{grid-template-columns:1fr;}} |
| 194 | .cred p{color:var(--soft);margin:0 0 14px;} |
| 195 | .cred .role{font-size:14px;color:var(--muted);} |
| 196 | .cred .role b{color:var(--ink);font-weight:600;} |
| 197 | .certs{list-style:none;margin:0;padding:0;} |
| 198 | .certs li{padding:9px 0;border-top:1px solid var(--line);font-size:14px;color:var(--soft); |
| 199 | display:flex;gap:10px;align-items:baseline;} |
| 200 | .certs li:first-child{border-top:none;} |
| 201 | .certs li .c{color:var(--accent);font-family:ui-monospace,Menlo,monospace;font-size:12px;} |
| 202 | |
| 203 | footer{padding:46px 0 64px;} |
| 204 | footer .row{display:flex;flex-wrap:wrap;justify-content:space-between;gap:18px;align-items:center;} |
| 205 | footer .links a{color:var(--soft);margin-right:20px;font-size:14px;} |
| 206 | footer .note{color:var(--faint);font-size:12.5px;max-width:520px;} |
| 207 | |
| 208 | /* featured finding teaser */ |
| 209 | .featured{display:block;margin:30px 0 0;border:1px solid var(--line2);border-radius:14px; |
| 210 | background:linear-gradient(180deg,#11181c 0%,var(--panel) 100%);overflow:hidden; |
| 211 | transition:border-color .15s,transform .15s;} |
| 212 | .featured:hover{border-color:var(--accent-dim);transform:translateY(-2px);} |
| 213 | .ff-status{display:flex;align-items:center;gap:9px;font-size:12px;letter-spacing:1.2px; |
| 214 | text-transform:uppercase;color:var(--accent);padding:12px 24px;border-bottom:1px solid var(--line);background:#0e1a18;} |
| 215 | .ff-status .pulse{width:7px;height:7px;border-radius:50%;background:var(--accent); |
| 216 | box-shadow:0 0 0 0 rgba(108,199,184,.5);animation:p 2.4s infinite;} |
| 217 | .ff-main{display:flex;align-items:center;gap:22px;padding:22px 24px;} |
| 218 | .ff-tag{font-size:11px;letter-spacing:1.5px;color:#ff8a8a;margin-bottom:9px;} |
| 219 | .ff-main h3{margin:0 0 8px;font-size:21px;letter-spacing:-.3px;line-height:1.2;color:var(--ink);} |
| 220 | .ff-main p{margin:0 0 12px;color:var(--soft);font-size:14.5px;max-width:690px;} |
| 221 | .ff-main p b{color:var(--ink);font-weight:600;} |
| 222 | .ff-facts{display:flex;flex-wrap:wrap;gap:6px 8px;} |
| 223 | .ff-facts span{font-size:11.5px;color:var(--muted);background:var(--bg);border:1px solid var(--line); |
| 224 | border-radius:5px;padding:3px 9px;} |
| 225 | .ff-go{flex:none;color:var(--accent);font-size:14px;white-space:nowrap;} |
| 226 | @media(max-width:680px){.ff-main{flex-direction:column;align-items:flex-start;gap:14px;}} |
| 227 | </style> |
| 228 | </head> |
| 229 | <body> |
| 230 | |
| 231 | <nav><div class="wrap"> |
| 232 | <span class="brand mono">zion_boggan<span class="dot">.</span></span> |
| 233 | <span class="links"> |
| 234 | <a href="#oversight">Oversight</a> |
| 235 | <a href="#labs">Labs</a> |
| 236 | <a href="#research">Research</a> |
| 237 | <a href="#background">Background</a> |
| 238 | <a href="https://github.com/zionboggan">GitHub</a> |
| 239 | </span> |
| 240 | </div></nav> |
| 241 | |
| 242 | <header class="hero"><div class="wrap"> |
| 243 | <div class="avail"><span class="pulse"></span>Open to detection engineering & security roles · relocation OK</div> |
| 244 | <h1>Zion Boggan</h1> |
| 245 | <p class="sub">SOC analyst · independent security researcher · applied cryptography</p> |
| 246 | <p class="lede">SOC analyst by trade, security researcher by hobby: I defend production |
| 247 | networks, research vulnerabilities in the lab, and build systems that close the gaps I |
| 248 | find. This is the work I can show: <b>detection |
| 249 | pipelines and labs</b> that run end to end, <b>vulnerability research</b> across |
| 250 | cryptographic and database internals, and <b>Oversight Protocol</b>, a post-quantum |
| 251 | data-provenance system I maintain in Rust. Almost all of it runs on my own homelab.</p> |
| 252 | <div class="cta"> |
| 253 | <a class="btn primary" href="#proof">▶ Watch a live break-in</a> |
| 254 | <a class="btn" href="#oversight">See the work</a> |
| 255 | <a class="btn" href="https://github.com/zionboggan">GitHub</a> |
| 256 | <a class="btn" href="https://www.linkedin.com/in/zion-boggan">LinkedIn</a> |
| 257 | <a class="btn" href="https://oversightprotocol.dev/">oversightprotocol.dev</a> |
| 258 | </div> |
| 259 | <div class="meta mono"> |
| 260 | <span>zionboggan0@gmail.com</span> |
| 261 | <span>Security+ · SC-200 · AZ-104</span><span>Bugcrowd · HackerOne</span> |
| 262 | </div> |
| 263 | </div></header> |
| 264 | |
| 265 | <div class="wrap"><a class="featured" href="/featured-finding/"> |
| 266 | <div class="ff-status mono"><span class="pulse"></span>Coordinated disclosure in progress</div> |
| 267 | <div class="ff-main"> |
| 268 | <div> |
| 269 | <div class="ff-tag mono">★ FEATURED FINDING · LIVE VULNERABILITY RESEARCH</div> |
| 270 | <h3>A certificate path-length limit that vanishes when you remove an unrelated field</h3> |
| 271 | <p>A widely-deployed open-source crypto library enforces an RFC 5280 CA path-length |
| 272 | constraint <b>only when a separate extension is present</b>, so a CA forbidden from |
| 273 | delegating can mint rogue sub-CAs the library still trusts. Found by variant-hunting a |
| 274 | security patch the maintainers had just shipped. <b>Interactive proof you can run in the browser.</b></p> |
| 275 | <div class="ff-facts mono"> |
| 276 | <span>CWE-295</span><span>RFC 5280 §6.1.4</span><span>CA constraint bypass</span> |
| 277 | <span>Confirmed on the current shipped release</span> |
| 278 | </div> |
| 279 | </div> |
| 280 | <span class="ff-go mono">Open the finding →</span> |
| 281 | </div> |
| 282 | </a></div> |
| 283 | |
| 284 | <section id="proof" class="proof"><div class="wrap"> |
| 285 | <div class="shead"><span class="idx mono">00</span><h2>See it in action</h2><span class="rule"></span></div> |
| 286 | <p class="proof-intro">Three recordings, all real output, nothing staged: a web-app data |
| 287 | breach and a full server takeover against targets I host in a lab I control, then a real |
| 288 | cryptographic flaw I found and responsibly disclosed in production software. Offensive |
| 289 | web, infrastructure, and deep code review, the range I actually work in. Never against |
| 290 | systems I don't own.</p> |
| 291 | |
| 292 | <div class="demo"> |
| 293 | <div class="demobar"> |
| 294 | <span class="d r"></span><span class="d y"></span><span class="d g"></span> |
| 295 | <span class="dlabel mono">01 · web-app breach · controlled lab</span> |
| 296 | <span class="dbadge mono">REAL PoC</span> |
| 297 | </div> |
| 298 | <video class="demovid" autoplay muted loop playsinline preload="auto" |
| 299 | poster="/assets/hero/exploit-demo-poster.jpg" |
| 300 | onclick="if(this.requestFullscreen)this.requestFullscreen()"> |
| 301 | <source src="/assets/hero/exploit-demo.mp4" type="video/mp4"> |
| 302 | </video> |
| 303 | <p class="democap"><span class="step mono">01 · DATA BREACH</span> A real SQL-injection chain |
| 304 | against a web app (OWASP Juice Shop): <b>bypass the login with no password</b>, then |
| 305 | <b>dump every account's stored credentials</b> straight from the database.</p> |
| 306 | </div> |
| 307 | |
| 308 | <div class="demo"> |
| 309 | <div class="demobar"> |
| 310 | <span class="d r"></span><span class="d y"></span><span class="d g"></span> |
| 311 | <span class="dlabel mono">02 · server takeover · controlled lab</span> |
| 312 | <span class="dbadge mono">REAL PoC</span> |
| 313 | </div> |
| 314 | <video class="demovid" autoplay muted loop playsinline preload="auto" |
| 315 | poster="/assets/hero/rce-demo-poster.jpg" |
| 316 | onclick="if(this.requestFullscreen)this.requestFullscreen()"> |
| 317 | <source src="/assets/hero/rce-demo.mp4" type="video/mp4"> |
| 318 | </video> |
| 319 | <p class="democap"><span class="step mono crit">02 · FULL TAKEOVER</span> Command injection in |
| 320 | an appliance's diagnostics tool: a "ping" box that <b>runs whatever I type, as root</b>. |
| 321 | One request turns into <b>remote code execution and the server's production secrets</b>.</p> |
| 322 | </div> |
| 323 | |
| 324 | <div class="demo"> |
| 325 | <div class="demobar"> |
| 326 | <span class="d r"></span><span class="d y"></span><span class="d g"></span> |
| 327 | <span class="dlabel mono">03 · cryptographic research · production code</span> |
| 328 | <span class="dbadge alt mono">DISCLOSED</span> |
| 329 | </div> |
| 330 | <video class="demovid" autoplay muted loop playsinline preload="auto" |
| 331 | poster="/assets/hero/crypto-demo-poster.jpg" |
| 332 | onclick="if(this.requestFullscreen)this.requestFullscreen()"> |
| 333 | <source src="/assets/hero/crypto-demo.mp4" type="video/mp4"> |
| 334 | </video> |
| 335 | <p class="democap"><span class="step mono">03 · CRYPTO RESEARCH</span> Not a lab, a real flaw I |
| 336 | found and responsibly disclosed in <b>Fireblocks' MPC threshold-signature library</b>. A |
| 337 | one-byte type confusion cut a 40-bit check down to 8 bits, so I <b>forge an invalid proof the |
| 338 | production verifier accepts</b>, about 1 in 256 tries, with a control run that proves the cause. |
| 339 | The difference between running tools and reading the crypto.</p> |
| 340 | </div> |
| 341 | </div></section> |
| 342 | |
| 343 | <section id="oversight"><div class="wrap"> |
| 344 | <div class="shead"><span class="idx mono">01</span><h2>Flagship</h2><span class="rule"></span></div> |
| 345 | <div class="flag"> |
| 346 | <div class="top"> |
| 347 | <div class="tag mono">Open-source · Rust + Python</div> |
| 348 | <h3>Oversight Protocol<span class="v mono">v0.4.11</span></h3> |
| 349 | </div> |
| 350 | <div class="grid"> |
| 351 | <div> |
| 352 | <p>A cryptographic data-provenance system: a verifiable, tamper-evident record of |
| 353 | where data came from and what happened to it, designed to hold up against a future |
| 354 | with quantum computers. I'm the lead maintainer and primary contributor.</p> |
| 355 | <p>The hard part is correctness across two languages, the Rust implementation and |
| 356 | the Python reference are built to produce <b>bit-identical</b> output, enforced by a |
| 357 | shared conformance suite. It pairs classical and post-quantum primitives so signatures |
| 358 | and key exchange stay sound even if one side breaks.</p> |
| 359 | <div class="stats"> |
| 360 | <div class="stat"><div class="n">12 crates</div><div class="k">~10.3k lines of Rust</div></div> |
| 361 | <div class="stat"><div class="n">~13.4k lines</div><div class="k">Python reference impl</div></div> |
| 362 | <div class="stat"><div class="n">141 tests</div><div class="k">125 Rust · 16 Python conformance</div></div> |
| 363 | <div class="stat"><div class="n">FIPS 203/204</div><div class="k">ML-KEM-768 · ML-DSA-65</div></div> |
| 364 | </div> |
| 365 | </div> |
| 366 | <div class="spec"> |
| 367 | <div class="sk mono">Cryptography</div> |
| 368 | <ul> |
| 369 | <li>Key exchange <span>X25519</span></li> |
| 370 | <li>AEAD <span>XChaCha20-Poly1305</span></li> |
| 371 | <li>Signatures <span>Ed25519</span></li> |
| 372 | <li>KDF <span>HKDF-SHA256</span></li> |
| 373 | <li>PQ KEM <span>ML-KEM-768</span></li> |
| 374 | <li>PQ signatures <span>ML-DSA-65</span></li> |
| 375 | <li>Transparency <span>Sigstore Rekor v2</span></li> |
| 376 | <li>Timestamping <span>RFC 3161 TSA</span></li> |
| 377 | </ul> |
| 378 | </div> |
| 379 | </div> |
| 380 | <div class="foot"> |
| 381 | <a class="mono" href="https://oversightprotocol.dev/">oversightprotocol.dev →</a> |
| 382 | <a class="mono" href="https://github.com/oversight-protocol/oversight">github.com/oversight-protocol/oversight →</a> |
| 383 | <span class="mono" style="color:var(--faint)">Targeting USENIX Security & Black Hat EU 2026</span> |
| 384 | </div> |
| 385 | </div> |
| 386 | </div></section> |
| 387 | |
| 388 | <section id="labs"><div class="wrap"> |
| 389 | <div class="shead"><span class="idx mono">02</span><h2>Security Labs</h2><span class="rule"></span></div> |
| 390 | <div class="cards"> |
| 391 | |
| 392 | <a class="card" href="/detection-as-code/"> |
| 393 | <div class="thumb"><img loading="lazy" src="assets/detection.png" alt="One Sigma rule compiled to Splunk, Sentinel KQL and Elastic ES|QL"></div> |
| 394 | <div class="body"> |
| 395 | <h3>Detection-as-Code</h3> |
| 396 | <p>Sigma rules mapped to MITRE ATT&CK, linted and tested in CI, and compiled to |
| 397 | Splunk, Elastic, and Microsoft Sentinel KQL, one rule, every SIEM. Detection |
| 398 | engineering done as a pipeline, not a console click.</p> |
| 399 | <div class="tags"><span>Sigma</span><span>Splunk</span><span>Sentinel KQL</span><span>Elastic</span></div> |
| 400 | <span class="lnk mono">detection-as-code</span> |
| 401 | </div> |
| 402 | </a> |
| 403 | |
| 404 | <a class="card" href="/purple-team-lab/"> |
| 405 | <div class="thumb"><img loading="lazy" src="assets/purple.png" alt="Emulated ATT&CK techniques detected in Wazuh"></div> |
| 406 | <div class="body"> |
| 407 | <h3>Purple-Team Lab</h3> |
| 408 | <p>Adversary emulation that validates the detections. Atomic Red Team techniques run |
| 409 | against an instrumented endpoint; custom Wazuh rules catch each one, with a coverage |
| 410 | matrix proving the ATT&CK techniques fire at the right severity.</p> |
| 411 | <div class="tags"><span>Atomic Red Team</span><span>Caldera</span><span>Wazuh FIM</span><span>MITRE ATT&CK</span></div> |
| 412 | <span class="lnk mono">purple-team-lab</span> |
| 413 | </div> |
| 414 | </a> |
| 415 | |
| 416 | <a class="card" href="/soc-automation-lab/"> |
| 417 | <div class="thumb"><img loading="lazy" src="assets/soc.png" alt="Wazuh Threat Hunting dashboard with MITRE ATT&CK mapping"></div> |
| 418 | <div class="body"> |
| 419 | <h3>SOC Automation Lab</h3> |
| 420 | <p>Wazuh detection into Shuffle SOAR into TheHive case management. Endpoint telemetry, |
| 421 | custom MITRE-mapped rules, automated enrichment and case creation. Deployed and shown |
| 422 | live with an enrolled agent and a replayed SSH brute force.</p> |
| 423 | <div class="tags"><span>Wazuh</span><span>TheHive</span><span>Shuffle</span><span>MITRE ATT&CK</span></div> |
| 424 | <span class="lnk mono">soc-automation-lab</span> |
| 425 | </div> |
| 426 | </a> |
| 427 | |
| 428 | <a class="card" href="/secure-cicd-pipeline/"> |
| 429 | <div class="thumb"><img loading="lazy" src="assets/cicd.png" alt="Custom Semgrep rules failing the SAST gate"></div> |
| 430 | <div class="body"> |
| 431 | <h3>Secure CI/CD Pipeline</h3> |
| 432 | <p>A GitHub Actions pipeline that gates every merge on four checks, SAST, secret |
| 433 | scanning, dependency audit, tests, with custom Semgrep rules and findings routed |
| 434 | back to the SOC.</p> |
| 435 | <div class="tags"><span>GitHub Actions</span><span>Semgrep</span><span>gitleaks</span><span>pip-audit</span></div> |
| 436 | <span class="lnk mono">secure-cicd-pipeline</span> |
| 437 | </div> |
| 438 | </a> |
| 439 | |
| 440 | <a class="card" href="/cicd-supply-chain-security/"> |
| 441 | <div class="thumb"><img loading="lazy" src="assets/supply-chain.png" alt="Cosign signing and tamper detection"></div> |
| 442 | <div class="body"> |
| 443 | <h3>CI/CD Supply-Chain Security</h3> |
| 444 | <p>Proves the artifact, not just the source: keyless Cosign signing, a signed SBOM, |
| 445 | grype scanning, and a Kyverno admission policy that refuses anything it can't verify.</p> |
| 446 | <div class="tags"><span>Cosign</span><span>Sigstore</span><span>syft</span><span>Kyverno</span></div> |
| 447 | <span class="lnk mono">cicd-supply-chain-security</span> |
| 448 | </div> |
| 449 | </a> |
| 450 | |
| 451 | <a class="card" href="/cti-detection-automation/"> |
| 452 | <div class="thumb"><img loading="lazy" src="assets/cti.png" alt="CTI rule-approval email with MITRE techniques"></div> |
| 453 | <div class="body"> |
| 454 | <h3>CTI Detection Automation</h3> |
| 455 | <p>Pulls indicators from live threat-intel feeds, dedupes across them, extracts the |
| 456 | MITRE techniques, generates Wazuh rules, and emails an analyst for sign-off before |
| 457 | anything goes live.</p> |
| 458 | <div class="tags"><span>Python</span><span>ThreatFox / OTX</span><span>Wazuh CDB</span><span>ATT&CK</span></div> |
| 459 | <span class="lnk mono">cti-detection-automation</span> |
| 460 | </div> |
| 461 | </a> |
| 462 | |
| 463 | </div> |
| 464 | </div></section> |
| 465 | |
| 466 | <section id="research"><div class="wrap"> |
| 467 | <div class="shead"><span class="idx mono">03</span><h2>Vulnerability Research</h2><span class="rule"></span></div> |
| 468 | <p class="rlede">Coordinated-disclosure research on Bugcrowd and HackerOne, focused on the |
| 469 | places bugs are easy to miss and expensive to get wrong: cryptographic libraries, database |
| 470 | engine internals, blockchain consensus, and authorization layers. Source-code analysis, |
| 471 | protocol review, reproducible proof-of-concept.</p> |
| 472 | |
| 473 | <div class="research"> |
| 474 | <div class="ritem"> |
| 475 | <span class="cls mono">Notebook</span> |
| 476 | <div><h3>Security research notebook</h3> |
| 477 | <p>37 coordinated-disclosure writeups and methodology notes, 8 Fireblocks MPC findings |
| 478 | (memory safety, signature verification, ZK-proof soundness), Postgres privilege-escalation |
| 479 | chains, blockchain consensus, and camera firmware, each leading with how the bug was reached.</p></div> |
| 480 | <a class="go" href="/security-research-notebook/">notebook →</a> |
| 481 | </div> |
| 482 | <div class="ritem"> |
| 483 | <span class="cls mono">JWT / auth</span> |
| 484 | <div><h3>Schism, JWT differential fuzzer</h3> |
| 485 | <p>Differentially tests JWT libraries against each other and the RFCs to surface |
| 486 | algorithm-confusion and parsing-divergence bypasses.</p></div> |
| 487 | <a class="go" href="/jwt-differential-fuzzer/">fuzzer →</a> |
| 488 | </div> |
| 489 | <div class="ritem"> |
| 490 | <span class="cls mono">Markets / quant</span> |
| 491 | <div><h3>Prediction-market bot postmortem</h3> |
| 492 | <p>A trading bot taken from edge hypothesis to a documented, honest negative result, the evaluation harness and why the edge didn't survive fees.</p></div> |
| 493 | <a class="go" href="/prediction-market-bot-postmortem/">postmortem →</a> |
| 494 | </div> |
| 495 | </div> |
| 496 | |
| 497 | <div class="progs"> |
| 498 | <div class="sk mono">Programs researched</div> |
| 499 | <div class="row"> |
| 500 | <span>Aiven (PostgreSQL · MySQL · ClickHouse · Valkey · Kafka)</span> |
| 501 | <span>Fireblocks MPC</span><span>Electroneum</span><span>Cloudinary</span> |
| 502 | <span>AXIS OS</span><span>Mattermost</span><span>GitLab</span><span>Databricks</span> |
| 503 | <span>The Trade Desk</span><span>New Relic</span><span>Automattic / WordPress</span> |
| 504 | <span>Snapchat</span><span>Vimeo</span><span>Airtable</span> |
| 505 | </div> |
| 506 | </div> |
| 507 | </div></section> |
| 508 | |
| 509 | <section id="background"><div class="wrap"> |
| 510 | <div class="shead"><span class="idx mono">04</span><h2>Background</h2><span class="rule"></span></div> |
| 511 | <div class="cred"> |
| 512 | <div> |
| 513 | <p>Two years on a SOC desk at a managed security provider, triaging 150 to 300 alerts a |
| 514 | shift across Splunk, Microsoft Sentinel, SentinelOne, and Stellar Cyber. I have supported |
| 515 | incident response on ransomware cases (Cactus, BlackByte) and helped track vulnerability |
| 516 | remediation against NIST 800-171 and CMMC baselines.</p> |
| 517 | <p class="role"><b>SOC Analyst</b> · MSSP · 2024-present<br> |
| 518 | <b>Prior:</b> Relationship Banker · Bank of America</p> |
| 519 | </div> |
| 520 | <ul class="certs"> |
| 521 | <li><span class="c">SEC+</span> CompTIA Security+ (SY0-701)</li> |
| 522 | <li><span class="c">SC-200</span> Microsoft Security Operations Analyst</li> |
| 523 | <li><span class="c">AZ-104</span> Microsoft Azure Administrator</li> |
| 524 | <li><span class="c">AZ-900</span> Microsoft Azure Fundamentals</li> |
| 525 | <li><span class="c">S1</span> SentinelOne Incident Responder</li> |
| 526 | <li><span class="c">CySA+</span> CompTIA, scheduled June 2026</li> |
| 527 | </ul> |
| 528 | </div> |
| 529 | </div></section> |
| 530 | |
| 531 | <footer><div class="wrap row"> |
| 532 | <div class="links"> |
| 533 | <a href="https://github.com/zionboggan">GitHub</a> |
| 534 | <a href="https://www.linkedin.com/in/zion-boggan">LinkedIn</a> |
| 535 | <a href="https://oversightprotocol.dev/">Oversight</a> |
| 536 | <a href="mailto:zionboggan0@gmail.com">Email</a> |
| 537 | </div> |
| 538 | <div class="note">Built and deployed on a self-hosted Proxmox homelab. Source for every |
| 539 | project is linked above.</div> |
| 540 | </div></footer> |
| 541 | |
| 542 | </body> |
| 543 | </html> |