mirror of
https://github.com/0xMarcio/cve.git
synced 2026-05-18 22:48:14 +02:00
117 lines
3.8 KiB
HTML
117 lines
3.8 KiB
HTML
{% extends "base.html" %}
|
|
{% set body_class = "color-no-search" %}
|
|
{% block content %}
|
|
<section class="hero hero-signal" data-search-root>
|
|
<div class="hero-meta">
|
|
<p class="eyebrow">Signal-first</p>
|
|
<h1>Search PoCs, KEV, and EPSS without the clutter</h1>
|
|
<p class="lede">Built for fast triage. One page, no badges, no filler.</p>
|
|
</div>
|
|
<form class="searchForm" action="#">
|
|
<input type="text" class="search" placeholder="Search CVE, vendor, product, or keyword" autocomplete="off">
|
|
</form>
|
|
<div class="stat-row">
|
|
<div class="stat"><strong>{{ metrics.kev_total }}</strong><span>KEV entries tracked</span></div>
|
|
<div class="stat"><strong>{{ metrics.high_epss_count }}</strong><span>High-EPSS not in KEV</span></div>
|
|
<div class="stat"><strong>{{ metrics.recent_kev_count }}</strong><span>New KEV in last 30 days</span></div>
|
|
</div>
|
|
<div class="search-results" data-results style="display:none">
|
|
<div class="header">
|
|
<h2>Results</h2>
|
|
<span class="muted">Filter with negative terms (e.g., -windows)</span>
|
|
</div>
|
|
<div class="noResults">No results yet.</div>
|
|
<div class="results-table hide">
|
|
<table class="results">
|
|
<thead>
|
|
<tr>
|
|
<td width="18%">CVE</td>
|
|
<td>Description / PoC links</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody class="results"></tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section">
|
|
<div class="section-header">
|
|
<h1>Latest KEV additions</h1>
|
|
<span class="muted">Last 30 days</span>
|
|
</div>
|
|
<div class="table-wrap">
|
|
<table>
|
|
<thead>
|
|
<tr><th>CVE</th><th>Vendor</th><th>Product</th><th>EPSS</th><th>Percentile</th><th>Date Added</th><th>Due</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for row in recent_kev %}
|
|
<tr>
|
|
<td class="cve-cell"><a href="/cve/?id={{ row.cve }}">{{ row.cve }}</a></td>
|
|
<td>{{ row.vendor }}</td>
|
|
<td>{{ row.product }}</td>
|
|
<td>{{ '%.3f'|format(row.epss or 0) }}</td>
|
|
<td>{{ '%2.0f'|format((row.percentile or 0)*100) }}th</td>
|
|
<td>{{ row.date_added }}</td>
|
|
<td>{{ row.due_date or '—' }}</td>
|
|
</tr>
|
|
{% else %}
|
|
<tr><td colspan="7">No recent KEV entries.</td></tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section">
|
|
<div class="section-header">
|
|
<h1>High EPSS not in KEV</h1>
|
|
<span class="muted">Sorted by score</span>
|
|
</div>
|
|
<div class="table-wrap">
|
|
<table>
|
|
<thead><tr><th>CVE</th><th>EPSS</th><th>Percentile</th><th>PoCs</th><th>Summary</th></tr></thead>
|
|
<tbody>
|
|
{% for row in data.high_epss %}
|
|
<tr>
|
|
<td class="cve-cell"><a href="/cve/?id={{ row.cve }}">{{ row.cve }}</a></td>
|
|
<td>{{ '%.3f'|format(row.epss or 0) }}</td>
|
|
<td>{{ '%2.0f'|format((row.percentile or 0)*100) }}th</td>
|
|
<td>{{ row.poc_count }}</td>
|
|
<td class="mono">{{ row.summary or 'No public description yet.' }}</td>
|
|
</tr>
|
|
{% else %}
|
|
<tr><td colspan="5">No high-EPSS items outside KEV today.</td></tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section">
|
|
<div class="section-header">
|
|
<h1>Fresh PoCs</h1>
|
|
<span class="muted">Recent GitHub movement</span>
|
|
</div>
|
|
<div class="table-wrap">
|
|
<table>
|
|
<thead><tr><th>Stars</th><th>Updated</th><th>Name</th><th>Description</th></tr></thead>
|
|
<tbody>
|
|
{% for row in trending[:20] %}
|
|
<tr>
|
|
<td>{{ row.stars }}</td>
|
|
<td>{{ row.updated }}</td>
|
|
<td><a href="{{ row.url }}" target="_blank">{{ row.name }}</a></td>
|
|
<td class="mono">{{ row.desc }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</section>
|
|
{% endblock %}
|
|
{% block extra_scripts %}
|
|
<script src="/logic.js"></script>
|
|
{% endblock %}
|