<?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: Semgrep</title>
    <description>The latest articles on DEV Community by Semgrep (@semgrep).</description>
    <link>https://dev.to/semgrep</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%2Forganization%2Fprofile_image%2F10433%2F502a9cbc-c1eb-4bc4-8182-95a4cfdfb0a0.jpg</url>
      <title>DEV Community: Semgrep</title>
      <link>https://dev.to/semgrep</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/semgrep"/>
    <language>en</language>
    <item>
      <title>Semgrep Newsletter | 30, 300, 3000, MCP, and Gartner</title>
      <dc:creator>Jayson DeLancey</dc:creator>
      <pubDate>Wed, 29 Oct 2025 00:33:40 +0000</pubDate>
      <link>https://dev.to/semgrep/semgrep-newsletter-30-300-3000-mcp-and-gartner-1548</link>
      <guid>https://dev.to/semgrep/semgrep-newsletter-30-300-3000-mcp-and-gartner-1548</guid>
      <description>&lt;p&gt;Hello friends, we’ve rounded up some news and updates from the Semgrep ecosystem to help ship features, not vulnerabilities.&lt;/p&gt;




&lt;h2&gt;
  
  
  Security Engineer’s Guide to MCP
&lt;/h2&gt;

&lt;p&gt;MCP has rapidly become the API standard for AI coding agents. If you are generating code and want security scanning as part of your workflow we have an &lt;a href="https://mcp.semgrep.ai/" rel="noopener noreferrer"&gt;MCP server&lt;/a&gt; you can run directly from the command line and use in your Claude Code, Cursor, Windsurf, and other MCP compatible IDEs.&lt;/p&gt;

&lt;p&gt;Follow the &lt;a href="https://mcp.semgrep.ai/" rel="noopener noreferrer"&gt;installation instructions&lt;/a&gt; for your IDE and then you’ll be able to run the MCP server with:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;But what if you are building an agent? Our security research team compiled a &lt;a href="https://semgrep.dev/blog/2025/a-security-engineers-guide-to-mcp/" rel="noopener noreferrer"&gt;security engineer's guide&lt;/a&gt; into how MCP agents can be vulnerable and what you should know about using and building them with an &lt;a href="https://semgrep.dev/blog/2025/a-security-engineers-guide-to-mcp/#mcp-security-checklists" rel="noopener noreferrer"&gt;MCP Security Checklist&lt;/a&gt;. Check it out to learn more about line jumping, tool shadowing, and rug pulling.&lt;/p&gt;




&lt;h2&gt;
  
  
  2025 Gartner® Magic Quadrant™ for Application Security Testing
&lt;/h2&gt;

&lt;p&gt;We’re thrilled to announce that for the first time, Semgrep has been recognized in the 2025 Gartner Magic Quadrant for Application Security Testing. &lt;/p&gt;

&lt;p&gt;We’re honored to be named in the Gartner Magic Quadrant for Application Security Testing, but even more grateful for the partnerships with the community and customers that make Semgrep better every day. &lt;a href="https://semgrep.dev/blog/2025/semgrep-recognized-in-gartner-magic-quadrant/" rel="noopener noreferrer"&gt;Read more and claim a complimentary copy of the report&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Yes We Scan Monorepos
&lt;/h2&gt;

&lt;p&gt;Teams who follow a trunk-based development methodology consolidate a lot of code into a single monorepos. This typically presents scaling challenges for static analysis because it isn’t as easy to do horizontal scaling by chunking separate repo jobs to separate servers.&lt;/p&gt;

&lt;p&gt;We’ve recently introduced a memory efficient model with multicore enabling parallel processing on a single device to better utilize cloud resources and see a 2x speed up in job completion time. It isn’t that we’re running faster, it's that we’ve added several more lanes and can get more throughput. &lt;/p&gt;

&lt;p&gt;Run it now with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;semgrep &lt;span class="nv"&gt;config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;auto &lt;span class="nt"&gt;--x-eio&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will be enabled by default next month, so keep an eye on our &lt;a href="https://semgrep.dev/blog/open-source/" rel="noopener noreferrer"&gt;open source blog&lt;/a&gt; and &lt;a href="https://github.com/semgrep/semgrep" rel="noopener noreferrer"&gt;release notes&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  1 MILLION Weekly Scans
&lt;/h2&gt;

&lt;p&gt;Actually, that’s old news and we’ve quickly scaled beyond that. During our beta program we worked closely with fast-growing startups to Fortune 500 enterprises to secure their code.&lt;/p&gt;

&lt;p&gt;By &lt;a href="https://semgrep.dev/blog/2025/enterprise-scale-code-scanning-semgrep-managed-scans-crossed-1-million-weekly-scans/" rel="noopener noreferrer"&gt;our calculations&lt;/a&gt; using managed scanning can save over $25k in the first year with an annualized savings of $18k each year by using managed scanning. We &lt;a href="https://semgrep.dev/blog/2025/enterprise-scale-code-scanning-semgrep-managed-scans-crossed-1-million-weekly-scans/" rel="noopener noreferrer"&gt;share the math&lt;/a&gt; and a &lt;a href="https://youtu.be/wxbTv6LBx4c?si=Fkrmf6a5oRXK0oeF" rel="noopener noreferrer"&gt;demo video&lt;/a&gt; for when you are ready to offload some of the headaches you may have of managing your own infrastructure for security testing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Open Source Community Edition 30:300:3000
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://semgrep.dev/products/community-edition" rel="noopener noreferrer"&gt;Semgrep Community Edition&lt;/a&gt; is the free open source static analysis engine with support for 30+ languages, 300+ releases to date, and over 3000+ community rules.&lt;/p&gt;

&lt;p&gt;Some of the recent releases over the past few months include many beneficial improvements to the CLI (both commercial and open source):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cross-platform for mac, linux, and windows environments&lt;/li&gt;
&lt;li&gt;Parallel processing with shared memory to be able to quickly handle large monorepos without slowing down dev teams&lt;/li&gt;
&lt;li&gt;MCP server integrated into AI-assisted coding workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are many small incremental improvements that may have helped your team as well from recognizing Containerfiles, metavariable-comparisons, and performance improvements to rule parsing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Palo Alto Networks Cortex Cloud
&lt;/h2&gt;

&lt;p&gt;Read about &lt;a href="https://www.paloaltonetworks.com/blog/cloud-security/application-security-semgrep-partnership/" rel="noopener noreferrer"&gt;How Cortex Cloud and Semgrep are Redefining AI-Driven Application Security&lt;/a&gt;, combining static analysis with cloud insights.&lt;/p&gt;




&lt;h2&gt;
  
  
  LLM-Driven SAST-Genius
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.arxiv.org/pdf/2509.15433" rel="noopener noreferrer"&gt;Independent research&lt;/a&gt; from Vaibhav Agrawal and Kiarash Ahi demonstrate a hybrid pipeline that combines Semgrep with a fine-tuned LLM for triage, exploit validation, and remediation.&lt;/p&gt;

&lt;p&gt;Impressive results:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;False positive reduction from 225 to 20 (11x improvement)&lt;/li&gt;
&lt;li&gt;91% reduction in average triage time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Review the full research article: &lt;a href="https://www.arxiv.org/pdf/2509.15433" rel="noopener noreferrer"&gt;https://www.arxiv.org/pdf/2509.15433&lt;/a&gt; &lt;/p&gt;




&lt;h2&gt;
  
  
  Secure AI-generated Code Workshop In-Person and Virtual
&lt;/h2&gt;

&lt;p&gt;We’re hosting a hands-on keyboard interactive workshop at OWASP Global AppSec to learn how to secure AI-generated code with Palo Alto Networks Cortex Cloud and Semgrep. This is open to the public even if you don’t have an event badge.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://semgrep.dev/events/securing-ai-generated-code-cortex-cloud-semgrep-workshop/" rel="noopener noreferrer"&gt;Save your seat&lt;/a&gt; in Washington DC Nov 5th&lt;/p&gt;

&lt;p&gt;We’ll be hosting a follow-up virtual version of this workshop on Nov 20th. &lt;a href="https://semgrep.dev/events/real-world-applications-of-semgrep-memories-how-customers-are-using-ai-to-eliminate-false-positives/" rel="noopener noreferrer"&gt;Register for the virtual session&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  IDOR
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;“Wait master, it might be dangerous… you go first.” –Igor in Young Frankenstein&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Insecure Direct Object Reference (IDOR)&lt;/strong&gt; is a security vulnerability that is an access control failure where a program exposes internal resources using identifiers that users can guess or manipulate to gain unauthorized access. If the system doesn’t check, it opens the door to abuse.&lt;/p&gt;

&lt;p&gt;Learn more about IDOR and other common vulnerabilities like &lt;a href="https://semgrep.dev/docs/learn/vulnerabilities/code-injection" rel="noopener noreferrer"&gt;Code Injection&lt;/a&gt;, &lt;a href="https://semgrep.dev/docs/learn/vulnerabilities/command-injection" rel="noopener noreferrer"&gt;Command Injection&lt;/a&gt;, &lt;a href="https://semgrep.dev/docs/learn/vulnerabilities/cross-site-scripting" rel="noopener noreferrer"&gt;Cross-site Scripting&lt;/a&gt;, &lt;a href="https://semgrep.dev/docs/learn/vulnerabilities/insecure-deserialization" rel="noopener noreferrer"&gt;Insecure Deserialization&lt;/a&gt; and more in our new &lt;a href="https://semgrep.dev/docs/learn" rel="noopener noreferrer"&gt;Learning Guides&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Happy Halloween and Security Awareness Month!&lt;/p&gt;




&lt;h2&gt;
  
  
  Getting Started with Semgrep
&lt;/h2&gt;

&lt;p&gt;Are you new here? If so, we’ve lined up some helpful resources you can use to learn about Semgrep.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://semgrep.dev/docs/getting-started/quickstart" rel="noopener noreferrer"&gt;Semgrep AppSec Platform&lt;/a&gt; is the quickest way to create an account and scan in minutes.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://semgrep.dev/products/community-edition" rel="noopener noreferrer"&gt;Semgrep Community Edition&lt;/a&gt; has a new &lt;a href="https://semgrep.dev/docs/getting-started/quickstart-ce" rel="noopener noreferrer"&gt;Getting Started Guide&lt;/a&gt; to run your first scan.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have questions, feedback, or stories about your success with Semgrep you want to share, hop onto the &lt;a href="https://go.semgrep.dev/slack" rel="noopener noreferrer"&gt;community slack&lt;/a&gt; and let’s chat or add questions in the comments for me here. &lt;/p&gt;

</description>
      <category>security</category>
      <category>mcp</category>
      <category>opensource</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Semgrep Newsletter | AI Code Assistant Research, Security Alerts, Quarterly Release and More</title>
      <dc:creator>Jayson DeLancey</dc:creator>
      <pubDate>Tue, 23 Sep 2025 17:11:14 +0000</pubDate>
      <link>https://dev.to/semgrep/semgrep-newsletter-ai-code-assistant-research-security-alerts-quarterly-release-and-more-8ca</link>
      <guid>https://dev.to/semgrep/semgrep-newsletter-ai-code-assistant-research-security-alerts-quarterly-release-and-more-8ca</guid>
      <description>&lt;p&gt;Hello friends, we’ve rounded up some news and updates from the Semgrep ecosystem to help you ship features, not vulnerabilities.&lt;/p&gt;

&lt;p&gt;If you need a Semgrep account, &lt;a href="https://semgrep.dev/signup" rel="noopener noreferrer"&gt;sign up for free&lt;/a&gt; and get started with the Quick Start on any project with fewer than ten (10) contributors.&lt;/p&gt;




&lt;h2&gt;
  
  
  Research on Claude Code and OpenAI Codex
&lt;/h2&gt;

&lt;p&gt;Our Security Research team &lt;a href="https://semgrep.dev/blog/2025/finding-vulnerabilities-in-modern-web-apps-using-claude-code-and-openai-codex/" rel="noopener noreferrer"&gt;explored AI coding agents&lt;/a&gt; which can frequently help find real vulnerabilities – but they can be noisy. &lt;/p&gt;

&lt;p&gt;Using 11 real-world Python apps, Claude Code surfaced 46 vulnerabilities (14% true positive rate) strongly identifying IDOR issues. Codex found 21 vulnerabilities (18% TPR) with strength in finding path traversal issues.&lt;/p&gt;

&lt;p&gt;Unfortunately, repeated runs were non-deterministic so in the case of one app the agent found 3, then 6, then 11 distinct findings using the same identical prompt.&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.amazonaws.com%2Fuploads%2Farticles%2F7rb58wb5g601jrq1isny.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%2F7rb58wb5g601jrq1isny.png" alt="OpenAI Codex and Claude Code Security Research" width="533" height="494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dive more into the data, prompts, and methodology from the full write up and data tables: &lt;a href="https://semgrep.dev/blog/2025/finding-vulnerabilities-in-modern-web-apps-using-claude-code-and-openai-codex/" rel="noopener noreferrer"&gt;Finding vulnerabilities in modern web apps using Claude Code and OpenAI Codex&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Security Alerts | Nx and NPM
&lt;/h2&gt;

&lt;p&gt;The widely used Nx build tool was compromised recently in a way that allowed malware to steal ssh keys, wallets, api tokens, and other secret credentials.&lt;/p&gt;

&lt;p&gt;From the official &lt;a href="https://github.com/nrwl/nx/security/advisories/GHSA-cxm3-wv7p-598c" rel="noopener noreferrer"&gt;Nx security advisory&lt;/a&gt; the root cause was a workflow that was executing code.&lt;/p&gt;

&lt;p&gt;Semgrep is designed to help teams scan for and catch these types of code execution patterns. Specifically, this vulnerability is categorized as a &lt;a href="https://semgrep.dev/r?q=yaml.github-actions.security.run-shell-injection.run-shell-injection" rel="noopener noreferrer"&gt;run-shell-injection&lt;/a&gt;. It implemented a pattern that executes a command in a shell where the attacker can subvert the call and run their own supplied commands instead.&lt;/p&gt;

&lt;p&gt;Take a look at our &lt;a href="https://semgrep.dev/blog/security-research" rel="noopener noreferrer"&gt;Security Research&lt;/a&gt; blog posts for additional insights. In particular, the post-install script was sending a prompt to any locally installed Claude or Gemini CLIs to help gather credentials. You can learn more about it and our response from our &lt;a href="https://semgrep.dev/blog/2025/security-alert-nx-compromised-to-steal-wallets-and-credentials/" rel="noopener noreferrer"&gt;blog post&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quarterly Release Update
&lt;/h2&gt;

&lt;p&gt;We’ve bundled up releases from the past few months into a &lt;a href="https://semgrep.dev/resources/whats-new/" rel="noopener noreferrer"&gt;Quarterly Release&lt;/a&gt; page to help share some of the highlights of what’s changed and what’s new.&lt;/p&gt;

&lt;p&gt;Watch the &lt;a href="https://semgrep.dev/resources/whats-new/" rel="noopener noreferrer"&gt;Webinar Replay&lt;/a&gt; or &lt;a href="https://semgrep.dev/resources/whats-new/" rel="noopener noreferrer"&gt;Download the Release Kit&lt;/a&gt;. &lt;/p&gt;




&lt;h2&gt;
  
  
  Finding Vulnerabilities in the First 30 Days
&lt;/h2&gt;

&lt;p&gt;This story warms our cold, secure heart that Semgrep is trusted and can show results so quickly. Our friends at &lt;a href="https://blog.trailofbits.com/2025/08/04/uncovering-memory-corruption-in-nvidia-triton-as-a-new-hire/" rel="noopener noreferrer"&gt;Trail of Bits Blog&lt;/a&gt; shared a story from one of their excellent new hires:&lt;/p&gt;

&lt;p&gt;In my first month at Trail of Bits as an AI/ML security engineer, I found two remotely accessible memory corruption bugs in NVIDIA’s Triton Inference Server during a routine onboarding practice.&lt;/p&gt;

&lt;p&gt;He shared: “My approach was straightforward: point our standard static analysis tools at the codebase… one of the tools we rely on for this initial reconnaissance is Semgrep.”&lt;/p&gt;

&lt;p&gt;A full breakdown of the findings, Semgrep rules and links to CVEs can be found in the blog post &lt;a href="https://blog.trailofbits.com/2025/08/04/uncovering-memory-corruption-in-nvidia-triton-as-a-new-hire/" rel="noopener noreferrer"&gt;Uncovering memory corruption in NVIDIA Triton&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Connecting Code Scans to Cloud Consequences
&lt;/h2&gt;

&lt;p&gt;Through an &lt;a href="https://semgrep.dev/blog/2025/fix-what-matters-faster-how-semgrep-and-sysdig-are-unifying-security-from-code-to-runtime/" rel="noopener noreferrer"&gt;exciting partnership with Sysdig&lt;/a&gt;, we’ve connected Sysdig’s runtime insights for what’s exploitable in the cloud to the code, file, and developer behind it to help put build-time context with run-time insight.&lt;/p&gt;

&lt;p&gt;Learn more about our &lt;a href="https://semgrep.dev/blog/2025/fix-what-matters-faster-how-semgrep-and-sysdig-are-unifying-security-from-code-to-runtime/" rel="noopener noreferrer"&gt;shared vision&lt;/a&gt; that security should enable speed and not slow down development or teams.&lt;/p&gt;




&lt;h2&gt;
  
  
  Shipping Value, Not Just AI for AI-Sake
&lt;/h2&gt;

&lt;p&gt;We don’t think that users care that AI is used for features, they care about the impact it makes. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://engineering.wealthsimple.com/how-were-making-app-security-smarter" rel="noopener noreferrer"&gt;Wealthsimple&lt;/a&gt; shared how they are leveraging Semgrep’s LLM-powered &lt;a href="https://semgrep.dev/docs/semgrep-assistant/customize#add-memories" rel="noopener noreferrer"&gt;memories&lt;/a&gt; feature noting:&lt;/p&gt;

&lt;p&gt;“A system that learns from our security decisions and applies that knowledge to future scans. The implementation is remarkably simple. All it takes is clicking 'new memory' and adding a description rule of the context or pattern you want the system to recognize.”&lt;/p&gt;

&lt;p&gt;They quickly created twelve active memories to analyze 630+ security findings and reduced the backlog by 397 likely false positives (62% improvement). That's the impact we want to see.&lt;/p&gt;

&lt;p&gt;Read more from the &lt;a href="https://engineering.wealthsimple.com/how-were-making-app-security-smarter" rel="noopener noreferrer"&gt;Wealthsimple Engineering Blog&lt;/a&gt;. &lt;/p&gt;




&lt;h2&gt;
  
  
  Model Context… Propaganda
&lt;/h2&gt;

&lt;p&gt;Dr. Katie Paxton-Fear and Drew Dennison had a conversation about MCP (Model Context Protocol) and integrating tools into your AI-development workflows.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://semgrep.dev/events/video-library/?title=mcp-model-context-propaganda" rel="noopener noreferrer"&gt;Watch their conversation&lt;/a&gt; and learn some tips for how to accelerate your secure development workflows.&lt;/p&gt;

&lt;p&gt;It’s always rewarding when we see fans who share their success with Semgrep. Sean Kochel listed Semgrep among the &lt;a href="https://www.youtube.com/watch?v=sF799nFJONk" rel="noopener noreferrer"&gt;5 Claude Code MCP Servers You Need To Be Using&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://mcp.semgrep.ai/" rel="noopener noreferrer"&gt;Try Semgrep MCP&lt;/a&gt; with Cursor.&lt;/p&gt;




&lt;h2&gt;
  
  
  Celebrating 1M Code Scans Per Week
&lt;/h2&gt;

&lt;p&gt;Our managed scans crossed a new milestone. If you are managing your own workload, talk to our team about managed scans so we can help keep you covered.&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.amazonaws.com%2Fuploads%2Farticles%2Fvv5t9c57hsav4cl9m7rn.jpeg" 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%2Fvv5t9c57hsav4cl9m7rn.jpeg" alt="Semgrep Managed Scans Crosses a Million" width="562" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We also have a &lt;a href="https://semgrep.dev/docs/getting-started/quickstart-managed-scans" rel="noopener noreferrer"&gt;Managed Scan Quickstart Guide&lt;/a&gt; to get you up and running quickly.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Get Started with Semgrep
&lt;/h2&gt;

&lt;p&gt;If you've only just learned about Semgrep, here's some ways to get started:&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/semgrep/semgrep" rel="noopener noreferrer"&gt;Semgrep Community Edition&lt;/a&gt; is free open-source software that powers many teams with basic functionality.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://semgrep.dev/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Semgrep AppSec Platform&lt;/a&gt; helps enterprises who prioritize their security risks. Visit &lt;a href="https://semgrep.dev/signup" rel="noopener noreferrer"&gt;https://semgrep.dev/signup&lt;/a&gt; and try the &lt;a href="https://semgrep.dev/docs/getting-started/quickstart-managed-scans?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt; for free on any project with fewer than ten (10) contributors. &lt;/p&gt;

&lt;p&gt;If you have any questions, feedback, or stories to share about using Semgrep, hop onto the &lt;a href="https://go.semgrep.dev/slack" rel="noopener noreferrer"&gt;Community Slack&lt;/a&gt; and let’s chat (I’m &lt;a class="mentioned-user" href="https://dev.to/j12y"&gt;@j12y&lt;/a&gt;)! If you want to talk to us virtually or see us in-person, check out the &lt;a href="https://semgrep.dev/events/" rel="noopener noreferrer"&gt;events page&lt;/a&gt; to see where we’ll be.&lt;/p&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>vulnerabilities</category>
    </item>
    <item>
      <title>Make Faster and Better GitHub PRs With This Graphite Workflow</title>
      <dc:creator>Martin Jambon</dc:creator>
      <pubDate>Fri, 19 Sep 2025 00:15:24 +0000</pubDate>
      <link>https://dev.to/semgrep/a-guide-to-using-graphites-stacked-prs-for-github-users-5c47</link>
      <guid>https://dev.to/semgrep/a-guide-to-using-graphites-stacked-prs-for-github-users-5c47</guid>
      <description>&lt;p&gt;If you're not sure how to take advantage of &lt;a href="https://graphite.dev/blog/stacked-prs" rel="noopener noreferrer"&gt;Graphite&lt;/a&gt; but your colleagues are raving about it, here's what I wish I was told from the beginning when we started experimenting with Graphite at &lt;a href="https://semgrep.dev/" rel="noopener noreferrer"&gt;Semgrep&lt;/a&gt;. I propose a workflow that makes it easy to revise previous commits, reduces conflicts, and avoids having unrelated changes in the same PR.&lt;/p&gt;

&lt;h2&gt;
  
  
  The promise
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;easier conflict resolution thanks to fewer commits that affect a given piece of code;&lt;/li&gt;
&lt;li&gt;easier code reviews thanks to more focused, smaller pull requests;&lt;/li&gt;
&lt;li&gt;easily rework earlier commits without creating new ones;&lt;/li&gt;
&lt;li&gt;each commit message becomes a meaningful pull request description;&lt;/li&gt;
&lt;li&gt;less upfront planning, you can start working on prerequisites after starting working on a feature.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A stack of what?
&lt;/h2&gt;

&lt;p&gt;A stack of pull requests isn't &lt;em&gt;really&lt;/em&gt; a stack of pull requests, it should be treated as a &lt;strong&gt;queue of editable changes&lt;/strong&gt;. Even though technically each change in the stack ends up being a GitHub pull request as we know it, a stack of changes functionally is the equivalent of one large traditional GitHub pull request implementing a new feature in multiple steps.&lt;/p&gt;

&lt;p&gt;Here's how to think of a stack:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A Graphite stack should be thought of as a sequence of changes necessary to deliver a new feature.&lt;/li&gt;
&lt;li&gt;Each change should be a single Git commit that gets amended over and over again.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;change&lt;/strong&gt;: &lt;em&gt;a logical change in the code base&lt;/em&gt;. For Git, it's a single-commit branch with a description of the changes. For GitHub, it's a branch and a pull request (PR). For Graphite, it's a stacked PR. The requirement that each change have only one Git commit is ours.&lt;br&gt;
&lt;strong&gt;queue of changes&lt;/strong&gt;: &lt;em&gt;a sequence of changes to be merged in a particular order. Each change in the queue is editable at will. New changes are added to the end of the queue normally or inserted anywhere within the queue&lt;/em&gt;. For Git, it's a sequence of commits where each commit also has a branch name. For GitHub, it's a collection of branches where each branch is associated with a pull request. For Graphite, it's a stack of pull requests.&lt;/p&gt;
&lt;h2&gt;
  
  
  Recommended flow
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Creating a stack
&lt;/h3&gt;

&lt;p&gt;Set the current branch to your repository's main branch as you would before when creating a branch destined for a pull request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git checkout main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then make changes to your code until it's mergeable or until you want to back it up. It's ok if it's not finished.&lt;/p&gt;

&lt;p&gt;Then, commit your code as the first set of changes:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Useful options include &lt;code&gt;-a&lt;/code&gt; to add all files, &lt;code&gt;-m&lt;/code&gt; to set a commit message. The branch name can be specified as an argument if you don't like the name assigned by Graphite.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resuming work on the last change
&lt;/h3&gt;

&lt;p&gt;Say you finished your day of work by committing a change with &lt;code&gt;gt create&lt;/code&gt;. The next day, you'll resume the work by making edits until you're happy with your code. Now, instead of adding a new commit, you're going to modify the last commit by adding your new changes. Graphite offers the &lt;code&gt;modify&lt;/code&gt; command to do this conveniently:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;That's it. The main idea is that we keep each meaningful change as one Git commit that can be revised later.&lt;/p&gt;

&lt;h3&gt;
  
  
  Adding another change
&lt;/h3&gt;

&lt;p&gt;Now, assume you need to make another preliminary change before delivering your feature. As before, you modify your code as usual. You then commit it as one Git commit. This commit will also be technically its own Git branch later associated with its own pull request. We will treat it as a change that we're free to revise later. The command, like earlier, is &lt;code&gt;gt create&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ gt create -a -m 'Another preliminary change'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use &lt;code&gt;gt rename&lt;/code&gt; to change the Git branch name if you want.&lt;/p&gt;

&lt;h3&gt;
  
  
  Editing an earlier change
&lt;/h3&gt;

&lt;p&gt;At this point, you may have figured out that Graphite is based heavily on editing the Git history. This is what we're doing here. From Git's perspective, a stack of changes is a branch of a branch of a branch... From Graphite's perspective, it's a stack or sequence of changes that are meant to be reviewed and revised later in any order. Inspect the stack and your position in the stack with:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Navigate the stack i.e. change the current git branch/commit with &lt;code&gt;gt up&lt;/code&gt; and &lt;code&gt;gt down&lt;/code&gt; until the current branch is the one corresponding to the change you want to edit. For example, go to the previous change with:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Now, edit your code and commit it as described previously, not by introducing a new commit, but by amending the commit:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;With this command, Graphite modifies the current commit and updates the subsequent changes using &lt;code&gt;git rebase&lt;/code&gt; under the hood.&lt;/p&gt;

&lt;h3&gt;
  
  
  Inserting a preliminary change you hadn't planned for
&lt;/h3&gt;

&lt;p&gt;Planning ahead has its limits and we often find ourselves in the middle of implementing a feature only to realize that a preliminary change should have been made. The traditional solution is to extend the current branch with a new commit, resulting in a mixed-bag pull request and an annoyed code reviewer telling us "this could have been a separate pull request". To insert a preliminary change before the current branch, use this approach:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate the stack with &lt;code&gt;gt ls&lt;/code&gt;, &lt;code&gt;gt down&lt;/code&gt;, &lt;code&gt;gt up&lt;/code&gt; as needed to select the Git branch you want to use as a base.&lt;/li&gt;
&lt;li&gt;Edit the code to implement your new change.&lt;/li&gt;
&lt;li&gt;Insert the new code as a new change in the queue using &lt;code&gt;gt create --insert -am &amp;lt;DESCRIPTION&amp;gt;&lt;/code&gt;. See the help with &lt;code&gt;gt create --help&lt;/code&gt; for details on &lt;code&gt;--insert&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Graphite takes care of the &lt;code&gt;git rebase&lt;/code&gt; commands needed to update the subsequent commits, making the operation much easier and safer than if we had to do it manually.&lt;/p&gt;

&lt;p&gt;In the following example, we inserted change #137 as the first change in the queue even though it was created after #135 and #136:&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.amazonaws.com%2Fuploads%2Farticles%2F3grcdikaw72ow7rbzcax.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%2F3grcdikaw72ow7rbzcax.png" alt=" " width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Pushing the work to save it
&lt;/h3&gt;

&lt;p&gt;As a backup measure, it's a good idea to push your code to GitHub or equivalent once in a while. You would do this for all the changes in the stack at once with&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;This will create a pull request for each change in the stack, sending you to Graphite's Web interface. However, these pull requests are not definitive. If you're not ready to send them to review, you can either save them but not press the Publish button or you can publish them but mark some of them as drafts. There are buttons for these things. The draft feature is the same as GitHub's draft feature.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reviewing and merging the stack
&lt;/h3&gt;

&lt;p&gt;A stack of changes translates to a sequence of pull requests that can be reviewed either on Graphite's Web app or on GitHub. On GitHub, there's a CI check that sort of prevents the reviewer from merging a PR if its dependent PRs corresponding to changes down the stack haven't been merged yet.&lt;/p&gt;

&lt;h3&gt;
  
  
  Synchronizing with the main branch
&lt;/h3&gt;

&lt;p&gt;To import the latest changes of the main branch into your stack, use&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;It's equivalent to a Git rebase for each of your changes. You'll have to resolve conflicts the usual way, by following the instructions. This is where it helps to have just one commit per logical change in the stack.&lt;/p&gt;

&lt;h3&gt;
  
  
  Running other Git operations
&lt;/h3&gt;

&lt;p&gt;You can still use the usual Git commands but some are deprecated when working on a Graphite stack. &lt;code&gt;git commit&lt;/code&gt; can be fine but unnecessary since you'd usually use &lt;code&gt;gt create&lt;/code&gt; or &lt;code&gt;gt modify&lt;/code&gt; instead. &lt;code&gt;git push&lt;/code&gt; may be fine too but &lt;code&gt;gt submit&lt;/code&gt; will push all the branches corresponding to your stack at once. Rewriting history with &lt;code&gt;git rebase&lt;/code&gt; is probably best avoided if you're working on a Graphite stack. &lt;code&gt;git merge&lt;/code&gt; and &lt;code&gt;git pull&lt;/code&gt; should also be avoided since &lt;code&gt;gt sync&lt;/code&gt; will handle synchronization and conflict resolution for the whole stack.&lt;/p&gt;

&lt;p&gt;Read-only operations such as &lt;code&gt;git log&lt;/code&gt; are of course fine and recommended in the same situations as with traditional Git/GitHub workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Clean-up
&lt;/h3&gt;

&lt;p&gt;Graphite will offer spontaneously to delete merged branches (unlike Git when merging a branch on GitHub with squash-and-merge).&lt;/p&gt;

&lt;h2&gt;
  
  
  Important take-aways
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Don't worry about planning your work ahead of time. You don't have to. Keep editing your code by amending the last commit with &lt;code&gt;gt modify&lt;/code&gt; until your code works and you're comfortable moving on to something else... which will be a new change in the stack. You can always go back and edit earlier changes down the stack later.&lt;/li&gt;
&lt;li&gt;Embrace editing the Git history. &lt;code&gt;gt ls&lt;/code&gt;/&lt;code&gt;gt up&lt;/code&gt;/&lt;code&gt;gt down&lt;/code&gt;/&lt;code&gt;gt modify&lt;/code&gt; does it for you.&lt;/li&gt;
&lt;li&gt;Minimize the number of commits to facilitate conflict resolution. This is achieved by the recommended flow above where you go extend previous commits.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The benefits that you should get out of this approach are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;easier conflict resolution due to having fewer commits&lt;/li&gt;
&lt;li&gt;easier code reviews due to having one pull request per meaningful change&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Open questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Review multiple changes separately but merge them as one?
&lt;/h3&gt;

&lt;p&gt;CI checks will need to pass for each change/commit/PR in the stack. Often, it makes sense for two changes to be reviewed separately even though they need each other for the software to work. Since merging only one of these commits would break the build and fail CI checks, is there a way to submit these two changes for review separately but require them to be merged as one?&lt;/p&gt;

&lt;h3&gt;
  
  
  Why is it called a stack?
&lt;/h3&gt;

&lt;p&gt;In computer science, a stack or last-in-first-out (LIFO) container is a collection of elements where only the most recently added element is meant to be accessed. This is not exactly the meaning used by Graphite which can be confusing to some of us. Even to ordinary pancake enjoyers, the notion of a stack implies that modifying elements inside the stack is difficult and unusual*. Graphite makes it easy and pleasant to modify the items in the stack, making it &lt;em&gt;feel&lt;/em&gt; less like a stack.&lt;/p&gt;

&lt;p&gt;*a solution to add butter to each pancake before they get cold involves reversing the stack rather than trying to insert butter between pancakes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclaimer
&lt;/h2&gt;

&lt;p&gt;I'm still new to this. Expect some inaccuracies and oversights.&lt;/p&gt;

</description>
      <category>github</category>
      <category>git</category>
      <category>gitlab</category>
      <category>graphite</category>
    </item>
    <item>
      <title>Protecting Yourself from Spear Phishing Attacks Such as the One Targeting NPM Maintainers with 2FA Update</title>
      <dc:creator>Jayson DeLancey</dc:creator>
      <pubDate>Mon, 08 Sep 2025 22:52:26 +0000</pubDate>
      <link>https://dev.to/semgrep/protecting-yourself-from-spear-phishing-attacks-such-as-the-one-targeting-npm-maintainers-with-2fa-4332</link>
      <guid>https://dev.to/semgrep/protecting-yourself-from-spear-phishing-attacks-such-as-the-one-targeting-npm-maintainers-with-2fa-4332</guid>
      <description>&lt;p&gt;If you are a package maintainer of software used by others, you may not be a target like journalists or government officials but a target nonetheless. Earlier today one maintainer fell victim to something that could have impacted any overworked software engineer, a message that was a well disguised spear phishing campaign. See: &lt;a href="https://semgrep.dev/blog/2025/chalk-debug-and-color-on-npm-compromised-in-new-supply-chain-attack/" rel="noopener noreferrer"&gt;Security Alert | chalk, debug and color on npm compromised in new supply chain attack&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a reminder that whether you deploy libraries on npm, pypi, cargo, and &lt;a href="https://semgrep.dev/docs/supported-languages#package-manager-support" rel="noopener noreferrer"&gt;many more&lt;/a&gt; to stay vigilant.&lt;/p&gt;

&lt;h2&gt;
  
  
  Spear Phishing
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Spear phishing&lt;/strong&gt; is a more targeted version of phishing which is what makes it so effective. Instead of a random email blast to thousands of college students, stay-at-home parents and busy professionals -- its tailored to target and trick &lt;em&gt;you&lt;/em&gt; specifically. The maintainers of packages in a repository is not kept secret. They are often kindly sharing their work for the benefit of the community at large. That means an attacker can discover names, contact info, and nature of the work of popular packages without a lot of effort.&lt;/p&gt;

&lt;p&gt;The message they send isn’t “Meet singles in your area,” it’s more like “Update your security settings before you lose access.” That small difference is why people fall for it because it is appropriate and sparks a sense of urgency.&lt;/p&gt;

&lt;p&gt;What makes this dangerous for open source maintainers is that trust extends beyond the individual. If your account is compromised, the attacker potentially gains access to publish new versions of your package. Any downstream consumers, CI/CD systems, or even enterprises could unknowingly install malware. One cracked maintainer account can cascade into a &lt;a href="https://semgrep.dev/blog/2025/chalk-debug-and-color-on-npm-compromised-in-new-supply-chain-attack/" rel="noopener noreferrer"&gt;supply chain incident&lt;/a&gt; like we saw today.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security Notice: Two-Factor Authentication Update Required
&lt;/h2&gt;

&lt;p&gt;A rather official looking message was sent to maintainers of packages hosted on &lt;a href="https://npmjs.com" rel="noopener noreferrer"&gt;npmjs.com&lt;/a&gt; that they were overdue for a two-factor update.&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.amazonaws.com%2Fuploads%2Farticles%2Fyyucrx094kbzu1vh3b6h.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%2Fyyucrx094kbzu1vh3b6h.png" alt="phishing message body" width="392" height="242"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The message came from a domain that closely resembled the official NPM registry:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Date: Mon, 08 Sep 2025 00:30:21 +0000
From: npm &amp;lt;support@npmjs.help&amp;gt;
Subject: Two-Factor Authentication Update Required
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It was free of typos and other errors typically found in spam messages:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;As part of our ongoing commitment to account security, we are requesting that 
all users update their Two-Factor Authentication (2FA) credentials. Our records 
indicate that it has been over 12 months since your last 2FA update.

To maintain the security and integrity of your account, we kindly ask that you 
complete this update at your earliest convenience. Please note that accounts 
with outdated 2FA credentials will be temporarily locked starting September 10, 
2025, to prevent unauthorized access.

[Update 2FA Now]

If you have any questions or require assistance, our support team is available to help. You 
may contact us through this link.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Spotting Red Flags in Phishing Emails
&lt;/h2&gt;

&lt;p&gt;Many major corporations have annual mandatory training on how to spot issues like this. This doesn't mean every maintainer does.&lt;/p&gt;

&lt;h3&gt;
  
  
  Domain Lookalikes
&lt;/h3&gt;

&lt;p&gt;The domain &lt;code&gt;npmjs.help&lt;/code&gt; was chosen because it looks like &lt;code&gt;npmjs.com&lt;/code&gt; and attackers will often purchase similar domains or TLDs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Urgent Call to Action
&lt;/h3&gt;

&lt;p&gt;For something like a 2FA reset, chances are you will have been notified multiple times. If you've ignored earlier warnings it may be time to read more closely, but if its the first time you've seen a message to reset your password or credentials there is reason to be suspicious.&lt;/p&gt;

&lt;h3&gt;
  
  
  Links Behind Buttons
&lt;/h3&gt;

&lt;p&gt;Double check that you trust any URL that a link or button will take you to. If you disable images displayed from unknown senders or more stoically just read text-only rather than HTML emails you may already have a leg up for inspection.&lt;/p&gt;

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

&lt;p&gt;I have sympathy for any individuals who are compromised from a coordinated campaign like this. It was executed really well from a social engineering perspective, even if the malware was ineffective &lt;a href="https://www.securityalliance.org/news/2025-09-npm-supply-chain" rel="noopener noreferrer"&gt;The Largest Supply Chain Attack Stole 5 Cents&lt;/a&gt; it can happen to any maintainer.&lt;/p&gt;

</description>
      <category>npm</category>
      <category>security</category>
    </item>
    <item>
      <title>Hacker Summer Camp 2025 Edition | Semgrep Newsletter</title>
      <dc:creator>Jayson DeLancey</dc:creator>
      <pubDate>Wed, 30 Jul 2025 00:39:56 +0000</pubDate>
      <link>https://dev.to/semgrep/hacker-summer-camp-2025-edition-semgrep-newsletter-50lp</link>
      <guid>https://dev.to/semgrep/hacker-summer-camp-2025-edition-semgrep-newsletter-50lp</guid>
      <description>&lt;p&gt;We’ve rounded up some news and updates from the Semgrep ecosystem to help ship features, not vulnerabilities.&lt;/p&gt;

&lt;p&gt;If you need a Semgrep account, &lt;a href="https://semgrep.dev/signup?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;sign up for free&lt;/a&gt; and get started with the &lt;a href="https://semgrep.dev/docs/getting-started/quickstart-managed-scans?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt; for free on any project with fewer than ten (10) contributors.&lt;/p&gt;




&lt;h2&gt;
  
  
  Hacker Summer Camp
&lt;/h2&gt;

&lt;p&gt;It’s that time of year when the weather gets hot and we take a break to meet and compare notes with our colleagues from across the security industry. You’ll find us all week at events including The Diana Initiative, BSidesLV, Black Hat, and DEF CON.&lt;/p&gt;

&lt;p&gt;We are taking over Omega Mart on 8/5 for an exclusive event for our customers and the security community. Just us, no tourists. If you’ve never been it is a delightful and immersive art experience filled with puzzles, stories and will make for a memorable experience. We are also hosting a LAN tournament on 8/7 at an arcade bar which will be a fun way to unwind from the day.&lt;/p&gt;

&lt;p&gt;We’ve got something happening every day so check the event page to learn more about our conference talks, free book signings, and other appearances.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://go.semgrep.dev/summercamp?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Join us for Hacker Summer Camp 2025&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Shared Context for Build and Runtime
&lt;/h2&gt;

&lt;p&gt;Cloud-Native Application Protection Platforms (CNAPP) like Sysdig are a key ingredient to an AppSec strategy. When sharing that runtime context with a build-time tool like Semgrep can be more effective.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Was this code deployed and if so which environment?&lt;/li&gt;
&lt;li&gt;Prioritize findings that have production relevance and exposure&lt;/li&gt;
&lt;li&gt;Link alerts to specific file, function, and team that introduced a risk&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The end result is fewer alerts, faster response, and better collaboration between teams.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://semgrep.dev/blog/2025/fix-what-matters-faster-how-semgrep-and-sysdig-are-unifying-security-from-code-to-runtime/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Learn more about the Sysdig + Semgrep integration&lt;/a&gt; &lt;/p&gt;




&lt;h2&gt;
  
  
  Evaluating a Security Tool’s Sensitivity
&lt;/h2&gt;

&lt;p&gt;The sensitivity of a tool is determined as the likelihood of over-reporting or under-reporting security findings.&lt;/p&gt;

&lt;p&gt;Security Research firm &lt;a href="https://semgrep.dev/blog/2025/security-research-comparing-semgrep-community-edition-and-semgrep-code-for-static-analysis/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Doyensec evaluated the benefits&lt;/a&gt; of graduating from Semgrep Community Edition to the Pro Engine. They saw between a 50% and 71% true positive rate accuracy boost.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://semgrep.dev/blog/2025/security-research-comparing-semgrep-community-edition-and-semgrep-code-for-static-analysis/" rel="noopener noreferrer"&gt;Read the Report&lt;/a&gt; &lt;/p&gt;




&lt;h2&gt;
  
  
  What is Variant Analysis?
&lt;/h2&gt;

&lt;p&gt;Securing software requires a comprehensive plan to find, fix, and prevent bugs that matter before build-time. Eugene Lim shared &lt;a href="https://semgrep.dev/blog/2025/finding-more-zero-days-through-variant-analysis/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;an excerpt from his upcoming book&lt;/a&gt; how to take a CVE and write Semgrep rules for finding variations in code implementations that might otherwise be missed.&lt;/p&gt;

&lt;p&gt;In a blog post, Eugene walks through an example of a CVE that impacted Expat, a C library used to parse XML files which demonstrates a pattern that can be used for any vulnerability disclosure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://semgrep.dev/blog/2025/finding-more-zero-days-through-variant-analysis/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Read the Excerpt&lt;/a&gt; &lt;/p&gt;




&lt;h2&gt;
  
  
  Restoring Confidence in Secure Development
&lt;/h2&gt;

&lt;p&gt;“The guidance wasn’t just accurate, it was built into our workflow, right where developers needed it. That made all the difference... Both developers and security engineers now have greater confidence in our shared process.”&lt;/p&gt;

&lt;p&gt;– Chris Holman, DevSecOps Engineer, Glasswall&lt;/p&gt;

&lt;p&gt;Read how &lt;a href="https://semgrep.dev/case-studies/glasswall/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Glasswall&lt;/a&gt;  didn’t just replace one tool with another but instead matured their AppSec program from reactive to streamlined, developer-first, and future-ready. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://semgrep.dev/case-studies/glasswall/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Read the Case Study&lt;/a&gt; &lt;/p&gt;




&lt;h2&gt;
  
  
  Leverage Static Analysis for Detection
&lt;/h2&gt;

&lt;p&gt;From our friends at &lt;a href="https://blog.trailofbits.com/2025/06/17/unexpected-security-footguns-in-gos-parsers/" rel="noopener noreferrer"&gt;Trail of Bits&lt;/a&gt;, a senior security engineer discussed how he looked for exploit patterns in Go’s JSON, XML, and YAML parsers. &lt;/p&gt;

&lt;p&gt;Additionally, he provided public rules to detect these patterns:&lt;/p&gt;

&lt;p&gt;semgrep -c r/trailofbits.go.unmarshal-tag-is-dash&lt;br&gt;
semgrep -c r/trailofbits.go.unmarshal-tag-is-omitempty&lt;/p&gt;

&lt;p&gt;Read the post &lt;a href="https://blog.trailofbits.com/2025/06/17/unexpected-security-footguns-in-gos-parsers/" rel="noopener noreferrer"&gt;Unexpected security footguns in Go’s parsers&lt;/a&gt; to learn more.&lt;/p&gt;




&lt;h2&gt;
  
  
  PHP Reachability
&lt;/h2&gt;

&lt;p&gt;We now have reachability coverage for PHP for all critical issues since 2017 and high-severity issues since May 2022! These rules are available for all PHP projects and further extends the &lt;a href="https://semgrep.dev/docs/supported-languages?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;supply chain reachability coverage&lt;/a&gt; from C#, Go, Java, JavaScript, Kotlin, Python, TypeScript, JSX, Ruby, Scala, and Swift.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://semgrep.dev/blog/2025/taming-the-elephant-introducing-reachability-analysis-for-php/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Read more in the PHP blog post&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  AI Assistant Memories
&lt;/h2&gt;

&lt;p&gt;If we can’t tell you what to fix, we won’t show it to you. Your time is too valuable. Development teams need clear, step-by-step remediation guidance. (&lt;a href="https://semgrep.dev/products/semgrep-code/assistant/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;AI Assistant&lt;/a&gt;) helps with prioritizing and with remediation guidance. &lt;/p&gt;

&lt;p&gt;Semgrep Assistant allows you to customize with &lt;a href="https://semgrep.dev/docs/semgrep-assistant/customize#add-memories" rel="noopener noreferrer"&gt;Memories&lt;/a&gt; so that policy decisions help tune results for higher accuracy over time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://semgrep.dev/docs/semgrep-assistant/customize?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Learn more about AI Memories&lt;/a&gt; &lt;/p&gt;




&lt;h2&gt;
  
  
  How to Get Started with Semgrep
&lt;/h2&gt;

&lt;p&gt;If you've only just learned about Semgrep, here's some ways to get started:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The &lt;a href="https://github.com/semgrep/semgrep" rel="noopener noreferrer"&gt;Semgrep Community Edition&lt;/a&gt; is free open-source software that powers many teams with basic functionality.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;a href="https://semgrep.dev/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Semgrep AppSec Platform&lt;/a&gt; capabilities are available to test on any project with fewer than ten (10) contributors for free. Just hop over to semgrep.dev, sign up, and follow the &lt;a href="https://semgrep.dev/docs/getting-started/quickstart-managed-scans?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt;. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have any questions or feedback, hop onto the &lt;a href="https://go.semgrep.dev/slack" rel="noopener noreferrer"&gt;Community Slack&lt;/a&gt; and let’s chat (I’m &lt;a class="mentioned-user" href="https://dev.to/j12y"&gt;@j12y&lt;/a&gt;)! If you want to talk to us virtually or see us in-person, check out the &lt;a href="https://semgrep.dev/events/" rel="noopener noreferrer"&gt;events page&lt;/a&gt; to see where we’ll be.&lt;/p&gt;

</description>
      <category>security</category>
      <category>php</category>
      <category>semgrep</category>
      <category>ai</category>
    </item>
    <item>
      <title>AI Code Assistant Memories, PHP Reachability, CVE Policies, and Benchmarking</title>
      <dc:creator>Jayson DeLancey</dc:creator>
      <pubDate>Tue, 24 Jun 2025 19:43:34 +0000</pubDate>
      <link>https://dev.to/semgrep/ai-memories-php-reachability-cve-policies-and-benchmarking-3naj</link>
      <guid>https://dev.to/semgrep/ai-memories-php-reachability-cve-policies-and-benchmarking-3naj</guid>
      <description>&lt;p&gt;I've rounded up some news and updates about Semgrep to make it easier to ship features, not vulnerabilities. &lt;/p&gt;

&lt;p&gt;Some of the stories captured include: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Memories&lt;/em&gt; as in applied AI that remembers your security decisions, as a way of storing policies for faster resolution time of vulnerabilities.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Reachability&lt;/em&gt; to help prioritize vulnerable supply chain dependencies that are executed rather than panic over vulnerabilities that are not called.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Benchmarking&lt;/em&gt; as a way of comparing performance release over release, whether for speed, coverage, accuracy, or other important metrics when choosing a solution.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Continue to learn more...&lt;/p&gt;




&lt;h2&gt;
  
  
  A Security Tool That Learns
&lt;/h2&gt;

&lt;p&gt;Identify Memories using &lt;a href="https://semgrep.dev/products/semgrep-code/assistant/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Semgrep Assistant&lt;/a&gt; and the AI model improves. The platform gets smarter about YOUR specific environment and policies. This effect compounds to make development teams more efficient by reducing false positives.&lt;/p&gt;

&lt;p&gt;Read more in the blog post &lt;a href="https://semgrep.dev/blog/2025/making-zero-false-positive-sast-a-reality-with-ai-powered-memory/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Is Zero False Positives a Reality?&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  PHP Reachability Analysis
&lt;/h2&gt;

&lt;p&gt;Reachability analysis dramatically reduces the noise from SCA alerts, by up to 98%. We’re excited to introduce &lt;a href="https://semgrep.dev/blog/2025/taming-the-elephant-introducing-reachability-analysis-for-php?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;the industry’s first reachability analysis for PHP&lt;/a&gt;, marking the 11th language with this capability.&lt;/p&gt;

&lt;p&gt;For additional coverage, see the docs about &lt;a href="https://semgrep.dev/docs/supported-languages?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;language support&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Vibe Coding and AI Security with MCP
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"There's a viber born every minute." &lt;br&gt;
-- P.T. Barnum (likely)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We can’t always trust the output of code generated by AI. When combined with security scanning, such as using the &lt;a href="https://mcp.semgrep.ai/" rel="noopener noreferrer"&gt;Semgrep MCP&lt;/a&gt; server, we can better manage risk with tools like Cursor – &lt;a href="https://semgrep.dev/blog/2025/giving-appsec-a-seat-at-the-vibe-coding-table/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;watch the demo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Replit takes the security of their customers seriously and has integrated Semgrep into their &lt;a href="https://semgrep.dev/blog/2025/replit-and-semgrep-secure-vibe-coding/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Security Scanner&lt;/a&gt;. &lt;/p&gt;




&lt;h2&gt;
  
  
  Graduating to Semgrep AppSec Platform
&lt;/h2&gt;

&lt;p&gt;We proudly sponsor continued support for &lt;a href="https://semgrep.dev/docs/contributing/semgrep-philosophy?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Semgrep Community Edition&lt;/a&gt;  which is why it continues to be a top performing free SAST tool used by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security researchers&lt;/li&gt;
&lt;li&gt;Pentesters&lt;/li&gt;
&lt;li&gt;Consultants&lt;/li&gt;
&lt;li&gt;Open-source developers&lt;/li&gt;
&lt;li&gt;Hobbyists&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For Application Security Engineers and Development Teams that take security seriously, you may need more. The updated &lt;a href="https://semgrep.dev/pricing?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Semgrep Pricing&lt;/a&gt; page clarifies where to find the features you need.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quarterly Release Summary
&lt;/h2&gt;

&lt;p&gt;Our &lt;a href="https://semgrep.dev/resources/whats-new/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Quarterly Release&lt;/a&gt; page pulls together highlights from the past few months of releases to &lt;a href="https://semgrep.dev/products/semgrep-code/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Code&lt;/a&gt; (SAST), &lt;a href="https://semgrep.dev/products/semgrep-supply-chain/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Supply Chain&lt;/a&gt; (SCA), and &lt;a href="https://semgrep.dev/products/semgrep-secrets/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Secrets&lt;/a&gt; (detection).&lt;/p&gt;




&lt;h2&gt;
  
  
  Use CVE as a Supply Chain Policy
&lt;/h2&gt;

&lt;p&gt;Want to block or comment for a specific set of CVEs crucial to your product? Choose from a list of CVEs generated from findings, or input a known CVE ID -- &lt;a href="https://semgrep.dev/docs/semgrep-supply-chain/dependency-search?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;dependency search&lt;/a&gt; is available by CVE ID or rule name. &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.amazonaws.com%2Fuploads%2Farticles%2Fmykqyts2la31lqsc49xf.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%2Fmykqyts2la31lqsc49xf.png" alt="Semgrep Supply Chain SCA Dependency Search" width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Benchmarking Source Code Scanning Speed
&lt;/h2&gt;

&lt;p&gt;If source-code scanning and static analysis slows down development, engineering teams won’t adopt it. Is Semgrep fast? &lt;strong&gt;Yes it is.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Learn how we think about performance at Semgrep in this blog post: &lt;a href="https://semgrep.dev/blog/2025/benchmarking-semgrep-performance-improvements/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Benchmarking Semgrep Performance Improvements&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Find this update and more open-source improvements in &lt;a href="https://github.com/semgrep/semgrep/releases" rel="noopener noreferrer"&gt;20+ releases&lt;/a&gt; so far this year.&lt;/p&gt;




&lt;h2&gt;
  
  
  Customizable PR / MR Comments
&lt;/h2&gt;

&lt;p&gt;Many developers review security findings directly as comments left in  merge or pull requests. In the Semgrep Platform settings tab, teams can customize these to add company-specific instructions, links to resources, or other helpful notes.&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.amazonaws.com%2Fuploads%2Farticles%2Fq7quf682pe6mfb5toqsr.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%2Fq7quf682pe6mfb5toqsr.png" alt="Semgrep Security Scan with PR and MR Comments" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See the &lt;a href="https://semgrep.dev/docs/category/pr-or-mr-comments?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;PR / MR Comments&lt;/a&gt; documentation for setting up Azure, GitHub, GitLab, or Bitbucket for examples of &lt;a href="https://semgrep.dev/docs/semgrep-appsec-platform/github-pr-comments#customize-pr-comments?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;custom comments&lt;/a&gt;.  &lt;/p&gt;




&lt;h2&gt;
  
  
  SoSafe Case Study
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;“We treat engineers as partners, not just stakeholders. Semgrep helps us meet them where they are.”&lt;br&gt;
– Mubasher Chaudhary, Application Security Engineer, SoSafe&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Learn more about how SoSafe evaluated tools for their security program in the &lt;a href="https://semgrep.dev/case-studies/securing-code-at-scale-without-slowing-developers/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;SoSafe Case Study&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Get Started with Semgrep
&lt;/h2&gt;

&lt;p&gt;If you've only just learned about Semgrep, here's some ways to get started:&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/semgrep/semgrep" rel="noopener noreferrer"&gt;Semgrep Community Edition&lt;/a&gt; is free open-source software that powers many teams with basic functionality.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://semgrep.dev/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Semgrep AppSec Platform&lt;/a&gt; capabilities are available to test on any project with fewer than ten (10) contributors for free. Just hop over to semgrep.dev, sign up, and follow the &lt;a href="https://semgrep.dev/docs/getting-started/quickstart-managed-scans?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;If you have any questions or feedback, hop onto the &lt;a href="https://go.semgrep.dev/slack" rel="noopener noreferrer"&gt;Community Slack&lt;/a&gt; and let’s chat (I’m &lt;a class="mentioned-user" href="https://dev.to/j12y"&gt;@j12y&lt;/a&gt;)! If you want to talk to us virtually or see us in-person, check out the &lt;a href="https://semgrep.dev/events/" rel="noopener noreferrer"&gt;events page&lt;/a&gt; to see where we’ll be.&lt;/p&gt;

</description>
      <category>security</category>
      <category>php</category>
      <category>ai</category>
      <category>semgrep</category>
    </item>
    <item>
      <title>Replit GenAI Security Scans and Shadow AI</title>
      <dc:creator>Jayson DeLancey</dc:creator>
      <pubDate>Tue, 27 May 2025 17:10:36 +0000</pubDate>
      <link>https://dev.to/semgrep/replit-genai-security-scans-and-shadow-ai-4kek</link>
      <guid>https://dev.to/semgrep/replit-genai-security-scans-and-shadow-ai-4kek</guid>
      <description>&lt;p&gt;A roundup of recent headlines about Semgrep in the past month.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ grep -rh -A 5 -m 10 “&amp;lt;h1&amp;gt;” semgrep-news.html | more
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Replit Partners with Semgrep for AI Security Scans
&lt;/h2&gt;

&lt;p&gt;Replit is an AI-powered platform that lets you create and deploy apps from a browser. This is great for dev teams to enable quick product development cycles. For security teams, well… like other LLM tools, this can introduce risks. Replit turned to Semgrep to power its security scanning, directly within the Replit IDE.&lt;/p&gt;

&lt;p&gt;Learn more in the blog post about the &lt;a href="https://semgrep.dev/blog/2025/replit-and-semgrep-secure-vibe-coding/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Replit + Semgrep partnership&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  RSAC Industry Leader Interviews
&lt;/h2&gt;

&lt;p&gt;The team had a great show at RSA and BSidesSF this year. We had a chance to turn the camera on and have a chat with some friends:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Phil Venables, Partner at Ballistic Ventures, shared his insights with Clint Gibler (Semgrep Head of Security Research) about the things he’s learned from senior security research roles at companies like Deutsche Bank, Goldman Sachs, Google, and more. &lt;a href="https://www.youtube.com/watch?v=U4qdFXtU4Lg" rel="noopener noreferrer"&gt;Watch the video interview&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Cristin Flynn Goodwin, Consultant with Good Harbour, shared her experiences for a legal perspective on cybersecurity with Tanya Janca (Semgrep Developer Advocate). &lt;a href="https://www.youtube.com/watch?v=rt2GcoBU94Q" rel="noopener noreferrer"&gt;Watch the video interview&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other interviews include &lt;a href="https://www.youtube.com/watch?v=VsiX-RPoBj4" rel="noopener noreferrer"&gt;Jason Haddix&lt;/a&gt; (Arcanum), &lt;a href="https://www.youtube.com/watch?v=MWdhiD3K-CM" rel="noopener noreferrer"&gt;Nariman Aga-Tagiyev&lt;/a&gt; (SecureHabits.nl), and &lt;a href="https://www.youtube.com/@semgrep/videos" rel="noopener noreferrer"&gt;more&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Shadow AI Scan for Unauthorized Usage
&lt;/h2&gt;

&lt;p&gt;Unaccounted for AI usage can lead to compliance violations, sensitive data exposure (including secret keys!), and many other GenAI security risks when not using a proper approval process. We’ve built a new ruleset to detect unauthorized use of AI and LLM libraries including OpenAI, Anthropic Claude, LangChain, HuggingFace, Grok, Gemini, Deepseek, and more.&lt;/p&gt;

&lt;p&gt;See the &lt;a href="https://semgrep.dev/shadowAI?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Semgrep Shadow AI&lt;/a&gt; page from RSAC to learn more.&lt;/p&gt;




&lt;h2&gt;
  
  
  Scaling Security and AI with AWS
&lt;/h2&gt;

&lt;p&gt;Cameron Smith, Sr. Security Solutions Architect at AWS, joined Jack Moxon, Staff Product Manager, to talk about rapid development and cloud-native deployment at speed. &lt;a href="https://www.youtube.com/watch?v=IdbTfBsU_bs" rel="noopener noreferrer"&gt;Video interview on Youtube&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Semgrep Rulez for Vibe Code
&lt;/h2&gt;

&lt;p&gt;We’ve partnered with Replit to incorporate Semgrep rules directly in a &lt;a href="https://semgrep.dev/blog/2025/replit-and-semgrep-secure-vibe-coding/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Security Scanner&lt;/a&gt; for AI generated code. This puts users of Replit one step ahead so that this doesn’t happen to you:&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.amazonaws.com%2Fuploads%2Farticles%2Fx5mjzp8ns1thqxtv5dm9.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%2Fx5mjzp8ns1thqxtv5dm9.png" alt="vibe coding attack" width="800" height="973"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For everybody else, the &lt;a href="https://github.com/semgrep/mcp/tree/main" rel="noopener noreferrer"&gt;Semgrep MCP server&lt;/a&gt; provides a path for any technology team to incorporate Semgrep security scans into their LLM generated source-code production workflows. This enables a secure-by-default AI solution. View the &lt;a href="https://github.com/semgrep/mcp/blob/main/README.md" rel="noopener noreferrer"&gt;README.md&lt;/a&gt; for setup instructions usable with tools like Anthropic, OpenAI, Cursor, Windsurf, Lovable, etc.&lt;/p&gt;




&lt;h2&gt;
  
  
  Rulesets for Customizing Security Checks
&lt;/h2&gt;

&lt;p&gt;Want to improve your security posture by writing custom Semgrep rules for your organization? &lt;/p&gt;

&lt;p&gt;Watch the &lt;a href="https://www.youtube.com/watch?v=3_0dUUzQHvA" rel="noopener noreferrer"&gt;Rule Writing 101&lt;/a&gt; (video) and &lt;a href="https://www.youtube.com/watch?v=0KldJD9SR5E" rel="noopener noreferrer"&gt;Rule Writing 201&lt;/a&gt; (video) to learn how step-by-step. The documentation for &lt;a href="https://semgrep.dev/docs/writing-rules/overview?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;writing rules&lt;/a&gt; goes into more detail on the pattern and rule syntax which you can test interactively in the &lt;a href="https://semgrep.dev/editor" rel="noopener noreferrer"&gt;Playground&lt;/a&gt;. The &lt;a href="https://academy.semgrep.dev/courses/custom-rules" rel="noopener noreferrer"&gt;Custom Rules&lt;/a&gt; course from Semgrep Academy goes even more in depth.&lt;/p&gt;

&lt;p&gt;Visit the &lt;a href="https://github.com/semgrep/semgrep-rules" rel="noopener noreferrer"&gt;semgrep-rules&lt;/a&gt; github repository to see examples or if you built rules that you are willing to share like &lt;a href="https://semgrep.dev/p/trailofbits" rel="noopener noreferrer"&gt;Trail of Bits&lt;/a&gt; and &lt;a href="https://semgrep.dev/p/gitlab" rel="noopener noreferrer"&gt;Gitlab&lt;/a&gt; have contributed.&lt;/p&gt;




&lt;h2&gt;
  
  
  FinTech and the Role of AI in Security
&lt;/h2&gt;

&lt;p&gt;What is different about security engineering in a FinTech context? Industry security veterans Rinki Sethi (BILL) and Lee Laslo (Alloy) share their perspective. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=7Rgu4wPYnsA" rel="noopener noreferrer"&gt;Watch the video interview.&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  AppSec for Builders: A Manifesto
&lt;/h2&gt;

&lt;p&gt;Luke O'Malley was interviewed at RSA about his manifesto for builders and the future of artificial intelligence. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“If you want to empower your builder, you need to give them agency... it’s not about control, it’s about empowerment. We want to notify them if they’re doing something risky and provide a guardrail and nudge them back onto the paved road—a safer path that still lets them move fast.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Watch the &lt;a href="https://www.youtube.com/watch?v=3dQGEsrlXow" rel="noopener noreferrer"&gt;video&lt;/a&gt; or read the &lt;a href="https://semgrep.dev/blog/2025/appsec-for-builders-a-manifesto-for-the-future-of-secure-code-development/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;blog post&lt;/a&gt; with highlights from the session.&lt;/p&gt;




&lt;h2&gt;
  
  
  Community Headlines
&lt;/h2&gt;

&lt;p&gt;It is fascinating to see all the ways other community projects are using Semgrep! &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DeepWiki uses AI to generate documentation, including the &lt;a href="https://deepwiki.com/semgrep/semgrep/1-overview" rel="noopener noreferrer"&gt;semgrep/semgrep&lt;/a&gt; open-source project. Helpful for those who want to contribute.&lt;/li&gt;
&lt;li&gt;Replit’s perspective on &lt;a href="https://blog.replit.com/safe-vibe-coding" rel="noopener noreferrer"&gt;The Safest Place for Vibe Coding&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Watch the recording of the &lt;a href="https://www.youtube.com/watch?v=c3osqxW7kqY" rel="noopener noreferrer"&gt;Fireside Chat with Tanya Janca and Laura Bell Main&lt;/a&gt;, founder of SafeStack.&lt;/li&gt;
&lt;li&gt;Meta’s PurpleLlama CyberSecEval project includes tools like CodeShield and Insecure Code Detector (ICD) to identify insecure coding practices such as LLM output and has built some custom rules as part of the project.&lt;/li&gt;
&lt;li&gt;Anthropic Case Study: &lt;a href="https://www.anthropic.com/customers/semgrep" rel="noopener noreferrer"&gt;How Semgrep delivers AI-powered code security with Claude in Amazon Bedrock&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Have a Semgrep story? &lt;a href="//devrel@semgrep.com"&gt;Share it with us&lt;/a&gt;!&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Get Started with Semgrep
&lt;/h2&gt;

&lt;p&gt;If you've only just learned about Semgrep, here's some ways to get started:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;a href="https://github.com/semgrep/semgrep" rel="noopener noreferrer"&gt;Semgrep Community Edition&lt;/a&gt; is free open-source software that powers many teams with basic functionality.&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://semgrep.dev/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Semgrep AppSec Platform&lt;/a&gt; capabilities are available to test on any project with fewer than ten (10) contributors for free. Just hop over to semgrep.dev, sign up, and follow the &lt;a href="https://semgrep.dev/docs/getting-started/quickstart-managed-scans?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have any questions or feedback, hop onto the &lt;a href="https://semgrep.slack.com/join/shared_invite/zt-2kyavz0b6-7rgTuOZAV0XiQ2nDynCGrA#/shared-invite/email" rel="noopener noreferrer"&gt;Community Slack&lt;/a&gt; and let’s chat (I’m &lt;a class="mentioned-user" href="https://dev.to/j12y"&gt;@j12y&lt;/a&gt;)! If you want to talk to us virtually or see us in-person, check out the &lt;a href="https://semgrep.dev/events/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;events page&lt;/a&gt; to see where we’ll be.&lt;/p&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>semgrep</category>
    </item>
    <item>
      <title>Product Engineers Should Ship Fast AND Secure Vibe Generated Code</title>
      <dc:creator>Jayson DeLancey</dc:creator>
      <pubDate>Fri, 23 May 2025 21:16:20 +0000</pubDate>
      <link>https://dev.to/semgrep/product-engineers-should-ship-fast-and-secure-vibe-generated-code-1mdg</link>
      <guid>https://dev.to/semgrep/product-engineers-should-ship-fast-and-secure-vibe-generated-code-1mdg</guid>
      <description>&lt;p&gt;It’s one thing to be embarrassed by the first version of your product capabilities and quite another to ship something for early feedback only to realize you embarrassed your company, your now lost customer, and your own reputation. A &lt;strong&gt;Product Engineer&lt;/strong&gt; is a Software Engineer who also takes on Product Owner/Product Manager responsibilities. Product Engineers are being asked to do more tasks in less time, so turn to using tools like GenAI to vibe code the way to an MVP. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“If you are not embarrassed by the first exploit of your product, you’ve launched too late.” –Henry Ford (while vibe coding probably)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;LLM coding assistants like &lt;a href="https://replit.com/" rel="noopener noreferrer"&gt;Replit&lt;/a&gt;, &lt;a href="https://github.com/semgrep/mcp" rel="noopener noreferrer"&gt;Cursor&lt;/a&gt;, Lovable, V0, Bolt, Windsurf, Retool, Devin and more can be used to crank out code faster than any security expert can keep up. Automated application security scans while developing are the solution to this problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data and Model Poisoning of LLM-Generated Code
&lt;/h2&gt;

&lt;p&gt;Let’s consider the problem.&lt;/p&gt;

&lt;p&gt;Most software engineers familiar with secure coding are aware of &lt;strong&gt;cross-site scripting (XSS)&lt;/strong&gt; and &lt;strong&gt;cross-site request forgery (CSRF)&lt;/strong&gt; attacks. Even many LLMs will get these right because they are common enough, but &lt;strong&gt;large language models (LLMs)&lt;/strong&gt; may also innocently use incorrectly implemented code when training or more sinisterly, be subject to data poisoning.&lt;/p&gt;

&lt;p&gt;Training Data Poisoning refers to intentionally manipulating training data to introduce vulnerabilities and exploitable patterns that LLMs will consume. It's a constantly moving problem, unfortunately, and LLMs will continue to evolve as do the attacks and newly discovered vulnerabilities.&lt;/p&gt;

&lt;p&gt;How do we move forward with secure-by-default approaches to code generated by AI?&lt;/p&gt;

&lt;h2&gt;
  
  
  Semgrep Secure Scanning with Replit
&lt;/h2&gt;

&lt;p&gt;Semgrep is a fast static analysis tool to identify security vulnerabilities in source code before shipping to production. Replit recently introduced a &lt;a href="https://docs.replit.com/replit-workspace/workspace-features/security-scanner" rel="noopener noreferrer"&gt;Security Scanner&lt;/a&gt; to analyze dependencies and source-code for vulnerabilities as a step before deployment. The findings from Semgrep are used by the Replit Agent to fix the vulnerabilities right away.&lt;/p&gt;

&lt;p&gt;Replit is using the open-source community edition of Semgrep rules for standard vulnerability detection such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SQL Injection&lt;/li&gt;
&lt;li&gt;Insecure Dependencies&lt;/li&gt;
&lt;li&gt;Cross-site Scripting (XSS)&lt;/li&gt;
&lt;li&gt;Hard-coded Credentials (Secrets)&lt;/li&gt;
&lt;li&gt;and more…&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Does this make Replit &lt;a href="https://blog.replit.com/safe-vibe-coding" rel="noopener noreferrer"&gt;the Safest Place for Vibe Coding&lt;/a&gt;? Their approach to beefing up security with App History, Replit Auth, Rollback previews, and &lt;a href="https://semgrep.dev/blog/2025/replit-and-semgrep-secure-vibe-coding/" rel="noopener noreferrer"&gt;Semgrep Secure Scans&lt;/a&gt; is a sensible approach for rapid development and deployment.&lt;/p&gt;

&lt;p&gt;Secure scanning is available on certain plans using your &lt;a href="//replit.com"&gt;Replit account&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Semgrep Agentic AI Approach with a Cursor MCP Server
&lt;/h2&gt;

&lt;p&gt;Taking a similar approach, Cursor can support a &lt;a href="https://dev.to/semgrep/vibe-check-securing-ai-generated-code-using-mcp-4d9n"&gt;Model Context Protocol (MCP)&lt;/a&gt; server that plugs in to the development environment. Then, any generated code can be combined with a Semgrep scan to identify vulnerabilities and then immediately acted upon. In this way, the IDE acts like an agent, running the Semgrep source code scan on its own generated results and then applying fixes.&lt;/p&gt;

&lt;p&gt;Source code for the server is available from the Github repo &lt;a href="https://github.com/semgrep/mcp" rel="noopener noreferrer"&gt;semgrep/mcp&lt;/a&gt; after you sign up for a &lt;a href="https://semgrep.dev/login" rel="noopener noreferrer"&gt;Semgrep account&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shift-Left for Product Engineers
&lt;/h2&gt;

&lt;p&gt;Product Managers must understand all the business requirements, both functional and non-functional like security. They also must prove their ideas quickly and iteratively, so low-code generative solutions are an effective strategy. It took the industry a long time to recognize and begin shifting security concerns left to put up some guardrails. &lt;/p&gt;

&lt;p&gt;LLMs are accelerating development and evolving quickly. Our approach to secure-by-default artificial intelligent agents should be to always scan and then act on the findings. &lt;/p&gt;

&lt;p&gt;It isn't just the scan though, its the team of security researchers who are watching and updating the rules to protect us from exploitation and put in place those safeguards while still allowing innovating on product.&lt;/p&gt;

&lt;p&gt;For more information, check out some of these resources.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://semgrep.dev/blog/2025/replit-and-semgrep-secure-vibe-coding/" rel="noopener noreferrer"&gt;From idea to (secure) app: Semgrep + Replit&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.replit.com/tutorials/vibe-code-security-checklist" rel="noopener noreferrer"&gt;Security checklist for vibe coding&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=o76diiNCJwA" rel="noopener noreferrer"&gt;Safe Vibe Coding on Replit&lt;/a&gt; (video demo)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Semgrep maintains the open-source static application security testing (SAST) engine and continuously improves upon the professional security rules to keep pace with the latest security concerns.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>semgrep</category>
      <category>replit</category>
      <category>security</category>
    </item>
    <item>
      <title>RSA Plans, Vibe Coding, AppSec Industry Survey, Anthropic and a CVE for vLLM</title>
      <dc:creator>Jayson DeLancey</dc:creator>
      <pubDate>Mon, 21 Apr 2025 21:30:00 +0000</pubDate>
      <link>https://dev.to/semgrep/rsa-plans-vibe-coding-appsec-industry-survey-anthropic-and-a-cve-for-vllm-2h3h</link>
      <guid>https://dev.to/semgrep/rsa-plans-vibe-coding-appsec-industry-survey-anthropic-and-a-cve-for-vllm-2h3h</guid>
      <description>&lt;p&gt;This is another installment of the top ten things happening at Semgrep recently that I think you will want to know about.&lt;/p&gt;




&lt;h2&gt;
  
  
  Let Them Build
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://semgrep.dev/about/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Luke O’Malley&lt;/a&gt;, one of the founders of Semgrep shared his vision for how secure software starts with the builders who write it. Read the &lt;a href="https://semgrep.dev/build/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;AppSec for Builders Manifesto&lt;/a&gt; and share where you agree and where you don’t. Post on social media and tag us with &lt;a href="https://semgrep.dev/build/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;#LetThemBuild&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Reduce the Risks of Vibe Coding
&lt;/h2&gt;

&lt;p&gt;Vibe coding has moved from a meme to the reality many security teams face when reducing risk from AI-generated source code. We’ve built an MCP server to help integrate &lt;a href="https://semgrep.dev/blog/2025/giving-appsec-a-seat-at-the-vibe-coding-table/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;security guardrails into the development workflow&lt;/a&gt;. Visit the &lt;a href="https://github.com/semgrep/mcp" rel="noopener noreferrer"&gt;semgrep/mcp&lt;/a&gt; repository for instructions and source code. See how it works with this &lt;a href="https://semgrep.dev/blog/2025/giving-appsec-a-seat-at-the-vibe-coding-table/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;video demo of a Cursor integration&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  RSA and BSides SF
&lt;/h2&gt;

&lt;p&gt;If you are coming to San Francisco please visit and find out about the latest AI advancements at Semgrep. Visit our &lt;a href="https://semgrep.dev/events/rsa/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;RSA event page&lt;/a&gt; to learn where we’ll be and when. We’re hosting an exclusive &lt;a href="https://semgrep.dev/rsa?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Pre-BSides SF + RSA Party&lt;/a&gt;, an Alice &amp;amp; Bob Learn Secure Coding &lt;a href="https://semgrep.dev/events/rsa/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;book signing&lt;/a&gt; with Tanya Janca, special dinners, and more. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review the &lt;a href="https://semgrep.dev/events/rsa/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;schedule&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://semgrep.dev/events/exclusive-preview-of-rsa-2025/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Getting Ready for RSA 2025 Webinar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Schedule an &lt;a href="https://semgrep.dev/events/rsa/#form?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;on-site demo&lt;/a&gt; and get a custom hat&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’m looking forward to seeing you all at BSides SF and RSA in-person.&lt;/p&gt;




&lt;h2&gt;
  
  
  Take the Free AppSec Survey and Course
&lt;/h2&gt;

&lt;p&gt;Want to get some advice on your application security program? Take this &lt;a href="https://semgrep.dev/blog/2025/maturing-your-application-security-program-survey/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;interactive survey&lt;/a&gt; that will give you some tips &amp;amp; tricks to level-up your AppSec program.&lt;/p&gt;

&lt;p&gt;From a review on the &lt;a href="https://academy.semgrep.dev/courses/AppSec-1" rel="noopener noreferrer"&gt;Application Security Foundations Course&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“What I love about this course is that it gave me a refresher of foundations of appsec, goals, and tools that I can recommend to incorporate” –Recent Reviewer&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Share the &lt;a href="https://academy.semgrep.dev/courses/AppSec-1" rel="noopener noreferrer"&gt;free security course&lt;/a&gt; with your team. &lt;/p&gt;




&lt;h2&gt;
  
  
  CVE-2025-29783 for vLLM
&lt;/h2&gt;

&lt;p&gt;We’ve added a CVE to our &lt;a href="https://semgrep.dev/docs/trophy-case?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;trophy case&lt;/a&gt;. Recently, &lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2025-29783" rel="noopener noreferrer"&gt;CVE-2025-29783&lt;/a&gt; was created with credit going to an AI Security Researcher at Nvidia who uncovered the AI attack surface while using Semgrep. &lt;/p&gt;

&lt;p&gt;The &lt;a href="https://semgrep.dev/r?q=python.lang.security.deserialization.pickle.avoid-pickle" rel="noopener noreferrer"&gt;python.lang.security.deserialization.pickle.avoid-pickle&lt;/a&gt; rule was the clue.&lt;/p&gt;




&lt;h2&gt;
  
  
  One Typo Away from a Really Bad No Good Day
&lt;/h2&gt;

&lt;p&gt;A software library as a dependency can quickly become a trojan horse to more malicious intentions. A developer is one typo away from a &lt;a href="https://semgrep.dev/blog/2025/beyond-vulnerabilities-detect-malicious-dependencies-in-your-supply-chain/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;malicious dependency&lt;/a&gt; entering the code base. An approach to malicious dependency detection relies on &lt;a href="https://semgrep.dev/products/semgrep-supply-chain/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Supply Chain SCA&lt;/a&gt; and &lt;a href="https://semgrep.dev/blog/2024/sca-reachability-analysis-methods/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;reachability analysis&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Modern AppSec programs, like Figma's, rely on a paved road with secure guardrails for fast and safe development." &lt;br&gt;
-- Devdatta Akhawe, Head of Security, Figma&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Check out the &lt;a href="https://semgrep.dev/docs/semgrep-supply-chain/malicious-dependencies?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;docs on malicious dependencies&lt;/a&gt; to learn more about the 30,000 new rules and supported ecosystems.&lt;/p&gt;




&lt;h2&gt;
  
  
  Click Into Dashboard Metrics
&lt;/h2&gt;

&lt;p&gt;False positives are a problem and they get in the way of addressing true vulnerabilities while eroding trust. The &lt;a href="https://semgrep.dev/blog/2024/why-sast-tools-need-to-be-customizable/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Fix Rate&lt;/a&gt;, number of findings fixed in development relative to the number identified, can be a helpful north star metric for AppSec teams to evaluate &lt;a href="https://semgrep.dev/docs/semgrep-code/triage-remediation#removed-findings?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;triage and remediation&lt;/a&gt; when using Semgrep.&lt;/p&gt;

&lt;p&gt;New in private beta, we’re providing a &lt;a href="https://www.linkedin.com/posts/semgrep_semgrep-datainsights-securecode-activity-7315406779763380225-9Rf_?utm_source=share&amp;amp;utm_medium=member_desktop&amp;amp;rcm=ACoAAAB8ApAB1qJzmc5gdB4qNdOpWYYh-IEE2iQ" rel="noopener noreferrer"&gt;preview of clickable charts&lt;/a&gt; that allow for deeper reviews into metrics like backlog totals, guardrail activities, etc. so that you can review &lt;a href="https://semgrep.dev/products/semgrep-code/assistant/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;AI Assistant&lt;/a&gt; findings more quickly to understand why, share wins, and demonstrate progress.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://semgrep.dev/contact/demo/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Book a demo&lt;/a&gt; to chat more about these upcoming dashboard improvements.&lt;/p&gt;




&lt;h2&gt;
  
  
  Community News
&lt;/h2&gt;

&lt;p&gt;We love hearing about some of the novel things the community is doing with Semgrep. Have you done something that is helping you secure your development team’s workflow? Let us know. Reply to this email or DM me on &lt;a href="https://semgrep.slack.com/join/shared_invite/zt-2kyavz0b6-7rgTuOZAV0XiQ2nDynCGrA#/shared-invite/email" rel="noopener noreferrer"&gt;Semgrep Community Slack&lt;/a&gt; so we can highlight and share what you’ve learned.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Trail of Bits&lt;/strong&gt; shares updates to their community rules which can be found in the &lt;a href="https://semgrep.dev/p/trailofbits" rel="noopener noreferrer"&gt;Semgrep Registry&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GuardDog&lt;/strong&gt; is an &lt;strong&gt;OpenSSF&lt;/strong&gt; project which recently shared how they use &lt;a href="https://github.com/semgrep/semgrep-rules" rel="noopener noreferrer"&gt;Semgrep rules&lt;/a&gt; to uncover complex behavior patterns in supply chain security
&lt;/li&gt;
&lt;li&gt;Semgrep is featured in an &lt;a href="http://anthropic.com/customers/semgrep" rel="noopener noreferrer"&gt;Anthropic case study&lt;/a&gt; about &lt;a href="https://semgrep.dev/products/semgrep-code/assistant/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;AI Assistant&lt;/a&gt; capabilities&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Mastering Security Headers
&lt;/h2&gt;

&lt;p&gt;Scott Helme, founder of Security Headers and Tanya Janca will be diving deep into &lt;a href="https://semgrep.dev/events/mastering-security-headers/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;mastering security headers&lt;/a&gt; in a webinar on April 22. Join live to ask questions and get additional insights. You should also consider sharing the &lt;a href="https://academy.semgrep.dev/courses/security-headers" rel="noopener noreferrer"&gt;free security headers course&lt;/a&gt; with your team.&lt;/p&gt;

&lt;p&gt;There are also other upcoming webinars including &lt;a href="https://semgrep.dev/events/how-fintechs-can-scale-securely/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Scaling Security for FinTech&lt;/a&gt; when dealing with regulatory compliance. Elliot Colquhoun, VP of Information Security and IT at &lt;a href="https://semgrep.dev/events/how-fintechs-can-scale-securely/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Airwallex&lt;/a&gt; will join to share perspectives.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Get Started with Semgrep
&lt;/h2&gt;

&lt;p&gt;If you've only just learned about Semgrep, here's some ways to get started:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The &lt;a href="https://github.com/semgrep/semgrep" rel="noopener noreferrer"&gt;Semgrep Community Edition&lt;/a&gt; is free open-source software that powers many teams with basic functionality.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;a href="https://semgrep.dev/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Semgrep AppSec Platform&lt;/a&gt; capabilities are available to test on any project with fewer than ten (10) contributors for free. Just hop over to &lt;a href="https://semgrep.dev?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;semgrep.dev&lt;/a&gt;, sign up, and follow the &lt;a href="https://semgrep.dev/docs/getting-started/quickstart-managed-scans?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt;. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have any questions or feedback, hop onto the &lt;a href="https://semgrep.slack.com/join/shared_invite/zt-2kyavz0b6-7rgTuOZAV0XiQ2nDynCGrA#/shared-invite/email" rel="noopener noreferrer"&gt;Community Slack&lt;/a&gt; and let’s chat!&lt;/p&gt;

</description>
      <category>semgrep</category>
      <category>security</category>
      <category>devops</category>
      <category>ai</category>
    </item>
    <item>
      <title>SAST vs SCA: Choosing the Right Source Code Security Scanning Tools</title>
      <dc:creator>Jayson DeLancey</dc:creator>
      <pubDate>Thu, 17 Apr 2025 18:23:30 +0000</pubDate>
      <link>https://dev.to/semgrep/sast-vs-sca-choosing-the-right-source-code-security-scanning-tools-f0i</link>
      <guid>https://dev.to/semgrep/sast-vs-sca-choosing-the-right-source-code-security-scanning-tools-f0i</guid>
      <description>&lt;p&gt;Engineering teams want to satisfy security teams. Security teams want to be seen as value-added and not a nuisance or distraction to development. The threat from not addressing application security is real and can be scary, so everybody needs to work together to solve the problem. Two essential approaches are foundational pillars of an integrated software development process. &lt;strong&gt;Static Application Security Testing&lt;/strong&gt; (SAST) and &lt;strong&gt;Software Composition Analysis&lt;/strong&gt; (SCA). &lt;/p&gt;

&lt;p&gt;What’s the difference between these approaches and which should you use? &lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Static Code Scanning Tools: What is SAST?
&lt;/h2&gt;

&lt;p&gt;A &lt;a href="https://semgrep.dev/products/semgrep-code?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Static Application Security Testing (SAST)&lt;/a&gt; tool can analyze your code without executing it, scanning for potential security vulnerabilities, bugs, and code quality issues early in the development process. SAST tools examine source code acting as an automated security expert, reviewing each line of code. This doesn’t replace a Security Engineer but helps accelerate the discovery of vulnerabilities and the confidence in code being ready for release.&lt;/p&gt;

&lt;p&gt;Some key features of a good SAST tool:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Source Code Static Analysis&lt;/strong&gt;: An engine to parse and interpret the syntax across files and functions of a proprietary code base to uncover risks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Language Support&lt;/strong&gt;: Coverage for any programming languages and frameworks used during development should be supported by the SAST tool and appropriate for your environment(s).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integration with Dev Environment&lt;/strong&gt;: Work seamlessly with any existing developer tooling like IDEs, PR/MR comments, CI/CD pipelines, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customization&lt;/strong&gt;: An internal application requires different security considerations than a massively popular financial application. Customizing security policies to address relevant threats for a specific context is more valuable than generic standards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Taint Tracking&lt;/strong&gt;: Analysis of the flow of tainted data such as untrusted user input and any expressions that operate upon it that may be exploited.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is one thing to find vulnerabilities, but remediation guidance is also important to provide sample code for how to address an issue. Some common issues like SQL injection, cross-site scripting (XSS), or insecure authentication patterns may be common knowledge, but there are many obfuscated ways somebody might be able to exploit logic in software that isn’t immediately obvious to every developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What About Software Composition Analysis (SCA)?
&lt;/h2&gt;

&lt;p&gt;While SAST tools focus on the first-party code you’ve written, &lt;a href="https://semgrep.dev/products/semgrep-supply-chain?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Software Composition Analysis (SCA)&lt;/a&gt; tools examine any third-party dependencies used in the application. This software supply chain often includes open-source dependencies that in turn rely on additional open-source dependencies. Some estimates say that dependencies alone account for over 80% of the source code that is being executed as part of an application.&lt;/p&gt;

&lt;p&gt;What matters for SCA tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dependency Scanning&lt;/strong&gt;: At a minimum, identify vulnerabilities in any third-party libraries and packages. Even if a library was fine yesterday doesn’t mean a new issue wasn’t discovered and being exploited today.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SBOM Generation&lt;/strong&gt;: A Software Bill of Materials (SBOM) is often required for compliance reasons to track all components. Some build tools create lockfiles or manifests, but that is not guaranteed. A good SCA tool shouldn’t rely only on lockfiles to detect vulnerabilities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License Compliance&lt;/strong&gt;: Certain open-source licenses may require open-sourcing proprietary code if they are integrated or modified. For this reason and many more, some organizations have limitations around acceptable licensing that must be enforced across the organization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vulnerability Advisories&lt;/strong&gt;: An extensive database of common vulnerabilities and exposures (CVE) is an important place to start. Visibility into exploit prediction scoring (EPSS) can help with prioritizing where to place effort.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reachability Analysis&lt;/strong&gt;: Simply importing a package could be an issue with certain malicious software, but in most cases vulnerabilities may only exist in specific functions. If you don’t use those functions you aren’t at risk. Prioritizing security issues that are reachable over updates that don’t have as much immediate benefit can be helpful context for prioritizing return on effort. Transitive Reachability is a consideration for not just direct dependencies, but dependencies of your dependencies, and so on.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Prioritization of dependencies becomes important. On many projects, you might get a bot message about all the compromised versions of software, but the upgrade path may not be clear because it might require code changes. Remediation advice that helps prioritize critical issues from the noise is super helpful and will save you a lot of time.&lt;/p&gt;

&lt;h2&gt;
  
  
  SAST vs. SCA: Why You Need Both
&lt;/h2&gt;

&lt;p&gt;It isn’t a “SAST vs SCA” debate, the approaches to discovering security risks are complementary. Without a SAST tool, you are unaware of vulnerabilities in your codebase. Without SCA, you’re ignoring risks from compromised third-party code you may not be as familiar with, but can still cause significant harm.&lt;/p&gt;

&lt;p&gt;For code coverage, a SAST checks your code and SCA checks any third-party dependencies (the code you did not write). &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.amazonaws.com%2Fuploads%2Farticles%2Fgig6f2f5f7aypyq5xcje.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%2Fgig6f2f5f7aypyq5xcje.png" alt="SAST vs. SCA Code Security Scanning" width="559" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All vulnerabilities are important, but there are only so many hours in the day so dev teams must ruthlessly prioritize and choose where to focus attention.&lt;/p&gt;

&lt;h2&gt;
  
  
  SAST and SCA: A Complete Platform Approach
&lt;/h2&gt;

&lt;p&gt;Security-aware teams need platforms that address both static analysis and software composition analysis.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Use &lt;a href="https://semgrep.dev/products/semgrep-code?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Semgrep&lt;/a&gt; (SAST) to scan any code developed by you and your team. Semgrep’s &lt;a href="https://github.com/semgrep/semgrep" rel="noopener noreferrer"&gt;Community Edition&lt;/a&gt; is open-source and remains a free SAST solution that is accessible to small teams. A &lt;a href="https://semgrep.dev/pricing?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;subscription&lt;/a&gt; is necessary for larger code bases with many contributors and enterprise-grade security needs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Layer on &lt;a href="https://semgrep.dev/products/semgrep-supply-chain?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Semgrep Supply Chain&lt;/a&gt; (SCA) to audit coverage for all the code your team did not write. When combined with step 1, now you've analyzed 100% of the code that will run.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Integrate both into a &lt;a href="https://semgrep.dev/docs/category/scan-repositories-with-the-appsec-platform?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;CI/CD pipeline&lt;/a&gt; or use &lt;a href="https://semgrep.dev/docs/getting-started/quickstart-managed-scans?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;managed scanning&lt;/a&gt; for quick continuous protection.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The best security platform is the one that isn’t painful for development teams to actually use. A focus on speed, ease of use, and developer experience should be the evaluation criteria when making any tooling choices so that security is a natural part of the development process, not an obstacle to shipping.&lt;/p&gt;

&lt;p&gt;Learn more about Semgrep and best practices for rolling it out to software teams by scheduling a &lt;a href="https://semgrep.dev/contact/demo?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;demo&lt;/a&gt; or signing up for a &lt;a href="https://semgrep.dev/login?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;free account&lt;/a&gt; to evaluate it yourself.&lt;/p&gt;

</description>
      <category>security</category>
      <category>semgrep</category>
      <category>devops</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Vibe Check: Securing AI-Generated Code Using MCP</title>
      <dc:creator>Jayson DeLancey</dc:creator>
      <pubDate>Mon, 14 Apr 2025 17:00:00 +0000</pubDate>
      <link>https://dev.to/semgrep/vibe-check-securing-ai-generated-code-using-mcp-4d9n</link>
      <guid>https://dev.to/semgrep/vibe-check-securing-ai-generated-code-using-mcp-4d9n</guid>
      <description>&lt;p&gt;Using generative artificial intelligence is a boon for the experimental nature that comes from building software. The unfortunate truth is that AI-generated code suffers from some of the same issues a software developer often faces, rapid prototyping of new features prioritizes fast delivery over securely implementing new features. This is a great use case for tools like Semgrep that are purpose-built to catch security vulnerabilities by scanning source code.&lt;/p&gt;

&lt;p&gt;Let’s start by getting some terminology out of the way and then below is a video demo for how the workflow all comes together when integrated so that a source code scanning tool like &lt;a href="https://semgrep.dev/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Semgrep&lt;/a&gt; can add security checking to the AI-generated code from a tool like Cursor.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Vibe Coding
&lt;/h2&gt;

&lt;p&gt;What started as a social media meme has become synonymous with an iterative workflow using an AI assistant to rapidly generate source code. This approach is accessible to many regardless of experience as a software developer by using an LLM and natural language prompts.&lt;/p&gt;

&lt;p&gt;A key challenge is that the source-code generated by this approach is &lt;a href="https://semgrep.dev/blog/2025/giving-appsec-a-seat-at-the-vibe-coding-table/" rel="noopener noreferrer"&gt;easy for hackers and mischief-makers to exploit security vulnerabilities&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Cursor
&lt;/h2&gt;

&lt;p&gt;Cursor has been gaining momentum as an integrated development environment fork of Visual Studio Code that has been optimized for the type of iterative vibe coding development workflow. Cursor has built-in AI chat and code generation that supports a vibe coding workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Semgrep Used For
&lt;/h2&gt;

&lt;p&gt;Semgrep is a fast, powerful static analysis tool that uses a rule-based engine to scan source-code and identify security vulnerabilities, bugs, and other code quality issues. It is used by many enterprises and developers as part of a traditional software development lifecycle. There is a &lt;a href="https://github.com/semgrep/semgrep" rel="noopener noreferrer"&gt;free open-source community edition&lt;/a&gt; that can be used for scanning individual source code listings as well as a &lt;a href="https://semgrep.dev/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;managed platform&lt;/a&gt; and services for more sophisticated and professional development teams and workflows.&lt;/p&gt;

&lt;p&gt;Semgrep supports most popular programming languages with semantically aware searches to ensure a high signal to noise ratio when it comes to identifying security flaws.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is MCP Used For
&lt;/h2&gt;

&lt;p&gt;Similar to design patterns that have been used when architecting web applications, MCP provides an open standard for controlling how AI Models behave. It defines a set of APIs that act as a bridge or intermediary between web services and an application.&lt;/p&gt;

&lt;p&gt;The reason this is important is that it creates a standardized protocol for AI models to interact with web services, database instances, local tools, etc. that can provide additional data sources that provide context to the model without the model itself needing to build a custom integration with each one.&lt;/p&gt;

&lt;p&gt;The end-user who is vibe coding with Cursor doesn’t need to fully understand how MCP works, it is the context service and the IDE that are using it as an intermediary. While the subsequent example uses Cursor, the value of MCP is it also can be used with Copilot, Windsurf, Claude Desktop, OpenAI, or any MCP client. It also lets us integrate services like Semgrep into the LLM context.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting Up a Security-Aware Semgrep MCP Server
&lt;/h2&gt;

&lt;p&gt;When this all comes together, the Cursor IDE will use any configured MCP integrations as additional context for working with the LLM. To accomplish this, you’ll host a small server that can handle the protocol to interact with Semgrep. &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.amazonaws.com%2Fuploads%2Farticles%2Fhk4rjcwalooewyzpg8ur.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%2Fhk4rjcwalooewyzpg8ur.png" alt="Semgrep MCP Setup with Cursor"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are complete instructions and troubleshooting tips in the &lt;a href="https://github.com/semgrep/mcp/tree/main" rel="noopener noreferrer"&gt;semgrep/mcp&lt;/a&gt; repository &lt;strong&gt;README&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Access Your Semgrep API Key
&lt;/h3&gt;

&lt;p&gt;You’ll need to sign in or &lt;a href="https://semgrep.dev/login?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;sign-up for a Semgrep.dev account&lt;/a&gt; in order to get an API Token.&lt;/p&gt;

&lt;p&gt;Example for &lt;strong&gt;~/.cursor/mcp.json&lt;/strong&gt; but any method of setting the environment will work:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"SEMGREP_APP_TOKEN"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;token&amp;gt;"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  2. Run the Semgrep MCP Server
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;semgrep-mcp&lt;/strong&gt; server is written in Python so can be installed with a package manager like &lt;code&gt;uv&lt;/code&gt;. There is also a docker container that can be pulled:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="nt"&gt;--rm&lt;/span&gt; ghcr.io/semgrep/mcp &lt;span class="nt"&gt;-t&lt;/span&gt; stdio 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  3. Integrate the Server with Cursor
&lt;/h3&gt;

&lt;p&gt;You’ll also modify the &lt;strong&gt;~/.cursor/mcp.json&lt;/strong&gt; to include instructions for running semgrep:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"semgrep"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"uvx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"semgrep-mcp"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  4. Give it a try
&lt;/h3&gt;

&lt;p&gt;That’s it, just three steps. The semgrep-mcp server is &lt;a href="https://github.com/semgrep/mcp" rel="noopener noreferrer"&gt;open-source&lt;/a&gt; if you want to learn more about how it works.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo of a Semgrep Cursor MCP Workflow
&lt;/h2&gt;

&lt;p&gt;If all goes well, your experience should be similar to this video recording:&lt;/p&gt;


&lt;div&gt;
  &lt;iframe src="https://loom.com/embed/8535d72e4cfc4e1eb1e03ea223a702df"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;



&lt;p&gt;For additional information, questions about the project, or any trouble getting the demo working…&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Drop into the &lt;a href="https://semgrep.slack.com/join/shared_invite/zt-2kyavz0b6-7rgTuOZAV0XiQ2nDynCGrA#/shared-invite/email" rel="noopener noreferrer"&gt;community slack&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Schedule time for a &lt;a href="https://semgrep.dev/contact/demo?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;demo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Open an issue or pull request at &lt;a href="https://github.com/semgrep/mcp/issues" rel="noopener noreferrer"&gt;semgrep/mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Read more about &lt;a href="https://semgrep.dev/blog/2025/giving-appsec-a-seat-at-the-vibe-coding-table/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Giving AppSec a Seat at the Vibe Coding Table&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>security</category>
      <category>semgrep</category>
      <category>ai</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Getting Started with SAST and Semgrep CLI</title>
      <dc:creator>Jayson DeLancey</dc:creator>
      <pubDate>Fri, 11 Apr 2025 23:30:00 +0000</pubDate>
      <link>https://dev.to/semgrep/getting-started-with-sast-and-semgrep-cli-1cc1</link>
      <guid>https://dev.to/semgrep/getting-started-with-sast-and-semgrep-cli-1cc1</guid>
      <description>&lt;p&gt;Securing software is difficult and not always top of mind when developing an application. A security engineer at a large bank once told our team that if its development stopped, he calculated it would still take over 100 years for them to get through their vulnerability backlog using traditional &lt;strong&gt;Static Application Security Testing (SAST)&lt;/strong&gt; tools. &lt;a href="https://semgrep.dev?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Semgrep&lt;/a&gt; solves this problem by understanding the semantics and cutting through the noise.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Semgrep?
&lt;/h2&gt;

&lt;p&gt;Semgrep is used to find application security vulnerabilities through enforced guardrails and coding standards. Semgrep &lt;em&gt;Community Edition&lt;/em&gt; is a fast, open-source, static code analysis engine at the heart of the services. While a common tool like &lt;code&gt;grep&lt;/code&gt; can search with regular expressions to match exact strings, Semgrep understands the semantics of source code to identify patterns and data flow which helps remove false positives.&lt;/p&gt;

&lt;p&gt;For example, a search for &lt;code&gt;2&lt;/code&gt; with grep would find many false positives, but with semgrep, a rule can more precisely match pattern expressions including variations like: &lt;code&gt;x = 1; y = x + 1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A few reasons security-conscious teams added Semgrep to their development pipeline:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Support for &lt;a href="https://semgrep.dev/docs/supported-languages?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;30+ programming languages&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Simple &lt;a href="https://semgrep.dev/docs/writing-rules/overview?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;rule syntax&lt;/a&gt; that allows for customization and extensibility without DSLs, managing abstract syntax trees, or regex wrangling&lt;/li&gt;
&lt;li&gt;Can run locally in a &lt;a href="https://semgrep.dev/docs/cli-reference?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;command line interface (CLI)&lt;/a&gt;, integrated with your favorite &lt;a href="https://semgrep.dev/docs/for-developers/ide?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;integrated development environment (IDE)&lt;/a&gt;, as a source control &lt;a href="https://semgrep.dev/docs/kb/integrations/customize-semgrep-precommit?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;pre-commit hook&lt;/a&gt;, in &lt;a href="https://semgrep.dev/docs/kb/semgrep-ci?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;continuous integration and delivery (CI/CD) pipelines&lt;/a&gt;, or as a &lt;a href="https://semgrep.dev/products/semgrep-appsec-platform/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;managed platform service&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Semgrep &lt;em&gt;rules&lt;/em&gt; exist to help find everything from logic errors, code smells, and security vulnerabilities such as SQL injection, cross-site scripting, secrets leaking, and much much more by analyzing the source code itself.&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.amazonaws.com%2Fuploads%2Farticles%2Ffmr7fzvrflzy8qfljtb1.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%2Ffmr7fzvrflzy8qfljtb1.png" alt="Semgrep Architecture and DevEx Overview" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Semgrep
&lt;/h2&gt;

&lt;p&gt;A typical first step is to look at findings for an individual file using the CLI.&lt;/p&gt;

&lt;p&gt;Installation for macOS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;semgrep
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Installation for Linux/BSD/macOS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 &lt;span class="nt"&gt;-m&lt;/span&gt; pip &lt;span class="nb"&gt;install &lt;/span&gt;semgrep
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Can also be run from a Docker container on Windows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-it&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; “&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PWD&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;:/src” semgrep/semgrep
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To test that installation was successful and that &lt;code&gt;semgrep&lt;/code&gt; can be found in your path try:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;semgrep –h
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Run a Code Scan for Vulnerabilities on a Python File
&lt;/h2&gt;

&lt;p&gt;All CLI processing is done locally on your computer or build environment, not uploaded to a service for analysis. &lt;/p&gt;

&lt;p&gt;To try this for yourself, you can use your own existing project or start with a simple test project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;ls
&lt;/span&gt;foo.py
bar.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example, this code:&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="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;subprocess&lt;/span&gt;

&lt;span class="nb"&gt;input&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;argv&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="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="n"&gt;Python&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;easy&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;subprocess&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;shell&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Of course, you would never write code like this, but is that true for &lt;em&gt;everybody&lt;/em&gt; on your team?&lt;/p&gt;

&lt;p&gt;From the root directory of your project, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;semgrep scan –config auto
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CLI will pull down rules from the &lt;a href="https://semgrep.dev/explore?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;rule registry&lt;/a&gt; to test your source code.&lt;/p&gt;

&lt;p&gt;The output may look similar to this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Scanning 2 files &lt;span class="o"&gt;(&lt;/span&gt;only git-tracked&lt;span class="o"&gt;)&lt;/span&gt; with:

✔ Semgrep OSS
  ✔ Basic security coverage &lt;span class="k"&gt;for &lt;/span&gt;first-party code vulnerabilities.

✔ Semgrep Code &lt;span class="o"&gt;(&lt;/span&gt;SAST&lt;span class="o"&gt;)&lt;/span&gt;
  ✔ Find and fix vulnerabilities &lt;span class="k"&gt;in &lt;/span&gt;the code you write with advanced scanning and expert security rules.

✘ Semgrep Supply Chain &lt;span class="o"&gt;(&lt;/span&gt;SCA&lt;span class="o"&gt;)&lt;/span&gt;
  ✘ Find and fix the reachable vulnerabilities &lt;span class="k"&gt;in &lt;/span&gt;your OSS dependencies.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://semgrep.dev/products/semgrep-supply-chain/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Supply Chain (SCA)&lt;/a&gt; and &lt;a href="https://semgrep.dev/products/semgrep-secrets/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Secrets&lt;/a&gt; rules are only available when you sign up at &lt;a href="https://semgrep.dev?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;semgrep.dev&lt;/a&gt;. When using the free Community Edition you’ll only have access to a subset of the total rules. Here’s our results:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;┌────────────────┐
│ 1 Code Finding │
└────────────────┘

    foo.py
   ❯❯❱ python.lang.security.audit.subprocess-shell-true.subprocess-shell-true
          Found &lt;span class="s1"&gt;'subprocess'&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="s1"&gt;'run'&lt;/span&gt; with &lt;span class="s1"&gt;'shell=True'&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt; This is dangerous because this call will spawn
          the &lt;span class="nb"&gt;command &lt;/span&gt;using a shell process. Doing so propagates current shell settings and variables, which 
          makes it much easier &lt;span class="k"&gt;for &lt;/span&gt;a malicious actor to execute commands. Use &lt;span class="s1"&gt;'shell=False'&lt;/span&gt; instead.         
          Details: https://sg.run/J92w                                                                       

           ▶▶┆ Autofix ▶ False
            7┆ subprocess.run&lt;span class="o"&gt;(&lt;/span&gt;input, &lt;span class="nv"&gt;shell&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;True&lt;span class="o"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The finding was triggered by the rule &lt;a href="https://semgrep.dev/r?q=python.lang.security.audit.subprocess-shell-true.subprocess-shell-true" rel="noopener noreferrer"&gt;python.lang.security.audit.subprocess-shell-true.subprocess-shell-true&lt;/a&gt; which you can learn more about in the Rule Registry.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run a Semgrep Code Scan on JavaScript with a Custom Pattern
&lt;/h2&gt;

&lt;p&gt;You can create custom rules or even run one-off checks such as finding any output you forgot to remove.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;semgrep &lt;span class="nt"&gt;-e&lt;/span&gt; ‘console.log&lt;span class="o"&gt;(&lt;/span&gt;...&lt;span class="o"&gt;)&lt;/span&gt;’ –lang&lt;span class="o"&gt;=&lt;/span&gt;js ./bar.js

┌────────────────┐
│ 1 Code Finding │
└────────────────┘

    bar.js
            1337┆ console.log&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"DEBUG: remove this later"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
┌──────────────┐
│ Scan Summary │
└──────────────┘

Ran 1 rule on 1 file: 1 finding.            
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These were quick Python and JavaScript examples, but Semgrep tools have the motto &lt;em&gt;yes we scan&lt;/em&gt; with support for: Apex, Bash, C, C++, C#, Clojure, Dart, Dockerfile, Elixir, HTML, Go, Java, JavaScript, JSX, JSON, Julia, Jsonnet, Kotlin, Lisp, Lua, OCaml, PHP, Python, R, Ruby, Rust, Scala, Scheme, Solidity, Swift, Terraform, TypeScript, TSX, YAML, XML, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scaling Semgrep to Development Team Workflows
&lt;/h2&gt;

&lt;p&gt;The point of all this is that while we may try to be security conscious when developing software, there are lots of gotchas to know about and when collaborating with other software developers it can be difficult to know if everybody on the team is as well versed on security best practices for every language in use. &lt;/p&gt;

&lt;p&gt;For more complex projects, you also need to be able to find cross-file issues, supply chain attacks, and prevent secrets from leaking before they are committed. For these use cases, there is more information in the &lt;a href="https://semgrep.dev/docs/?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;Semgrep Docs&lt;/a&gt; or by joining a &lt;a href="https://semgrep.dev/events/" rel="noopener noreferrer"&gt;webinar&lt;/a&gt; or &lt;a href="https://semgrep.dev/contact/demo?utm_source=devrel&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2025-devto-blog" rel="noopener noreferrer"&gt;book a demo&lt;/a&gt; to learn more about setting up more complex team workflows.&lt;/p&gt;

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