Spaces:
Sleeping
Sleeping
Download src/security_analyzer.py from vettri06/emailspamclassifier: direct link, hf CLI and curl.
- Browser
- Download file 4.48 kB
-
https://huggingface.co/spaces/vettri06/emailspamclassifier/resolve/main/src/security_analyzer.py
- Command line
-
hf download hf://spaces/vettri06/emailspamclassifier/src/security_analyzer.py
-
curl -L -o security_analyzer.py https://huggingface.co/spaces/vettri06/emailspamclassifier/resolve/main/src/security_analyzer.py
4.48 kB
| """ | |
| Cybersecurity threat analysis and explainability engine: | |
| Generates risk severity assessments, behavioral threat summaries, and actionable | |
| SOC/CSIRT incident response playbooks. | |
| """ | |
| from typing import Dict, Any, List | |
| from src.feature_engineering import extract_threat_indicators | |
| def assess_threat_level(predicted_class: str, probabilities: Dict[str, float], indicators: Dict[str, Any]) -> Dict[str, Any]: | |
| """ | |
| Synthesizes machine learning probabilities with deterministic threat indicators | |
| to determine the operational risk level and defense recommendations. | |
| """ | |
| susp_prob = probabilities.get("Suspicious", 0.0) | |
| spam_prob = probabilities.get("Spam", 0.0) | |
| legit_prob = probabilities.get("Legitimate", 0.0) | |
| # Base severity mapping | |
| if predicted_class == "Suspicious" or susp_prob >= 0.50: | |
| if indicators["credential_count"] > 0 or indicators["financial_count"] > 0 or indicators["ip_url_count"] > 0: | |
| severity = "CRITICAL THREAT" | |
| badge_color = "#e53e3e" # Deep red | |
| risk_score = min(round(8.5 + susp_prob * 1.5, 1), 10.0) | |
| summary = "Critical Business Email Compromise (BEC) or credential harvesting threat detected." | |
| else: | |
| severity = "HIGH THREAT" | |
| badge_color = "#dd6b20" # Orange | |
| risk_score = min(round(7.0 + susp_prob * 2.0, 1), 9.0) | |
| summary = "High probability phishing attempt with social engineering characteristics." | |
| elif predicted_class == "Spam" or spam_prob >= 0.50: | |
| severity = "MODERATE RISK" | |
| badge_color = "#d69e2e" # Amber/Yellow | |
| risk_score = round(3.5 + spam_prob * 2.5, 1) | |
| summary = "Unsolicited commercial email or promotional spam message." | |
| else: | |
| severity = "LOW RISK" | |
| badge_color = "#38a169" # Emerald green | |
| risk_score = round(max(0.5, 10.0 - (legit_prob * 9.5)), 1) | |
| summary = "Legitimate business or personal communication with normal linguistic markers." | |
| # Generate actionable defensive guidance | |
| recommendations = generate_recommendations(predicted_class, indicators, severity) | |
| return { | |
| "severity": severity, | |
| "badge_color": badge_color, | |
| "risk_score_out_of_10": risk_score, | |
| "summary": summary, | |
| "recommendations": recommendations | |
| } | |
| def generate_recommendations(predicted_class: str, indicators: Dict[str, Any], severity: str) -> List[str]: | |
| """ | |
| Generates SOC / CSIRT security playbook action items tailored to detected signals. | |
| """ | |
| recs = [] | |
| if severity in ["CRITICAL THREAT", "HIGH THREAT"]: | |
| recs.append("DO NOT click any embedded hyperlinks or access external portals.") | |
| recs.append("DO NOT download or execute any attached files (archives, documents, scripts).") | |
| recs.append("Forward this message as an RFC 822 attachment to your SOC abuse mailbox (e.g., abuse@yourcompany.com).") | |
| if indicators["financial_count"] > 0: | |
| recs.append("DO NOT process wire transfers or banking changes without verbal out-of-band verification via official phone channels.") | |
| if indicators["credential_count"] > 0: | |
| recs.append("If you entered login credentials on any linked webpage, immediately change your corporate password and revoke active sessions.") | |
| if indicators["ip_url_count"] > 0 or indicators["shortened_url_count"] > 0: | |
| recs.append("The email contains raw IP or shortened redirect links commonly used to bypass reputation filters.") | |
| recs.append("Report sender domain to IT Security to initiate domain-wide gateway quarantine.") | |
| elif severity == "MODERATE RISK": | |
| recs.append("Mark message as Junk / Spam to update local filtering rules.") | |
| recs.append("Do not reply to this email, as confirmation validates your active inbox to bulk senders.") | |
| recs.append("Avoid clicking unsubscribed links on unverified senders; use your email client's native block feature instead.") | |
| recs.append("Never share sensitive personal or corporate data with unknown commercial vendors.") | |
| else: # LOW RISK / LEGITIMATE | |
| recs.append("Standard business communication; safe to process under normal workflow.") | |
| recs.append("Verify unfamiliar external senders if unanticipated attachments or requests arrive.") | |
| recs.append("Maintain good cybersecurity hygiene by verifying sender address headers.") | |
| return recs | |