{"id":161453,"date":"2026-07-15T08:29:22","date_gmt":"2026-07-15T08:29:22","guid":{"rendered":"https:\/\/hnsecurity.it\/?p=161453"},"modified":"2026-07-15T08:52:21","modified_gmt":"2026-07-15T08:52:21","slug":"my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again","status":"publish","type":"post","link":"https:\/\/hnsecurity.it\/it\/blog\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\/","title":{"rendered":"My Semgrep C\/C++ ruleset is ready for prime time again"},"content":{"rendered":"<blockquote>\n<p style=\"text-align: left;\"><em>&#8220;Retention of critical thinking and problem solving skills in an AI saturated world <\/em><em>will probably become a superpower for those who can resist the autocomplete revolution.&#8221;<br \/>\n\u2014 Bas Alberts<\/em><\/p>\n<p><em>&#8220;I spend a truly unreasonable amount of my life writing YAML.&#8221;<\/em><br \/>\n<em>\u2014 William Woodruff<\/em><\/p><\/blockquote>\n<h3>TL;DR<\/h3>\n<p>For those with an attention span <a href=\"https:\/\/web.archive.org\/web\/20150516201143\/http:\/\/advertising.microsoft.com\/en\/cl\/31966\/how-does-digital-affect-canadian-attention-spans\">shorter than a goldfish<\/a>, a quick summary of what&#8217;s going on here:<\/p>\n<ul>\n<li>Back in 2022, I published a collection of <a href=\"https:\/\/github.com\/0xdea\/semgrep-rules\">Semgrep rules<\/a> that I developed to facilitate <strong>C\/C++ vulnerability research<\/strong>. I also wrote a couple of accompanying blog posts to <a href=\"https:\/\/hnsecurity.it\/semgrep-ruleset-for-c-c-vulnerability-research\">introduce my ruleset<\/a> and show how to use it to <a href=\"https:\/\/hnsecurity.it\/automating-binary-vulnerability-discovery-with-ghidra-and-semgrep\/\">automate binary vulnerability discovery<\/a>.<\/li>\n<li>Over the years, my project has <strong>gained popularity<\/strong> and has been featured in prominent <a href=\"https:\/\/appsec.guide\/docs\/static-analysis\/semgrep\/resources\/\">guides<\/a> and <a href=\"https:\/\/www.securefirmware.de\/\">toolkits<\/a>. Meanwhile, I kept <a href=\"https:\/\/hnsecurity.it\/blog\/big-update-to-my-semgrep-c-cpp-ruleset\/\">improving my ruleset<\/a> and applying it to real-world <a href=\"https:\/\/hnsecurity.it\/blog\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\/\">vulnerability research scenarios<\/a>.<\/li>\n<li>Today, it&#8217;s once again time to shed light on some <strong>recent updates and improvements<\/strong>, before our new robot overlords <a href=\"https:\/\/red.anthropic.com\/2026\/mythos-preview\/\">take over the field of vulnerability research<\/a> entirely.<\/li>\n<\/ul>\n<p>So, bear with me while I introduce you to my newly-improved <a href=\"https:\/\/github.com\/0xdea\/semgrep-rules\">Semgrep C\/C++ ruleset<\/a>.<img decoding=\"async\" class=\"aligncenter wp-image-161463 size-full\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/04\/bear-e1777035722140.webp\" alt=\"\" width=\"353\" height=\"307\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/04\/bear-e1777035722140.webp 353w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/04\/bear-e1777035722140-300x261.webp 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/04\/bear-e1777035722140-350x304.webp 350w\" sizes=\"(max-width: 353px) 100vw, 353px\" \/><\/p>\n<h3>A blast from the past<\/h3>\n<p>First, a quick review of my previous work.<\/p>\n<p>As stated in the summary above, in 2022 I <a href=\"https:\/\/hnsecurity.it\/blog\/semgrep-ruleset-for-c-c-vulnerability-research\/\">released<\/a> my custom <a href=\"https:\/\/github.com\/0xdea\/semgrep-rules\">Semgrep rules<\/a> for <strong>C\/C++ vulnerability research<\/strong> and published a <a href=\"https:\/\/hnsecurity.it\/automating-binary-vulnerability-discovery-with-ghidra-and-semgrep\/\">well-received article<\/a> on how to <strong>become a better security researcher<\/strong>, using the power of <a href=\"https:\/\/semgrep.dev\/\">Semgrep<\/a> to <strong>automate some menial tasks<\/strong> even against binary targets.<\/p>\n<p>At the end of 2023, I published a <a href=\"https:\/\/hnsecurity.it\/blog\/big-update-to-my-semgrep-c-cpp-ruleset\/\">big update<\/a> to my ruleset. It featured several new rules, a reorganization into three priority tiers, and general accuracy and performance tweaks. These improvements were driven by the <strong>experience gained in the field<\/strong> during my <a href=\"https:\/\/hnsecurity.it\/blog\/ost2-zephyr-rtos-and-a-bunch-of-cves\/\">vulnerability<\/a> <a href=\"https:\/\/hnsecurity.it\/blog\/multiple-vulnerabilities-in-rt-thread-rtos\/\">research<\/a> <a href=\"https:\/\/hnsecurity.it\/blog\/multiple-vulnerabilities-in-eclipse-threadx\/\">efforts<\/a> and by attending training courses on this subject (namely, <a href=\"https:\/\/ost2.fyi\/\">OST2<\/a>\u2018s\u00a0<a href=\"https:\/\/ost2.fyi\/Vulns1001\">Vulns1001<\/a>\u00a0and\u00a0<a href=\"https:\/\/ost2.fyi\/Vulns1002\">Vulns1002,<\/a>\u00a0and\u00a0<a href=\"https:\/\/www.infosectcbr.com.au\/\">InfoSect<\/a>\u2018s Code Review). Finally, I extensively tested my rules against available SAST test suites\u00a0and\u00a0test cases, conveniently collected by NIST\u2019s Software Assurance Metrics And Tool Evaluation (<a href=\"https:\/\/www.nist.gov\/itl\/ssd\/software-quality-group\/samate\">SAMATE<\/a>) project.<\/p>\n<p>Again, these updates sparked quite a bit of interest in the security community, which led me to <a href=\"https:\/\/hnsecurity.it\/blog\/a-collection-of-weggli-patterns-for-c-cpp-vulnerability-research\/\">implement similar functionality<\/a> in the form of <a href=\"https:\/\/github.com\/0xdea\/weggli-patterns\">weggli patterns<\/a>.<\/p>\n<p>Besides presenting my toolkit, in my <a href=\"https:\/\/hnsecurity.it\/blog\/tag\/semgrep\/\">blog posts<\/a> I also focused on providing an actionable <strong>vulnerability research workflow<\/strong> that can be summarized as follows:<\/p>\n<ol>\n<li>Read the\u00a0<strong>documentation<\/strong> (but <a href=\"https:\/\/github.com\/0xdea\/raptor_infiltrate20\/blob\/main\/slides\/6bugs.pdf\">don&#8217;t believe it!<\/a>) to uncover attack surface and interesting paths.<\/li>\n<li>Scan with\u00a0<strong>static analysis<\/strong> tools against interesting paths in the codebase.<\/li>\n<li>Review scan results to quickly\u00a0<strong>mark hotspots<\/strong>\u00a0in code where bugs may be.<\/li>\n<li>Understand relevant code around the hotspots to identify\u00a0<strong>potential vulnerabilities<\/strong>.<\/li>\n<li>Confirm vulnerabilities via\u00a0<strong>further analysis<\/strong>, dynamic testing, targeted fuzzing, etc.<\/li>\n<li>Identify\u00a0<strong>variants<\/strong>\u00a0of confirmed vulnerabilities in other parts of the codebase.<\/li>\n<\/ol>\n<p class=\"p1\">Revisiting this workflow in 2026, you&#8217;ll probably want to <strong>weave AI into each step <\/strong>as a force multiplier. Don&#8217;t worry though, fuzzer jobs are (probably) safe for now.<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"550\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Frankly, I&#39;m appalled by the prospect of LLMs taking offensive security research jobs from honest, hard-working fuzzers<\/p>\n<p>&mdash; lcamtuf (@lcamtuf) <a href=\"https:\/\/x.com\/lcamtuf\/status\/1804521053768888726?ref_src=twsrc%5Etfw\">June 22, 2024<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.x.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>For further considerations on <strong>methodology<\/strong> applied to <a href=\"https:\/\/hnsecurity.it\/blog\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\/\">real-world scenarios<\/a>, check out <a href=\"https:\/\/hnsecurity.it\/blog\/author\/marco-ivaldi\/\">my past articles<\/a>.<\/p>\n<h3>Here we go again<\/h3>\n<p>When I created my ruleset, Semgrep&#8217;s support for C\/C++ was still experimental. It wasn&#8217;t until 2024 that Semgrep started to <a href=\"https:\/\/semgrep.dev\/blog\/2024\/modernizing-static-analysis-for-c\/\">fully support C and C++<\/a>, languages that are notoriously <strong>difficult to analyze statically<\/strong>, due to several inherent complexities (most notably, an ambiguous and hard-to-parse grammar chiefly because of preprocessor directives and macros that are expanded before compilation).<\/p>\n<p>As a result of this fundamental improvement, scanning of C\/C++ code with Semgrep became more stable and reliable, <a href=\"https:\/\/semgrep.dev\/docs\/writing-rules\/metavariable-analysis\">new<\/a> <a href=\"https:\/\/semgrep.dev\/products\/product-updates\/anonymous-metavariables\/\">patterns<\/a> were made possible, and handling of <a href=\"https:\/\/github.com\/semgrep\/semgrep\/issues?q=is%3Aissue%20label%3Alang%3Ac\">C\/C++-related GitHub issues<\/a> became smoother.<\/p>\n<p>Fast forward to late 2025.<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"550\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Hey developers and vulnerability researchers!<\/p>\n<p>I&#39;m working on improving my C\/C++ <a href=\"https:\/\/x.com\/hashtag\/Semgrep?src=hash&amp;ref_src=twsrc%5Etfw\">#Semgrep<\/a> ruleset, and I&#39;ve just published the v1.1.0 release: <a href=\"https:\/\/t.co\/UQpsnQ8Grv\">https:\/\/t.co\/UQpsnQ8Grv<\/a><\/p>\n<p>Please test it inside and out, open issues or submit PRs. Aiming for a major release sometime before spring.<\/p>\n<p>&mdash; raptor (@0xdea) <a href=\"https:\/\/x.com\/0xdea\/status\/1996240183574876311?ref_src=twsrc%5Etfw\">December 3, 2025<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.x.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>With the above message, cross-posted to my <a href=\"https:\/\/infosec.exchange\/@raptor\/115656298119269951\">social<\/a> <a href=\"https:\/\/www.linkedin.com\/feed\/update\/urn:li:activity:7402002143513063424\/\">media<\/a> accounts, I announced the availability of the <a href=\"https:\/\/github.com\/0xdea\/semgrep-rules\/releases\/tag\/v1.1.0\">v1.1.0 release<\/a> of my ruleset, which included:<\/p>\n<ul>\n<li>New rules for detecting <a href=\"https:\/\/github.com\/0xdea\/semgrep-rules\/blob\/main\/rules\/c\/high-entropy-assignment.yaml\">high-entropy assignments<\/a> and <a href=\"https:\/\/github.com\/0xdea\/semgrep-rules\/blob\/main\/rules\/c\/regex-dos.yaml\">ReDoS vulnerabilities<\/a>.<\/li>\n<li>Several enhancements to existing rules.<\/li>\n<li>Reduced false positives without sacrificing coverage.<\/li>\n<li>Optimized and more performant patterns.<\/li>\n<li>Overall better documentation, including a SARIF sample.<\/li>\n<\/ul>\n<p>I also issued a <strong>call to action<\/strong> to software developers and security researchers to test the new version of the rules, open issues, and submit pull requests with bug fixes and enhancements.<\/p>\n<p>Some researchers responded, and also thanks to their valuable contributions I&#8217;ve <a href=\"https:\/\/github.com\/0xdea\/semgrep-rules\/releases\">kept working<\/a> on improving my ruleset. After half a year of development and testing, my work culminated in the <a href=\"https:\/\/github.com\/0xdea\/semgrep-rules\/releases\/tag\/v2.0.0\">v2.0.0 release<\/a>, which is a major update and the first version of my ruleset to be included as an external source in the official <a href=\"https:\/\/semgrep.dev\/p\/0xdea\">Semgrep registry<\/a>.<\/p>\n<h3>What&#8217;s new in v2.0.0?<\/h3>\n<p>Quite <a href=\"https:\/\/github.com\/0xdea\/semgrep-rules\/blob\/main\/CHANGELOG.md\">a lot<\/a> is new in this latest release. The repository now features <strong>50 Semgrep rules<\/strong> (and counting). The most relevant changes are:<\/p>\n<ul>\n<li>I&#8217;ve <strong>added detections<\/strong> for plenty of <a href=\"https:\/\/github.com\/0xdea\/semgrep-rules\/blob\/main\/rules\/c\/interesting-api-calls.yaml\">interesting new API calls<\/a> (but not too many to avoid cluttering results) that were missing in previous versions of the ruleset, including some <em>str*<\/em>, <em>mem*<\/em>, and <em>*printf<\/em> family functions, Windows-specific functions, additional file access and command execution APIs, and more.<\/li>\n<li>I&#8217;ve <strong>improved pattern matching<\/strong> in several rules, to better handle array declarations and memory allocations, and detect dangerous uses of <em>*printf<\/em>.<\/li>\n<li>I&#8217;ve optimized uses of the <a href=\"https:\/\/docs.semgrep.dev\/writing-rules\/pattern-syntax#deep-expression-operator\">deep inspection operator<\/a> to <strong>match more potential misuse cases<\/strong> for\u00a0<em>malloc<\/em>,\u00a0<em>free<\/em>,\u00a0and\u00a0<em>set*id<\/em>.<\/li>\n<li>I&#8217;ve excluded uninteresting matches and generally <strong>reduced false positives<\/strong> where possible (but not so much as to start missing true positives as well).<\/li>\n<li>I&#8217;ve <strong>improved performance<\/strong> of the slowest rules based on extensive <strong>benchmarking<\/strong> conducted against real-world code.<\/li>\n<li>I&#8217;ve added several new <strong>code samples<\/strong> for testing, and generally improved the project <strong>documentation<\/strong>.<\/li>\n<li>I&#8217;ve <strong>rearranged rules<\/strong> based on the new subcategory, likelihood, and impact metrics, and taken care of some general housekeeping.<\/li>\n<li>Finally, I&#8217;ve added <a href=\"https:\/\/semgrep.dev\/docs\/contributing\/contributing-to-semgrep-rules-repository\">all metadata required<\/a> to contribute the rules to the <a href=\"https:\/\/semgrep.dev\/r?q=0xdea.c\">Semgrep registry<\/a>, along with a <strong>GitHub workflow<\/strong> for ruleset validation.<\/li>\n<\/ul>\n<p>The intent of these changes was to <strong>carefully enrich and improve the ruleset<\/strong> wherever possible, without breaking existing tools and workflows that rely on it.<\/p>\n<p>I believe I&#8217;ve stayed true to the original philosophy behind my rules, that is: <em>we don&#8217;t care if there are some false positives as long as true positives aren&#8217;t missed<\/em>. This ruleset is not meant to be used in CI\/CD pipelines as is, but only as a tool to <strong>assist developers and security researchers<\/strong> in their work by highlighting potential vulnerability hotspots. This ultimately requires human (or at least AI \ud83e\udd16) intervention to customize the rules where needed and sift through Semgrep&#8217;s findings.<\/p>\n<h3>Now for the fun part<\/h3>\n<p>Ok, time to apply my Semgrep ruleset to a <strong>real-world scenario<\/strong>. Let me show you how to use it against a large collection of <strong>binary files<\/strong> that I&#8217;ve extracted from one of the latest <a href=\"https:\/\/hnsecurity.it\/blog\/tag\/zyxel\/\">Zyxel<\/a> firmware packages.<\/p>\n<p>First, let&#8217;s <strong>batch-decompile<\/strong> and extract the pseudocode of all target binaries, using my IDA plugin <a href=\"https:\/\/hnsecurity.it\/blog\/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2\/\">haruspex<\/a>:<\/p>\n<figure id=\"attachment_161580\" aria-describedby=\"caption-attachment-161580\" style=\"width: 2560px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.16.05-scaled.png\"><img decoding=\"async\" class=\"wp-image-161580 size-full\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.16.05-scaled.png\" alt=\"\" width=\"2560\" height=\"1607\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.16.05-scaled.png 2560w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.16.05-300x188.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.16.05-1024x643.png 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.16.05-768x482.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.16.05-1536x964.png 1536w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.16.05-2048x1286.png 2048w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.16.05-350x220.png 350w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/a><figcaption id=\"caption-attachment-161580\" class=\"wp-caption-text\">Installing and running haruspex against 280 binaries<\/figcaption><\/figure>\n<figure id=\"attachment_161577\" aria-describedby=\"caption-attachment-161577\" style=\"width: 2560px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.28.03-scaled.png\"><img decoding=\"async\" class=\"wp-image-161577 size-full\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.28.03-scaled.png\" alt=\"\" width=\"2560\" height=\"1607\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.28.03-scaled.png 2560w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.28.03-300x188.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.28.03-1024x643.png 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.28.03-768x482.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.28.03-1536x964.png 1536w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.28.03-2048x1286.png 2048w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.28.03-350x220.png 350w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/a><figcaption id=\"caption-attachment-161577\" class=\"wp-caption-text\">280 binary files (for a total of 14 MB) were analyzed and decompiled in less than 14 minutes<\/figcaption><\/figure>\n<p>It took <strong>less than 3 seconds per binary<\/strong> to analyze and decompile every function. Not bad! But this is a (hot) topic for <a href=\"https:\/\/hnsecurity.it\/blog\/tag\/idalib\/\">another article<\/a>. Let&#8217;s stick to Semgrep here:<\/p>\n<figure id=\"attachment_161582\" aria-describedby=\"caption-attachment-161582\" style=\"width: 2560px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.45.52-scaled.png\"><img decoding=\"async\" class=\"wp-image-161582 size-full\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.45.52-scaled.png\" alt=\"\" width=\"2560\" height=\"1607\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.45.52-scaled.png 2560w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.45.52-300x188.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.45.52-1024x643.png 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.45.52-768x482.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.45.52-1536x964.png 1536w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.45.52-2048x1286.png 2048w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.45.52-350x220.png 350w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/a><figcaption id=\"caption-attachment-161582\" class=\"wp-caption-text\">23.399 pseudocode files were fully scanned in less than 6 minutes<\/figcaption><\/figure>\n<p><strong>More than 98% of lines have been parsed<\/strong>. Not bad for a Semgrep scan against pseudocode! This is the view of the scan results that we get in VS Code with <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=trailofbits.sarif-explorer\">SARIF Explorer<\/a>:<\/p>\n<figure id=\"attachment_161583\" aria-describedby=\"caption-attachment-161583\" style=\"width: 2560px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.56.17-scaled.png\"><img decoding=\"async\" class=\"wp-image-161583 size-full\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.56.17-scaled.png\" alt=\"\" width=\"2560\" height=\"1607\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.56.17-scaled.png 2560w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.56.17-300x188.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.56.17-1024x643.png 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.56.17-768x482.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.56.17-1536x964.png 1536w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.56.17-2048x1286.png 2048w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.56.17-350x220.png 350w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/a><figcaption id=\"caption-attachment-161583\" class=\"wp-caption-text\">I \u2764\ufe0f SARIF Explorer<\/figcaption><\/figure>\n<p>And here&#8217;s literally the first <strong>potential vulnerability<\/strong> that&#8217;s been flagged by Semgrep in this codebase:<\/p>\n<figure id=\"attachment_161584\" aria-describedby=\"caption-attachment-161584\" style=\"width: 2560px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.53.20-scaled.png\"><img decoding=\"async\" class=\"wp-image-161584 size-full\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.53.20-scaled.png\" alt=\"\" width=\"2560\" height=\"1072\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.53.20-scaled.png 2560w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.53.20-300x126.png 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.53.20-1024x429.png 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.53.20-768x321.png 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.53.20-1536x643.png 1536w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.53.20-2048x857.png 2048w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-05-at-14.53.20-350x147.png 350w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/a><figcaption id=\"caption-attachment-161584\" class=\"wp-caption-text\">Hmm&#8230; I wonder if the input source is attacker-controlled?<\/figcaption><\/figure>\n<p>Well, I guess I have to go now&#8230; My friend Claude and I just got a few thousand vulnerability hotspots to check \ud83e\udeb2<\/p>\n<figure id=\"attachment_161593\" aria-describedby=\"caption-attachment-161593\" style=\"width: 1280px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" class=\"wp-image-161593 size-full\" src=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/llm2-e1781428863805.jpg\" alt=\"\" width=\"1280\" height=\"698\" srcset=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/llm2-e1781428863805.jpg 1280w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/llm2-e1781428863805-300x164.jpg 300w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/llm2-e1781428863805-1024x558.jpg 1024w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/llm2-e1781428863805-768x419.jpg 768w, https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/06\/llm2-e1781428863805-350x191.jpg 350w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><figcaption id=\"caption-attachment-161593\" class=\"wp-caption-text\">&#8220;We went from talking like a pirate to Neuromancer real quick.&#8221; &#8212; Bas<\/figcaption><\/figure>\n<h3>Give me the goods<\/h3>\n<p>If you&#8217;ve made it this far, you&#8217;ve earned a couple of links!<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/0xdea\/semgrep-rules\">https:\/\/github.com\/0xdea\/semgrep-rules<\/a><\/li>\n<li><a href=\"https:\/\/semgrep.dev\/p\/0xdea\">https:\/\/semgrep.dev\/p\/0xdea<\/a><\/li>\n<\/ul>\n<p>The easiest way to use the ruleset for your own projects is via the <strong>official 0xdea rulepack<\/strong>, as follows:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"minimal\" data-enlighter-linenumbers=\"false\">raptor@fnord ~\/D\/z\/_\/zyx.dec&gt; brew install semgrep\r\n...\r\nraptor@fnord ~\/D\/z\/_\/zyx.dec&gt; cd 2FAd.dec\/\r\nraptor@fnord ~\/D\/z\/_\/z\/2FAd.dec&gt; semgrep --config \"p\/0xdea\"\r\n...\r\n\u2705 Scan completed successfully.\r\n\u2022 Findings: 668 (668 blocking)\r\n\u2022 Rules run: 48\r\n\u2022 Targets scanned: 65\r\n\u2022 Parsed lines: ~99.1%\r\n\u2022 No ignore information available\r\n\u2022 For a detailed list of skipped files and lines, run semgrep with the --verbose flag\r\nRan 48 rules on 65 files: 668 findings.\r\nraptor@fnord ~\/D\/z\/_\/z\/2FAd.dec&gt;<\/pre>\n<p><!-- obsidian --><\/p>\n<p>See the <a href=\"https:\/\/github.com\/0xdea\/semgrep-rules\/blob\/main\/README.md\">README<\/a> file in the repository for additional usage tips.<\/p>\n<h3>Looking ahead<\/h3>\n<p>I still have a substantial TODO list of items that I&#8217;d like to implement for both my <a href=\"https:\/\/github.com\/0xdea\/semgrep-rules\">Semgrep rules<\/a> and <a href=\"https:\/\/github.com\/0xdea\/weggli-patterns\">weggli patterns<\/a> for C\/C++ (and binary) vulnerability research. In addition, I have a <strong>new research project involving Semgrep<\/strong> that&#8217;s currently in full swing. Hopefully, I&#8217;ll be able to share it before the end of the year.<\/p>\n<p>Meanwhile, I&#8217;ll leave you with a psychedelic treat by <a href=\"https:\/\/www.beatport.com\/artist\/undefined-behavior\/1121860\">Undefined Behavior<\/a> \ud83c\udf44 (how appropriate):<\/p>\n<p><iframe title=\"Undefined Behavior (Burn in Noise + Ajja) -  Howling at the Moon\" width=\"840\" height=\"473\" src=\"https:\/\/www.youtube.com\/embed\/U1k0A7SfsTM?feature=oembed&#038;width=840&#038;height=1000&#038;discover=1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p>See you space cowboy! \ud83e\ude90 \ud83e\udd20<\/p>\n<p><!-- obsidian --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;Retention of critical thinking and problem solving skills in an AI saturated world will probably become a superpower for those [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":159955,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[88,91],"tags":[82,96,116,117,162],"class_list":["post-161453","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tools","category-articles","tag-vulnerability-research","tag-static-analysis","tag-c-c","tag-code-review","tag-semgrep"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>HN Security - My Semgrep C\/C++ ruleset is ready for prime time again - Tools<\/title>\n<meta name=\"description\" content=\"Our ruleset for C\/C++ vulnerability research has been upgraded for improved accuracy and performance, and published in the Semgrep register.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/hnsecurity.it\/it\/blog\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"HN Security - My Semgrep C\/C++ ruleset is ready for prime time again - Tools\" \/>\n<meta property=\"og:description\" content=\"Our ruleset for C\/C++ vulnerability research has been upgraded for improved accuracy and performance, and published in the Semgrep register.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hnsecurity.it\/it\/blog\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\/\" \/>\n<meta property=\"og:site_name\" content=\"HN Security\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-15T08:29:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-15T08:52:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/SEMGREP.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"836\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Marco Ivaldi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hnsec\" \/>\n<meta name=\"twitter:site\" content=\"@hnsec\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marco Ivaldi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\\\/\"},\"author\":{\"name\":\"Marco Ivaldi\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#\\\/schema\\\/person\\\/89a4174c275f05d6148fb0fdedc8de4f\"},\"headline\":\"My Semgrep C\\\/C++ ruleset is ready for prime time again\",\"datePublished\":\"2026-07-15T08:29:22+00:00\",\"dateModified\":\"2026-07-15T08:52:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\\\/\"},\"wordCount\":1489,\"publisher\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/SEMGREP.jpg\",\"keywords\":[\"vulnerability research\",\"static analysis\",\"c\\\/c++\",\"code review\",\"semgrep\"],\"articleSection\":[\"Tools\",\"Articles\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\\\/\",\"url\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\\\/\",\"name\":\"HN Security - My Semgrep C\\\/C++ ruleset is ready for prime time again - Tools\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/SEMGREP.jpg\",\"datePublished\":\"2026-07-15T08:29:22+00:00\",\"dateModified\":\"2026-07-15T08:52:21+00:00\",\"description\":\"Our ruleset for C\\\/C++ vulnerability research has been upgraded for improved accuracy and performance, and published in the Semgrep register.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\\\/#primaryimage\",\"url\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/SEMGREP.jpg\",\"contentUrl\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/SEMGREP.jpg\",\"width\":1600,\"height\":836,\"caption\":\"Semgrep logo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"My Semgrep C\\\/C++ ruleset is ready for prime time again\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#website\",\"url\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/\",\"name\":\"HN Security\",\"description\":\"Offensive Security Specialists\",\"publisher\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#organization\",\"name\":\"HN Security\",\"url\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/hn-libellula.jpg\",\"contentUrl\":\"https:\\\/\\\/hnsecurity.it\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/hn-libellula.jpg\",\"width\":696,\"height\":696,\"caption\":\"HN Security\"},\"image\":{\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/hnsec\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/hnsecurity\\\/\",\"https:\\\/\\\/github.com\\\/hnsecurity\",\"https:\\\/\\\/infosec.exchange\\\/@hnsec\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/#\\\/schema\\\/person\\\/89a4174c275f05d6148fb0fdedc8de4f\",\"name\":\"Marco Ivaldi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a8a96db06e7315a061d28b320ee7bb4c9d0f1535c58bf0f54218bf8a7569bea0?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a8a96db06e7315a061d28b320ee7bb4c9d0f1535c58bf0f54218bf8a7569bea0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a8a96db06e7315a061d28b320ee7bb4c9d0f1535c58bf0f54218bf8a7569bea0?s=96&d=mm&r=g\",\"caption\":\"Marco Ivaldi\"},\"url\":\"https:\\\/\\\/hnsecurity.it\\\/it\\\/blog\\\/author\\\/marco-ivaldi\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"HN Security - My Semgrep C\/C++ ruleset is ready for prime time again - Tools","description":"Our ruleset for C\/C++ vulnerability research has been upgraded for improved accuracy and performance, and published in the Semgrep register.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/hnsecurity.it\/it\/blog\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\/","og_locale":"it_IT","og_type":"article","og_title":"HN Security - My Semgrep C\/C++ ruleset is ready for prime time again - Tools","og_description":"Our ruleset for C\/C++ vulnerability research has been upgraded for improved accuracy and performance, and published in the Semgrep register.","og_url":"https:\/\/hnsecurity.it\/it\/blog\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\/","og_site_name":"HN Security","article_published_time":"2026-07-15T08:29:22+00:00","article_modified_time":"2026-07-15T08:52:21+00:00","og_image":[{"width":1600,"height":836,"url":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/SEMGREP.jpg","type":"image\/jpeg"}],"author":"Marco Ivaldi","twitter_card":"summary_large_image","twitter_creator":"@hnsec","twitter_site":"@hnsec","twitter_misc":{"Scritto da":"Marco Ivaldi","Tempo di lettura stimato":"8 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/hnsecurity.it\/it\/blog\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\/#article","isPartOf":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\/"},"author":{"name":"Marco Ivaldi","@id":"https:\/\/hnsecurity.it\/it\/#\/schema\/person\/89a4174c275f05d6148fb0fdedc8de4f"},"headline":"My Semgrep C\/C++ ruleset is ready for prime time again","datePublished":"2026-07-15T08:29:22+00:00","dateModified":"2026-07-15T08:52:21+00:00","mainEntityOfPage":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\/"},"wordCount":1489,"publisher":{"@id":"https:\/\/hnsecurity.it\/it\/#organization"},"image":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\/#primaryimage"},"thumbnailUrl":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/SEMGREP.jpg","keywords":["vulnerability research","static analysis","c\/c++","code review","semgrep"],"articleSection":["Tools","Articles"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/hnsecurity.it\/it\/blog\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\/","url":"https:\/\/hnsecurity.it\/it\/blog\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\/","name":"HN Security - My Semgrep C\/C++ ruleset is ready for prime time again - Tools","isPartOf":{"@id":"https:\/\/hnsecurity.it\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\/#primaryimage"},"image":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\/#primaryimage"},"thumbnailUrl":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/SEMGREP.jpg","datePublished":"2026-07-15T08:29:22+00:00","dateModified":"2026-07-15T08:52:21+00:00","description":"Our ruleset for C\/C++ vulnerability research has been upgraded for improved accuracy and performance, and published in the Semgrep register.","breadcrumb":{"@id":"https:\/\/hnsecurity.it\/it\/blog\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hnsecurity.it\/it\/blog\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/hnsecurity.it\/it\/blog\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\/#primaryimage","url":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/SEMGREP.jpg","contentUrl":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/SEMGREP.jpg","width":1600,"height":836,"caption":"Semgrep logo"},{"@type":"BreadcrumbList","@id":"https:\/\/hnsecurity.it\/it\/blog\/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/hnsecurity.it\/it\/"},{"@type":"ListItem","position":2,"name":"My Semgrep C\/C++ ruleset is ready for prime time again"}]},{"@type":"WebSite","@id":"https:\/\/hnsecurity.it\/it\/#website","url":"https:\/\/hnsecurity.it\/it\/","name":"HN Security","description":"Offensive Security Specialists","publisher":{"@id":"https:\/\/hnsecurity.it\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hnsecurity.it\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/hnsecurity.it\/it\/#organization","name":"HN Security","url":"https:\/\/hnsecurity.it\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/hnsecurity.it\/it\/#\/schema\/logo\/image\/","url":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/01\/hn-libellula.jpg","contentUrl":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2026\/01\/hn-libellula.jpg","width":696,"height":696,"caption":"HN Security"},"image":{"@id":"https:\/\/hnsecurity.it\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/hnsec","https:\/\/www.linkedin.com\/company\/hnsecurity\/","https:\/\/github.com\/hnsecurity","https:\/\/infosec.exchange\/@hnsec"]},{"@type":"Person","@id":"https:\/\/hnsecurity.it\/it\/#\/schema\/person\/89a4174c275f05d6148fb0fdedc8de4f","name":"Marco Ivaldi","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/a8a96db06e7315a061d28b320ee7bb4c9d0f1535c58bf0f54218bf8a7569bea0?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a8a96db06e7315a061d28b320ee7bb4c9d0f1535c58bf0f54218bf8a7569bea0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a8a96db06e7315a061d28b320ee7bb4c9d0f1535c58bf0f54218bf8a7569bea0?s=96&d=mm&r=g","caption":"Marco Ivaldi"},"url":"https:\/\/hnsecurity.it\/it\/blog\/author\/marco-ivaldi\/"}]}},"jetpack_featured_media_url":"https:\/\/hnsecurity.it\/wp-content\/uploads\/2025\/09\/SEMGREP.jpg","_links":{"self":[{"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/posts\/161453","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/comments?post=161453"}],"version-history":[{"count":93,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/posts\/161453\/revisions"}],"predecessor-version":[{"id":161648,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/posts\/161453\/revisions\/161648"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/media\/159955"}],"wp:attachment":[{"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/media?parent=161453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/categories?post=161453"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hnsecurity.it\/it\/wp-json\/wp\/v2\/tags?post=161453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}