Add integration e2e coverage: GitHubApp, advisory pipeline, Rekor, eBPF hardening

- GitHubApp: 11 new tests (health, CRUD lifecycle, update, delete, UI SCM tab)
- Advisory pipeline: 16 tests (fixture data verification, source management smoke,
  initial/incremental sync, cross-source merge, canonical query API, UI catalog)
  with KEV/GHSA/EPSS fixture data files for deterministic testing
- Rekor transparency: 7 tests (container health, submit/get/verify round-trip,
  log consistency, attestation API) gated behind E2E_REKOR=1
- eBPF agent: 3 edge case tests (unreachable endpoint, coexistence, degraded health)
  plus mock limitation documentation in test header
- Fix UI search race: wait for table rows before counting rowsBefore
- Advisory fixture now serves real data (KEV JSON, GHSA list, EPSS CSV)
- Runtime host fixture adds degraded health endpoint

Suite: 143 passed, 0 failed, 32 skipped in 13.5min (up from 123 tests)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
master
2026-04-03 10:34:04 +03:00
parent a86ef6afb8
commit 2141fea4b6
13 changed files with 1545 additions and 1 deletions

View File

@@ -66,6 +66,7 @@ services:
- "127.1.1.8:80:80"
volumes:
- ./fixtures/integration-fixtures/advisory/default.conf:/etc/nginx/conf.d/default.conf:ro
- ./fixtures/integration-fixtures/advisory/data:/etc/nginx/data:ro
networks:
stellaops:
aliases:

View File

@@ -0,0 +1,12 @@
#model_version:v2026.03.01,score_date:2026-03-30
cve,epss,percentile
CVE-2024-0001,0.92,0.99
CVE-2024-0002,0.78,0.96
CVE-2024-0003,0.45,0.88
CVE-2024-0004,0.33,0.82
CVE-2024-0005,0.12,0.65
CVE-2024-0010,0.67,0.94
CVE-2024-0011,0.08,0.52
CVE-2024-1000,0.02,0.30
CVE-2024-1001,0.01,0.15
CVE-2024-1002,0.005,0.08
1 #model_version:v2026.03.01,score_date:2026-03-30
2 cve,epss,percentile
3 CVE-2024-0001,0.92,0.99
4 CVE-2024-0002,0.78,0.96
5 CVE-2024-0003,0.45,0.88
6 CVE-2024-0004,0.33,0.82
7 CVE-2024-0005,0.12,0.65
8 CVE-2024-0010,0.67,0.94
9 CVE-2024-0011,0.08,0.52
10 CVE-2024-1000,0.02,0.30
11 CVE-2024-1001,0.01,0.15
12 CVE-2024-1002,0.005,0.08

View File

@@ -0,0 +1,124 @@
[
{
"ghsa_id": "GHSA-e2e1-test-0001",
"cve_id": "CVE-2024-0001",
"url": "https://github.com/advisories/GHSA-e2e1-test-0001",
"html_url": "https://github.com/advisories/GHSA-e2e1-test-0001",
"summary": "Apache HTTP Server Path Traversal allows RCE",
"description": "A path traversal vulnerability in Apache HTTP Server 2.4.49 through 2.4.50 allows attackers to map URLs to files outside the configured document root via crafted path components.",
"severity": "critical",
"identifiers": [
{ "type": "GHSA", "value": "GHSA-e2e1-test-0001" },
{ "type": "CVE", "value": "CVE-2024-0001" }
],
"aliases": ["CVE-2024-0001"],
"published_at": "2026-01-10T00:00:00Z",
"updated_at": "2026-03-15T12:00:00Z",
"withdrawn_at": null,
"vulnerabilities": [
{
"package": {
"ecosystem": "Maven",
"name": "org.apache.httpd:httpd"
},
"vulnerable_version_range": ">= 2.4.49, <= 2.4.50",
"patched_versions": "2.4.51",
"vulnerable_functions": []
}
],
"cvss": {
"vector_string": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
"score": 9.8
},
"cwes": [
{ "cwe_id": "CWE-22", "name": "Improper Limitation of a Pathname to a Restricted Directory" }
],
"credits": [
{ "login": "security-researcher-1", "type": "reporter" }
],
"references": [
{ "url": "https://httpd.apache.org/security/vulnerabilities_24.html" },
{ "url": "https://nvd.nist.gov/vuln/detail/CVE-2024-0001" }
]
},
{
"ghsa_id": "GHSA-e2e1-test-0002",
"cve_id": "CVE-2024-0010",
"url": "https://github.com/advisories/GHSA-e2e1-test-0002",
"html_url": "https://github.com/advisories/GHSA-e2e1-test-0002",
"summary": "lodash prototype pollution via merge functions",
"description": "Versions of lodash prior to 4.17.21 are vulnerable to prototype pollution via the merge, mergeWith, and defaultsDeep functions.",
"severity": "high",
"identifiers": [
{ "type": "GHSA", "value": "GHSA-e2e1-test-0002" },
{ "type": "CVE", "value": "CVE-2024-0010" }
],
"aliases": ["CVE-2024-0010"],
"published_at": "2026-02-01T00:00:00Z",
"updated_at": "2026-03-20T08:00:00Z",
"withdrawn_at": null,
"vulnerabilities": [
{
"package": {
"ecosystem": "npm",
"name": "lodash"
},
"vulnerable_version_range": "< 4.17.21",
"patched_versions": "4.17.21",
"vulnerable_functions": ["merge", "mergeWith", "defaultsDeep"]
}
],
"cvss": {
"vector_string": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H",
"score": 7.4
},
"cwes": [
{ "cwe_id": "CWE-1321", "name": "Improperly Controlled Modification of Object Prototype Attributes" }
],
"credits": [],
"references": [
{ "url": "https://github.com/lodash/lodash/issues/4744" }
]
},
{
"ghsa_id": "GHSA-e2e1-test-0003",
"cve_id": "CVE-2024-0011",
"url": "https://github.com/advisories/GHSA-e2e1-test-0003",
"html_url": "https://github.com/advisories/GHSA-e2e1-test-0003",
"summary": "Express.js open redirect vulnerability",
"description": "Express.js versions before 4.19.0 are vulnerable to open redirect when untrusted user input is passed to the res.redirect() function.",
"severity": "medium",
"identifiers": [
{ "type": "GHSA", "value": "GHSA-e2e1-test-0003" },
{ "type": "CVE", "value": "CVE-2024-0011" }
],
"aliases": ["CVE-2024-0011"],
"published_at": "2026-03-01T00:00:00Z",
"updated_at": "2026-03-25T16:00:00Z",
"withdrawn_at": null,
"vulnerabilities": [
{
"package": {
"ecosystem": "npm",
"name": "express"
},
"vulnerable_version_range": "< 4.19.0",
"patched_versions": "4.19.0",
"vulnerable_functions": ["redirect"]
}
],
"cvss": {
"vector_string": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
"score": 6.1
},
"cwes": [
{ "cwe_id": "CWE-601", "name": "URL Redirection to Untrusted Site" }
],
"credits": [
{ "login": "security-researcher-2", "type": "reporter" }
],
"references": [
{ "url": "https://expressjs.com/en/advanced/security-updates.html" }
]
}
]

View File

@@ -0,0 +1,73 @@
{
"title": "CISA Known Exploited Vulnerabilities Catalog",
"catalogVersion": "2026.04.01",
"dateReleased": "2026-04-01T00:00:00.000Z",
"count": 5,
"vulnerabilities": [
{
"cveID": "CVE-2024-0001",
"vendorProject": "Apache",
"product": "HTTP Server",
"vulnerabilityName": "Apache HTTP Server Path Traversal",
"dateAdded": "2026-01-15",
"shortDescription": "Apache HTTP Server contains a path traversal vulnerability that allows remote code execution.",
"requiredAction": "Apply updates per vendor instructions.",
"dueDate": "2026-02-15",
"knownRansomwareCampaignUse": "Unknown",
"notes": "https://httpd.apache.org/security/",
"cwes": ["CWE-22"]
},
{
"cveID": "CVE-2024-0002",
"vendorProject": "Microsoft",
"product": "Windows",
"vulnerabilityName": "Windows Kernel Privilege Escalation",
"dateAdded": "2026-01-20",
"shortDescription": "Microsoft Windows kernel contains a privilege escalation vulnerability.",
"requiredAction": "Apply updates per vendor instructions.",
"dueDate": "2026-02-20",
"knownRansomwareCampaignUse": "Known",
"notes": "https://msrc.microsoft.com/",
"cwes": ["CWE-269"]
},
{
"cveID": "CVE-2024-0003",
"vendorProject": "Google",
"product": "Chrome",
"vulnerabilityName": "Chrome V8 Type Confusion",
"dateAdded": "2026-02-01",
"shortDescription": "Google Chrome V8 engine contains a type confusion vulnerability allowing sandbox escape.",
"requiredAction": "Apply updates per vendor instructions.",
"dueDate": "2026-03-01",
"knownRansomwareCampaignUse": "Unknown",
"notes": "https://chromereleases.googleblog.com/",
"cwes": ["CWE-843"]
},
{
"cveID": "CVE-2024-0004",
"vendorProject": "OpenSSL",
"product": "OpenSSL",
"vulnerabilityName": "OpenSSL Buffer Overflow",
"dateAdded": "2026-02-10",
"shortDescription": "OpenSSL contains a buffer overflow vulnerability in X.509 certificate verification.",
"requiredAction": "Apply updates per vendor instructions.",
"dueDate": "2026-03-10",
"knownRansomwareCampaignUse": "Unknown",
"notes": "https://www.openssl.org/news/secadv/",
"cwes": ["CWE-120"]
},
{
"cveID": "CVE-2024-0005",
"vendorProject": "Linux",
"product": "Linux Kernel",
"vulnerabilityName": "Linux Kernel Use-After-Free",
"dateAdded": "2026-03-01",
"shortDescription": "Linux kernel contains a use-after-free vulnerability in the netfilter subsystem.",
"requiredAction": "Apply updates per vendor instructions.",
"dueDate": "2026-04-01",
"knownRansomwareCampaignUse": "Unknown",
"notes": "https://kernel.org/",
"cwes": ["CWE-416"]
}
]
}

View File

@@ -4,6 +4,36 @@ server {
default_type application/json;
# -----------------------------------------------------------------------
# Advisory data endpoints (for pipeline sync tests)
# -----------------------------------------------------------------------
# KEV catalog — realistic CISA Known Exploited Vulnerabilities feed
location = /kev/known_exploited_vulnerabilities.json {
alias /etc/nginx/data/kev-catalog.json;
add_header Content-Type "application/json";
add_header ETag '"e2e-kev-v1"';
}
# GHSA list — GitHub Security Advisories (REST-style)
location = /ghsa/security/advisories {
alias /etc/nginx/data/ghsa-list.json;
add_header Content-Type "application/json";
add_header X-RateLimit-Limit "5000";
add_header X-RateLimit-Remaining "4990";
add_header X-RateLimit-Reset "1893456000";
}
# EPSS scores — Exploit Prediction Scoring System (CSV)
location = /epss/epss_scores-current.csv {
alias /etc/nginx/data/epss-scores.csv;
add_header Content-Type "text/csv";
}
# -----------------------------------------------------------------------
# Source health/connectivity endpoints (for onboarding tests)
# -----------------------------------------------------------------------
# CERT-In (India) - unreachable from most networks
location /cert-in {
return 200 '{"status":"healthy","source":"cert-in","description":"CERT-In fixture proxy"}';

View File

@@ -7,6 +7,11 @@ server {
return 200 '{"status":"healthy","agent":"ebpf","version":"0.9.0","pid":1,"uptime_seconds":3600,"kernel":"6.1.0","probes_loaded":12,"events_per_second":450}';
}
location /api/v1/health-degraded {
default_type application/json;
return 200 '{"status":"degraded","agent":"ebpf","version":"0.9.0","pid":1,"uptime_seconds":120,"kernel":"6.1.0","probes_loaded":3,"events_per_second":10}';
}
location /api/v1/info {
default_type application/json;
return 200 '{"agent_type":"ebpf","hostname":"stellaops-runtime-host","os":"linux","arch":"amd64","kernel_version":"6.1.0","probes":["syscall_open","syscall_exec","net_connect","file_access","process_fork","mmap_exec","ptrace_attach","module_load","bpf_prog_load","cgroup_attach","namespace_create","capability_use"]}';