diff --git a/08-threat-intel/generated/source-health.json b/08-threat-intel/generated/source-health.json index 6d165d28..bceb8983 100644 --- a/08-threat-intel/generated/source-health.json +++ b/08-threat-intel/generated/source-health.json @@ -1,17 +1,17 @@ { - "generated_at": "2026-03-19T01:47:37+00:00", - "active_source_count": 119, + "generated_at": "2026-03-19T01:51:16+00:00", + "active_source_count": 118, "green_source_count": 118, - "failure_count": 1, - "all_green": false, - "last_fully_green_run": "2026-03-19T00:21:33+00:00", + "failure_count": 0, + "all_green": true, + "last_fully_green_run": "2026-03-19T01:51:16+00:00", "retries_performed": 1, "probes": [ { "system_id": "adminer", "source_name": "NVD Adminer", "source_kind": "nvd-search", - "elapsed_seconds": 11.617, + "elapsed_seconds": 10.034, "kind": "nvd-search", "items_seen": 1 }, @@ -19,7 +19,7 @@ "system_id": "adobe-commerce", "source_name": "Adobe Magento Security Index", "source_kind": "vendor-index", - "elapsed_seconds": 4.107, + "elapsed_seconds": 2.379, "kind": "vendor-index", "items_seen": 46 }, @@ -27,7 +27,7 @@ "system_id": "adobe-commerce", "source_name": "NVD Adobe Commerce", "source_kind": "nvd-search", - "elapsed_seconds": 2.434, + "elapsed_seconds": 2.215, "kind": "nvd-search", "items_seen": 1 }, @@ -35,7 +35,7 @@ "system_id": "angular", "source_name": "OSV Angular", "source_kind": "osv-batch", - "elapsed_seconds": 8.689, + "elapsed_seconds": 6.927, "kind": "osv-batch", "items_seen": 1 }, @@ -43,7 +43,7 @@ "system_id": "apache-httpd", "source_name": "Apache HTTPD Security", "source_kind": "html-links", - "elapsed_seconds": 10.098, + "elapsed_seconds": 9.785, "kind": "html-links", "items_seen": 182 }, @@ -51,7 +51,7 @@ "system_id": "apache-httpd", "source_name": "CISA KEV Apache HTTPD", "source_kind": "kev-json", - "elapsed_seconds": 11.817, + "elapsed_seconds": 10.027, "kind": "kev-json", "items_seen": 1545 }, @@ -59,7 +59,7 @@ "system_id": "apache-httpd", "source_name": "NVD Apache HTTP Server", "source_kind": "nvd-search", - "elapsed_seconds": 9.691, + "elapsed_seconds": 8.386, "kind": "nvd-search", "items_seen": 1 }, @@ -67,7 +67,7 @@ "system_id": "apache-tomcat", "source_name": "Apache Tomcat Security", "source_kind": "html-links", - "elapsed_seconds": 11.255, + "elapsed_seconds": 11.262, "kind": "html-links", "items_seen": 270 }, @@ -75,7 +75,7 @@ "system_id": "apache-tomcat", "source_name": "CISA KEV Tomcat", "source_kind": "kev-json", - "elapsed_seconds": 11.287, + "elapsed_seconds": 10.033, "kind": "kev-json", "items_seen": 1545 }, @@ -83,7 +83,7 @@ "system_id": "apache-tomcat", "source_name": "NVD Tomcat", "source_kind": "nvd-search", - "elapsed_seconds": 10.099, + "elapsed_seconds": 8.386, "kind": "nvd-search", "items_seen": 1 }, @@ -91,7 +91,7 @@ "system_id": "aspnet-core", "source_name": "NVD ASP.NET Core", "source_kind": "nvd-search", - "elapsed_seconds": 9.587, + "elapsed_seconds": 8.326, "kind": "nvd-search", "items_seen": 1 }, @@ -99,7 +99,7 @@ "system_id": "astro", "source_name": "OSV Astro", "source_kind": "osv-batch", - "elapsed_seconds": 9.496, + "elapsed_seconds": 6.884, "kind": "osv-batch", "items_seen": 1 }, @@ -107,7 +107,7 @@ "system_id": "caddy", "source_name": "GitHub Caddy Advisories", "source_kind": "html-links", - "elapsed_seconds": 15.091, + "elapsed_seconds": 11.757, "kind": "html-links", "items_seen": 114 }, @@ -115,7 +115,7 @@ "system_id": "caddy", "source_name": "OSV Caddy", "source_kind": "osv-batch", - "elapsed_seconds": 15.022, + "elapsed_seconds": 11.481, "kind": "osv-batch", "items_seen": 1 }, @@ -123,7 +123,7 @@ "system_id": "directus", "source_name": "Directus GitHub Advisories", "source_kind": "html-links", - "elapsed_seconds": 2.436, + "elapsed_seconds": 2.217, "kind": "html-links", "items_seen": 127 }, @@ -131,7 +131,7 @@ "system_id": "directus", "source_name": "OSV Directus", "source_kind": "osv-batch", - "elapsed_seconds": 2.98, + "elapsed_seconds": 2.721, "kind": "osv-batch", "items_seen": 1 }, @@ -139,7 +139,7 @@ "system_id": "discourse", "source_name": "Discourse Release Notes RSS", "source_kind": "rss-feed", - "elapsed_seconds": 3.783, + "elapsed_seconds": 3.182, "kind": "rss-feed", "items_seen": 30 }, @@ -147,7 +147,7 @@ "system_id": "discourse", "source_name": "Discourse Security RSS", "source_kind": "rss-feed", - "elapsed_seconds": 2.783, + "elapsed_seconds": 2.945, "kind": "rss-feed", "items_seen": 3 }, @@ -155,7 +155,7 @@ "system_id": "discourse", "source_name": "OSV Discourse", "source_kind": "osv-batch", - "elapsed_seconds": 2.579, + "elapsed_seconds": 3.25, "kind": "osv-batch", "items_seen": 1 }, @@ -163,7 +163,7 @@ "system_id": "django", "source_name": "Django Security Releases Archive", "source_kind": "vendor-index", - "elapsed_seconds": 11.574, + "elapsed_seconds": 10.004, "kind": "vendor-index", "items_seen": 1276 }, @@ -171,7 +171,7 @@ "system_id": "django", "source_name": "Django Security Weblog", "source_kind": "vendor-index", - "elapsed_seconds": 15.034, + "elapsed_seconds": 11.481, "kind": "vendor-index", "items_seen": 332 }, @@ -179,7 +179,7 @@ "system_id": "django", "source_name": "OSV Django", "source_kind": "osv-batch", - "elapsed_seconds": 13.223, + "elapsed_seconds": 12.844, "kind": "osv-batch", "items_seen": 1 }, @@ -187,7 +187,7 @@ "system_id": "drupal", "source_name": "Drupal Security Advisories RSS", "source_kind": "rss-feed", - "elapsed_seconds": 0.666, + "elapsed_seconds": 0.537, "kind": "rss-feed", "items_seen": 20 }, @@ -195,7 +195,7 @@ "system_id": "drupal", "source_name": "OSV Drupal", "source_kind": "osv-batch", - "elapsed_seconds": 3.607, + "elapsed_seconds": 4.33, "kind": "osv-batch", "items_seen": 1 }, @@ -203,7 +203,7 @@ "system_id": "echo", "source_name": "OSV Echo", "source_kind": "osv-batch", - "elapsed_seconds": 11.755, + "elapsed_seconds": 11.698, "kind": "osv-batch", "items_seen": 1 }, @@ -211,7 +211,7 @@ "system_id": "esbuild", "source_name": "OSV esbuild", "source_kind": "osv-batch", - "elapsed_seconds": 11.613, + "elapsed_seconds": 8.324, "kind": "osv-batch", "items_seen": 1 }, @@ -219,7 +219,7 @@ "system_id": "express", "source_name": "OSV Express", "source_kind": "osv-batch", - "elapsed_seconds": 8.511, + "elapsed_seconds": 8.385, "kind": "osv-batch", "items_seen": 1 }, @@ -227,7 +227,7 @@ "system_id": "fastify", "source_name": "OSV Fastify", "source_kind": "osv-batch", - "elapsed_seconds": 8.511, + "elapsed_seconds": 8.382, "kind": "osv-batch", "items_seen": 1 }, @@ -235,7 +235,7 @@ "system_id": "flask", "source_name": "OSV Flask", "source_kind": "osv-batch", - "elapsed_seconds": 11.613, + "elapsed_seconds": 12.13, "kind": "osv-batch", "items_seen": 1 }, @@ -243,7 +243,7 @@ "system_id": "ghost", "source_name": "Ghost GitHub Advisories", "source_kind": "html-links", - "elapsed_seconds": 3.611, + "elapsed_seconds": 3.192, "kind": "html-links", "items_seen": 119 }, @@ -251,7 +251,7 @@ "system_id": "ghost", "source_name": "OSV Ghost", "source_kind": "osv-batch", - "elapsed_seconds": 2.562, + "elapsed_seconds": 3.082, "kind": "osv-batch", "items_seen": 1 }, @@ -259,7 +259,7 @@ "system_id": "gin", "source_name": "OSV Gin", "source_kind": "osv-batch", - "elapsed_seconds": 11.774, + "elapsed_seconds": 12.08, "kind": "osv-batch", "items_seen": 1 }, @@ -267,7 +267,7 @@ "system_id": "gitea", "source_name": "GitHub Gitea Advisories", "source_kind": "html-links", - "elapsed_seconds": 15.567, + "elapsed_seconds": 11.934, "kind": "html-links", "items_seen": 98 }, @@ -275,7 +275,7 @@ "system_id": "gitea", "source_name": "OSV Gitea", "source_kind": "osv-batch", - "elapsed_seconds": 15.072, + "elapsed_seconds": 11.574, "kind": "osv-batch", "items_seen": 1 }, @@ -283,7 +283,7 @@ "system_id": "gitlab-ce", "source_name": "GitLab Advisory Database", "source_kind": "html-links", - "elapsed_seconds": 15.156, + "elapsed_seconds": 12.981, "kind": "html-links", "items_seen": 5 }, @@ -291,7 +291,7 @@ "system_id": "gitlab-ce", "source_name": "GitLab Security Releases", "source_kind": "html-links", - "elapsed_seconds": 14.943, + "elapsed_seconds": 13.0, "kind": "html-links", "items_seen": 250 }, @@ -299,7 +299,7 @@ "system_id": "gitlab-ce", "source_name": "NVD GitLab", "source_kind": "nvd-search", - "elapsed_seconds": 11.758, + "elapsed_seconds": 11.262, "kind": "nvd-search", "items_seen": 1 }, @@ -307,7 +307,7 @@ "system_id": "grafana", "source_name": "CISA KEV Grafana", "source_kind": "kev-json", - "elapsed_seconds": 14.955, + "elapsed_seconds": 14.29, "kind": "kev-json", "items_seen": 1545 }, @@ -315,7 +315,7 @@ "system_id": "grafana", "source_name": "Grafana Security Advisories", "source_kind": "html-links", - "elapsed_seconds": 12.608, + "elapsed_seconds": 14.434, "kind": "html-links", "items_seen": 159 }, @@ -323,7 +323,7 @@ "system_id": "hapi", "source_name": "OSV Hapi", "source_kind": "osv-batch", - "elapsed_seconds": 8.474, + "elapsed_seconds": 8.324, "kind": "osv-batch", "items_seen": 1 }, @@ -331,7 +331,7 @@ "system_id": "haproxy", "source_name": "HAProxy Blog Feed", "source_kind": "rss-feed", - "elapsed_seconds": 16.034, + "elapsed_seconds": 13.669, "kind": "rss-feed", "items_seen": 10 }, @@ -339,7 +339,7 @@ "system_id": "haproxy", "source_name": "NVD HAProxy", "source_kind": "nvd-search", - "elapsed_seconds": 11.616, + "elapsed_seconds": 10.008, "kind": "nvd-search", "items_seen": 1 }, @@ -347,7 +347,7 @@ "system_id": "jenkins", "source_name": "Jenkins Security Advisories", "source_kind": "html-links", - "elapsed_seconds": 14.649, + "elapsed_seconds": 17.207, "kind": "html-links", "items_seen": 1194 }, @@ -355,7 +355,7 @@ "system_id": "jenkins", "source_name": "NVD Jenkins", "source_kind": "nvd-search", - "elapsed_seconds": 11.82, + "elapsed_seconds": 11.47, "kind": "nvd-search", "items_seen": 1 }, @@ -363,7 +363,7 @@ "system_id": "joomla", "source_name": "Joomla Security Centre", "source_kind": "html-links", - "elapsed_seconds": 4.059, + "elapsed_seconds": 2.791, "kind": "html-links", "items_seen": 139 }, @@ -371,7 +371,7 @@ "system_id": "joomla", "source_name": "OSV Joomla", "source_kind": "osv-batch", - "elapsed_seconds": 2.729, + "elapsed_seconds": 4.401, "kind": "osv-batch", "items_seen": 1 }, @@ -379,15 +379,15 @@ "system_id": "kibana", "source_name": "Elastic Security Announcements", "source_kind": "html-links", - "elapsed_seconds": 13.501, + "elapsed_seconds": 14.853, "kind": "html-links", - "items_seen": 82 + "items_seen": 71 }, { "system_id": "kibana", "source_name": "NVD Kibana", "source_kind": "nvd-search", - "elapsed_seconds": 12.355, + "elapsed_seconds": 11.52, "kind": "nvd-search", "items_seen": 1 }, @@ -395,7 +395,7 @@ "system_id": "koa", "source_name": "OSV Koa", "source_kind": "osv-batch", - "elapsed_seconds": 8.513, + "elapsed_seconds": 11.698, "kind": "osv-batch", "items_seen": 1 }, @@ -403,7 +403,7 @@ "system_id": "laravel", "source_name": "OSV Laravel", "source_kind": "osv-batch", - "elapsed_seconds": 11.887, + "elapsed_seconds": 9.659, "kind": "osv-batch", "items_seen": 1 }, @@ -411,7 +411,7 @@ "system_id": "magento-open-source", "source_name": "Magento GitHub Advisories", "source_kind": "html-links", - "elapsed_seconds": 3.285, + "elapsed_seconds": 5.804, "kind": "html-links", "items_seen": 99 }, @@ -419,7 +419,7 @@ "system_id": "magento-open-source", "source_name": "NVD Magento", "source_kind": "nvd-search", - "elapsed_seconds": 2.559, + "elapsed_seconds": 2.381, "kind": "nvd-search", "items_seen": 1 }, @@ -427,7 +427,7 @@ "system_id": "magento-open-source", "source_name": "Sansec Research", "source_kind": "html-links", - "elapsed_seconds": 3.785, + "elapsed_seconds": 5.619, "kind": "html-links", "items_seen": 134 }, @@ -435,7 +435,7 @@ "system_id": "mattermost", "source_name": "Mattermost Security Updates JSON", "source_kind": "json-feed", - "elapsed_seconds": 14.912, + "elapsed_seconds": 14.263, "kind": "json-feed", "items_seen": 594 }, @@ -443,7 +443,7 @@ "system_id": "mattermost", "source_name": "OSV Mattermost", "source_kind": "osv-batch", - "elapsed_seconds": 15.684, + "elapsed_seconds": 15.551, "kind": "osv-batch", "items_seen": 1 }, @@ -451,7 +451,7 @@ "system_id": "mediawiki", "source_name": "MediaWiki Announce RSS", "source_kind": "rss-feed", - "elapsed_seconds": 4.819, + "elapsed_seconds": 4.361, "kind": "rss-feed", "items_seen": 30 }, @@ -459,7 +459,7 @@ "system_id": "mediawiki", "source_name": "OSV MediaWiki", "source_kind": "osv-batch", - "elapsed_seconds": 3.336, + "elapsed_seconds": 2.496, "kind": "osv-batch", "items_seen": 1 }, @@ -467,7 +467,7 @@ "system_id": "medusa", "source_name": "GitHub Medusa Advisories", "source_kind": "html-links", - "elapsed_seconds": 5.396, + "elapsed_seconds": 5.296, "kind": "html-links", "items_seen": 102 }, @@ -475,7 +475,7 @@ "system_id": "medusa", "source_name": "OSV Medusa", "source_kind": "osv-batch", - "elapsed_seconds": 5.46, + "elapsed_seconds": 5.974, "kind": "osv-batch", "items_seen": 1 }, @@ -483,7 +483,7 @@ "system_id": "moodle", "source_name": "OSV Moodle", "source_kind": "osv-batch", - "elapsed_seconds": 5.871, + "elapsed_seconds": 6.51, "kind": "osv-batch", "items_seen": 1 }, @@ -491,7 +491,7 @@ "system_id": "nestjs", "source_name": "OSV NestJS", "source_kind": "osv-batch", - "elapsed_seconds": 9.603, + "elapsed_seconds": 8.325, "kind": "osv-batch", "items_seen": 1 }, @@ -499,7 +499,7 @@ "system_id": "nextjs", "source_name": "GitHub Next.js Advisories", "source_kind": "html-links", - "elapsed_seconds": 8.584, + "elapsed_seconds": 10.054, "kind": "html-links", "items_seen": 123 }, @@ -507,7 +507,7 @@ "system_id": "nextjs", "source_name": "OSV Next.js", "source_kind": "osv-batch", - "elapsed_seconds": 9.583, + "elapsed_seconds": 6.325, "kind": "osv-batch", "items_seen": 1 }, @@ -515,7 +515,7 @@ "system_id": "nginx", "source_name": "CISA KEV NGINX", "source_kind": "kev-json", - "elapsed_seconds": 11.297, + "elapsed_seconds": 10.109, "kind": "kev-json", "items_seen": 1545 }, @@ -523,7 +523,7 @@ "system_id": "nginx", "source_name": "NGINX Security Advisories", "source_kind": "html-links", - "elapsed_seconds": 14.3, + "elapsed_seconds": 12.773, "kind": "html-links", "items_seen": 138 }, @@ -531,7 +531,7 @@ "system_id": "nginx", "source_name": "NVD NGINX", "source_kind": "nvd-search", - "elapsed_seconds": 9.631, + "elapsed_seconds": 8.326, "kind": "nvd-search", "items_seen": 1 }, @@ -539,7 +539,7 @@ "system_id": "nodejs", "source_name": "CISA KEV Node.js", "source_kind": "kev-json", - "elapsed_seconds": 8.262, + "elapsed_seconds": 8.016, "kind": "kev-json", "items_seen": 1545 }, @@ -547,7 +547,7 @@ "system_id": "nodejs", "source_name": "Node.js Security Releases", "source_kind": "html-links", - "elapsed_seconds": 8.579, + "elapsed_seconds": 6.803, "kind": "html-links", "items_seen": 74 }, @@ -555,7 +555,7 @@ "system_id": "nuxt", "source_name": "Nuxt Security", "source_kind": "html-links", - "elapsed_seconds": 8.562, + "elapsed_seconds": 6.23, "kind": "html-links", "items_seen": 118 }, @@ -563,7 +563,7 @@ "system_id": "nuxt", "source_name": "OSV Nuxt", "source_kind": "osv-batch", - "elapsed_seconds": 9.49, + "elapsed_seconds": 6.8, "kind": "osv-batch", "items_seen": 1 }, @@ -571,7 +571,7 @@ "system_id": "opencart", "source_name": "OSV OpenCart", "source_kind": "osv-batch", - "elapsed_seconds": 5.499, + "elapsed_seconds": 5.328, "kind": "osv-batch", "items_seen": 1 }, @@ -579,7 +579,7 @@ "system_id": "opencart", "source_name": "OpenCart Releases", "source_kind": "html-links", - "elapsed_seconds": 6.914, + "elapsed_seconds": 6.514, "kind": "html-links", "items_seen": 1500 }, @@ -587,7 +587,7 @@ "system_id": "openmage", "source_name": "OSV OpenMage", "source_kind": "osv-batch", - "elapsed_seconds": 3.812, + "elapsed_seconds": 5.302, "kind": "osv-batch", "items_seen": 1 }, @@ -595,7 +595,7 @@ "system_id": "openmage", "source_name": "OpenMage GitHub Advisories", "source_kind": "html-links", - "elapsed_seconds": 5.44, + "elapsed_seconds": 5.329, "kind": "html-links", "items_seen": 125 }, @@ -603,7 +603,7 @@ "system_id": "phpmyadmin", "source_name": "OSV phpMyAdmin", "source_kind": "osv-batch", - "elapsed_seconds": 15.305, + "elapsed_seconds": 13.054, "kind": "osv-batch", "items_seen": 1 }, @@ -611,7 +611,7 @@ "system_id": "phpmyadmin", "source_name": "phpMyAdmin Security Page", "source_kind": "html-links", - "elapsed_seconds": 14.785, + "elapsed_seconds": 11.466, "kind": "html-links", "items_seen": 262 }, @@ -619,7 +619,7 @@ "system_id": "prestashop", "source_name": "Friends Of Presta Security", "source_kind": "html-links", - "elapsed_seconds": 6.307, + "elapsed_seconds": 5.911, "kind": "html-links", "items_seen": 38 }, @@ -627,7 +627,7 @@ "system_id": "prestashop", "source_name": "GitHub PrestaShop Advisories", "source_kind": "html-links", - "elapsed_seconds": 5.401, + "elapsed_seconds": 5.25, "kind": "html-links", "items_seen": 127 }, @@ -635,7 +635,7 @@ "system_id": "prestashop", "source_name": "OSV PrestaShop", "source_kind": "osv-batch", - "elapsed_seconds": 5.549, + "elapsed_seconds": 5.335, "kind": "osv-batch", "items_seen": 1 }, @@ -643,7 +643,7 @@ "system_id": "prestashop", "source_name": "PrestaShop Security Page", "source_kind": "html-links", - "elapsed_seconds": 5.295, + "elapsed_seconds": 3.616, "kind": "html-links", "items_seen": 60 }, @@ -651,7 +651,7 @@ "system_id": "rails", "source_name": "OSV Rails", "source_kind": "osv-batch", - "elapsed_seconds": 15.16, + "elapsed_seconds": 11.753, "kind": "osv-batch", "items_seen": 1 }, @@ -659,7 +659,7 @@ "system_id": "react", "source_name": "GitHub React Advisories", "source_kind": "html-links", - "elapsed_seconds": 5.638, + "elapsed_seconds": 5.858, "kind": "html-links", "items_seen": 110 }, @@ -667,7 +667,7 @@ "system_id": "react", "source_name": "OSV React", "source_kind": "osv-batch", - "elapsed_seconds": 5.986, + "elapsed_seconds": 7.124, "kind": "osv-batch", "items_seen": 1 }, @@ -675,7 +675,7 @@ "system_id": "redmine", "source_name": "OSV Redmine", "source_kind": "osv-batch", - "elapsed_seconds": 14.932, + "elapsed_seconds": 14.623, "kind": "osv-batch", "items_seen": 1 }, @@ -683,7 +683,7 @@ "system_id": "redmine", "source_name": "Redmine Security Advisories", "source_kind": "html-links", - "elapsed_seconds": 15.646, + "elapsed_seconds": 15.7, "kind": "html-links", "items_seen": 371 }, @@ -691,7 +691,7 @@ "system_id": "saleor", "source_name": "GitHub Saleor Advisories", "source_kind": "html-links", - "elapsed_seconds": 5.519, + "elapsed_seconds": 5.259, "kind": "html-links", "items_seen": 120 }, @@ -699,7 +699,7 @@ "system_id": "saleor", "source_name": "OSV Saleor", "source_kind": "osv-batch", - "elapsed_seconds": 5.5, + "elapsed_seconds": 5.387, "kind": "osv-batch", "items_seen": 1 }, @@ -707,7 +707,7 @@ "system_id": "shopware", "source_name": "OSV Shopware", "source_kind": "osv-batch", - "elapsed_seconds": 5.752, + "elapsed_seconds": 5.497, "kind": "osv-batch", "items_seen": 1 }, @@ -715,7 +715,7 @@ "system_id": "shopware", "source_name": "Shopware Security Advisories", "source_kind": "html-links", - "elapsed_seconds": 5.431, + "elapsed_seconds": 5.862, "kind": "html-links", "items_seen": 129 }, @@ -723,7 +723,7 @@ "system_id": "spring-boot", "source_name": "OSV Spring Boot", "source_kind": "osv-batch", - "elapsed_seconds": 9.802, + "elapsed_seconds": 8.383, "kind": "osv-batch", "items_seen": 1 }, @@ -731,7 +731,7 @@ "system_id": "spring-boot", "source_name": "Spring Security Advisories", "source_kind": "html-links", - "elapsed_seconds": 12.006, + "elapsed_seconds": 10.007, "kind": "html-links", "items_seen": 118 }, @@ -739,7 +739,7 @@ "system_id": "spring-framework", "source_name": "OSV Spring Framework", "source_kind": "osv-batch", - "elapsed_seconds": 9.688, + "elapsed_seconds": 8.348, "kind": "osv-batch", "items_seen": 1 }, @@ -747,7 +747,7 @@ "system_id": "spring-framework", "source_name": "Spring Security Advisories", "source_kind": "html-links", - "elapsed_seconds": 11.616, + "elapsed_seconds": 8.15, "kind": "html-links", "items_seen": 118 }, @@ -755,7 +755,7 @@ "system_id": "spring-security", "source_name": "OSV Spring Security", "source_kind": "osv-batch", - "elapsed_seconds": 9.401, + "elapsed_seconds": 8.384, "kind": "osv-batch", "items_seen": 1 }, @@ -763,7 +763,7 @@ "system_id": "spring-security", "source_name": "Spring Security Advisories", "source_kind": "html-links", - "elapsed_seconds": 11.611, + "elapsed_seconds": 8.131, "kind": "html-links", "items_seen": 118 }, @@ -771,7 +771,7 @@ "system_id": "strapi", "source_name": "OSV Strapi", "source_kind": "osv-batch", - "elapsed_seconds": 2.804, + "elapsed_seconds": 3.187, "kind": "osv-batch", "items_seen": 1 }, @@ -779,7 +779,7 @@ "system_id": "strapi", "source_name": "Strapi GitHub Advisories", "source_kind": "html-links", - "elapsed_seconds": 3.207, + "elapsed_seconds": 2.67, "kind": "html-links", "items_seen": 124 }, @@ -787,7 +787,7 @@ "system_id": "sveltekit", "source_name": "OSV SvelteKit", "source_kind": "osv-batch", - "elapsed_seconds": 9.63, + "elapsed_seconds": 8.323, "kind": "osv-batch", "items_seen": 1 }, @@ -795,7 +795,7 @@ "system_id": "symfony", "source_name": "OSV Symfony", "source_kind": "osv-batch", - "elapsed_seconds": 12.352, + "elapsed_seconds": 9.659, "kind": "osv-batch", "items_seen": 1 }, @@ -803,7 +803,7 @@ "system_id": "traefik", "source_name": "GitHub Traefik Advisories", "source_kind": "html-links", - "elapsed_seconds": 15.13, + "elapsed_seconds": 11.468, "kind": "html-links", "items_seen": 124 }, @@ -811,7 +811,7 @@ "system_id": "traefik", "source_name": "OSV Traefik", "source_kind": "osv-batch", - "elapsed_seconds": 15.06, + "elapsed_seconds": 11.754, "kind": "osv-batch", "items_seen": 1 }, @@ -819,7 +819,7 @@ "system_id": "undici", "source_name": "OSV Undici", "source_kind": "osv-batch", - "elapsed_seconds": 9.636, + "elapsed_seconds": 8.325, "kind": "osv-batch", "items_seen": 1 }, @@ -827,7 +827,7 @@ "system_id": "vite", "source_name": "OSV Vite", "source_kind": "osv-batch", - "elapsed_seconds": 9.659, + "elapsed_seconds": 6.326, "kind": "osv-batch", "items_seen": 1 }, @@ -835,7 +835,7 @@ "system_id": "vite", "source_name": "Vite Security", "source_kind": "html-links", - "elapsed_seconds": 8.615, + "elapsed_seconds": 6.324, "kind": "html-links", "items_seen": 124 }, @@ -843,7 +843,7 @@ "system_id": "vue", "source_name": "OSV Vue", "source_kind": "osv-batch", - "elapsed_seconds": 8.512, + "elapsed_seconds": 6.225, "kind": "osv-batch", "items_seen": 1 }, @@ -851,7 +851,7 @@ "system_id": "vue", "source_name": "Vue Security", "source_kind": "html-links", - "elapsed_seconds": 8.565, + "elapsed_seconds": 6.379, "kind": "html-links", "items_seen": 111 }, @@ -859,7 +859,7 @@ "system_id": "webpack", "source_name": "OSV webpack", "source_kind": "osv-batch", - "elapsed_seconds": 9.625, + "elapsed_seconds": 8.323, "kind": "osv-batch", "items_seen": 1 }, @@ -867,7 +867,7 @@ "system_id": "werkzeug", "source_name": "OSV Werkzeug", "source_kind": "osv-batch", - "elapsed_seconds": 11.647, + "elapsed_seconds": 11.52, "kind": "osv-batch", "items_seen": 1 }, @@ -875,7 +875,7 @@ "system_id": "woocommerce", "source_name": "GitHub WooCommerce Advisories", "source_kind": "html-links", - "elapsed_seconds": 5.554, + "elapsed_seconds": 5.303, "kind": "html-links", "items_seen": 107 }, @@ -883,7 +883,7 @@ "system_id": "woocommerce", "source_name": "OSV WooCommerce", "source_kind": "osv-batch", - "elapsed_seconds": 5.437, + "elapsed_seconds": 5.183, "kind": "osv-batch", "items_seen": 1 }, @@ -891,7 +891,7 @@ "system_id": "woocommerce", "source_name": "Patchstack Database", "source_kind": "html-links", - "elapsed_seconds": 5.57, + "elapsed_seconds": 4.346, "kind": "html-links", "items_seen": 193 }, @@ -899,7 +899,7 @@ "system_id": "woocommerce", "source_name": "Woo Developer Advisories", "source_kind": "html-links", - "elapsed_seconds": 6.111, + "elapsed_seconds": 7.928, "kind": "html-links", "items_seen": 121 }, @@ -907,23 +907,15 @@ "system_id": "woocommerce", "source_name": "Wordfence Vulnerability Database", "source_kind": "html-links", - "elapsed_seconds": 5.122, + "elapsed_seconds": 3.771, "kind": "html-links", "items_seen": 0 }, - { - "system_id": "wordpress", - "source_name": "NVD WordPress", - "source_kind": "nvd-search", - "elapsed_seconds": 0.006, - "kind": "nvd-search", - "items_seen": 1 - }, { "system_id": "wordpress", "source_name": "Patchstack Database", "source_kind": "html-links", - "elapsed_seconds": 3.568, + "elapsed_seconds": 2.629, "kind": "html-links", "items_seen": 193 }, @@ -931,7 +923,6 @@ "system_id": "wordpress", "source_name": "PortSwigger Research", "source_kind": "html-links", - "elapsed_seconds": 2.205, "kind": "html-links", "items_seen": 99 }, @@ -939,104 +930,97 @@ "system_id": "wordpress", "source_name": "WPScan Vulnerability Database", "source_kind": "html-links", - "elapsed_seconds": 2.733, + "elapsed_seconds": 2.429, "kind": "html-links", "items_seen": 74 }, + { + "system_id": "wordpress", + "source_name": "WordPress Security News RSS", + "source_kind": "rss-feed", + "elapsed_seconds": 2.792, + "kind": "rss-feed", + "items_seen": 10 + }, { "system_id": "wordpress", "source_name": "Wordfence Vulnerability Database", "source_kind": "html-links", - "elapsed_seconds": 3.184, + "elapsed_seconds": 0.536, "kind": "html-links", "items_seen": 0 } ], - "failures": [ - { - "system_id": "wordpress", - "display_name": "WordPress", - "source_name": "WordPress Security News", - "source_kind": "html-links", - "source_bucket": "official_sources", - "category": "rate_limit", - "exception": "HTTPError", - "message": "429 Client Error: Too Many Requests for url: https://wordpress.org/news/category/security/", - "status_code": 429, - "url": "https://wordpress.org/news/category/security/", - "summary": "wordpress::WordPress Security News::rate_limit::429 Client Error: Too Many Requests for url: https://wordpress.org/news/category/security/", - "elapsed_seconds": 3.254 - } - ], + "failures": [], "slow_sources": [ { - "system_id": "haproxy", - "source_name": "HAProxy Blog Feed", - "source_kind": "rss-feed", - "elapsed_seconds": 16.034, - "status": "ok" - }, - { - "system_id": "mattermost", - "source_name": "OSV Mattermost", - "source_kind": "osv-batch", - "elapsed_seconds": 15.684, + "system_id": "jenkins", + "source_name": "Jenkins Security Advisories", + "source_kind": "html-links", + "elapsed_seconds": 17.207, "status": "ok" }, { "system_id": "redmine", "source_name": "Redmine Security Advisories", "source_kind": "html-links", - "elapsed_seconds": 15.646, + "elapsed_seconds": 15.7, "status": "ok" }, { - "system_id": "gitea", - "source_name": "GitHub Gitea Advisories", + "system_id": "mattermost", + "source_name": "OSV Mattermost", + "source_kind": "osv-batch", + "elapsed_seconds": 15.551, + "status": "ok" + }, + { + "system_id": "kibana", + "source_name": "Elastic Security Announcements", "source_kind": "html-links", - "elapsed_seconds": 15.567, + "elapsed_seconds": 14.853, + "status": "ok" + }, + { + "system_id": "redmine", + "source_name": "OSV Redmine", + "source_kind": "osv-batch", + "elapsed_seconds": 14.623, + "status": "ok" + }, + { + "system_id": "grafana", + "source_name": "Grafana Security Advisories", + "source_kind": "html-links", + "elapsed_seconds": 14.434, + "status": "ok" + }, + { + "system_id": "grafana", + "source_name": "CISA KEV Grafana", + "source_kind": "kev-json", + "elapsed_seconds": 14.29, + "status": "ok" + }, + { + "system_id": "mattermost", + "source_name": "Mattermost Security Updates JSON", + "source_kind": "json-feed", + "elapsed_seconds": 14.263, + "status": "ok" + }, + { + "system_id": "haproxy", + "source_name": "HAProxy Blog Feed", + "source_kind": "rss-feed", + "elapsed_seconds": 13.669, "status": "ok" }, { "system_id": "phpmyadmin", "source_name": "OSV phpMyAdmin", "source_kind": "osv-batch", - "elapsed_seconds": 15.305, - "status": "ok" - }, - { - "system_id": "rails", - "source_name": "OSV Rails", - "source_kind": "osv-batch", - "elapsed_seconds": 15.16, - "status": "ok" - }, - { - "system_id": "gitlab-ce", - "source_name": "GitLab Advisory Database", - "source_kind": "html-links", - "elapsed_seconds": 15.156, - "status": "ok" - }, - { - "system_id": "traefik", - "source_name": "GitHub Traefik Advisories", - "source_kind": "html-links", - "elapsed_seconds": 15.13, - "status": "ok" - }, - { - "system_id": "caddy", - "source_name": "GitHub Caddy Advisories", - "source_kind": "html-links", - "elapsed_seconds": 15.091, - "status": "ok" - }, - { - "system_id": "gitea", - "source_name": "OSV Gitea", - "source_kind": "osv-batch", - "elapsed_seconds": 15.072, + "elapsed_seconds": 13.054, "status": "ok" } ], @@ -1471,9 +1455,9 @@ { "system_id": "wordpress", "display_name": "WordPress", - "active_source_total": 6, + "active_source_total": 5, "green_source_total": 5, - "failure_count": 1 + "failure_count": 0 } ] } diff --git a/08-threat-intel/source-map.yaml b/08-threat-intel/source-map.yaml index bc2d19b0..cc6d6566 100644 --- a/08-threat-intel/source-map.yaml +++ b/08-threat-intel/source-map.yaml @@ -6,19 +6,24 @@ systems: tier: history-full advisory_modes: [core, plugin] official_sources: - - name: WordPress Security News - kind: html-links - url: https://wordpress.org/news/category/security/ + - name: WordPress Security News RSS + kind: rss-feed + url: https://wordpress.org/news/category/security/feed/ confidence: official advisory_mode: core keywords: [wordpress, security, release] max_items: 40 + request_policy: + user_agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 - name: NVD WordPress kind: nvd-search keyword: WordPress confidence: official advisory_mode: core results_per_page: 50 + status: retired + retired_reason: WordPress official RSS plus ecosystem plugin intelligence cover active collection with lower cold-start latency and lower public-search dependence than NVD. + replacement_sources: [WordPress Security News RSS, Wordfence Vulnerability Database, WPScan Vulnerability Database] ecosystem_sources: - name: Wordfence Vulnerability Database kind: html-links diff --git a/scripts/intel/config.py b/scripts/intel/config.py index f5c3e231..49be94f5 100644 --- a/scripts/intel/config.py +++ b/scripts/intel/config.py @@ -33,7 +33,7 @@ SOURCE_BUCKETS = ("official_sources", "ecosystem_sources", "research_sources") MACHINE_READABLE_SOURCE_KINDS = {"ghsa-global", "osv-batch", "nvd-search", "kev-json", "json-feed", "rss-feed", "atom-feed"} DEFAULT_REQUEST_POLICY = { - "user_agent": "python-requests/2.31.0", + "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "accept": "", "timeout_seconds": 30, "verify_tls": True, diff --git a/scripts/intel/http_client.py b/scripts/intel/http_client.py index d6a159c7..1bc9c2d1 100644 --- a/scripts/intel/http_client.py +++ b/scripts/intel/http_client.py @@ -9,7 +9,7 @@ from intel.config import DEFAULT_HEALTH_POLICY, DEFAULT_REQUEST_POLICY DEFAULT_TIMEOUT = 30 -DEFAULT_USER_AGENT = "python-requests/2.31.0" +DEFAULT_USER_AGENT = str(DEFAULT_REQUEST_POLICY.get("user_agent") or "Mozilla/5.0") def _request_policy(source: Dict[str, Any] | None = None) -> Dict[str, Any]: