<?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>DEV Community: wxwreak</title>
    <description>The latest articles on DEV Community by wxwreak (@wxwreak).</description>
    <link>https://dev.to/wxwreak</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4060509%2F3c7c0766-87a0-4f31-9d0b-7e5494718e69.jpg</url>
      <title>DEV Community: wxwreak</title>
      <link>https://dev.to/wxwreak</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wxwreak"/>
    <language>en</language>
    <item>
      <title>How I Discovered a Leak Exposing 1,000+ Customer Emails via a Simple API Query (?select=*)</title>
      <dc:creator>wxwreak</dc:creator>
      <pubDate>Sat, 07 Nov 2026 11:37:36 +0000</pubDate>
      <link>https://dev.to/wxwreak/how-i-discovered-a-leak-exposing-1000-customer-emails-via-a-simple-api-query-select-3ep8</link>
      <guid>https://dev.to/wxwreak/how-i-discovered-a-leak-exposing-1000-customer-emails-via-a-simple-api-query-select-3ep8</guid>
      <description>&lt;p&gt;&lt;strong&gt;While inspecting the web traffic of &lt;code&gt;hiddenweb&lt;/code&gt;, I stumbled upon a major database security flaw. By changing a single query parameter, I was able to access a leaked database containing over 1,000 cleartext customer emails and private multi-tenant store data.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Responsible Disclosure Timeline
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;October 30, 2026:&lt;/strong&gt; Vulnerability discovered during a routine traffic audit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;October 30, 2026:&lt;/strong&gt; Detailed bug report sent to the development team.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;October 30, 2026:&lt;/strong&gt; Developers acknowledged the issue and deployed a security patch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;October 30, 2026:&lt;/strong&gt; Re-tested the endpoint to confirm the vulnerability was fully resolved.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1. The Vulnerability &amp;amp; Discovery
&lt;/h2&gt;

&lt;p&gt;While auditing how data flows through the app, I opened &lt;strong&gt;Burp Suite&lt;/strong&gt; to inspect the background API requests. &lt;br&gt;
Looking through the &lt;strong&gt;HTTP History&lt;/strong&gt; tab, I noticed the app was making direct calls to the Supabase database REST endpoint using the public anonymous key. The main security flaw was that &lt;strong&gt;the database rules trusted the frontend completely&lt;/strong&gt;, lacking proper column-level restrictions for the &lt;code&gt;anon&lt;/code&gt; user role.&lt;/p&gt;
&lt;h3&gt;
  
  
  Exploring the &lt;code&gt;reviews&lt;/code&gt; Table (1,000 Customer Emails Leaked)
&lt;/h3&gt;

&lt;p&gt;While the frontend UI was designed to only show public review contents (like names and comments), the underlying database endpoint accepted the wildcard query selector (&lt;code&gt;select=*&lt;/code&gt;) without validation.&lt;/p&gt;

&lt;p&gt;I sent the intercepted request from HTTP History over to the &lt;strong&gt;Burp Suite Repeater&lt;/strong&gt; and modified the query parameter to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="nf"&gt;GET&lt;/span&gt; &lt;span class="nn"&gt;/rest/v1/reviews?select=*&lt;/span&gt; &lt;span class="k"&gt;HTTP&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The backend bypassed the intended frontend logic and returned raw database rows. Because the multi-tenant database stored reviews from various storefronts in a shared instance, this single wildcard query in Repeater exposed database rows linked to internal &lt;code&gt;store_id&lt;/code&gt; values—exposing &lt;strong&gt;over 1,000 cleartext customer email addresses&lt;/strong&gt; in total across different shops.&lt;/p&gt;

&lt;p&gt;In PostgREST/Supabase APIs, filtering for an exact match is done using the &lt;code&gt;eq&lt;/code&gt; operator (which means equal). I extracted a &lt;code&gt;store_id&lt;/code&gt; from the initial leaky response and appended it to my request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="nf"&gt;GET&lt;/span&gt; &lt;span class="nn"&gt;/rest/v1/reviews?select=*&amp;amp;store_id=eq.xxxxxxxxxxxxxxxxxxxx&lt;/span&gt; &lt;span class="k"&gt;HTTP&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The API accepted this logic perfectly. It filtered down the results, proving that anyone could target a specific merchant on the platform and mass-harvest exclusively their customer emails (which could lead to highly targeted phishing or spam via fake links sent to their emails).&lt;/p&gt;

&lt;p&gt;Here is the exact request and response captured inside &lt;strong&gt;Burp Suite&lt;/strong&gt;:&lt;/p&gt;

&lt;p&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyl99rzha4f2xinpba2hh.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyl99rzha4f2xinpba2hh.jpg" alt="Data Leak Response" width="466" height="610"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;(Note: Real user emails and internal IDs have been partially blurred for privacy).&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Patch: Verifying the Fix
&lt;/h3&gt;

&lt;p&gt;To ensure no rules were broken and that vulnerability is no longer exploitable, I re-tested the exact same wildcard endpoint after the developer deployed the security patch.&lt;br&gt;
When sending the &lt;code&gt;GET /rest/v1/reviews?select=*&lt;/code&gt; request now, the Supabase backend actively restricts the output. Instead of leaking internal database rows and customer emails, it blocks the query completely and returns a &lt;code&gt;42501&lt;/code&gt; database error code stating: &lt;strong&gt;"permission denied for table reviews"&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This confirms that Row Level Security (RLS) and table permissions are now properly configured and protecting the platform's data.&lt;br&gt;
Here is the &lt;strong&gt;Burp Suite Repeater&lt;/strong&gt; screenshot proving that the leak has been successfully patched:&lt;/p&gt;

&lt;p&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1skvy62lqzzia3vfhv8c.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1skvy62lqzzia3vfhv8c.jpg" alt="Vulnerability Patched Response" width="466" height="610"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Bonus Discovery: Missing Security Headers
&lt;/h2&gt;

&lt;p&gt;While analyzing the infrastructure of &lt;code&gt;hiddenweb&lt;/code&gt;, I also checked the HTTP response headers of the production server. A properly configured web server should utilize standard security headers to defend the application and its users against client-side attacks. &lt;/p&gt;

&lt;p&gt;Unfortunately, as shown in the scan below, the server was missing almost every critical security header:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Content-Security-Policy (CSP):&lt;/strong&gt; Missing entirely. This is crucial for mitigating Cross-Site Scripting (XSS) and data injection attacks by restricting where resources can be loaded from.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;X-Frame-Options:&lt;/strong&gt; Missing, meaning the website could be embedded into an external &lt;code&gt;&amp;lt;iframe&amp;gt;&lt;/code&gt;, making it vulnerable to Clickjacking attacks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strict-Transport-Security (HSTS):&lt;/strong&gt; Not enforced. This leaves users vulnerable to SSL stripping and Man-in-the-Middle (MitM) attacks by not forcing browsers to interact only over secure HTTPS connections.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;X-Content-Type-Options:&lt;/strong&gt; Not set to &lt;code&gt;nosniff&lt;/code&gt;, which exposes users to MIME-sniffing vulnerabilities where browsers try to guess and execute malicious file types.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Referrer-Policy:&lt;/strong&gt; Not configured. This header is important to control how much referral information (like URLs or data in the Referer header) is leaked when users navigate to external links.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Permissions-Policy:&lt;/strong&gt; Missing entirely. This header allows a site to restrict access to sensitive browser features and hardware functions (like camera, microphone, or geolocation) to prevent abuse.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>security</category>
      <category>webdev</category>
      <category>supabase</category>
      <category>backend</category>
    </item>
    <item>
      <title>Building a Secure &amp; Elegant Anonymous Confession Bot in Discord.py (with Cogs &amp; Rich Logging)</title>
      <dc:creator>wxwreak</dc:creator>
      <pubDate>Sun, 20 Sep 2026 12:58:34 +0000</pubDate>
      <link>https://dev.to/wxwreak/building-a-secure-elegant-anonymous-confession-bot-in-discordpy-with-cogs-rich-logging-4eg8</link>
      <guid>https://dev.to/wxwreak/building-a-secure-elegant-anonymous-confession-bot-in-discordpy-with-cogs-rich-logging-4eg8</guid>
      <description>&lt;h1&gt;
  
  
  🤫 AnonBot
&lt;/h1&gt;

&lt;p&gt;A sleek, modern anonymous confession Discord bot built with &lt;code&gt;python&lt;/code&gt;, &lt;code&gt;discord.py&lt;/code&gt;, and &lt;code&gt;rich&lt;/code&gt; terminal styling.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✨ Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Modular Architecture:&lt;/strong&gt; Utilizes &lt;code&gt;discord.ext.commands.Cog&lt;/code&gt; via the &lt;code&gt;cogs/&lt;/code&gt; directory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strict Channel Restriction:&lt;/strong&gt; The &lt;code&gt;/send&lt;/code&gt; command only works in a designated source channel (&lt;code&gt;SEND_CHANNEL_ID&lt;/code&gt;) and forwards submissions safely to a target channel (&lt;code&gt;POST_CHANNEL_ID&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Built-in Rate Limiting:&lt;/strong&gt; Enforces cooldowns per user (&lt;code&gt;@app_commands.checks.cooldown&lt;/code&gt;) to prevent spamming.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rich Terminal Logging:&lt;/strong&gt; Startup sequences and diagnostics styled nicely with the &lt;code&gt;rich&lt;/code&gt; library.&lt;/li&gt;
&lt;/ul&gt;







&lt;h2&gt;
  
  
  📂 Project Structure
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my_discord_bot/
│
├── cogs/
│   └── anonym.py
├── .env
├── bot.py
└── requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⚙️ Configuration (&lt;code&gt;.env&lt;/code&gt;)
&lt;/h2&gt;

&lt;p&gt;Create a &lt;code&gt;.env&lt;/code&gt; file in the root directory and configure your keys:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DISCORD_TOKEN=your_bot_token_here
GUILD_ID=your_development_guild_id_here
SEND_CHANNEL_ID=id_of_channel_where_users_type
POST_CHANNEL_ID=id_of_channel_where_confessions_appear
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🚀 Installation &amp;amp; Running
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Clone the repository:&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;   git clone https://github.com/wxwreak/anon-discord-bot
   &lt;span class="nb"&gt;cd &lt;/span&gt;anon-discord-bot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Install dependencies:&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;discord.py python-dotenv rich
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Run the bot:&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;   python bot.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>architecture</category>
      <category>python</category>
      <category>security</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Introducing Vulnfy: A Lightweight, Multi-Ecosystem Vulnerability Scanner for Your CI/CD Pipeline</title>
      <dc:creator>wxwreak</dc:creator>
      <pubDate>Sun, 16 Aug 2026 17:15:12 +0000</pubDate>
      <link>https://dev.to/wxwreak/introducing-vulnfy-a-lightweight-multi-ecosystem-vulnerability-scanner-for-your-cicd-pipeline-no4</link>
      <guid>https://dev.to/wxwreak/introducing-vulnfy-a-lightweight-multi-ecosystem-vulnerability-scanner-for-your-cicd-pipeline-no4</guid>
      <description>&lt;p&gt;Hey DEV community!👋&lt;br&gt;
As developers, we all know how crucial dependency and container security is. But let's be honest - sometimes heavy enterprise security tools are overkill for side projects, smaller apps, or quick sanity checks. I wanted something lightweight, fast and dead-simple to integrate into Github Actions without complex configurations.&lt;/p&gt;

&lt;p&gt;That's why I build &lt;strong&gt;Vulnfy&lt;/strong&gt; - an open-source, cross-platform dependency and container vulnerability scanner written in Python. It automatically detects project configuration and lock files across multiple langs, queries the OSV API in bulk, and alerts you instantly.&lt;/p&gt;
&lt;h2&gt;
  
  
  What Makes Vulnfy Different?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Ecosystem Support:&lt;/strong&gt; Scans dependencies for Python, Node.js, Go, PHP, Rust, and container base images.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Batch OSV API Integration:&lt;/strong&gt; Efficiently checks packages in bulk using the OSV batch query API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart Notifications:&lt;/strong&gt; Automatically sends alerts to Discord or Telegram &lt;strong&gt;only when vulnerabilities match or exceed your configured threshold&lt;/strong&gt;, completely eliminating spam when your codebase is clean.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI/CD Ready &amp;amp; Threshold Control:&lt;/strong&gt; Use &lt;code&gt;--fail-on &amp;lt;level&amp;gt;&lt;/code&gt; to customize when the build fails (&lt;code&gt;low&lt;/code&gt;, &lt;code&gt;medium&lt;/code&gt;, &lt;code&gt;high&lt;/code&gt;, &lt;code&gt;critical&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vulnerability Suppression (&lt;code&gt;.vulnignore&lt;/code&gt;):&lt;/strong&gt; Easily ignore known or unfixable vulnerabilities directly from your project's root directory to prevent CI blockage and &lt;strong&gt;alert fatigue&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automatic Dependency Resolution:&lt;/strong&gt; Automatically installs missing requirements (&lt;code&gt;requests&lt;/code&gt;, &lt;code&gt;colorama&lt;/code&gt;, &lt;code&gt;PyYAML&lt;/code&gt;) on first run.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured Output:&lt;/strong&gt; Exports all discovered vulnerabilities and associated CVEs into a clean JSON report.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Supported Ecosystems &amp;amp; Files
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ecosystem&lt;/th&gt;
&lt;th&gt;Files&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;td&gt;requirements.txt, pyproject.toml&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NPM&lt;/td&gt;
&lt;td&gt;package.json, package-lock.json&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Go&lt;/td&gt;
&lt;td&gt;go.mod&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PHP&lt;/td&gt;
&lt;td&gt;composer.lock&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rust&lt;/td&gt;
&lt;td&gt;Cargo.lock, Cargo.toml&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Docker&lt;/td&gt;
&lt;td&gt;Dockerfile, docker-compose.yml&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  Quick Start &amp;amp; Installation
&lt;/h2&gt;

&lt;p&gt;You can install Vulnfy quickly or pull it directly from Github:&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;git+https://github.com/wxwreak/vulnfy.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or run it locally with a simple command in your project directory:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  Github Actions Integration
&lt;/h2&gt;

&lt;p&gt;Adding Vulnfy to your CI/CD workflow takes just a few lines. Create &lt;code&gt;.github/workflows/scan.yaml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Vulnfy Security Scan&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;main&lt;/span&gt; &lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;workflow_dispatch&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;vulnfy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Checkout repository&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v4&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Set up Python&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/setup-python@v5&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;python-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;3.11'&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Install Vulnfy&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;pip install git+https://github.com/wxwreak/vulnfy.git&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Run Vulnfy Scanner&lt;/span&gt;
        &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;DISCORD_WEBHOOK_URL&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.DISCORD_WEBHOOK_URL }}&lt;/span&gt;
          &lt;span class="na"&gt;TELEGRAM_BOT_TOKEN&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.TELEGRAM_BOT_TOKEN }}&lt;/span&gt;
          &lt;span class="na"&gt;TELEGRAM_CHAT_ID&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.TELEGRAM_CHAT_ID }}&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;vulnfy --fail-on high&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Configuration &amp;amp; Alerts
&lt;/h2&gt;

&lt;p&gt;Want to hook it up to Telegram or Discord? Just drop a vulnfy.yaml file into your root directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;notifications&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;discord&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;   &lt;span class="c1"&gt;# Set to true for Discord alerts&lt;/span&gt;
  &lt;span class="na"&gt;telegram&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;  &lt;span class="c1"&gt;# Set to true for Telegram alerts&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(And store your webhooks/tokens securely in Github Secrets/&lt;code&gt;.env&lt;/code&gt; file).&lt;/p&gt;

&lt;h1&gt;
  
  
  🎉 Tackling Alert Fatigue: Big Updates to Vulnfy Security Scanner!
&lt;/h1&gt;

&lt;p&gt;Huge thanks to the community feedback pointing out that lightweight security tools must avoid &lt;strong&gt;alert fatigue&lt;/strong&gt;. Nobody wants a security scanner that pings them for every single low-severity flaw or spam notification when the codebase is clean. &lt;/p&gt;

&lt;p&gt;Based on that feedback, I've just pushed a fresh update to &lt;strong&gt;Vulnfy&lt;/strong&gt;—a lightweight, cross-platform dependency and container vulnerability scanner written in Python. &lt;/p&gt;

&lt;p&gt;Here is what is new in this release:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Smart Notifications &amp;amp; Severity Thresholds
&lt;/h3&gt;

&lt;p&gt;Notifications to Discord and Telegram are now completely customizable. Vulnfy will only send alerts when vulnerabilities &lt;strong&gt;match or exceed your configured threshold&lt;/strong&gt; (e.g., &lt;code&gt;--fail-on medium&lt;/code&gt; or &lt;code&gt;high&lt;/code&gt;), completely eliminating spam.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Multi-Format Reporting
&lt;/h3&gt;

&lt;p&gt;Beyond the default JSON, Vulnfy now natively supports exporting your scan reports into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📄 &lt;strong&gt;HTML&lt;/strong&gt; (with custom styling support)&lt;/li&gt;
&lt;li&gt;📝 &lt;strong&gt;Markdown&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;📊 &lt;strong&gt;CSV&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;⚙️ &lt;strong&gt;YAML&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;📑 &lt;strong&gt;PDF&lt;/strong&gt; (via HTML templates)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Vulnerability Suppression (&lt;code&gt;.vulnignore&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;Got a false positive or a vulnerability you can't fix right this second? Just add the CVE or ID to a &lt;code&gt;.vulnignore&lt;/code&gt; file in your root directory. Ignored items won't trigger CI failures or spam your chat channels.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. CLI Enhancements (&lt;code&gt;--no-cache&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;Added the &lt;code&gt;--no-cache&lt;/code&gt; argument to keep your workspace clean and prevent Python from generating unnecessary &lt;code&gt;__pycache__&lt;/code&gt; and bytecode files during scans.&lt;/p&gt;




&lt;h2&gt;
  
  
  Give it a Try!
&lt;/h2&gt;

&lt;p&gt;Vulnfy is completely open-source, and i'm actively working on improving it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check out the repo on Github: &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fwxwreak%2Fvulnfy" alt="wxwreak/vulnfy" width="" height=""&gt; ⭐️&lt;/li&gt;
&lt;li&gt;Let me know what you think in the comments below!&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>security</category>
      <category>python</category>
      <category>opensource</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
