{"id":26249,"date":"2026-09-23T23:00:53","date_gmt":"2026-09-24T07:00:53","guid":{"rendered":"https:\/\/www.palada.net\/index.php\/2026\/09\/23\/get-the-spectra-assure-community-plugin-for-jfrog-artifactory-2\/"},"modified":"2026-09-23T23:00:53","modified_gmt":"2026-09-24T07:00:53","slug":"get-the-spectra-assure-community-plugin-for-jfrog-artifactory-2","status":"publish","type":"post","link":"https:\/\/www.palada.net\/index.php\/2026\/09\/23\/get-the-spectra-assure-community-plugin-for-jfrog-artifactory-2\/","title":{"rendered":"Get the Spectra Assure Community Plugin for JFrog Artifactory"},"content":{"rendered":"<div class=\"rich-text_richText__UyrDZ\" data-anchor-headings=\"true\" data-component=\"rich-text\" data-reader-view=\"false\">\n<div class=\"payload-richtext\">\n<p>Even with JFrog Artifactory proxying public open-source software (OSS) registries, package managers like npm and pip will typically pull the newest version of a dependency \u2014 even if it was published just moments before. That&#8217;s convenient \u2014 but it&#8217;s also the workflow attackers have learned to exploit.<\/p>\n<p>Malicious OSS packages aren&#8217;t a one-off problem anymore. They&#8217;re a recurring campaign. For example, the Shai-Hulud worm is now on its fourth iteration. Trivy, Axios, and LiteLLM have all seen compromised releases. Attackers have found ways to smuggle payloads through npm&#8217;s <em>binding.gyp<\/em>, and even a Checkmarx VS Code extension got hit. The common thread: a trusted maintainer&#8217;s credentials get compromised, a malicious version gets published to npm or PyPI, and any repo set up to auto-update just pulls in the new version \u2014 no testing needed<em>.<\/em><\/p>\n<p>To close that gap, ReversingLabs has released a <a href=\"https:\/\/github.com\/reversinglabs\/rlArtifactoryPlugin\"><span style=\"text-decoration:underline\">free integration for JFrog Artifactory<\/span><\/a>, a native plugin for self-managed instances of Artifactory that checks every OSS package request against insights from <a href=\"https:\/\/secure.software\/\"><span style=\"text-decoration:underline\">Spectra Assure Community<\/span><\/a> before letting it through.<\/p>\n<p>For those who are new to our <a href=\"https:\/\/www.reversinglabs.com\/blog\/why-rl-built-spectra-assure-community\"><span style=\"text-decoration:underline\">Community platform<\/span><\/a>, it delivers real-time threat intelligence on millions of OSS packages, Model Context Protocol (MCP) servers, and developer tools from public repositories like npm and PyPI. It continuously monitors those repositories for new packages to analyze. As new threats emerge its entire package repository is reanalyzed and updated reports are published. Teams can automate safety checks and policy enforcement with <a href=\"https:\/\/docs.secure.software\/community\/api\/\"><span style=\"text-decoration:underline\">the platform\u2019s API<\/span><\/a>\u00a0 \u2014 and with our new plugin.<\/p>\n<p><strong>[ Learn more: <\/strong><a href=\"https:\/\/www.reversinglabs.com\/blog\/why-rl-built-spectra-assure-community\"><strong>Why RL Built Spectra Assure Community<\/strong><\/a><strong> | <\/strong><a href=\"https:\/\/secure.software\/user\/signup\"><strong>Sign up for free<\/strong><\/a><strong>]<\/strong><\/p>\n<h2 id=\"the-problem-artifactory-was-never-built-to-vet-packages\"><strong>The Problem: Artifactory Was Never Built to Vet Packages<\/strong><\/h2>\n<p>For many development teams, Artifactory is where software artifacts are stored, where CI\/CD pipelines pull OSS and third-party dependencies from, and where builds and release candidates are kept. Repositories stored and shared on Artifactory are typically considered \u201cinternal\u201d to the organization, so it is easy to assume the contents are safe. However, repositories do not judge on their own whether a package is safe or not.<\/p>\n<p>That gap gets exploited two ways. Compromised packages are pulled into build pipelines, then incorporated into releases and shipped to customers, or they land on developer workstations that often have credentials and access to sensitive systems. Either way, the automation that makes Artifactory convenient is the same automation that spreads a risky package before anyone notices.<\/p>\n<h3><strong>How the Plugin Works<\/strong><\/h3>\n<p>The plugin runs in-process with Artifactory \u2014 it&#8217;s not a separate service or proxy that needs to be deployed. Because it loads as part of Artifactory itself, it sees every incoming artifact request, making it a same-day way to start blocking the next Shai-Hulud before it reaches a build or infects a developer\u2019s workstation.<\/p>\n<ol class=\"list-number\">\n<li class=\"\" value=\"1\"><strong>Intercept.<\/strong> The plugin checks artifact properties on every incoming download request for npm, PyPI, Maven, NuGet, or RubyGems packages.<\/li>\n<li class=\"\" value=\"2\"><strong>Check Freshness.<\/strong> If that package version hasn&#8217;t been checked recently (24 hours by default, configurable), the plugin calls the Spectra Assure Community API.<\/li>\n<li class=\"\" value=\"3\"><strong>Evaluate and Tag.<\/strong> The response gets parsed and written back as <em>secure.software.*<\/em> properties on the artifact \u2014 status, hash, PURL, publish date, and more.<\/li>\n<li class=\"\" value=\"4\"><strong>Allow or Block.<\/strong> A <em>pass<\/em> or <em>warning<\/em> status lets the download proceed normally. A fail status returns an HTTP 403 to the client, with a link to the full Spectra Assure Community report so the developer can see exactly why it was blocked.<\/li>\n<\/ol>\n<div class=\"rich-media_container__AH6jG media-block_mediaBlock__nZBDJ\" data-position=\"center\" data-restrict=\"true\" data-size=\"fill\">\n<div class=\"rich-media_media__trppT\"><template id=\"P:e\"><\/template><\/p>\n<div class=\"rich-media_overlay__LSRfe\"><svg aria-hidden=\"true\" class=\"lucide lucide-expand\" fill=\"none\" height=\"24\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" viewbox=\"0 0 24 24\" width=\"24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"m15 15 6 6\"><\/path><path d=\"m15 9 6-6\"><\/path><path d=\"M21 16v5h-5\"><\/path><path d=\"M21 8V3h-5\"><\/path><path d=\"M3 16v5h5\"><\/path><path d=\"m3 21 6-6\"><\/path><path d=\"M3 8V3h5\"><\/path><path d=\"M9 9 3 3\"><\/path><\/svg><\/div>\n<\/div>\n<\/div>\n<p><em>Figure 1: How The Spectra Assure Community Plugin for JFrog Artifactory Works<\/em><\/p>\n<p>Important detail: this is a lookup, not a scan. The plugin isn&#8217;t running the Spectra Assure binary analysis engine itself; that important task already happened when the package was indexed in Community. That&#8217;s what keeps it fast enough to check every download request without adding noticeable latency.\u00a0<\/p>\n<p>You also get policy control to enforce governance rules. The plugin ships with three preset profiles that set how strict the blocking criteria are:\u00a0<\/p>\n<ul class=\"list-bullet\">\n<li class=\"\" value=\"1\"><strong>Minimum<\/strong> blocks only malicious dependencies vetted by ReversingLabs threat analysts.<\/li>\n<li class=\"\" value=\"2\"><strong>Baseline<\/strong> blocks malware, tampering, and actively exploited vulnerabilities (a solid starting point for typical development use).\u00a0<\/li>\n<li class=\"\" value=\"3\"><strong>Hardened<\/strong> is the default and most secure profile.\u00a0<\/li>\n<\/ul>\n<p>On top of whichever profile you choose, min_package_age and min_version_age settings let you enforce a cool-down period \u2014 refusing packages or versions until they&#8217;ve been publicly available for a specified number of days \u2014 which closes the window attackers rely on when they publish a malicious OSS package and hope it gets picked up before anyone notices.<\/p>\n<h3><strong>Where It Fits With Other Guardrails<\/strong><\/h3>\n<p>If you&#8217;re already using other Spectra Assure Community integrations, the Artifactory plugin covers a different point in the pipeline than the others:<\/p>\n<ul class=\"list-bullet\">\n<li class=\"\" value=\"1\"><strong>Claude Code Skills and MCP Server Integrations<\/strong> teach AI-coding assistants to check OSS dependencies before they are picked, pre-commit.<\/li>\n<li class=\"\" value=\"2\"><strong>CI\/CD Integration tool <\/strong><a href=\"https:\/\/docs.secure.software\/community\/tools\/rl-protect\"><span style=\"text-decoration:underline\">rl-protect<\/span><\/a> parses your build manifest and checks supported OSS packages listed before the build runs.<\/li>\n<li class=\"\" value=\"3\"><strong>The Community Artifactory plugin<\/strong> checks packages at the moment they&#8217;re requested from your repository \u2014 catching anything that is too risky or goes against company policy.<\/li>\n<\/ul>\n<h3><strong>What It Costs: Nothing<\/strong><\/h3>\n<p>This ships on the free Spectra Assure Community tier \u2014 100k API lookups per month. No binary scanning limits, full plugin functionality. If you outgrow that, the Community+ tier raises the ceiling to one million lookups per month. There&#8217;s no commercial discussion to get started; if it proves out, that happens later.<\/p>\n<p>The plugin and full setup docs live in the<a href=\"https:\/\/secure.software\"> <span style=\"text-decoration:underline\">Spectra Assure Community Toolbox<\/span><\/a> menu under &#8220;For JFrog Artifactory,&#8221; or directly on<a href=\"https:\/\/github.com\/reversinglabs\/rlArtifactoryPlugin\"> <span style=\"text-decoration:underline\">GitHub<\/span><\/a>. Installation is four files \u2014 the Groovy plugin script, a properties file, a jar, and your selected policy file \u2014 dropped into the standard Artifactory <em>plugins<\/em> directory, followed by a plugin reload or restart. Full details, including all supported configuration options, are in the<a href=\"https:\/\/docs.secure.software\/community\/integrations\"> <span style=\"text-decoration:underline\">Community integrations documentation<\/span><\/a>.<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Even with JFrog Artifactory proxying public open-source software (OSS) registries, package managers like npm and pip will typically pull the newest version of a dependency \u2014 even if it was published just moments before. That&#8217;s convenient \u2014 but it&#8217;s also the workflow attackers have learned to exploit.Malicious OSS packages aren&#8217;t a one-off problem anymore. They&#8217;re a recurring campaign. For example, the Shai-Hulud worm is now on its fourth iteration. Trivy, Axios, and LiteLLM have all seen comprom<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[32775],"tags":[],"class_list":["post-26249","post","type-post","status-publish","format-standard","hentry","category-reversinglabs"],"_links":{"self":[{"href":"https:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/posts\/26249","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/comments?post=26249"}],"version-history":[{"count":0,"href":"https:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/posts\/26249\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/media?parent=26249"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/categories?post=26249"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/tags?post=26249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}