penthera 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +315 -0
- package/README.md +139 -76
- package/SECURITY.md +8 -6
- package/docs/examples/pr-dependency-review.yml +1 -1
- package/lib/adaptive-probes.js +3 -3
- package/lib/advisories/evidence.js +248 -0
- package/lib/advisories/index.js +228 -0
- package/lib/advisories/products.js +83 -0
- package/lib/advisories/versions.js +65 -0
- package/lib/agents/hidden-content.js +122 -11
- package/lib/agents/index.js +26 -6
- package/lib/agents/lock.js +33 -5
- package/lib/agents/rules.js +33 -4
- package/lib/compliance/index.js +4 -4
- package/lib/crawler.js +12 -15
- package/lib/deps/capabilities.js +21 -5
- package/lib/deps/findings.js +309 -0
- package/lib/deps/index.js +13 -272
- package/lib/deps/iocs.js +74 -0
- package/lib/deps/lockfile.js +3 -8
- package/lib/deps/online.js +8 -3
- package/lib/deps/popular-packages.json.gz +0 -0
- package/lib/deps/popular-pypi.json.gz +0 -0
- package/lib/deps/python/capabilities.js +16 -3
- package/lib/deps/python/index.js +5 -1
- package/lib/deps/python/lockfiles.js +11 -5
- package/lib/deps/python/source.js +75 -26
- package/lib/deps/python/toml.js +15 -3
- package/lib/deps/source.js +28 -9
- package/lib/deps/typosquat.js +30 -5
- package/lib/fix/apply.js +253 -34
- package/lib/fix/index.js +7 -4
- package/lib/fix/model.js +25 -5
- package/lib/fix/util.js +6 -2
- package/lib/fuzzer.js +3 -3
- package/lib/git.js +65 -0
- package/lib/hook/index.js +157 -73
- package/lib/hook/policy.js +10 -4
- package/lib/install/index.js +4 -7
- package/lib/machine.js +0 -13
- package/lib/memory/store.js +11 -4
- package/lib/nuclei-loader.js +0 -25
- package/lib/owasp-wstg.js +4 -0
- package/lib/plugins.js +1 -1
- package/lib/provenance.js +1 -0
- package/lib/recon.js +12 -31
- package/lib/references.json +224 -0
- package/lib/retirejs.js +4 -4
- package/lib/rules/advisories/advisories.json +186 -0
- package/lib/rules/advisories/eol.json +413 -0
- package/lib/rules/advisories/pack.json +20 -0
- package/lib/rules/advisories/pack.json.sig +6 -0
- package/lib/rules/allowed_signers +13 -0
- package/lib/rules/core/agent-exec.json +29 -0
- package/lib/rules/core/agent-instructions.json +17 -0
- package/lib/rules/core/pack.json +30 -0
- package/lib/rules/core/pack.json.sig +6 -0
- package/lib/rules/core/secrets.json +161 -0
- package/lib/rules/core/templates.json +52 -0
- package/lib/rules/index.js +107 -0
- package/lib/rules/ioc-2025-2026/files.json +43 -0
- package/lib/rules/ioc-2025-2026/hosts.json +35 -0
- package/lib/rules/ioc-2025-2026/pack.json +25 -0
- package/lib/rules/ioc-2025-2026/pack.json.sig +6 -0
- package/lib/rules/ioc-2025-2026/packages.json +1048 -0
- package/lib/rules/pack.js +452 -0
- package/lib/rules/regex-guard.js +81 -9
- package/lib/rules/sshsig.js +205 -0
- package/lib/templates.js +24 -20
- package/lib/tmp.js +21 -0
- package/lib/whitebox/frameworks.js +1 -1
- package/lib/whitebox/secrets.js +117 -41
- package/package.json +12 -4
- package/scripts/rules/build-pack.mjs +80 -0
- package/scripts/rules/check-bundled.mjs +30 -0
- package/scripts/rules/sign-pack.sh +32 -0
- package/skills/penthera/SKILL.md +16 -15
- package/src/agent/git.js +147 -14
- package/src/agent/loop.js +165 -46
- package/src/cli/agent.js +11 -5
- package/src/cli/deps.js +0 -2
- package/src/cli/detect.js +14 -7
- package/src/cli/fix.js +26 -8
- package/src/cli/hook.js +2 -1
- package/src/cli/onboarding.js +14 -6
- package/src/cli/report-outputs.js +1 -0
- package/src/cli/rules.js +144 -0
- package/src/cli/ui.js +43 -10
- package/src/cli.js +24 -1
- package/src/report/evidence.js +105 -21
- package/src/report/footer.js +1 -1
- package/src/report/md-escape.js +8 -0
- package/src/scan-repo.js +6 -0
- package/src/scan-url.js +11 -3
- package/src/ui/api/data.js +39 -6
- package/src/ui/api/routes.js +44 -11
- package/src/ui/api/runs.js +32 -7
- package/src/ui/security.js +20 -23
- package/src/ui/server.js +52 -27
- package/src/ui/static/app.css +583 -213
- package/src/ui/static/favicon.svg +1 -1
- package/src/ui/static/fonts/DepartureMono-LICENSE.txt +93 -0
- package/src/ui/static/fonts/DepartureMono-Regular.woff2 +0 -0
- package/src/ui/static/index.html +5 -4
- package/src/ui/static/js/api.js +114 -6
- package/src/ui/static/js/app.js +81 -42
- package/src/ui/static/js/center.js +246 -133
- package/src/ui/static/js/charts.js +99 -18
- package/src/ui/static/js/copy.js +68 -9
- package/src/ui/static/js/dialog.js +152 -0
- package/src/ui/static/js/left.js +23 -60
- package/src/ui/static/js/menubar.js +170 -0
- package/src/ui/static/js/onboarding.js +104 -0
- package/src/ui/static/js/panels.js +186 -0
- package/src/ui/static/js/right.js +69 -188
- package/src/ui/static/js/state.js +36 -5
- package/src/ui/static/logo.svg +10 -0
- package/src/ui/static/mark.svg +3 -0
- package/src/utils/http.js +162 -13
- package/docs/METHODOLOGY.md +0 -375
- package/docs/commands/README.md +0 -24
- package/docs/commands/action.md +0 -21
- package/docs/commands/agents.md +0 -38
- package/docs/commands/deps.md +0 -115
- package/docs/commands/fix.md +0 -53
- package/docs/commands/hook.md +0 -69
- package/docs/commands/init.md +0 -114
- package/docs/commands/install.md +0 -53
- package/docs/commands/scan.md +0 -100
- package/docs/commands/skill.md +0 -58
- package/docs/compare/README.md +0 -25
- package/docs/compare/github.md +0 -60
- package/docs/compare/semgrep.md +0 -54
- package/docs/compare/snyk.md +0 -62
- package/docs/compare/socket.md +0 -78
- package/docs/compare/zap.md +0 -59
- package/docs/compliance-cra.md +0 -141
- package/docs/compliance-nis2.md +0 -168
- package/docs/dashboard.md +0 -187
- package/docs/evidence.md +0 -162
- package/docs/funding/due-diligence-checklist.md +0 -79
- package/docs/funding/nlnet-ngi-zero-draft.md +0 -273
- package/docs/funding/partner-one-pager.md +0 -84
- package/docs/funding/sponsor-tiers.md +0 -81
- package/docs/index.md +0 -81
- package/docs/internal-audit.md +0 -83
- package/docs/local-loop.md +0 -276
- package/docs/marketing.md +0 -151
- package/docs/owasp-wstg-coverage.md +0 -79
- package/docs/plan.md +0 -102
- package/docs/privacy.md +0 -38
- package/docs/references.bib +0 -559
- package/docs/references.md +0 -119
- package/docs/release-plan.md +0 -228
- package/docs/research/socket-positioning-notes.md +0 -183
- package/docs/use-cases/README.md +0 -14
- package/docs/use-cases/agencies.md +0 -71
- package/docs/use-cases/ai-coding-teams.md +0 -81
- package/docs/use-cases/eu-sme-compliance.md +0 -68
- package/docs/use-cases/open-source-maintainers.md +0 -75
- package/docs/use-cases/solo-founder.md +0 -65
- package/lib/deps/popular-packages.json +0 -1
- package/lib/deps/popular-pypi.json +0 -1
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "runtime-eol",
|
|
3
|
+
"rules": [
|
|
4
|
+
{
|
|
5
|
+
"id": "php-eol",
|
|
6
|
+
"product": "php",
|
|
7
|
+
"branches": [
|
|
8
|
+
{
|
|
9
|
+
"branch": "8.5",
|
|
10
|
+
"eol": "2029-12-31"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"branch": "8.4",
|
|
14
|
+
"eol": "2028-12-31"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"branch": "8.3",
|
|
18
|
+
"eol": "2027-12-31"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"branch": "8.2",
|
|
22
|
+
"eol": "2026-12-31"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"branch": "8.1",
|
|
26
|
+
"eol": "2025-12-31"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"branch": "8.0",
|
|
30
|
+
"eol": "2023-11-26"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"branch": "7.4",
|
|
34
|
+
"eol": "2022-11-28"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"branch": "7.3",
|
|
38
|
+
"eol": "2021-12-06"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"branch": "7.2",
|
|
42
|
+
"eol": "2020-11-30"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"branch": "7.1",
|
|
46
|
+
"eol": "2019-12-01"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"branch": "7.0",
|
|
50
|
+
"eol": "2019-01-10"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"branch": "5.6",
|
|
54
|
+
"eol": "2018-12-31"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"branch": "5.5",
|
|
58
|
+
"eol": "2016-07-21"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"branch": "5.4",
|
|
62
|
+
"eol": "2015-09-14"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"branch": "5.3",
|
|
66
|
+
"eol": "2014-08-14"
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
"source": "https://www.php.net/eol.php",
|
|
70
|
+
"date": "2026-10-21",
|
|
71
|
+
"confidence": "confirmed",
|
|
72
|
+
"description": "End-of-life dates from php.net's Unsupported Branches page; supported lines and their security-support end dates from https://www.php.net/supported-versions.php (8.2 until 2026-12-31, 8.3 until 2027-12-31, 8.4 until 2028-12-31, 8.5 until 2029-12-31). Checked 2026-10-21.",
|
|
73
|
+
"references": [
|
|
74
|
+
"phpsupported",
|
|
75
|
+
"endoflifedate"
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"id": "nodejs-eol",
|
|
80
|
+
"product": "nodejs",
|
|
81
|
+
"branches": [
|
|
82
|
+
{
|
|
83
|
+
"branch": "26",
|
|
84
|
+
"eol": "2029-04-30"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"branch": "25",
|
|
88
|
+
"eol": "2026-06-01"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"branch": "24",
|
|
92
|
+
"eol": "2028-04-30"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"branch": "23",
|
|
96
|
+
"eol": "2025-06-01"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"branch": "22",
|
|
100
|
+
"eol": "2027-04-30"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"branch": "21",
|
|
104
|
+
"eol": "2024-06-01"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"branch": "20",
|
|
108
|
+
"eol": "2026-04-30"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"branch": "19",
|
|
112
|
+
"eol": "2023-06-01"
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"branch": "18",
|
|
116
|
+
"eol": "2025-04-30"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"branch": "17",
|
|
120
|
+
"eol": "2022-06-01"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"branch": "16",
|
|
124
|
+
"eol": "2023-09-11"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"branch": "15",
|
|
128
|
+
"eol": "2021-06-01"
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"branch": "14",
|
|
132
|
+
"eol": "2023-04-30"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"branch": "13",
|
|
136
|
+
"eol": "2020-06-01"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"branch": "12",
|
|
140
|
+
"eol": "2022-04-30"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"branch": "11",
|
|
144
|
+
"eol": "2019-06-30"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"branch": "10",
|
|
148
|
+
"eol": "2021-04-30"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"branch": "9",
|
|
152
|
+
"eol": "2018-06-30"
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"branch": "8",
|
|
156
|
+
"eol": "2019-12-31"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"branch": "6",
|
|
160
|
+
"eol": "2019-04-30"
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"branch": "4",
|
|
164
|
+
"eol": "2018-04-30"
|
|
165
|
+
}
|
|
166
|
+
],
|
|
167
|
+
"source": "https://nodejs.org/en/about/previous-releases",
|
|
168
|
+
"date": "2026-10-21",
|
|
169
|
+
"confidence": "confirmed",
|
|
170
|
+
"description": "From the Node.js release schedule (https://github.com/nodejs/Release/blob/main/schedule.json): 22, 24 and 26 are supported; 25 ended 2026-06-01 and 20 ended 2026-04-30. Checked 2026-10-21.",
|
|
171
|
+
"references": [
|
|
172
|
+
"nodejsreleases",
|
|
173
|
+
"endoflifedate"
|
|
174
|
+
]
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"id": "python-eol",
|
|
178
|
+
"product": "python",
|
|
179
|
+
"branches": [
|
|
180
|
+
{
|
|
181
|
+
"branch": "3.10",
|
|
182
|
+
"eol": "2026-10-01"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"branch": "3.9",
|
|
186
|
+
"eol": "2025-10-31"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"branch": "3.8",
|
|
190
|
+
"eol": "2024-10-07"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"branch": "3.7",
|
|
194
|
+
"eol": "2023-06-27"
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"branch": "3.6",
|
|
198
|
+
"eol": "2021-12-23"
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"branch": "3.5",
|
|
202
|
+
"eol": "2020-09-30"
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"branch": "3.4",
|
|
206
|
+
"eol": "2019-03-18"
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"branch": "3.3",
|
|
210
|
+
"eol": "2017-09-29"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"branch": "2.7",
|
|
214
|
+
"eol": "2020-01-01"
|
|
215
|
+
}
|
|
216
|
+
],
|
|
217
|
+
"source": "https://devguide.python.org/versions/",
|
|
218
|
+
"date": "2026-10-21",
|
|
219
|
+
"confidence": "confirmed",
|
|
220
|
+
"description": "From the Python Developer's Guide status of Python versions: 3.11 to 3.15 are supported; 3.10 reached end of life on 2026-10-01. Only ended lines are listed, since future ends are given to the month. Checked 2026-10-21.",
|
|
221
|
+
"references": [
|
|
222
|
+
"pythondevguideversions",
|
|
223
|
+
"endoflifedate"
|
|
224
|
+
]
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"id": "nginx-eol",
|
|
228
|
+
"product": "nginx",
|
|
229
|
+
"branches": [
|
|
230
|
+
{
|
|
231
|
+
"branch": "1.29",
|
|
232
|
+
"eol": "2026-05-13"
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"branch": "1.28",
|
|
236
|
+
"eol": "2026-04-14"
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"branch": "1.27",
|
|
240
|
+
"eol": "2025-06-24"
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"branch": "1.26",
|
|
244
|
+
"eol": "2025-04-23"
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"branch": "1.25",
|
|
248
|
+
"eol": "2024-05-29"
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"branch": "1.24",
|
|
252
|
+
"eol": "2024-04-23"
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"branch": "1.23",
|
|
256
|
+
"eol": "2023-05-23"
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"branch": "1.22",
|
|
260
|
+
"eol": "2023-04-11"
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
"branch": "1.21",
|
|
264
|
+
"eol": "2022-06-21"
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"branch": "1.20",
|
|
268
|
+
"eol": "2022-05-24"
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"branch": "1.19",
|
|
272
|
+
"eol": "2021-05-25"
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"branch": "1.18",
|
|
276
|
+
"eol": "2021-04-20"
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"branch": "1.17",
|
|
280
|
+
"eol": "2020-05-26"
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"branch": "1.16",
|
|
284
|
+
"eol": "2020-04-20"
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
"branch": "1.15",
|
|
288
|
+
"eol": "2019-05-21"
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"branch": "1.14",
|
|
292
|
+
"eol": "2019-04-23"
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
"branch": "1.13",
|
|
296
|
+
"eol": "2018-06-05"
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"branch": "1.12",
|
|
300
|
+
"eol": "2018-04-17"
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
"branch": "1.11",
|
|
304
|
+
"eol": "2017-04-25"
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"branch": "1.10",
|
|
308
|
+
"eol": "2017-04-12"
|
|
309
|
+
}
|
|
310
|
+
],
|
|
311
|
+
"source": "https://nginx.org/en/download.html",
|
|
312
|
+
"date": "2026-10-21",
|
|
313
|
+
"confidence": "likely",
|
|
314
|
+
"description": "nginx supports only the current mainline (1.31) and stable (1.30) lines and lists older ones as legacy versions with no fixes. The dates each line stopped being supported are from endoflife.date (https://endoflife.date/nginx), a secondary source, hence confidence likely. Checked 2026-10-21.",
|
|
315
|
+
"references": [
|
|
316
|
+
"nginxadvisories",
|
|
317
|
+
"endoflifedate"
|
|
318
|
+
]
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
"id": "apache-httpd-eol",
|
|
322
|
+
"product": "apache-httpd",
|
|
323
|
+
"branches": [
|
|
324
|
+
{
|
|
325
|
+
"branch": "2.2",
|
|
326
|
+
"eol": "2017-07-11"
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
"branch": "2.0",
|
|
330
|
+
"eol": "2013-07-10"
|
|
331
|
+
}
|
|
332
|
+
],
|
|
333
|
+
"source": "https://httpd.apache.org/",
|
|
334
|
+
"date": "2026-10-21",
|
|
335
|
+
"confidence": "confirmed",
|
|
336
|
+
"description": "httpd.apache.org: Apache httpd 2.2 is end of life, the final release was 2.2.34 (July 2017), with no further security updates; only 2.4 is supported. Dates of the final 2.2 and 2.0 releases from endoflife.date. Checked 2026-10-21.",
|
|
337
|
+
"references": [
|
|
338
|
+
"httpdvulns24",
|
|
339
|
+
"endoflifedate"
|
|
340
|
+
]
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
"id": "openssl-eol",
|
|
344
|
+
"product": "openssl",
|
|
345
|
+
"branches": [
|
|
346
|
+
{
|
|
347
|
+
"branch": "0.9.8",
|
|
348
|
+
"eol": "2015-12-31"
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"branch": "1.0.0",
|
|
352
|
+
"eol": "2015-12-31"
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
"branch": "1.0.1",
|
|
356
|
+
"eol": "2016-12-31"
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
"branch": "1.0.2",
|
|
360
|
+
"eol": "2019-12-31"
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
"branch": "1.1.0",
|
|
364
|
+
"eol": "2019-09-11"
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
"branch": "1.1.1",
|
|
368
|
+
"eol": "2023-09-11"
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
"branch": "3.0",
|
|
372
|
+
"eol": "2026-09-07"
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
"branch": "3.1",
|
|
376
|
+
"eol": "2025-03-14"
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
"branch": "3.2",
|
|
380
|
+
"eol": "2025-11-23"
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"branch": "3.3",
|
|
384
|
+
"eol": "2026-04-09"
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
"branch": "3.4",
|
|
388
|
+
"eol": "2026-10-22"
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
"branch": "3.5",
|
|
392
|
+
"eol": "2030-04-08"
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
"branch": "3.6",
|
|
396
|
+
"eol": "2026-11-01"
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
"branch": "4.0",
|
|
400
|
+
"eol": "2027-05-14"
|
|
401
|
+
}
|
|
402
|
+
],
|
|
403
|
+
"source": "https://endoflife.date/openssl",
|
|
404
|
+
"date": "2026-10-21",
|
|
405
|
+
"confidence": "confirmed",
|
|
406
|
+
"description": "Dates from endoflife.date, checked on 2026-10-21 against the OpenSSL release strategy (https://openssl-library.org/policies/releasestrat/), which lists 3.4, 3.5, 3.6 and 4.0 as supported and 3.0, 1.1.1, 1.0.2 and older as no longer supported (paid extended support exists for 3.0, 1.1.1 and 1.0.2).",
|
|
407
|
+
"references": [
|
|
408
|
+
"opensslvulns",
|
|
409
|
+
"endoflifedate"
|
|
410
|
+
]
|
|
411
|
+
}
|
|
412
|
+
]
|
|
413
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": 1,
|
|
3
|
+
"name": "advisories",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"created_at": "2026-10-21T15:22:16Z",
|
|
6
|
+
"min_penthera": "1.8.0",
|
|
7
|
+
"description": "Runtime and server security advisories (PHP, Apache HTTP Server, nginx, Node.js, Python, OpenSSL) and end-of-life release lines, from vendor advisories and support pages. Every rule cites its vendor source.",
|
|
8
|
+
"rules": [
|
|
9
|
+
{
|
|
10
|
+
"file": "advisories.json",
|
|
11
|
+
"kind": "runtime-advisory",
|
|
12
|
+
"sha256": "8e222761046dedf17c4acf2f4bf87e1961f4b73fe6098d5501bd4547b3d80fd9"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"file": "eol.json",
|
|
16
|
+
"kind": "runtime-eol",
|
|
17
|
+
"sha256": "e98c360db5a69dd83a2e4673bd254f558fc2c0558a5a49087c538f070728ea9e"
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
-----BEGIN SSH SIGNATURE-----
|
|
2
|
+
U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgDgRSZTRaMM36gE32AzSZRuHiqG
|
|
3
|
+
VstB30pUKdNOYLIywAAAAOcGVudGhlcmEtcnVsZXMAAAAAAAAABnNoYTUxMgAAAFMAAAAL
|
|
4
|
+
c3NoLWVkMjU1MTkAAABASImtVokMrMVc+ObkfJUW0Bx0tul35dLGjb1Gmnsa316Lrv6xRU
|
|
5
|
+
4XyuUjXIxS1xAiVcybAKbu67VH/35XTwmvDg==
|
|
6
|
+
-----END SSH SIGNATURE-----
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Keys trusted to sign Penthera rule packs (ssh-keygen -Y, namespace
|
|
2
|
+
# "penthera-rules"). Format: ALLOWED SIGNERS in ssh-keygen(1):
|
|
3
|
+
#
|
|
4
|
+
# principal namespaces="penthera-rules" ssh-ed25519 AAAA... comment
|
|
5
|
+
#
|
|
6
|
+
# Only the maintainer's release-signing key belongs here. Adding a key to this
|
|
7
|
+
# file in a PR is a change to Penthera's trust root and gets the same review
|
|
8
|
+
# as a change to the verifier. Users who trust their own packs pass
|
|
9
|
+
# --rules-signers <file> instead of editing this file.
|
|
10
|
+
#
|
|
11
|
+
# The maintainer's release-signing key (a dedicated key, used only for rule
|
|
12
|
+
# packs). See docs/rule-packs.md, "Signing a release".
|
|
13
|
+
daan@gaia.computer namespaces="penthera-rules" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA4EUmU0WjDN+oBN9gM0mUbh4qhlbLQd9KVCnTTmCyMs penthera rule signing
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "agent-exec",
|
|
3
|
+
"rules": [
|
|
4
|
+
{
|
|
5
|
+
"id": "shell-process-substitution",
|
|
6
|
+
"label": "shell runs a download via process substitution",
|
|
7
|
+
"pattern": "\\b(?:(?:ba|z)?sh|source|\\.)\\s+<\\(\\s*(?:curl|wget)\\b",
|
|
8
|
+
"flags": "i",
|
|
9
|
+
"source": "https://github.com/danoszz/penthera/blob/afafb24/lib/agents/hidden-content.js",
|
|
10
|
+
"date": "2026-10-19",
|
|
11
|
+
"confidence": "likely",
|
|
12
|
+
"references": [
|
|
13
|
+
"greshake2023signed"
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "shell-command-substitution",
|
|
18
|
+
"label": "shell -c runs a download",
|
|
19
|
+
"pattern": "\\b(?:ba|z)?sh\\s+-c\\s+[\"']?\\$\\(\\s*(?:curl|wget)\\b",
|
|
20
|
+
"flags": "i",
|
|
21
|
+
"source": "https://github.com/danoszz/penthera/blob/afafb24/lib/agents/hidden-content.js",
|
|
22
|
+
"date": "2026-10-19",
|
|
23
|
+
"confidence": "likely",
|
|
24
|
+
"references": [
|
|
25
|
+
"greshake2023signed"
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "agent-instruction",
|
|
3
|
+
"rules": [
|
|
4
|
+
{
|
|
5
|
+
"id": "instruction.credential-paths",
|
|
6
|
+
"description": "Mentions of SSH keys, cloud credentials and package-manager tokens inside hidden text.",
|
|
7
|
+
"pattern": "(?:~\\/\\.ssh|\\bid_rsa\\b|\\bid_ed25519\\b|\\.aws\\/credentials|\\.npmrc|\\.netrc|\\bkeychain\\b)",
|
|
8
|
+
"flags": "i",
|
|
9
|
+
"source": "https://github.com/danoszz/penthera/blob/afafb24/lib/agents/hidden-content.js",
|
|
10
|
+
"date": "2026-10-19",
|
|
11
|
+
"confidence": "potential",
|
|
12
|
+
"references": [
|
|
13
|
+
"greshake2023signed"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": 1,
|
|
3
|
+
"name": "core",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"created_at": "2026-10-19T13:44:05Z",
|
|
6
|
+
"min_penthera": "1.2.0",
|
|
7
|
+
"description": "Built-in detections that ship with Penthera: AI provider key formats, hidden-instruction and remote-exec patterns for agent configs, and the exposed .env template.",
|
|
8
|
+
"rules": [
|
|
9
|
+
{
|
|
10
|
+
"file": "agent-exec.json",
|
|
11
|
+
"kind": "agent-exec",
|
|
12
|
+
"sha256": "9decfc8f8305b302826e6b23c5f71520534beebe58e08d3da2731772a15eb416"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"file": "agent-instructions.json",
|
|
16
|
+
"kind": "agent-instruction",
|
|
17
|
+
"sha256": "edf192a2cf5665596b97ba2702d2540d37db3c9a7a953171a58f42ac16ed3b97"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"file": "secrets.json",
|
|
21
|
+
"kind": "secret",
|
|
22
|
+
"sha256": "48f2601311ea16d1254b21920582e3bf18c2c612a0e45406a8bdd2571358c320"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"file": "templates.json",
|
|
26
|
+
"kind": "nuclei-template",
|
|
27
|
+
"sha256": "67d762547efa3ac68b632fa2ca9196d97b601b7a35ec4e12eaf41207eb1e906d"
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
-----BEGIN SSH SIGNATURE-----
|
|
2
|
+
U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgDgRSZTRaMM36gE32AzSZRuHiqG
|
|
3
|
+
VstB30pUKdNOYLIywAAAAOcGVudGhlcmEtcnVsZXMAAAAAAAAABnNoYTUxMgAAAFMAAAAL
|
|
4
|
+
c3NoLWVkMjU1MTkAAABAnpz2oJEtsQ+W+YKd+pycUp0c3N036Y2ISItLrAWcK74RgRu3uM
|
|
5
|
+
mY6yTTPXNF0ilM1jbMknukk0tsXA2cfQQ6AA==
|
|
6
|
+
-----END SSH SIGNATURE-----
|