ExploitSignal is a dashboard that helps you keep track of software security flaws, the bugs attackers use to break into systems. It gathers public information about these flaws from many places, tidies it into one record per flaw, scores how dangerous each one is, and lets you sort, search, and act on what matters most.
This guide assumes no prior security experience. Every term is explained where it first matters.
On this page
Legend:No account needed anyoneSign-in required needs a free account
What is ExploitSignal?
TopWhen researchers and vendors disclose a software security flaw, it gets a public ID called a CVE. Hundreds of thousands exist, and dozens of separate sites and feeds track different details about each one. ExploitSignal does that tracking for you and gives every flaw a single risk score from 0 to 100.
Read-only intelligence
A score of 100 is about the flaw
Make it about you
How it works, in one minute
TopFive things happen on a loop.
- 1
Collect
Data is fetched from 22 public sources (see Where the data comes from). - 2
Merge
All the details about one flaw become a single record that tracks which source said what. - 3
Enrich
Extra signals are added: a known-exploited listing, attacks seen in the wild, trending security discussion. - 4
Score & rank
Each flaw gets a risk score and priority, so one sort puts the most dangerous first. - 5
Act
You browse and filter; with a free account you triage, tag, watch, and get alerts.
Getting started
Top- 1
Open the Dashboard
See the current landscape. - 2
Go to Vulnerabilities
It opens sorted by what changed most recently; click the Risk column to rank by danger instead. - 3
Filter or search
Use the filters, or press Ctrl/⌘ + K. - Triage flaws, add notes and tags, build watchlists and bundles, and get alerts. If this deployment is not accepting new accounts, ask the operator for one.
Accounts & who can see what
TopA deployment runs either open to the public or private to the people who can already reach it. On a public one, everything marked "Sign-in required" is hidden until you sign in; on a private one, most of it is simply there. The API page needs an account either way.
Anyone
No account neededRegistered user
Sign-in requiredA program, with your key
Sign-in requiredSigning in
Key terms, explained simply
Top- CVE
- A public ID for one specific software flaw, like CVE-2021-44228.
- Vulnerability
- Another word for a security flaw, a weakness attackers can abuse. Each CVE describes one vulnerability.
- CVSS score
- A 0-10 rating of how severe a flaw is in theory (10 = worst). It measures potential impact, not whether anyone is attacking it.
- EPSS
- A 0-100% prediction of how likely a flaw is to be exploited in the next 30 days.
- KEV (Known Exploited)
- A flaw that the U.S. cyber agency (CISA) has confirmed is actually being used in real attacks. Patch these first.
- Exploit maturity
- How ready-to-use an attack is: from just "referenced", to a public proof-of-concept, to weaponized, to KEV-listed.
- In the wild
- Threat sensors are seeing real attackers or automated bots try to exploit the flaw right now.
- Ransomware-linked
- The flaw is known to be used by ransomware gangs, criminals who lock up your files for payment.
- CWE / CAPEC / ATT&CK
- Catalogs that classify the type of weakness (CWE), the attack pattern (CAPEC), and the attacker technique (MITRE ATT&CK).
- SSVC
- A decision aid from CISA that labels a flaw's exploitation status and whether an attack can be automated.
- Advisory
- A vendor or project's official write-up of a flaw (for example a GitHub or open-source-package advisory), often with the affected versions and the fix.
- Risk score & priority
- ExploitSignal's own 0-100 score combining all the signals above into one number, plus a Critical/High/Medium/Low label. See How the risk score works. In the list, Severity and Priority are separate columns that use the same four words: Severity comes from CVSS alone, Priority from the risk score, so a flaw can read High in one and Medium in the other.
- Webhook
- A URL you own that ExploitSignal calls when something happens, with the details in the message, so another tool can react without anybody reading an email.
- VEX
- A vendor's own statement about whether a flaw actually affects their product, which is often "not affected" even when a scanner flags the component.
- Triage
- Your decision about a flaw: one of new, reviewing, watching or dismissed. You can attach a reason and an expiry date, and a watching or dismissed flaw returns to new when that date passes.
Every page, one by one
TopThe left-hand menu, in order.
Open to everyone
Dashboard
No account neededVulnerabilities
No account neededAdvisories
No account neededIntel
No account neededReports
No account neededHelp & Guide
No account neededOnce you are signed in
Watchlists
Sign-in requiredBundles
Sign-in requiredData Health
Sign-in requiredAPI
Sign-in requiredSettings
Sign-in requiredWhat one flaw's page tells you
TopThe whole record on one page. Most of it is readable without an account.
Why this score
No account neededCVSS, decoded
No account neededSources disagree
No account neededSignal coverage
No account neededExploitation timeline
No account neededIn the news
No account neededJump to related flaws
No account neededCase files
Sign-in requiredTake it elsewhere
No account neededFeatures & what needs an account
TopSearch & filter
No account neededExports
Sign-in requiredLight or dark
No account neededTriage, notes & tags
Sign-in requiredWatchlists & bundles
Sign-in requiredNotifications
Sign-in requiredAutomation rules
Sign-in requiredServiceNow
Sign-in requiredHow the risk score works
TopExploitSignal blends many signals into a single risk score from 0 to 100 and a priority label (Critical / High / Medium / Low).
The formula
Priority bands
How the groups combine
The factors
A fix adds points rather than removing them
KEV already covers exploit availability
What attack activity means
A worked example
A flaw with nothing attacking it
Take a flaw rated CVSS 7.8, with an EPSS of 0.42 that puts it in the top 1% of all EPSS scores, disclosed four days ago, a vendor fix already out, and no exploit published anywhere. Those are all its signals:
Both EPSS rows count: one measures the score, the other measures where that score ranks. Serious on paper, and nothing yet says anyone is attacking it.
The same flaw, later that week
Reading the score
Honeypots
The most dangerous flaws all arrive at exactly 100
The operator can retune this
Where the data comes from
TopExploitSignal aggregates 22 public sources.
Core flaw data
Exploitation
In the wild
Threat reporting
Prediction & packages
Buzz
Vendors
News
Using the API
TopEverything on these pages is also available to a program. Most reading endpoints answer anybody; the report and data-health ones follow the same rule as their pages, and an operator can require a key for every read. Anything that is yours, such as triage, notes, tags, bundles and watchlists, always needs a key that belongs to you.
Getting a key
On the API page, under API keys, create one. It is shown once, so copy it then. Send it on every request as an X-API-Key header:
curl -H "X-API-Key: your-key" \ "https://your-deployment/api/v1/vulnerabilities?limit=5"
You can hold up to 5 keys, and a key may make 120 requests a minute.
Scopes
export for downloads (CSV, STIX, MISP), settings for your preferences and integrations, and write for changing triage, notes, tags, bundles and watchlists. A call outside a key's scopes is refused, not answered with a misleading empty result.Asking for only the fields you want
fields for named fields, or include and exclude for whole blocks of related ones. The Response shaping card on the API page is a picker for all three: tick what you want and it builds the URL, runs it against this deployment, and shows the real JSON that comes back next to how much smaller it got.Saving a shape
Save a shape under a name and ask for it as ?preset=your-name. You can keep up to 20 saved shapes.
- A preset supplies parameter values; it never rewrites the answer. It resolves to the same parameters you could have typed by hand.
- Anything you spell out yourself wins, so
?preset=slim&limit=200does what it looks like.
The endpoint reference
Connecting ServiceNow
TopSkip this unless your organisation runs ServiceNow. ExploitSignal can push flaws into it as records; the controls are on the API page.
How the sync runs
Make a user for it
sys_user record tick Web service access only. Every step below uses that user, so an audit shows what the integration did rather than what a person appeared to do.The target table
sn_vul_third_party_entry, which belongs to Vulnerability Response, a paid ServiceNow subscription. Without it, point the instance at your own staging or custom table.Choose how records are written
Import Set (staging)
import_transformer and write access to that one staging table, never to anything in production. Prefer this if you are unsure.Table API (direct)
The dedupe column
Choose how it signs in
OAuth client credentials
API key
x-sn-apikey.JWT bearer
Not Basic, and secrets never come back
Username-and-password (Basic) authentication is not offered, because ServiceNow is restricting it.
Secrets are write-only: once saved the field shows only a (set) marker, and leaving it blank on save keeps what is stored. A private key is validated as you save it.
What gets sent
The field map
Thirteen fields, mapped to your columns. Leave the field map box empty to use the default column names. To rename them, write JSON with ExploitSignal's field name on the left and your column name on the right. A field with no value is left out rather than sent empty, so ExploitSignal never blanks something a person edited on the ServiceNow side. Only these work on the left: cve_id, title, description, severity, cvss_score, epss_score, risk_score, priority, is_known_exploited, kev_due_date, exploit_maturity, published_at and modified_at.
Min risk
Turning it on, in order
- 1
Add the instance
Name, URL, and the sign-in method with its credentials. Create instance stays greyed out until that method's fields are filled in, and the instance starts disabled. - 2
Set the rest on the row
The row appears in the list above the Add button and defaults to Table API: sync mode, target table, dedupe column, min risk and how often it runs, with the field map behind Field map. Save. - 3
Test
A real authenticated call to your configured table, so it proves both the credentials and the user's access to that table. It probes the table directly even in Import Set mode, so if you granted onlyimport_transformerit reports access denied while the sync itself works. Trust Dry run and a real sync over Test in that setup. - 4
Dry run
Shows how many flaws are queued and the exact record it would send for a few of them, sending nothing. Read one and check the columns look right. - 5
Enable it
The schedule takes over. Sync now runs it immediately. - 6
Backfill
Optional, and a lot of records: it pushes every flaw you track rather than just what changed.
Letting ServiceNow update your triage
Turning it on
What ServiceNow POSTs
In ServiceNow, create an Outbound REST Message and a Business Rule that fires after a record is updated and POSTs to that URL with an Authorization: Bearer <token> header and a body like:
{ "cve_id": "CVE-2021-44228", "state": "resolved" }The states it accepts
The whole value must be one of these, though case and surrounding spaces do not matter; anything else is rejected outright.
resolved,closed,fixed,cancelled,canceledmark the flaw dismissed.in_progress,work_in_progress,analysismark it reviewing.awaiting,deferred,on_holdmark it watching.new,openmark it new.
When something goes wrong
- The instance URL was rejected when you saved it
- For an ordinary account it has to start with
https://and resolve on the public internet. Only the operator can point one at an internal address. - Authentication failed
- The instance rejected the credentials. Re-check the client id and secret, or the JWT private key.
- Access to the table was denied
- The credentials worked but the user is not allowed on that table. Check its roles, and whether the table needs Vulnerability Response. A wrong API key looks like this too.
- Table was not found
- A typo, or it does not exist on that instance.
- Skipped N rejected records
- ServiceNow refused those specific records, usually a field-map value it does not accept. The rest went through; fix the mapping and they are retried on a later change.
- The callback URL has no hostname
- The deployment has no public address configured. Ask the operator to set
PUBLIC_BASE_URL; the path alone is no use from ServiceNow. - The same error every sync
- The whole batch is failing rather than one record. Test, Dry run, Sync now and Backfill all act on the saved instance rather than on what is typed in the form.
FAQ
Top- Do I need an account to use it?
- No. The dashboard, vulnerabilities, advisories, intel, and the trend charts on Reports are readable by anyone. An account adds your personal workspace, alerts, and the report archive, including the weekly report written about your own watchlists and triage queue.
- Is my triage/notes visible to others?
- No. Your workspace (triage, notes, tags, bundles, watchlists, alerts) is private to your account.
- Does it scan or change my systems?
- No. ExploitSignal is read-only; it never connects to or modifies your infrastructure.
- What should I patch first?
- Sort by the Risk column, and prioritize anything KEV-listed, in-the-wild, or with high EPSS. The "Why this score" panel explains each ranking.
- A flaw I know about is missing, or looks thin. Why?
- A fresh deployment loads roughly the last four months, a window the operator sets. Feeds that publish their whole catalogue, such as CISA KEV and EPSS, still bring older flaws in, so an old CVE can appear with its exploitation signals but a sparse description. Data Health shows how far each source has got.
- A page is missing from my menu. Why?
- On a deployment open to the public, the workspace pages (Watchlists, Bundles, Data Health, API, Settings) appear only after you sign in. On a private one, everybody who can reach the app sees them, except the API page, which always needs an account.
- Can I use it from a script?
- Yes. See Using the API.