<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Peter Nasarah Dashe</title>
    <description>The latest articles on Forem by Peter Nasarah Dashe (@peternasarah).</description>
    <link>https://forem.com/peternasarah</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3790565%2F0379c76f-65b3-4eb0-a51e-3c7ab7a252be.png</url>
      <title>Forem: Peter Nasarah Dashe</title>
      <link>https://forem.com/peternasarah</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/peternasarah"/>
    <language>en</language>
    <item>
      <title>🚀 Permi v0.3.0 – Major Improvements to JS Scanning, AI Accuracy, and Speed</title>
      <dc:creator>Peter Nasarah Dashe</dc:creator>
      <pubDate>Mon, 11 May 2026 16:24:25 +0000</pubDate>
      <link>https://forem.com/peternasarah/permi-v030-major-improvements-to-js-scanning-ai-accuracy-and-speed-41c4</link>
      <guid>https://forem.com/peternasarah/permi-v030-major-improvements-to-js-scanning-ai-accuracy-and-speed-41c4</guid>
      <description>&lt;p&gt;I just shipped a significant update to Permi. This release tackles the biggest pain points reported by the community: &lt;strong&gt;JS scanning that actually works&lt;/strong&gt;, &lt;strong&gt;smarter XSS detection&lt;/strong&gt;, and &lt;strong&gt;much faster scans&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 Smarter AI – Now CSP‑Aware
&lt;/h2&gt;

&lt;p&gt;Permi’s AI filter can now recognize when a target uses a &lt;strong&gt;Content‑Security‑Policy (CSP)&lt;/strong&gt; that blocks inline script execution. This significantly reduces false positives on hardened websites like GitHub, banks, or government portals.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Before:&lt;/strong&gt; Reflected XSS payload found → flagged as REAL, even if CSP blocked it.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;After:&lt;/strong&gt; AI checks CSP header → marks as harmless unless the policy allows execution.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🌐 Production‑Ready JavaScript Crawling
&lt;/h2&gt;

&lt;p&gt;The new &lt;code&gt;--js&lt;/code&gt; flag launches a Playwright headless browser that can render React, Vue, Angular, and other SPAs. It even works behind Cloudflare thanks to &lt;code&gt;playwright-stealth&lt;/code&gt;.&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
permi scan --url https://example.com --js
Reliability: Falls back to static HTML if JS times out (no more zero‑URL scans).
Control: Configurable timeout with --js-timeout 30 (default 20 seconds).
Deep Discovery: Detects XHR/fetch API endpoints via network request interception.
⚠️ Note: JS scanning is still experimental in the community edition. It works well on most sites, but some may require authentication or infinite scroll. Upgrade to Permi Pro (coming soon) for production‑grade crawling.

⚡ Performance Gains
Concurrency: Concurrent SQL + XSS scanning is now roughly 50% faster.
Deduplication: Smarter URL deduplication avoids testing the same parameter signature twice.
Safety: Added a hard crawl timeout so the CLI will never freeze indefinitely.
🐛 Critical Bug Fixes
Exports: Fixed the issue where --export wouldn't actually write files.
Directories: Fixed subfolder creation for --export results/scan.json.
SQLi Logic: Time‑based SQL injection now uses SLEEP() with a 10s cap and a 6s threshold.
Windows Support: Resolved an asyncio deadlock; Playwright now runs in its own thread.
📦 How to Update
pip install --upgrade permi
Then try:

# Scan a static site
permi scan --url https://example.com

# Scan a JavaScript‑heavy SPA (experimental)
permi scan --url https://example.com --js --js-timeout 30

# Scan your local codebase
permi scan --path ./my-project
🙏 Thank You
This release was shaped by feedback from developers who tried Permi and shared what broke. Special thanks to:

BashSnippets for pushing me to improve error handling.
Endura Security for the supply chain insights.
Everyone who opened an issue or DM’d me with raw scan outputs.
Permi is still free, open source, and built for the community. If it saves you time, please star the repo!

&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Peternasarah" rel="noopener noreferrer"&gt;
        Peternasarah
      &lt;/a&gt; / &lt;a href="https://github.com/Peternasarah/permi" rel="noopener noreferrer"&gt;
        permi
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      AI-powered vulnerability scanner for Nigerian developers and global SMBs
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Permi&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="https://pypi.org/project/permi/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/35b45d887e3627b6ba65629c4b1a6a8488c6b75494af4404558b758b87c91f6e/68747470733a2f2f62616467652e667572792e696f2f70792f7065726d692e737667" alt="PyPI version"&gt;&lt;/a&gt;
&lt;a href="https://github.com/Peternasarah/permi/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/Peternasarah/permi/actions/workflows/ci.yml/badge.svg" alt="CI"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI-powered vulnerability scanner for Nigerian developers and global SMBs.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Permi scans live websites and source code for security vulnerabilities, then uses AI to filter out false positives — so you only see findings that actually matter.&lt;/p&gt;

&lt;p&gt;Built in Nigeria. For Nigeria. Then for the world.&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Two scan modes&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;
&lt;code&gt;--url&lt;/code&gt; — Live web scanning&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;Point Permi at any website. It crawls the pages, tests for SQL injection, XSS, and checks security headers on the running application.&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;permi scan --url https://yoursite.com&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;
&lt;code&gt;--path&lt;/code&gt; — Static source code scanning&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;Point Permi at a local folder or GitHub repository. It reads your code files, matches vulnerability patterns, and flags issues before they ship.&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;permi scan --path ./myapp
permi scan --path https://github.com/user/repo&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What Permi detects&lt;/h2&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Web scanning (&lt;code&gt;--url&lt;/code&gt;)&lt;/h3&gt;

&lt;/div&gt;


&lt;ul&gt;

&lt;li&gt;

&lt;strong&gt;SQL Injection&lt;/strong&gt; — error-based, boolean-based blind, time-based blind&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Cross-Site Scripting (XSS)&lt;/strong&gt; — reflected XSS with context-aware testing&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Missing Security Headers&lt;/strong&gt; — HSTS, CSP, X-Frame-Options, X-Content-Type-Options&lt;/li&gt;

&lt;li&gt;…&lt;/li&gt;

&lt;/ul&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Peternasarah/permi" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;

&lt;p&gt;Keep building securely. 🔐&lt;/p&gt;

&lt;p&gt;What’s the most frustrating false positive you’ve encountered in a security scanner? Let me know in the comments!&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>security</category>
      <category>opensource</category>
      <category>python</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The Onslaught: Why Nigeria's Volume of Cyber Attacks Is Overwhelming Defences</title>
      <dc:creator>Peter Nasarah Dashe</dc:creator>
      <pubDate>Mon, 11 May 2026 16:19:46 +0000</pubDate>
      <link>https://forem.com/peternasarah/the-onslaught-why-nigerias-volume-of-cyber-attacks-is-overwhelming-defences-522o</link>
      <guid>https://forem.com/peternasarah/the-onslaught-why-nigerias-volume-of-cyber-attacks-is-overwhelming-defences-522o</guid>
      <description>&lt;p&gt;&lt;strong&gt;By Nasarah Dashe&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is Challenge #2 in a series. Read Challenge #1 &lt;a href="https://dev.to/peternasarah/the-digital-tsunami-and-the-security-hangover-nigerias-first-cybersecurity-challenge-3b2e"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Imagine waking up to 50 missed calls from your bank. You check your account balance. It is empty.&lt;/p&gt;

&lt;p&gt;A SIM‑swap fraudster convinced your telco agent to transfer your number to another SIM card, then used it to reset your mobile banking PIN and drain every kobo.&lt;/p&gt;

&lt;p&gt;Later that week, you receive an email from "Flutterwave Support" asking you to verify a suspicious transaction. You click the link. Within seconds, infostealer malware copies your saved passwords, browser cookies, and BVN‑linked credentials to a server in Eastern Europe.&lt;/p&gt;

&lt;p&gt;This is not a hypothetical. This is &lt;strong&gt;Tuesday in Nigeria's cyber landscape&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Onslaught Is Real
&lt;/h2&gt;

&lt;p&gt;The sheer volume and variety of attacks targeting Nigerian individuals, fintechs, banks, and government agencies have reached unprecedented levels.&lt;/p&gt;

&lt;p&gt;Unlike Challenge #1 (digitisation without maturity), where the problem is structural, this challenge is &lt;em&gt;active&lt;/em&gt;—a relentless barrage that shows no signs of slowing.&lt;/p&gt;

&lt;p&gt;According to projections:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI‑powered phishing attacks will intensify by nearly &lt;strong&gt;70% in 2026&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Ransomware groups like &lt;strong&gt;Phobos&lt;/strong&gt; have added Nigerian cloud providers to their target lists&lt;/li&gt;
&lt;li&gt;Password stealers are up &lt;strong&gt;66%&lt;/strong&gt; ; spyware up &lt;strong&gt;53%&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Banking trojans now specifically hunt for &lt;strong&gt;over 40 Nigerian fintech apps&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And insider threats are quietly growing as economic pressures push employees toward dangerous compromises.&lt;/p&gt;

&lt;p&gt;The question is not &lt;em&gt;whether&lt;/em&gt; your organisation will be attacked. It is &lt;em&gt;how you will detect, prioritise, and respond&lt;/em&gt; when the flood hits.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Attack Menu: A Rogues' Gallery
&lt;/h2&gt;

&lt;p&gt;Let me break down what Nigerian defenders are facing right now.&lt;/p&gt;

&lt;h3&gt;
  
  
  🎣 AI‑Powered Phishing &amp;amp; Social Engineering
&lt;/h3&gt;

&lt;p&gt;Modern phishing uses generative AI to craft perfect impersonations. Voice phishing (vishing) and SMS scams (smishing) have exploded. A single employee clicking a fake "HR payroll update" link can hand over network credentials to an entire organisation.&lt;/p&gt;

&lt;h3&gt;
  
  
  💣 Ransomware
&lt;/h3&gt;

&lt;p&gt;Banks and telecoms are prime targets because they cannot afford downtime. The Phobos group has been actively scanning Nigerian cloud infrastructure for weak RDP endpoints. Once inside, they encrypt databases and demand millions in crypto.&lt;/p&gt;

&lt;h3&gt;
  
  
  🆔 Identity &amp;amp; Credential Theft
&lt;/h3&gt;

&lt;p&gt;Infostealer malware like RedLine silently harvests saved logins, credit card details, and session tokens. Those credentials are sold on dark web markets for as little as &lt;strong&gt;$5 per account&lt;/strong&gt;. Add SIM‑swap fraud, and you have a complete account takeover pipeline.&lt;/p&gt;

&lt;h3&gt;
  
  
  🏦 Banking Trojans &amp;amp; USSD Hijackers
&lt;/h3&gt;

&lt;p&gt;Grandoreiro has been observed targeting &lt;strong&gt;over 40 Nigerian banking apps&lt;/strong&gt;. It overlays fake login screens to steal credentials. USSD‑specific malware intercepts unencrypted session strings, allowing real‑time transaction hijacking.&lt;/p&gt;

&lt;h3&gt;
  
  
  👤 Insider Threats
&lt;/h3&gt;

&lt;p&gt;An underpaid support agent with database access can sell customer records. A disgruntled developer can leave a backdoor in production code. Poor separation of duties and lack of behaviour analytics mean these actions often go unnoticed for months.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Overwhelm Problem: Volume Meets Noise
&lt;/h2&gt;

&lt;p&gt;A typical mid‑sized fintech might receive &lt;strong&gt;thousands of security alerts per day&lt;/strong&gt;. Most are false positives or low severity. But buried inside that firehose are the genuine threats.&lt;/p&gt;

&lt;p&gt;Traditional vulnerability scanners make this worse. They generate dozens of "critical" findings—most irrelevant. A developer spends hours triaging instead of responding. Meanwhile, the real attack continues.&lt;/p&gt;

&lt;p&gt;Attackers are using AI to generate custom phishing lures, polymorphic malware, and adaptive exploits. Defenders are still drowning in spreadsheet after spreadsheet of unvalidated scanner output.&lt;/p&gt;




&lt;h2&gt;
  
  
  Cutting Through the Noise: A Smarter Detection Philosophy
&lt;/h2&gt;

&lt;p&gt;The solution is not to buy more tools that generate more noise. The solution is to &lt;strong&gt;validate threats before they reach human analysts&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Imagine a scanner that does not just flag "potential SQL injection" on every input field. Instead, it uses a lightweight AI model to confirm whether the injection actually worked. If the AI determines it is a false positive, the finding is discarded. The human only sees what is real.&lt;/p&gt;

&lt;p&gt;This concept—intelligent false‑positive filtering—is already being implemented in open‑source tools like &lt;strong&gt;Permi&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Built by a Nigerian cybersecurity student, Permi scans live websites or source code for common vulnerabilities (SQLi, XSS, missing headers, hardcoded secrets). Then, optionally, it calls an LLM via OpenRouter to &lt;strong&gt;validate each finding&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The result:&lt;/strong&gt; instead of 50 alarms, you get 8 genuine issues. Instead of hours of triage, you get minutes of focused remediation.&lt;/p&gt;

&lt;p&gt;Permi also includes rules specifically for Nigerian attack surfaces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;USSD gateway misconfigurations&lt;/li&gt;
&lt;li&gt;Exposed Paystack/Flutterwave keys&lt;/li&gt;
&lt;li&gt;NDPR‑relevant gaps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a small fintech with one part‑time security person, that noise reduction is the difference between surviving an attack and becoming a statistic.&lt;/p&gt;




&lt;h2&gt;
  
  
  Practical Steps to Survive the Onslaught
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Implement AI‑aware phishing training&lt;/strong&gt; – Use real‑time threat intelligence to block suspicious domains. Teach users to verify requests through out‑of‑band channels (e.g., call back a known number).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prioritise identity hygiene&lt;/strong&gt; – Enforce MFA everywhere. Treat SIM‑swap as a high‑risk event—require in‑person verification for SIM replacements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reduce your alert surface&lt;/strong&gt; – Uninstall noisy, high‑false‑positive scanners. Replace them with tools that validate findings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Monitor for infostealer logs&lt;/strong&gt; – Services like HaveIBeenPwned can alert you when employee credentials appear in stealer logs. Rotate them immediately.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Create an insider threat programme&lt;/strong&gt; – Limit access to the minimum necessary. Log sensitive database queries. Pay security staff competitively.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  The Human Factor: Why Volume Exhaustion Is Real
&lt;/h2&gt;

&lt;p&gt;Security professionals in Nigeria are overworked, underpaid, and often alone. The "japa" brain drain means the few who remain juggle multiple roles.&lt;/p&gt;

&lt;p&gt;When every scan returns 50 critical alerts, they stop taking alerts seriously. When ransomware hits despite their best efforts, they blame themselves.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is not a personal failing. It is a systemic one.&lt;/strong&gt; Our tools have failed them.&lt;/p&gt;

&lt;p&gt;The shift toward intelligent, low‑noise, locally relevant security tooling is not a luxury—it is a survival mechanism.&lt;/p&gt;




&lt;h2&gt;
  
  
  Looking Ahead: The 2026 Escalation
&lt;/h2&gt;

&lt;p&gt;All projections indicate 2026 will be worse:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI‑native malware that rewrites itself to evade detection&lt;/li&gt;
&lt;li&gt;Autonomous exploits that scan, breach, and pivot without human control&lt;/li&gt;
&lt;li&gt;Election‑related cyber attacks&lt;/li&gt;
&lt;li&gt;Zero‑trust gaps as organisations rush to cloud&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The volume will not decrease. The sophistication will increase. The only variable we can control is our ability to distinguish real threats from noise.&lt;/p&gt;

&lt;p&gt;That is why I am cautiously optimistic about grassroots tools like Permi. They represent a different philosophy: &lt;strong&gt;small, sharp, honest&lt;/strong&gt;. They solve one problem—false positives—better than billion‑dollar alternatives.&lt;/p&gt;

&lt;p&gt;In a country where every security professional is already outnumbered, that one improvement can be enough to tip the balance.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;Nigeria is under an active, diverse, and escalating cyber attack. Phishing, ransomware, identity theft, banking trojans, USSD hijacking, and insider threats are not coming—they are here.&lt;/p&gt;

&lt;p&gt;The volume is overwhelming defences because our traditional tools generate more noise than signal.&lt;/p&gt;

&lt;p&gt;We need a new approach: intelligent validation, local relevance, and ruthless prioritisation of real threats. Open‑source projects like Permi are showing the way forward.&lt;/p&gt;

&lt;p&gt;They will not stop every attack, but they will stop the paralysis of false alarms—giving our overstretched defenders a clear, concise, and actionable picture of what actually needs fixing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The onslaught will not pause. But neither should we.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Let's Discuss
&lt;/h2&gt;

&lt;p&gt;What attack types have hit your organisation hardest? How are you cutting through the alert noise? Drop your experiences in the comments.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Next in this series:&lt;/strong&gt; Challenge #3 – Unique Vulnerabilities in Fintech &amp;amp; Mobile Money (USSD risks, agent fraud, low digital literacy, and how local tooling can help).&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Cover image: [Unsplash or your own]&lt;/em&gt;&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>nigeria</category>
      <category>fintech</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Permi v0.2.10: Making Security Scans Portable with JSON and Markdown</title>
      <dc:creator>Peter Nasarah Dashe</dc:creator>
      <pubDate>Tue, 05 May 2026 13:14:01 +0000</pubDate>
      <link>https://forem.com/peternasarah/permi-v0210-making-security-scans-portable-with-json-and-markdown-20fa</link>
      <guid>https://forem.com/peternasarah/permi-v0210-making-security-scans-portable-with-json-and-markdown-20fa</guid>
      <description>&lt;h2&gt;
  
  
  What's new
&lt;/h2&gt;

&lt;p&gt;Based on early user feedback, Permi can now save your vulnerability scan results in three distinct formats to fit your workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;--export results.txt&lt;/code&gt; – Human-readable plain text for quick reviews.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--export results.json&lt;/code&gt; – Structured data designed for scripts and CI/CD automation.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--export results.md&lt;/code&gt; – Clean Markdown, perfect for GitHub documentation or internal wikis.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;To try out the new export feature, ensure you have the latest version installed:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
pip install -U permi
permi scan --path ./src --export report.md
The exported file includes:

Scan metadata: Target path, timestamp, and duration.
AI filter summary: Raw findings vs. real findings and noise reduction percentage.
Detailed findings: Each vulnerability includes the file path, line number, code snippet, confidence score, and the AI's reasoning.
Why this matters
Developers told me they wanted to share results with their teams, attach reports to Jira tickets, or archive scans for compliance. By moving beyond just CLI output, Permi can now live inside your existing project documentation.

What's next
The roadmap is focused on making these scans even more accessible:

VS Code extension: For real-time scanning as you code.
GitHub Action: To automate PR checks using the new JSON export.
Has anyone successfully integrated AI-filtered security scans into their workflow yet?

&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Peternasarah" rel="noopener noreferrer"&gt;
        Peternasarah
      &lt;/a&gt; / &lt;a href="https://github.com/Peternasarah/permi" rel="noopener noreferrer"&gt;
        permi
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      AI-powered vulnerability scanner for Nigerian developers and global SMBs
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Permi&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="https://pypi.org/project/permi/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/35b45d887e3627b6ba65629c4b1a6a8488c6b75494af4404558b758b87c91f6e/68747470733a2f2f62616467652e667572792e696f2f70792f7065726d692e737667" alt="PyPI version"&gt;&lt;/a&gt;
&lt;a href="https://github.com/Peternasarah/permi/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/Peternasarah/permi/actions/workflows/ci.yml/badge.svg" alt="CI"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI-powered vulnerability scanner for Nigerian developers and global SMBs.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Permi scans live websites and source code for security vulnerabilities, then uses AI to filter out false positives — so you only see findings that actually matter.&lt;/p&gt;

&lt;p&gt;Built in Nigeria. For Nigeria. Then for the world.&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Two scan modes&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;
&lt;code&gt;--url&lt;/code&gt; — Live web scanning&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;Point Permi at any website. It crawls the pages, tests for SQL injection, XSS, and checks security headers on the running application.&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;permi scan --url https://yoursite.com&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;
&lt;code&gt;--path&lt;/code&gt; — Static source code scanning&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;Point Permi at a local folder or GitHub repository. It reads your code files, matches vulnerability patterns, and flags issues before they ship.&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;permi scan --path ./myapp
permi scan --path https://github.com/user/repo&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What Permi detects&lt;/h2&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Web scanning (&lt;code&gt;--url&lt;/code&gt;)&lt;/h3&gt;

&lt;/div&gt;


&lt;ul&gt;

&lt;li&gt;

&lt;strong&gt;SQL Injection&lt;/strong&gt; — error-based, boolean-based blind, time-based blind&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Cross-Site Scripting (XSS)&lt;/strong&gt; — reflected XSS with context-aware testing&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Missing Security Headers&lt;/strong&gt; — HSTS, CSP, X-Frame-Options, X-Content-Type-Options&lt;/li&gt;

&lt;li&gt;…&lt;/li&gt;

&lt;/ul&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Peternasarah/permi" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;

&lt;p&gt;📦 GitHub Release Notes (v0.2.10)&lt;br&gt;
🚀 New Feature&lt;/p&gt;

&lt;p&gt;Added --export flag supporting .txt, .json, and .md.&lt;br&gt;
🧹 Improvements&lt;/p&gt;

&lt;p&gt;Better error handling for AI API timeouts.&lt;br&gt;
Faster JSON parsing in the AI filter logic.&lt;br&gt;
🙏 Thanks&lt;br&gt;
To everyone who sent feedback about the CLI output—you made this happen. Keep it coming.&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>python</category>
      <category>security</category>
      <category>opensource</category>
      <category>devtools</category>
    </item>
    <item>
      <title>The Onslaught: Why Nigeria's Volume of Cyber Attacks Is Overwhelming Defences</title>
      <dc:creator>Peter Nasarah Dashe</dc:creator>
      <pubDate>Tue, 05 May 2026 11:43:33 +0000</pubDate>
      <link>https://forem.com/peternasarah/the-onslaught-why-nigerias-volume-of-cyber-attacks-is-overwhelming-defences-304e</link>
      <guid>https://forem.com/peternasarah/the-onslaught-why-nigerias-volume-of-cyber-attacks-is-overwhelming-defences-304e</guid>
      <description>&lt;p&gt;&lt;strong&gt;By Nasarah Dashe&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is Challenge #2 in a series. Read Challenge #1 &lt;a href="https://dev.to/peternasarah/the-digital-tsunami-and-the-security-hangover-nigerias-first-cybersecurity-challenge-3b2e"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Imagine waking up to 50 missed calls from your bank. You check your account balance. It is empty.&lt;/p&gt;

&lt;p&gt;A SIM‑swap fraudster convinced your telco agent to transfer your number to another SIM card, then used it to reset your mobile banking PIN and drain every kobo.&lt;/p&gt;

&lt;p&gt;Later that week, you receive an email from "Flutterwave Support" asking you to verify a suspicious transaction. You click the link. Within seconds, infostealer malware copies your saved passwords, browser cookies, and BVN‑linked credentials to a server in Eastern Europe.&lt;/p&gt;

&lt;p&gt;This is not a hypothetical. This is &lt;strong&gt;Tuesday in Nigeria's cyber landscape&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Onslaught Is Real
&lt;/h2&gt;

&lt;p&gt;The sheer volume and variety of attacks targeting Nigerian individuals, fintechs, banks, and government agencies have reached unprecedented levels.&lt;/p&gt;

&lt;p&gt;Unlike Challenge #1 (digitisation without maturity), where the problem is structural, this challenge is &lt;em&gt;active&lt;/em&gt;—a relentless barrage that shows no signs of slowing.&lt;/p&gt;

&lt;p&gt;According to projections:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI‑powered phishing attacks will intensify by nearly &lt;strong&gt;70% in 2026&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Ransomware groups like &lt;strong&gt;Phobos&lt;/strong&gt; have added Nigerian cloud providers to their target lists&lt;/li&gt;
&lt;li&gt;Password stealers are up &lt;strong&gt;66%&lt;/strong&gt; ; spyware up &lt;strong&gt;53%&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Banking trojans now specifically hunt for &lt;strong&gt;over 40 Nigerian fintech apps&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And insider threats are quietly growing as economic pressures push employees toward dangerous compromises.&lt;/p&gt;

&lt;p&gt;The question is not &lt;em&gt;whether&lt;/em&gt; your organisation will be attacked. It is &lt;em&gt;how you will detect, prioritise, and respond&lt;/em&gt; when the flood hits.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Attack Menu: A Rogues' Gallery
&lt;/h2&gt;

&lt;p&gt;Let me break down what Nigerian defenders are facing right now.&lt;/p&gt;

&lt;h3&gt;
  
  
  🎣 AI‑Powered Phishing &amp;amp; Social Engineering
&lt;/h3&gt;

&lt;p&gt;Modern phishing uses generative AI to craft perfect impersonations. Voice phishing (vishing) and SMS scams (smishing) have exploded. A single employee clicking a fake "HR payroll update" link can hand over network credentials to an entire organisation.&lt;/p&gt;

&lt;h3&gt;
  
  
  💣 Ransomware
&lt;/h3&gt;

&lt;p&gt;Banks and telecoms are prime targets because they cannot afford downtime. The Phobos group has been actively scanning Nigerian cloud infrastructure for weak RDP endpoints. Once inside, they encrypt databases and demand millions in crypto.&lt;/p&gt;

&lt;h3&gt;
  
  
  🆔 Identity &amp;amp; Credential Theft
&lt;/h3&gt;

&lt;p&gt;Infostealer malware like RedLine silently harvests saved logins, credit card details, and session tokens. Those credentials are sold on dark web markets for as little as &lt;strong&gt;$5 per account&lt;/strong&gt;. Add SIM‑swap fraud, and you have a complete account takeover pipeline.&lt;/p&gt;

&lt;h3&gt;
  
  
  🏦 Banking Trojans &amp;amp; USSD Hijackers
&lt;/h3&gt;

&lt;p&gt;Grandoreiro has been observed targeting &lt;strong&gt;over 40 Nigerian banking apps&lt;/strong&gt;. It overlays fake login screens to steal credentials. USSD‑specific malware intercepts unencrypted session strings, allowing real‑time transaction hijacking.&lt;/p&gt;

&lt;h3&gt;
  
  
  👤 Insider Threats
&lt;/h3&gt;

&lt;p&gt;An underpaid support agent with database access can sell customer records. A disgruntled developer can leave a backdoor in production code. Poor separation of duties and lack of behaviour analytics mean these actions often go unnoticed for months.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Overwhelm Problem: Volume Meets Noise
&lt;/h2&gt;

&lt;p&gt;A typical mid‑sized fintech might receive &lt;strong&gt;thousands of security alerts per day&lt;/strong&gt;. Most are false positives or low severity. But buried inside that firehose are the genuine threats.&lt;/p&gt;

&lt;p&gt;Traditional vulnerability scanners make this worse. They generate dozens of "critical" findings—most irrelevant. A developer spends hours triaging instead of responding. Meanwhile, the real attack continues.&lt;/p&gt;

&lt;p&gt;Attackers are using AI to generate custom phishing lures, polymorphic malware, and adaptive exploits. Defenders are still drowning in spreadsheet after spreadsheet of unvalidated scanner output.&lt;/p&gt;




&lt;h2&gt;
  
  
  Cutting Through the Noise: A Smarter Detection Philosophy
&lt;/h2&gt;

&lt;p&gt;The solution is not to buy more tools that generate more noise. The solution is to &lt;strong&gt;validate threats before they reach human analysts&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Imagine a scanner that does not just flag "potential SQL injection" on every input field. Instead, it uses a lightweight AI model to confirm whether the injection actually worked. If the AI determines it is a false positive, the finding is discarded. The human only sees what is real.&lt;/p&gt;

&lt;p&gt;This concept—intelligent false‑positive filtering—is already being implemented in open‑source tools like &lt;strong&gt;Permi&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Built by a Nigerian cybersecurity student, Permi scans live websites or source code for common vulnerabilities (SQLi, XSS, missing headers, hardcoded secrets). Then, optionally, it calls an LLM via OpenRouter to &lt;strong&gt;validate each finding&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The result:&lt;/strong&gt; instead of 50 alarms, you get 8 genuine issues. Instead of hours of triage, you get minutes of focused remediation.&lt;/p&gt;

&lt;p&gt;Permi also includes rules specifically for Nigerian attack surfaces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;USSD gateway misconfigurations&lt;/li&gt;
&lt;li&gt;Exposed Paystack/Flutterwave keys&lt;/li&gt;
&lt;li&gt;NDPR‑relevant gaps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a small fintech with one part‑time security person, that noise reduction is the difference between surviving an attack and becoming a statistic.&lt;/p&gt;




&lt;h2&gt;
  
  
  Practical Steps to Survive the Onslaught
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Implement AI‑aware phishing training&lt;/strong&gt; – Use real‑time threat intelligence to block suspicious domains. Teach users to verify requests through out‑of‑band channels (e.g., call back a known number).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prioritise identity hygiene&lt;/strong&gt; – Enforce MFA everywhere. Treat SIM‑swap as a high‑risk event—require in‑person verification for SIM replacements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reduce your alert surface&lt;/strong&gt; – Uninstall noisy, high‑false‑positive scanners. Replace them with tools that validate findings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Monitor for infostealer logs&lt;/strong&gt; – Services like HaveIBeenPwned can alert you when employee credentials appear in stealer logs. Rotate them immediately.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Create an insider threat programme&lt;/strong&gt; – Limit access to the minimum necessary. Log sensitive database queries. Pay security staff competitively.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  The Human Factor: Why Volume Exhaustion Is Real
&lt;/h2&gt;

&lt;p&gt;Security professionals in Nigeria are overworked, underpaid, and often alone. The "japa" brain drain means the few who remain juggle multiple roles.&lt;/p&gt;

&lt;p&gt;When every scan returns 50 critical alerts, they stop taking alerts seriously. When ransomware hits despite their best efforts, they blame themselves.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is not a personal failing. It is a systemic one.&lt;/strong&gt; Our tools have failed them.&lt;/p&gt;

&lt;p&gt;The shift toward intelligent, low‑noise, locally relevant security tooling is not a luxury—it is a survival mechanism.&lt;/p&gt;




&lt;h2&gt;
  
  
  Looking Ahead: The 2026 Escalation
&lt;/h2&gt;

&lt;p&gt;All projections indicate 2026 will be worse:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI‑native malware that rewrites itself to evade detection&lt;/li&gt;
&lt;li&gt;Autonomous exploits that scan, breach, and pivot without human control&lt;/li&gt;
&lt;li&gt;Election‑related cyber attacks&lt;/li&gt;
&lt;li&gt;Zero‑trust gaps as organisations rush to cloud&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The volume will not decrease. The sophistication will increase. The only variable we can control is our ability to distinguish real threats from noise.&lt;/p&gt;

&lt;p&gt;That is why I am cautiously optimistic about grassroots tools like Permi. They represent a different philosophy: &lt;strong&gt;small, sharp, honest&lt;/strong&gt;. They solve one problem—false positives—better than billion‑dollar alternatives.&lt;/p&gt;

&lt;p&gt;In a country where every security professional is already outnumbered, that one improvement can be enough to tip the balance.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;Nigeria is under an active, diverse, and escalating cyber attack. Phishing, ransomware, identity theft, banking trojans, USSD hijacking, and insider threats are not coming—they are here.&lt;/p&gt;

&lt;p&gt;The volume is overwhelming defences because our traditional tools generate more noise than signal.&lt;/p&gt;

&lt;p&gt;We need a new approach: intelligent validation, local relevance, and ruthless prioritisation of real threats. Open‑source projects like Permi are showing the way forward.&lt;/p&gt;

&lt;p&gt;They will not stop every attack, but they will stop the paralysis of false alarms—giving our overstretched defenders a clear, concise, and actionable picture of what actually needs fixing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The onslaught will not pause. But neither should we.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Let's Discuss
&lt;/h2&gt;

&lt;p&gt;What attack types have hit your organisation hardest? How are you cutting through the alert noise? Drop your experiences in the comments.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Next in this series:&lt;/strong&gt; Challenge #3 – Unique Vulnerabilities in Fintech &amp;amp; Mobile Money (USSD risks, agent fraud, low digital literacy, and how local tooling can help).&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Cover image: [Unsplash or your own]&lt;/em&gt;&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>nigeria</category>
      <category>fintech</category>
      <category>opensource</category>
    </item>
    <item>
      <title>The Digital Tsunami and the Security Hangover: Nigeria's First Cybersecurity Challenge</title>
      <dc:creator>Peter Nasarah Dashe</dc:creator>
      <pubDate>Sun, 26 Apr 2026 11:52:24 +0000</pubDate>
      <link>https://forem.com/peternasarah/the-digital-tsunami-and-the-security-hangover-nigerias-first-cybersecurity-challenge-3b2e</link>
      <guid>https://forem.com/peternasarah/the-digital-tsunami-and-the-security-hangover-nigerias-first-cybersecurity-challenge-3b2e</guid>
      <description>&lt;p&gt;&lt;em&gt;By Nasarah Dashe&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you have sent money via USSD, paid for groceries with a mobile wallet, or onboarded a new fintech app in the last 12 months, you have touched Nigeria's digital economy. It is vibrant, relentless, and growing faster than almost anywhere else in the world.&lt;/p&gt;

&lt;p&gt;Between 2020 and 2025, Nigeria saw an explosion in fintech startups, mobile banking agents, and cashless payment channels. The Central Bank's cashless policy, combined with a young, tech-savvy population, pushed transaction values into the trillions of Naira. USSD codes like &lt;code&gt;*737#&lt;/code&gt; or &lt;code&gt;*894#&lt;/code&gt; became household commands. Mobile wallets replaced physical banks for millions of unbanked citizens.&lt;/p&gt;

&lt;p&gt;This is progress. This is inclusion. This is the future.&lt;/p&gt;

&lt;p&gt;But there is a shadow beneath the speed.&lt;/p&gt;

&lt;p&gt;The very force driving Nigeria's digitisation—rush, competition, and pressure to onboard users—has left a critical gap wide open: security maturity. We are building a ten-lane highway while still using paper maps and wooden guardrails. And attackers have already found the exits.&lt;/p&gt;

&lt;p&gt;Let me walk you through the anatomy of this challenge, because until we name it honestly, we cannot fix it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Explosion: What Rapid Digitisation Looks Like on the Ground
&lt;/h2&gt;

&lt;p&gt;Walk into any bustling market in Lagos, Kano, or Port Harcourt. You will see small traders with point-of-sale (POS) terminals powered by mobile apps. You will see customers dialling USSD codes on feature phones to transfer airtime or pay bills. Behind the scenes, APIs link these tiny transactions to large switching hubs, banks, and fintech processors like Paystack, Flutterwave, Moniepoint, and OPay.&lt;/p&gt;

&lt;p&gt;The numbers are staggering. According to the Nigeria Inter-Bank Settlement System (NIBSS), mobile money transactions alone have grown by over 200% in some quarters year-on-year. USSD still processes billions of Naira monthly, especially for users without smartphones. Fintech startups have raised hundreds of millions of dollars in funding, promising to "unbank the unbanked."&lt;/p&gt;

&lt;p&gt;But here is the uncomfortable truth: many of these systems—whether legacy banking infrastructure repurposed for mobile, or fast-built fintech MVPs—lack modern security protections.&lt;/p&gt;

&lt;p&gt;Why? Because speed to market was the priority. Security was a checklist, not a culture.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Attack Surface: What We Have Exposed
&lt;/h2&gt;

&lt;p&gt;Every new digital channel is a door. Every API endpoint is a window. Every USSD gateway is a potential back alley. When you digitise rapidly without corresponding security maturity, you do not just expand access—you expand vulnerability.&lt;/p&gt;

&lt;p&gt;Consider the typical Nigerian mobile money ecosystem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;USSD interfaces that communicate in plain text over SS7 networks, vulnerable to interception and session hijacking.&lt;/li&gt;
&lt;li&gt;Mobile wallets that store user credentials on devices with weak encryption or no runtime protection.&lt;/li&gt;
&lt;li&gt;Agent banking apps with hardcoded API keys or poor authentication logic, exposed in public repositories.&lt;/li&gt;
&lt;li&gt;Legacy core banking systems wrapped in modern APIs but never audited for modern threats like injection or broken access control.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Attackers love this chaos. They do not need zero-day exploits. They just need one misconfigured server, one forgotten debug endpoint, one USSD session token sent in the clear.&lt;/p&gt;

&lt;p&gt;And because Nigeria's digitisation happened in waves—each provider layering new features on old foundations—the attack surface is not a straight line. It is a tangle of protocols, versions, and forgotten services.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real Consequences: When Speed Meets Exploitation
&lt;/h2&gt;

&lt;p&gt;This is not a theoretical risk. We have seen the results.&lt;/p&gt;

&lt;p&gt;Fintech breaches involving credential exposure have led to billions of Naira in unauthorised transfers. USSD session hijacking has allowed fraudsters to drain accounts while victims sleep. SIM-swap attacks, amplified by poor verification at telecom agents, have handed over mobile money accounts to criminals.&lt;/p&gt;

&lt;p&gt;The common thread in many of these incidents? Not sophisticated hacking. Exploitable gaps left open because security was bolted on after launch, not built in from the start.&lt;/p&gt;

&lt;p&gt;One example: a popular mobile lending app left its API completely open, exposing user loan details, BVNs, and phone numbers. No authentication. No rate limiting. It was discovered by a security researcher—not by the company's own team. That is the symptom of maturity lag.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Traditional Scanners Fail the Maturity Test
&lt;/h2&gt;

&lt;p&gt;So how do organisations defend themselves? Many turn to automated vulnerability scanners. They run a tool, get a report, and "fix" the red items. But here is where the maturity gap creates a second-order problem.&lt;/p&gt;

&lt;p&gt;Most traditional scanners—even expensive ones—are built for idealised environments. They assume clean configurations, standard frameworks, and English-language error messages. They also suffer from a crippling flaw: false positives.&lt;/p&gt;

&lt;p&gt;A typical scan against a Nigerian fintech portal might return 50 "critical" findings. After hours of triage, a developer realises that 42 of them are false alarms: outdated rule sets, misinterpretations of custom code, or generic warnings that don't apply. The remaining 8 are real—but now the team is exhausted, frustrated, and less likely to trust future scans.&lt;/p&gt;

&lt;p&gt;When security tools waste your time, you stop using them properly. And when you stop using them, the gap between digitisation and maturity grows even wider.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Smarter Path Forward: Local Solutions for Local Problems
&lt;/h2&gt;

&lt;p&gt;The answer is not to stop digitising. That would be like asking a race car to brake suddenly on a highway. The answer is to match speed with intelligence—specifically, the intelligence to separate real threats from noise.&lt;/p&gt;

&lt;p&gt;Imagine a tool that scans live websites or source code for the same vulnerabilities (SQL injection, XSS, missing headers, hardcoded secrets) but then uses an optional AI layer to validate each finding. Instead of drowning in 50 alerts, you see only the 8 that actually matter. You save hours. You fix what is broken. You move on.&lt;/p&gt;

&lt;p&gt;That tool exists. It is called &lt;strong&gt;Permi&lt;/strong&gt;. It is open-source, free, and built by a Nigerian cybersecurity student who got tired of traditional scanners crying wolf. Permi understands local contexts: it can check for USSD gateway misconfigurations, flag exposed Paystack or Flutterwave keys, and even nod to NDPR compliance requirements—all while running in offline mode if you prefer.&lt;/p&gt;

&lt;p&gt;But here is the deeper point: tools like Permi embody the exact mindset Nigeria needs. Not expensive, imported black boxes with generic rule sets. Lightweight, developer-first, locally relevant software that respects your time and your budget. It does not pretend to be a complete security operations centre. It simply says: &lt;em&gt;"Here are your real vulnerabilities. Ignore the noise."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That is what matching security maturity to digitisation looks like. Not perfect. Not over-engineered. Just honest and actionable.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Organisations Can Do Right Now
&lt;/h2&gt;

&lt;p&gt;While policymakers and regulators work on frameworks (the new 2026 NITDA guidelines are a start), individual organisations cannot wait. Here are three immediate steps to close the maturity gap:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Audit your USSD and mobile wallet integrations&lt;/strong&gt; – Treat them as high-risk channels. Check for unencrypted sessions, weak authentication flows, and excessive logging of sensitive data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run regular, low-noise scans&lt;/strong&gt; – Use tools that prioritise accuracy over volume. Permi is one example, but the principle matters more: false positives are not harmless; they burn team morale.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build security into the deployment pipeline&lt;/strong&gt; – Do not scan only once a quarter. Automate lightweight scans every time code is pushed. Catch the hardcoded secret before it reaches production.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The cost of ignoring this gap grows every day. Attackers are not slowing down. They are automating their attacks with AI—while many Nigerian systems still rely on manual, reactive defences.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;Rapid digitisation without matching security maturity is not a bug in Nigeria's tech story. It is a feature of the speed we chose. And that choice has brought prosperity to millions. But the feature has become a liability.&lt;/p&gt;

&lt;p&gt;We cannot rewind the clock. We can, however, stop pretending that generic scanners and annual compliance checklists are enough. We need practical, local, intelligent tools that help developers and small teams actually see what is broken—without wasting their time.&lt;/p&gt;

&lt;p&gt;Permi is one small example of that new wave. It will not solve every problem. But it points the way: away from noise, toward signal. Away from imported irrelevance, toward homegrown relevance. Away from panic, toward calm, methodical improvement.&lt;/p&gt;

&lt;p&gt;The digital tsunami is here. It is time to build guardrails that actually work.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What has been your experience with security maturity gaps in Nigeria's fintech or mobile money space? Share your thoughts below. Let's talk solutions, not just problems.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Next in this series: Challenge #2 – High Volume of Common &amp;amp; Sophisticated Attacks (phishing, ransomware, identity theft, and the tools that can help cut through the noise).&lt;/em&gt; &lt;strong&gt;Watch out for next series.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>fintech</category>
      <category>nigeria</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Malware-Based Attacks: The Undying Threat of the Computer Virus</title>
      <dc:creator>Peter Nasarah Dashe</dc:creator>
      <pubDate>Tue, 14 Apr 2026 20:54:37 +0000</pubDate>
      <link>https://forem.com/peternasarah/malware-based-attacks-the-undying-threat-of-the-computer-virus-mhg</link>
      <guid>https://forem.com/peternasarah/malware-based-attacks-the-undying-threat-of-the-computer-virus-mhg</guid>
      <description>&lt;p&gt;When most people hear "hacking," they picture a hooded figure pounding a keyboard. In reality, some of the most devastating breaches start with a single, silent, self-replicating line of code: the &lt;strong&gt;computer virus&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Unlike a ransomware gang that announces its presence, a virus is the ultimate insider threat—because it &lt;em&gt;becomes&lt;/em&gt; part of the insider.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Clearly Defined: What Is a Computer Virus?
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;computer virus&lt;/strong&gt; is a type of malicious software (malware) that, when executed, replicates itself by modifying other computer programs and inserting its own code. The name is biological for a reason: just as a biological virus hijacks a host cell to reproduce, a computer virus hijacks legitimate files or systems to spread.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key distinction:&lt;/strong&gt; A virus requires &lt;strong&gt;human action&lt;/strong&gt; to spread (e.g., opening an infected attachment). A &lt;em&gt;worm&lt;/em&gt;, by contrast, spreads automatically without human help.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. How It Works (The Infection Chain)
&lt;/h2&gt;

&lt;p&gt;Understanding the mechanics is your first line of defense.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Entry &amp;amp; Execution:&lt;/strong&gt; You download an infected attachment, run a cracked piece of software, or boot from a contaminated USB drive. The malicious code executes.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Replication:&lt;/strong&gt; The virus scans your system for uninfected executable files (&lt;code&gt;.exe&lt;/code&gt;, &lt;code&gt;.scr&lt;/code&gt;, &lt;code&gt;.dll&lt;/code&gt;) or boot sectors. It attaches its code to them, often compressing or encrypting itself to avoid detection.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Persistence:&lt;/strong&gt; It adds itself to startup sequences, registry keys, or scheduled tasks. Even if you "clean" the active file, the virus reloads on reboot.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Payload Delivery:&lt;/strong&gt; This is the "why." The payload could trigger immediately (delete files), wait for a specific date (logic bomb), or phone home to a command server.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Polymorphic viruses&lt;/strong&gt; rewrite their own code each time they replicate, making signature-based antivirus almost useless.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. A Brief History (From Floppies to Cloud)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1971 (Theoretical):&lt;/strong&gt; &lt;em&gt;Creeper&lt;/em&gt; – an experimental self-replicating program on ARPANET.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;1986 (The Wild):&lt;/strong&gt; &lt;em&gt;Brain&lt;/em&gt; – the first IBM-compatible virus, created by two Pakistani brothers to track pirated medical software.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;1999 (Global Panic):&lt;/strong&gt; &lt;em&gt;Melissa&lt;/em&gt; – a macro virus in Word docs that spread via email, crashing corporate mail servers worldwide.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2000 (Devastation):&lt;/strong&gt; &lt;em&gt;ILOVEYOU&lt;/em&gt; – a Visual Basic script disguised as a love letter. It caused an estimated &lt;strong&gt;$10 billion&lt;/strong&gt; in damages and infected 10% of all internet-connected computers at the time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Today:&lt;/strong&gt; Viruses now target firmware, IoT devices, and cloud container images.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Why Attackers Use Viruses (The Strategic Advantage)
&lt;/h2&gt;

&lt;p&gt;Attackers don't just "want chaos." Viruses offer specific tactical benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Persistence without presence:&lt;/strong&gt; Unlike a hacker who needs a live connection, a virus works autonomously.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lateral movement:&lt;/strong&gt; Once inside your network, a virus can infect shared drives and servers before any manual breach is detected.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supply chain infection:&lt;/strong&gt; Infect one vendor's software update tool, and you compromise thousands of clients (e.g., the 2017 NotPetya attack).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deniability:&lt;/strong&gt; Attributing a virus is notoriously difficult due to its self-replicating nature.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. Real-World Example: The "ILOVEYOU" Virus (2000)
&lt;/h2&gt;

&lt;p&gt;This is the gold standard of virus destruction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it worked:&lt;/strong&gt; Victims received an email with a subject line "ILOVEYOU" and an attachment "LOVE-LETTER-FOR-YOU.txt.vbs". Windows hid the final &lt;code&gt;.vbs&lt;/code&gt; extension.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it did:&lt;/strong&gt; Upon opening, it overwrote image, music, and document files (JPG, MP3, DOC) with its own code, then sent copies of itself to every contact in the user's Outlook address book.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The damage:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Pentagon, CIA, and British Parliament shut down their email systems.&lt;/li&gt;
&lt;li&gt;500,000+ infected systems globally.&lt;/li&gt;
&lt;li&gt;Total economic losses: &lt;strong&gt;$10–15 billion&lt;/strong&gt; (in 2000 dollars).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. How to Spot a Virus Infection (Early Warning Signs)
&lt;/h2&gt;

&lt;p&gt;You won't always see a skull-and-crossbones popup. Look for these subtle indicators:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;What it looks like&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Performance decay&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Suddenly slow file saves, program launches, or boot times.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;File anomalies&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Files disappear, reappear, or have weird double extensions (e.g., &lt;code&gt;invoice.pdf.exe&lt;/code&gt;).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Disk thrashing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hard drive or SSD activity when you're doing nothing.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Strange popups&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Fake "antivirus" warnings urging you to call a number.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Disabled tools&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Task Manager, Registry Editor, or CMD won't open.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Unusual outbound traffic&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Network activity spikes when you're offline or idle.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  7. What to Do If You've Already Been Attacked (IR Steps)
&lt;/h2&gt;

&lt;p&gt;Do not panic. Do not shut down immediately (that can destroy forensic evidence). Follow this sequence:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Immediate (First 10 minutes):&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Disconnect from the network&lt;/strong&gt; – Unplug Ethernet, disable Wi-Fi. This stops spread.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Do not reboot&lt;/strong&gt; – Some viruses are "memory-resident only" until a reboot writes them to disk.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Document everything&lt;/strong&gt; – Take photos of error messages, unusual files, and timestamps.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Containment (First hour):&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Run a trusted offline scan&lt;/strong&gt; – Boot from a read-only USB antivirus (e.g., Windows Defender Offline, Kaspersky Rescue Disk).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Change all credentials&lt;/strong&gt; – From a &lt;em&gt;clean&lt;/em&gt; device, change passwords for email, banking, and remote access.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Identify patient zero&lt;/strong&gt; – Which user and file triggered it? Check email logs and download history.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Recovery (24–48 hours):&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Nuke from orbit&lt;/strong&gt; – The only reliable way to remove a complex virus: wipe the drive and restore from a &lt;strong&gt;known clean backup&lt;/strong&gt; (from before the infection).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Patch and update&lt;/strong&gt; – Update BIOS, firmware, and all software before reconnecting.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  8. The Final Word (For Business Leaders)
&lt;/h2&gt;

&lt;p&gt;Here is the uncomfortable truth: &lt;strong&gt;Antivirus alone is dead against modern viruses.&lt;/strong&gt; Signature-based tools miss polymorphic and fileless variants. Your real defenses are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Application whitelisting&lt;/strong&gt; (only approved executables can run).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User education&lt;/strong&gt; (the virus can't execute if the user doesn't click).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Immutable backups&lt;/strong&gt; (offline, write-once storage).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A virus doesn't hack your technology. It hacks your user's decision-making. Train that, and you've built the strongest wall.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. The Extra Section: The Legal &amp;amp; Compliance Nightmare
&lt;/h2&gt;

&lt;p&gt;Everyone focuses on technical recovery. But after a virus attack, &lt;strong&gt;your legal obligations begin&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data breach notification laws:&lt;/strong&gt; If the virus exfiltrated data (even temporarily), you may have 72 hours (GDPR) or 30 days (CCPA) to notify regulators and affected individuals. Failure = fines up to €20M or 4% of global revenue.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chain of custody:&lt;/strong&gt; If you reboot or tamper with an infected machine before forensics, you may destroy evidence needed for insurance claims or lawsuits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cyber insurance voidance:&lt;/strong&gt; Most policies require "reasonable security measures" (e.g., MFA, patching within 30 days). If a virus exploited a 6-month-old known vulnerability, your claim could be &lt;strong&gt;denied&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Third-party liability:&lt;/strong&gt; Did your infected system send virus-laden emails to clients? You could be liable for &lt;em&gt;their&lt;/em&gt; downtime and recovery costs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Action item:&lt;/strong&gt; Add your legal counsel and cyber insurer to your incident response plan &lt;em&gt;before&lt;/em&gt; the virus hits. Not after.&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 Further Reading &amp;amp; Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.fbi.gov/news/stories/iloveyou-virus-20-years-later" rel="noopener noreferrer"&gt;Official ILOVEYOU Virus Analysis – FBI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cisa.gov/stopransomware/malware" rel="noopener noreferrer"&gt;CISA Alert: Understanding and Mitigating Malware&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-83r1.pdf" rel="noopener noreferrer"&gt;NIST Guide to Malware Incident Prevention and Handling&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Full cybersecurity insights and tools:&lt;/strong&gt; &lt;a href="https://peternasarah.github.io/permi" rel="noopener noreferrer"&gt;peternasarah.github.io/permi&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;Over to you:&lt;/strong&gt; Have you ever experienced a virus outbreak at work? What was the "patient zero" file? Let’s discuss in the comments. 👇&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tags: #CyberSecurity #Malware #InfoSec #IncidentResponse #DataBreach #DevCommunity&lt;/em&gt;&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>malware</category>
      <category>infosec</category>
      <category>incidentresponse</category>
    </item>
    <item>
      <title>Most security tools still use 20-year-old rules. That's why I built Permi.</title>
      <dc:creator>Peter Nasarah Dashe</dc:creator>
      <pubDate>Sun, 12 Apr 2026 13:24:10 +0000</pubDate>
      <link>https://forem.com/peternasarah/most-security-tools-still-use-20-year-old-rules-thats-why-i-built-permi-5bj7</link>
      <guid>https://forem.com/peternasarah/most-security-tools-still-use-20-year-old-rules-thats-why-i-built-permi-5bj7</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Old-school vulnerability scanners work like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;If&lt;/strong&gt; response matches pattern → &lt;strong&gt;safe&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Else&lt;/strong&gt; → &lt;strong&gt;unsafe&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That logic was fine in the early 2000s. But modern systems are dynamic, complex, and full of legitimate edge cases. Those same tools now flood you with false positives.&lt;/p&gt;

&lt;p&gt;You run a scan. It says 50 "critical" issues. You spend hours filtering. Only 8 are real. That's not security—that's a productivity killer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Permi Does Differently
&lt;/h2&gt;

&lt;p&gt;Permi is an AI-powered vulnerability scanner built for today's development workflow.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reduces false positives&lt;/strong&gt; with intelligent filtering.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Works where you code&lt;/strong&gt; – CLI now, VS Code &amp;amp; GitHub actions coming soon.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One command&lt;/strong&gt; to scan websites or source code.&lt;/li&gt;
&lt;/ul&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
pip install permi
permi scan --url https://your-site.com

##Early stage, honest feedback needed
Permi is still in early development. It's stable, but you might find rough edges. If something is confusing, broken, or missing:

Comment below or DM me.
Open an issue on GitHub.
Your feedback will directly shape Permi into the tool developers actually need.

&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Peternasarah" rel="noopener noreferrer"&gt;
        Peternasarah
      &lt;/a&gt; / &lt;a href="https://github.com/Peternasarah/permi" rel="noopener noreferrer"&gt;
        permi
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      AI-powered vulnerability scanner for Nigerian developers and global SMBs
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Permi&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="https://pypi.org/project/permi/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/35b45d887e3627b6ba65629c4b1a6a8488c6b75494af4404558b758b87c91f6e/68747470733a2f2f62616467652e667572792e696f2f70792f7065726d692e737667" alt="PyPI version"&gt;&lt;/a&gt;
&lt;a href="https://github.com/Peternasarah/permi/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/Peternasarah/permi/actions/workflows/ci.yml/badge.svg" alt="CI"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI-powered vulnerability scanner for Nigerian developers and global SMBs.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Permi scans live websites and source code for security vulnerabilities, then uses AI to filter out false positives — so you only see findings that actually matter.&lt;/p&gt;

&lt;p&gt;Built in Nigeria. For Nigeria. Then for the world.&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Two scan modes&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;
&lt;code&gt;--url&lt;/code&gt; — Live web scanning&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;Point Permi at any website. It crawls the pages, tests for SQL injection, XSS, and checks security headers on the running application.&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;permi scan --url https://yoursite.com&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;
&lt;code&gt;--path&lt;/code&gt; — Static source code scanning&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;Point Permi at a local folder or GitHub repository. It reads your code files, matches vulnerability patterns, and flags issues before they ship.&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;permi scan --path ./myapp
permi scan --path https://github.com/user/repo&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What Permi detects&lt;/h2&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Web scanning (&lt;code&gt;--url&lt;/code&gt;)&lt;/h3&gt;

&lt;/div&gt;


&lt;ul&gt;

&lt;li&gt;

&lt;strong&gt;SQL Injection&lt;/strong&gt; — error-based, boolean-based blind, time-based blind&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Cross-Site Scripting (XSS)&lt;/strong&gt; — reflected XSS with context-aware testing&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Missing Security Headers&lt;/strong&gt; — HSTS, CSP, X-Frame-Options, X-Content-Type-Options&lt;/li&gt;

&lt;li&gt;…&lt;/li&gt;

&lt;/ul&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Peternasarah/permi" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;PyPI: pip install permi&lt;br&gt;
GitHub: peternasarah/permi&lt;br&gt;
Let's kill false positives together. 🔥 &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn16vusodviazyrw20qff.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn16vusodviazyrw20qff.png" alt="Permi CLI scanning a live URL for vulnerabilities" width="786" height="595"&gt;&lt;/a&gt; Permi CLI scanning a live URL for vulnerabilities&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>cybersecurity</category>
      <category>devsecops</category>
      <category>python</category>
      <category>opensource</category>
    </item>
    <item>
      <title>250 Clones in 4 Days! Thank You 🙌</title>
      <dc:creator>Peter Nasarah Dashe</dc:creator>
      <pubDate>Sat, 11 Apr 2026 14:09:01 +0000</pubDate>
      <link>https://forem.com/peternasarah/250-clones-in-4-days-thank-you-cke</link>
      <guid>https://forem.com/peternasarah/250-clones-in-4-days-thank-you-cke</guid>
      <description>&lt;p&gt;Permi just hit a huge milestone, and I couldn't be more grateful. Now, I need your help to make it even better. &lt;/p&gt;

&lt;p&gt;I'm building this in public, and your feedback is the most valuable tool I have.&lt;/p&gt;

&lt;h2&gt;
  
  
  How is your experience so far?
&lt;/h2&gt;

&lt;p&gt;If you've run &lt;code&gt;permi scan&lt;/code&gt;, please leave a comment with one of these words:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔴 &lt;strong&gt;"broke"&lt;/strong&gt; – if something crashed&lt;/li&gt;
&lt;li&gt;🟡 &lt;strong&gt;"confusing"&lt;/strong&gt; – if it wasn't clear&lt;/li&gt;
&lt;li&gt;🟢 &lt;strong&gt;"useful"&lt;/strong&gt; – if it helped&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Alternatively, feel free to DM me with specific details. No pitch—just trying to build something helpful.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Peternasarah" rel="noopener noreferrer"&gt;
        Peternasarah
      &lt;/a&gt; / &lt;a href="https://github.com/Peternasarah/permi" rel="noopener noreferrer"&gt;
        permi
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      AI-powered vulnerability scanner for Nigerian developers and global SMBs
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Permi&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://pypi.org/project/permi/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/35b45d887e3627b6ba65629c4b1a6a8488c6b75494af4404558b758b87c91f6e/68747470733a2f2f62616467652e667572792e696f2f70792f7065726d692e737667" alt="PyPI version"&gt;&lt;/a&gt;
&lt;a href="https://github.com/Peternasarah/permi/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/Peternasarah/permi/actions/workflows/ci.yml/badge.svg" alt="CI"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI-powered vulnerability scanner for Nigerian developers and global SMBs.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Permi scans live websites and source code for security vulnerabilities, then uses AI to filter out false positives — so you only see findings that actually matter.&lt;/p&gt;
&lt;p&gt;Built in Nigeria. For Nigeria. Then for the world.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Two scan modes&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;
&lt;code&gt;--url&lt;/code&gt; — Live web scanning&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;Point Permi at any website. It crawls the pages, tests for SQL injection, XSS, and checks security headers on the running application.&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;permi scan --url https://yoursite.com&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;
&lt;code&gt;--path&lt;/code&gt; — Static source code scanning&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Point Permi at a local folder or GitHub repository. It reads your code files, matches vulnerability patterns, and flags issues before they ship.&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;permi scan --path ./myapp
permi scan --path https://github.com/user/repo&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What Permi detects&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Web scanning (&lt;code&gt;--url&lt;/code&gt;)&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SQL Injection&lt;/strong&gt; — error-based, boolean-based blind, time-based blind&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-Site Scripting (XSS)&lt;/strong&gt; — reflected XSS with context-aware testing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing Security Headers&lt;/strong&gt; — HSTS, CSP, X-Frame-Options, X-Content-Type-Options&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Peternasarah/permi" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://github.com/peternasarah/permi/issues" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Open an issue on GitHub&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>opensource</category>
      <category>feedback</category>
      <category>productivity</category>
    </item>
    <item>
      <title>250 Clones in 4 Days: A Student's Journey Building an AI Security Tool</title>
      <dc:creator>Peter Nasarah Dashe</dc:creator>
      <pubDate>Tue, 07 Apr 2026 12:07:05 +0000</pubDate>
      <link>https://forem.com/peternasarah/250-clones-in-4-days-a-students-journey-building-an-ai-security-tool-1mna</link>
      <guid>https://forem.com/peternasarah/250-clones-in-4-days-a-students-journey-building-an-ai-security-tool-1mna</guid>
      <description>&lt;h2&gt;
  
  
  🚀 250 Clones in 4 Days: A Student's Journey Building an AI Security Tool
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;By Nasarah Peter Dashe&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Cybersecurity Student @ UNIJOS | Founder of Permi&lt;/em&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  The Numbers That Surprised Me
&lt;/h2&gt;

&lt;p&gt;On April 2nd, 2026, I did something terrifying.&lt;/p&gt;

&lt;p&gt;I typed &lt;code&gt;pip install permi&lt;/code&gt; into my terminal, ran a few final tests, and hit &lt;strong&gt;publish&lt;/strong&gt; on PyPI. A vulnerability scanner built by a student with no funding, no team, and no prior accomplishments was now available for anyone in the world to download.&lt;/p&gt;

&lt;p&gt;Four days later, GitHub told me something I didn't expect:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;250 clones.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;62 developers per day, on average, downloading Permi. Testing it. Breaking it. Some even giving feedback.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This isn't a Silicon Valley startup with millions in backing. This is a cybersecurity student at the University of Jos, building in public, one commit at a time.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Problem That Wouldn't Leave Me Alone
&lt;/h2&gt;

&lt;p&gt;I've spent hours staring at security scan reports. You know the kind: 47 "critical" vulnerabilities flagged, only 4 of them real. The rest? False positives. Misconfigurations that don't apply. Warnings about libraries I wasn't even using.&lt;/p&gt;

&lt;p&gt;That's not security. That's noise.&lt;/p&gt;

&lt;p&gt;And noise has a cost:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developers learn to ignore alerts&lt;/li&gt;
&lt;li&gt;Real vulnerabilities slip through&lt;/li&gt;
&lt;li&gt;Breaches happen&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The recent LiteLLM supply chain attack proved that even the tools we trust to secure us can become the vulnerability. Three security tools compromised in five days using the same stolen credentials. The attacker didn't exploit the tools – they exploited the CI/CD access those tools had.&lt;/p&gt;

&lt;p&gt;I saw this gap and couldn't unsee it.&lt;/p&gt;

&lt;p&gt;Nigerian developers and SMBs are stuck with expensive, complex tools built for Western enterprises. Tools that don't understand our local fintech APIs, our hosting constraints, or the unique threats we face. Tools that interrupt our flow instead of supporting it.&lt;/p&gt;

&lt;p&gt;So I decided to build something different.&lt;/p&gt;


&lt;h2&gt;
  
  
  What Permi Is (And Isn't)
&lt;/h2&gt;

&lt;p&gt;Permi is an &lt;strong&gt;AI-powered vulnerability scanner&lt;/strong&gt; designed for one job: meet developers where they already work.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pip install permi&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Live&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLI scan command&lt;/td&gt;
&lt;td&gt;✅ Live&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Web vulnerability detection (SQLi, XSS, etc.)&lt;/td&gt;
&lt;td&gt;✅ Live&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI false-positive classifier&lt;/td&gt;
&lt;td&gt;🚧 In progress&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VS Code extension&lt;/td&gt;
&lt;td&gt;🔜 Planned&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub Action&lt;/td&gt;
&lt;td&gt;🔜 Planned&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;One command to scan a website:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;permi
permi scan &lt;span class="nt"&gt;--url&lt;/span&gt; https://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;No context switching.&lt;/strong&gt; CLI first, with IDE integrations coming soon.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI that actually helps.&lt;/strong&gt; False-positive filtering, remediation suggestions, risk prioritization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Built for Nigeria first.&lt;/strong&gt; Affordable pricing, local vulnerability checks, NDPR compliance mapping.&lt;/p&gt;

&lt;p&gt;Permi isn't trying to replace every security tool. It's trying to fix the parts that frustrate developers most.&lt;/p&gt;




&lt;h2&gt;
  
  
  What 250 Clones Tell Me
&lt;/h2&gt;

&lt;p&gt;Numbers without context are just numbers. Here's what these 250 clones mean to me:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The problem is real
&lt;/h3&gt;

&lt;p&gt;Developers don't clone random repos. They clone tools they intend to use or learn from.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. My announcement worked
&lt;/h3&gt;

&lt;p&gt;The spike of 70 clones in a single day came right after I shared Permi on social media. Community matters.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Word of mouth is happening
&lt;/h3&gt;

&lt;p&gt;250 clones in 4 days means people are sharing my link. I don't have a marketing budget. I have developers who see value.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. I'm no longer "pre-product"
&lt;/h3&gt;

&lt;p&gt;An investor recently told me Permi had "no traction." Now I have evidence that the market disagrees.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I've Learned (In Just 4 Days)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Shipping is everything.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
An imperfect product in the wild is infinitely more valuable than a perfect product in your head.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Traction talks.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
No amount of pitch deck polish replaces a developer typing &lt;code&gt;pip install permi&lt;/code&gt; and running your code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Community is my unfair advantage.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Senior security leaders accepted my connection requests. Practicing security analysts took time to explain real-world misconfigurations like &lt;code&gt;.env&lt;/code&gt; leaks and dependency confusion. Security companies engaged with my posts.&lt;/p&gt;

&lt;p&gt;These aren't just names. They're people who saw a student trying to build something real and decided to help.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next for Permi
&lt;/h2&gt;

&lt;p&gt;The MVP is live. Now I'm building:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI false-positive classifier&lt;/strong&gt; – cut the noise by 80%&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VS Code extension&lt;/strong&gt; – real-time scanning as you code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Action&lt;/strong&gt; – automatic PR comments and blocking&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API scanner&lt;/strong&gt; – for fintechs and backend teams&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I've also applied to the &lt;strong&gt;iDICE Founders Lab&lt;/strong&gt; – a ₦10 million grant program for early-stage Nigerian founders. If selected, I'll use the funding to focus on Permi full-time, hire a part-time developer, and reach our first 500 paying users.&lt;/p&gt;




&lt;h2&gt;
  
  
  I Need Your Help
&lt;/h2&gt;

&lt;p&gt;I'm not writing this to brag about 250 clones. I'm writing this because I genuinely believe the best products are built with the community, not in isolation.&lt;/p&gt;

&lt;p&gt;So here's my ask:&lt;/p&gt;

&lt;p&gt;If you're a developer, founder, or security professional:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Try Permi:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   pip &lt;span class="nb"&gt;install &lt;/span&gt;permi
   permi scan &lt;span class="nt"&gt;--url&lt;/span&gt; https://your-site.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Break it.&lt;/strong&gt; Tell me what's missing, what's confusing, what's broken.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Share this post&lt;/strong&gt; with one person who struggles with security noise.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And if you've ever ignored a security alert because you've been burned by false positives before – drop a comment. I want to hear your story.&lt;/p&gt;




&lt;h2&gt;
  
  
  One Last Thing
&lt;/h2&gt;

&lt;p&gt;Four days ago, Permi was just a PyPI package.&lt;/p&gt;

&lt;p&gt;Today, it's been cloned 250 times.&lt;/p&gt;

&lt;p&gt;Tomorrow, I'm back to building.&lt;/p&gt;

&lt;p&gt;Because that's what founders do. We ship, we learn, we iterate. And we do it in public, so everyone can see that a student at UNIJOS with no funding can still build tools that matter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;pip install permi&lt;/code&gt; and let's secure Nigeria's developers, one scan at a time.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/peternasarah/permi" rel="noopener noreferrer"&gt;github.com/peternasarah/permi&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PyPI:&lt;/strong&gt; &lt;a href="https://pypi.org/project/permi" rel="noopener noreferrer"&gt;pypi.org/project/permi&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Twitter/X:&lt;/strong&gt; &lt;a href="https://twitter.com/peternasarah" rel="noopener noreferrer"&gt;@peternasarah&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Permi:&lt;/strong&gt; &lt;a href="https://peternasarah.github.io/permi" rel="noopener noreferrer"&gt;https://peternasarah.github.io/permi&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🏷️ Tags
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;cybersecurity&lt;/code&gt; &lt;code&gt;devsecops&lt;/code&gt; &lt;code&gt;opensource&lt;/code&gt; &lt;code&gt;python&lt;/code&gt; &lt;code&gt;buildinpublic&lt;/code&gt; &lt;code&gt;supplychainsecurity&lt;/code&gt;&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>cybersecurity</category>
      <category>devsecops</category>
      <category>opensource</category>
      <category>python</category>
    </item>
    <item>
      <title>The Vulnerability Scanner That Became the Vulnerability</title>
      <dc:creator>Peter Nasarah Dashe</dc:creator>
      <pubDate>Tue, 31 Mar 2026 21:27:31 +0000</pubDate>
      <link>https://forem.com/peternasarah/the-vulnerability-scanner-that-became-the-vulnerability-ak8</link>
      <guid>https://forem.com/peternasarah/the-vulnerability-scanner-that-became-the-vulnerability-ak8</guid>
      <description>&lt;h2&gt;
  
  
  The Story
&lt;/h2&gt;

&lt;p&gt;A vulnerability scanner got hacked.&lt;/p&gt;

&lt;p&gt;Then the hackers used it to poison one of the most popular AI libraries on the planet.&lt;/p&gt;

&lt;p&gt;That happened last week.&lt;/p&gt;

&lt;p&gt;Here's what went down:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;March 19&lt;/strong&gt; — TeamPCP compromised Aqua Security's Trivy, one of the most trusted open-source vulnerability scanners in DevSecOps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;March 23&lt;/strong&gt; — Using stolen credentials, they compromised Checkmarx's KICS GitHub Actions and VS Code extensions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;March 24&lt;/strong&gt; — Those same credentials gave them access to LiteLLM's CI/CD pipeline.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is LiteLLM?
&lt;/h2&gt;

&lt;p&gt;LiteLLM is the universal AI gateway used across &lt;strong&gt;36% of all cloud environments&lt;/strong&gt;. It averages &lt;strong&gt;95 million downloads per month&lt;/strong&gt;. It sits between applications and 100+ AI providers—holding API keys for OpenAI, Anthropic, AWS, and Azure in one place.&lt;/p&gt;

&lt;p&gt;The attackers published two backdoored versions to PyPI.&lt;/p&gt;




&lt;h2&gt;
  
  
  What the Malware Did
&lt;/h2&gt;

&lt;p&gt;In just three hours, the malware:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Harvested SSH keys, cloud credentials, and Kubernetes secrets&lt;/li&gt;
&lt;li&gt;Deployed privileged pods to every node in Kubernetes clusters&lt;/li&gt;
&lt;li&gt;Installed a persistent backdoor polling for additional payloads&lt;/li&gt;
&lt;li&gt;Swept cryptocurrency wallets and &lt;code&gt;.env&lt;/code&gt; files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;TeamPCP posted this on Telegram:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"These companies were built to protect your supply chains yet they can't even protect their own."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;They also announced a partnership with LAPSUS$.&lt;/p&gt;

&lt;p&gt;Let that land.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Irony That Kills
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Victim&lt;/th&gt;
&lt;th&gt;Their Job&lt;/th&gt;
&lt;th&gt;What Happened&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Aqua Trivy&lt;/td&gt;
&lt;td&gt;Vulnerability scanner&lt;/td&gt;
&lt;td&gt;Got hacked&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Checkmarx KICS&lt;/td&gt;
&lt;td&gt;Infrastructure as Code security&lt;/td&gt;
&lt;td&gt;Got hacked&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LiteLLM&lt;/td&gt;
&lt;td&gt;AI gateway with 95M downloads&lt;/td&gt;
&lt;td&gt;Got backdoored&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;The companies selling supply chain security became the supply chain risk.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What This Means for Developers
&lt;/h2&gt;

&lt;p&gt;If Trivy, KICS, and LiteLLM—with all their resources and visibility—can be compromised this way, what does that mean for the rest of us?&lt;/p&gt;

&lt;p&gt;More importantly: &lt;strong&gt;What should we be asking our security tool providers right now?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm a cybersecurity student at UNIJOS, and I've been sitting with this question all week.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Question I Keep Coming Back To
&lt;/h2&gt;

&lt;p&gt;If you're using security tools in your workflow—scanners, CI/CD integrations, AI libraries—&lt;strong&gt;what's one thing you wish you knew about their security before you started using them?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not asking for product pitches. Genuinely trying to understand how developers and security professionals are thinking about this.&lt;/p&gt;

&lt;p&gt;Drop your thoughts in the comments. I'll read every single one.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Quick Reflection
&lt;/h2&gt;

&lt;p&gt;This attack reinforced something for me:&lt;/p&gt;

&lt;p&gt;Firewalls aren't enough. Tools aren't enough. Even the tools built to protect us need to be secured.&lt;/p&gt;

&lt;p&gt;If we're building on top of AI infrastructure, we have to start asking harder questions about the tools we trust—because right now, the attackers are asking the right questions.&lt;/p&gt;

&lt;p&gt;Let's learn together.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you found this helpful, consider sharing it with someone who's building on AI infrastructure. We need to have this conversation.&lt;/em&gt;&lt;/p&gt;




</description>
      <category>cybersecurity</category>
      <category>devsecops</category>
      <category>opensource</category>
      <category>supplychainsecurity</category>
    </item>
    <item>
      <title>Reducing False Positives in XSS Detection: Designing Confirmation-Based Scanners</title>
      <dc:creator>Peter Nasarah Dashe</dc:creator>
      <pubDate>Thu, 26 Feb 2026 23:53:23 +0000</pubDate>
      <link>https://forem.com/peternasarah/reducing-false-positives-in-xss-detection-designing-confirmation-based-scanners-2n26</link>
      <guid>https://forem.com/peternasarah/reducing-false-positives-in-xss-detection-designing-confirmation-based-scanners-2n26</guid>
      <description>&lt;p&gt;Most beginner vulnerability scanners detect XSS using a simple pattern:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Inject payload&lt;/li&gt;
&lt;li&gt;Check if payload appears in response&lt;/li&gt;
&lt;li&gt;If yes → flag vulnerability&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This approach is fast. It is also deeply flawed.&lt;/p&gt;

&lt;p&gt;In real-world applications, &lt;strong&gt;reflection alone does not equal exploitability&lt;/strong&gt;. Reflection without context analysis leads to massive false positives.&lt;/p&gt;

&lt;p&gt;In this article, I'll walk you through a structured approach to reducing false positives in reflected XSS detection.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Core Problem: Reflection ≠ Execution
&lt;/h2&gt;

&lt;p&gt;A payload appearing in the response does not mean:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It executes&lt;/li&gt;
&lt;li&gt;It appears in a dangerous context&lt;/li&gt;
&lt;li&gt;It bypasses encoding&lt;/li&gt;
&lt;li&gt;It breaks out of attributes or scripts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;You searched for: &lt;span class="ni"&gt;&amp;amp;lt;&lt;/span&gt;script&lt;span class="ni"&gt;&amp;amp;gt;&lt;/span&gt;alert(1)&lt;span class="ni"&gt;&amp;amp;lt;&lt;/span&gt;/script&lt;span class="ni"&gt;&amp;amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A naive scanner flags this. But the payload is HTML-encoded. There is no XSS. Yet many tools still report it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Designing a Confirmation-Based Detection Model
&lt;/h2&gt;

&lt;p&gt;Instead of binary reflection checks, a structured scanner should:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Inject a uniquely identifiable marker&lt;/li&gt;
&lt;li&gt;Analyze where it appears&lt;/li&gt;
&lt;li&gt;Classify context&lt;/li&gt;
&lt;li&gt;Confirm exploitability conditions&lt;/li&gt;
&lt;li&gt;Only then report&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This changes detection from &lt;strong&gt;pattern-matching&lt;/strong&gt; to &lt;strong&gt;context validation&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Unique Marker Injection
&lt;/h2&gt;

&lt;p&gt;Instead of injecting generic payloads like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use uniquely identifiable markers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PERMI_XSS_9fA21
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allows precise reflection tracking without accidental matches.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: Context Classification
&lt;/h2&gt;

&lt;p&gt;Where did the marker appear?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inside HTML body text&lt;/li&gt;
&lt;li&gt;Inside attribute value&lt;/li&gt;
&lt;li&gt;Inside JavaScript block&lt;/li&gt;
&lt;li&gt;Inside HTML tag name&lt;/li&gt;
&lt;li&gt;Inside comment&lt;/li&gt;
&lt;li&gt;Inside encoded output&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each context has different exploitability rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Safe contexts:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fully HTML encoded&lt;/li&gt;
&lt;li&gt;Inside comment&lt;/li&gt;
&lt;li&gt;Inside text node without script context&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Potentially dangerous contexts:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inside unquoted attribute&lt;/li&gt;
&lt;li&gt;Inside JavaScript string&lt;/li&gt;
&lt;li&gt;Inside event handler&lt;/li&gt;
&lt;li&gt;Inside script block&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Context matters more than reflection.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Encoding Detection
&lt;/h2&gt;

&lt;p&gt;Before reporting, confirm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is &lt;code&gt;&amp;lt;&lt;/code&gt; encoded?&lt;/li&gt;
&lt;li&gt;Is &lt;code&gt;"&lt;/code&gt; encoded?&lt;/li&gt;
&lt;li&gt;Is &lt;code&gt;'&lt;/code&gt; encoded?&lt;/li&gt;
&lt;li&gt;Are special characters escaped?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the payload is consistently encoded, it should &lt;strong&gt;not&lt;/strong&gt; be flagged.&lt;/p&gt;

&lt;p&gt;A confirmation-based engine checks &lt;strong&gt;transformation patterns&lt;/strong&gt; instead of blindly matching strings.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4: Multi-Step Validation
&lt;/h2&gt;

&lt;p&gt;Instead of one payload, use controlled variations:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Plain marker&lt;/li&gt;
&lt;li&gt;Attribute-breaking marker&lt;/li&gt;
&lt;li&gt;Script-breaking marker&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If only the plain marker reflects but breaking payloads do not alter structure, likelihood of exploitation decreases.&lt;/p&gt;

&lt;p&gt;This moves detection toward &lt;strong&gt;probabilistic validation&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Moving Beyond Rule-Based Logic
&lt;/h2&gt;

&lt;p&gt;Traditional scanners operate with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;reflected&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;report&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A better approach introduces &lt;strong&gt;weighted scoring&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;confidence&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reflection_weight&lt;/span&gt;  &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context_weight&lt;/span&gt;     &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;encoding_bypass&lt;/span&gt;    &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;breakout_success&lt;/span&gt;   &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only report if the score exceeds a defined threshold. This reduces false positives dramatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;False positives have real consequences:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developer fatigue&lt;/li&gt;
&lt;li&gt;Security team distrust&lt;/li&gt;
&lt;li&gt;Ignored reports&lt;/li&gt;
&lt;li&gt;Delayed remediation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Precision builds trust. Noise destroys it.&lt;/p&gt;

&lt;p&gt;If developers repeatedly see inaccurate reports, they stop believing the scanner.&lt;/p&gt;

&lt;p&gt;A well-designed tool should prefer &lt;strong&gt;fewer findings at higher confidence&lt;/strong&gt; over massive noisy output.&lt;/p&gt;




&lt;h2&gt;
  
  
  Architectural Considerations
&lt;/h2&gt;

&lt;p&gt;To support confirmation-based scanning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Separate scanner modules from UI&lt;/li&gt;
&lt;li&gt;Centralize evidence formatting&lt;/li&gt;
&lt;li&gt;Use structured vulnerability models&lt;/li&gt;
&lt;li&gt;Keep payload sets modular&lt;/li&gt;
&lt;li&gt;Avoid embedding logic inside GUI layers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Clean architecture makes improvement possible. Messy architecture locks in technical debt.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bigger Picture
&lt;/h2&gt;

&lt;p&gt;Reducing false positives is not about clever payloads. It's about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Context understanding&lt;/li&gt;
&lt;li&gt;Confirmation logic&lt;/li&gt;
&lt;li&gt;Structured scoring&lt;/li&gt;
&lt;li&gt;Thoughtful design&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Security tooling should evolve from brute-force injection engines to &lt;strong&gt;intelligent validation systems&lt;/strong&gt;. That's where the real engineering challenge lies.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;If you're building a scanner, don't ask: &lt;em&gt;"Did it reflect?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ask: &lt;em&gt;"In what context did it reflect, and does that context allow execution?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The difference between those two questions is the difference between &lt;strong&gt;noise&lt;/strong&gt; and &lt;strong&gt;intelligence&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>appsec</category>
      <category>ai</category>
      <category>security</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
