Phishing Attack Exposure Calculator

ANALife Services AuthorityNational Calculator Authority›Phishing Attack Exposure Calculator

.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }

Phishing Attack Exposure Calculator

Estimate your organization's phishing exposure risk score and expected annual phishing incidents based on workforce size, security controls, and historical data.

Number of Employees

Security Awareness Training Frequency

No training Annual training Quarterly training Monthly training Continuous / simulated phishing program

Email Filtering / Anti-Phishing Solution

None Basic spam filter Advanced threat protection (ATP) AI-based / zero-day phishing filter

MFA Adoption Rate (%)

Phishing Incidents in Past 12 Months

Industry Sector

Finance / Banking Healthcare Government / Public Sector Technology Retail / E-commerce Education Manufacturing

Calculate Exposure

function phiCalc() { // --- Collect inputs --- const employees = parseFloat(document.getElementById('phi-employees').value); const trainRate = parseFloat(document.getElementById('phi-training').value); const filterRate = parseFloat(document.getElementById('phi-filter').value); const mfaPct = parseFloat(document.getElementById('phi-mfa').value); const incidents = parseFloat(document.getElementById('phi-incidents').value); const industryMul = parseFloat(document.getElementById('phi-industry').value);

// --- Validation --- const errors = []; if (isNaN(employees) || employees 100) errors.push("MFA adoption rate must be between 0 and 100."); if (isNaN(incidents) || incidents 0) { resultDiv.innerHTML = '⚠ ' + errors.join('⚠ ') + ''; return; }

// --------------------------------------------------------------- // FORMULA // // 1. Base Phishing Attempt Rate (industry benchmark): // Industry average ≈ 1 phishing email per employee per week // Annual phishing emails reaching inbox = employees × 52 × filterRate × industryMultiplier // // 2. Click-Through Rate (CTR) after training: // CTR = trainRate (fraction of employees likely to click) // // 3. Credential Compromise Rate after MFA: // mfaProtection = 1 - (mfaPct / 100) × 0.99 // (MFA blocks ~99% of credential-based attacks for enrolled users) // compromiseRate = CTR × mfaProtection // // 4. Expected Annual Compromises: // expectedCompromises = annualEmailsReachingInbox × compromiseRate // // 5. Historical Incident Weight (Bayesian blend): // If past incidents provided, blend model estimate with observed rate: // blendedCompromises = 0.6 × expectedCompromises + 0.4 × incidents // (gives weight to observed history) // // 6. Exposure Risk Score (0–100): // riskScore = min(100, (blendedCompromises / employees) × 100 × industryMultiplier) // Capped at 100. // ---------------------------------------------------------------

const annualEmailsReachingInbox = employees * 52 * filterRate * industryMul; const mfaProtection = 1 - (mfaPct / 100) * 0.99; const compromiseRate = trainRate * mfaProtection; const expectedCompromises = annualEmailsReachingInbox * compromiseRate;

// Bayesian blend with historical data
const blendedCompromises = (incidents > 0)
? (0.6 * expectedCompromises + 0.4 * incidents)
expectedCompromises;

const rawScore = (blendedCompromises / employees) * 100 * industryMul; const riskScore = Math.min(100, rawScore).toFixed(1); const expComp = blendedCompromises.toFixed(1); const emailsHit = annualEmailsReachingInbox.toFixed(0);

// Risk label let riskLabel, riskColor; const rs = parseFloat(riskScore); if (rs ' + 'Phishing Emails Reaching Inbox (Annual)' + '' + Number(emailsHit).toLocaleString() + '' + 'Expected Annual Credential Compromises' + '' + expComp + '' + 'Compromise Rate per Employee' + '' + ((blendedCompromises / employees) * 100).toFixed(2) + '%' + 'Exposure Risk Score' + '' + riskScore + ' / 100' + 'Risk Level' + '' + riskLabel + '' + ''; }

#### Formula

1. Annual Phishing Emails Reaching Inbox Emails = Employees × 52 × FilterPassRate × IndustryMultiplier

2. MFA Protection Factor MFA_Protection = 1 − (MFA_Adoption% / 100) × 0.99

3. Expected Annual Compromises (Model) Compromises = Emails × TrainingClickRate × MFA_Protection

4. Bayesian Blend with Historical Data Blended = 0.6 × ModelCompromises + 0.4 × ObservedIncidents (only applied when historical incidents > 0)

5. Exposure Risk Score RiskScore = min(100, (Blended / Employees) × 100 × IndustryMultiplier)

#### Assumptions & References

More Calculators

Read Next

Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...

References