penthera 1.2.0 → 1.4.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.
Files changed (88) hide show
  1. package/CHANGELOG.md +212 -0
  2. package/README.md +379 -39
  3. package/docs/METHODOLOGY.md +321 -0
  4. package/docs/evidence.md +158 -0
  5. package/docs/examples/github-actions-deps.yml +105 -0
  6. package/docs/examples/github-actions-scan.yml +1 -1
  7. package/docs/examples/pr-dependency-review.yml +56 -0
  8. package/docs/funding/due-diligence-checklist.md +79 -0
  9. package/docs/funding/nlnet-ngi-zero-draft.md +273 -0
  10. package/docs/funding/partner-one-pager.md +84 -0
  11. package/docs/funding/sponsor-tiers.md +81 -0
  12. package/docs/index.md +12 -1
  13. package/docs/local-loop.md +276 -0
  14. package/docs/references.bib +539 -0
  15. package/docs/references.md +77 -0
  16. package/docs/release-plan.md +228 -0
  17. package/lib/adaptive-probes.js +8 -5
  18. package/lib/agents/discover.js +384 -0
  19. package/lib/agents/hidden-content.js +387 -0
  20. package/lib/agents/index.js +286 -0
  21. package/lib/agents/lock.js +115 -0
  22. package/lib/agents/owasp.js +83 -0
  23. package/lib/agents/rules.js +376 -0
  24. package/lib/crawler.js +5 -15
  25. package/lib/data/retire-jsrepository.json.gz +0 -0
  26. package/lib/data/retire-jsrepository.meta.json +7 -0
  27. package/lib/deps/capabilities.js +523 -0
  28. package/lib/deps/diff.js +84 -0
  29. package/lib/deps/index.js +416 -0
  30. package/lib/deps/lockfile.js +106 -0
  31. package/lib/deps/online.js +132 -0
  32. package/lib/deps/popular-packages.json +1 -0
  33. package/lib/deps/report.js +173 -0
  34. package/lib/deps/source.js +171 -0
  35. package/lib/deps/typosquat.js +113 -0
  36. package/lib/fix/apply.js +95 -0
  37. package/lib/fix/diff.js +199 -0
  38. package/lib/fix/index.js +129 -0
  39. package/lib/fix/model.js +108 -0
  40. package/lib/fix/recipes/cookies.js +130 -0
  41. package/lib/fix/recipes/cors.js +116 -0
  42. package/lib/fix/recipes/headers.js +250 -0
  43. package/lib/fix/recipes/rate-limit.js +211 -0
  44. package/lib/fix/recipes/secrets.js +110 -0
  45. package/lib/fix/util.js +231 -0
  46. package/lib/fuzzer.js +14 -8
  47. package/lib/injections.js +19 -15
  48. package/lib/install/index.js +271 -0
  49. package/lib/install/policy.js +117 -0
  50. package/lib/memory/history.js +52 -0
  51. package/lib/memory/index.js +111 -0
  52. package/lib/memory/repo-suppress.js +64 -0
  53. package/lib/memory/store.js +325 -0
  54. package/lib/memory/views.js +198 -0
  55. package/lib/params.js +4 -12
  56. package/lib/provenance.js +2 -0
  57. package/lib/recon.js +12 -20
  58. package/lib/references.js +31 -0
  59. package/lib/references.json +374 -0
  60. package/lib/remediation/index.js +28 -0
  61. package/lib/retirejs.js +50 -22
  62. package/lib/templates.js +7 -10
  63. package/lib/whitebox/frameworks.js +1 -1
  64. package/package.json +16 -4
  65. package/skills/penthera/SKILL.md +103 -22
  66. package/src/agent/git.js +87 -0
  67. package/src/agent/loop.js +519 -0
  68. package/src/agent/tests.js +48 -0
  69. package/src/cli/agent.js +183 -0
  70. package/src/cli/deps.js +84 -0
  71. package/src/cli/evidence.js +67 -0
  72. package/src/cli/fix.js +191 -0
  73. package/src/cli/install.js +225 -0
  74. package/src/cli/memory.js +146 -0
  75. package/src/cli/merge-results.js +2 -0
  76. package/src/cli/report-outputs.js +72 -0
  77. package/src/cli/run-scan.js +2 -0
  78. package/src/cli.js +152 -6
  79. package/src/report/audience.js +270 -0
  80. package/src/report/evidence.js +253 -0
  81. package/src/report/markdown.js +65 -2
  82. package/src/report/model.js +212 -0
  83. package/src/report/template.js +175 -0
  84. package/src/report/timeline.js +145 -0
  85. package/src/reporter.js +109 -5
  86. package/src/scan-url.js +31 -7
  87. package/src/utils/http.js +252 -11
  88. package/src/utils/url.js +23 -0
@@ -0,0 +1,539 @@
1
+ % Penthera bibliography. Every entry verified 2026-10-19 against Crossref (publisher-deposited DOI metadata),
2
+ % USENIX, NDSS, arXiv, RFC Editor, OWASP, MITRE, NIST, OASIS and the EU Publications Office.
3
+
4
+ % ---------------------------------------------------------------- blackbox
5
+ @inproceedings{bau2010state,
6
+ author = {Bau, Jason and Bursztein, Elie and Gupta, Divij and Mitchell, John},
7
+ title = {State of the Art: Automated Black-Box Web Application Vulnerability Testing},
8
+ booktitle = {2010 IEEE Symposium on Security and Privacy},
9
+ publisher = {IEEE},
10
+ year = {2010},
11
+ pages = {332--345},
12
+ doi = {10.1109/SP.2010.27},
13
+ note = {blackbox}
14
+ }
15
+
16
+ @inproceedings{doupe2010johnny,
17
+ author = {Doup{\'e}, Adam and Cova, Marco and Vigna, Giovanni},
18
+ title = {Why {Johnny} Can't Pentest: An Analysis of Black-Box Web Vulnerability Scanners},
19
+ booktitle = {Detection of Intrusions and Malware, and Vulnerability Assessment (DIMVA 2010)},
20
+ series = {Lecture Notes in Computer Science},
21
+ publisher = {Springer},
22
+ year = {2010},
23
+ pages = {111--131},
24
+ doi = {10.1007/978-3-642-14215-4_7},
25
+ note = {blackbox}
26
+ }
27
+
28
+ @inproceedings{antunes2010benchmarking,
29
+ author = {Antunes, Nuno and Vieira, Marco},
30
+ title = {Benchmarking Vulnerability Detection Tools for Web Services},
31
+ booktitle = {2010 IEEE International Conference on Web Services (ICWS)},
32
+ publisher = {IEEE},
33
+ year = {2010},
34
+ pages = {203--210},
35
+ doi = {10.1109/ICWS.2010.76},
36
+ note = {blackbox}
37
+ }
38
+
39
+ @article{antunes2015assessing,
40
+ author = {Antunes, Nuno and Vieira, Marco},
41
+ title = {Assessing and Comparing Vulnerability Detection Tools for Web Services: Benchmarking Approach and Examples},
42
+ journal = {IEEE Transactions on Services Computing},
43
+ volume = {8},
44
+ number = {2},
45
+ year = {2015},
46
+ pages = {269--283},
47
+ doi = {10.1109/TSC.2014.2310221},
48
+ note = {blackbox}
49
+ }
50
+
51
+ @misc{owaspbenchmark,
52
+ shorthand = {OWASP Benchmark},
53
+ author = {{OWASP Foundation}},
54
+ title = {{OWASP} Benchmark Project},
55
+ howpublished = {OWASP project page (v1.2; project leader Dave Wichers)},
56
+ url = {https://owasp.org/www-project-benchmark/},
57
+ urldate = {2026-10-19},
58
+ note = {blackbox}
59
+ }
60
+
61
+ @techreport{scarfone2008sp800115,
62
+ shorthand = {NIST SP 800-115},
63
+ author = {Scarfone, K. A. and Souppaya, M. P. and Cody, A. and Orebaugh, A. D.},
64
+ title = {Technical Guide to Information Security Testing and Assessment},
65
+ institution = {National Institute of Standards and Technology},
66
+ type = {NIST Special Publication},
67
+ number = {800-115},
68
+ year = {2008},
69
+ doi = {10.6028/NIST.SP.800-115},
70
+ note = {standards}
71
+ }
72
+
73
+ % ---------------------------------------------------------------- design
74
+ @article{saltzer1975protection,
75
+ author = {Saltzer, J. H. and Schroeder, M. D.},
76
+ title = {The Protection of Information in Computer Systems},
77
+ journal = {Proceedings of the IEEE},
78
+ volume = {63},
79
+ number = {9},
80
+ year = {1975},
81
+ pages = {1278--1308},
82
+ doi = {10.1109/PROC.1975.9939},
83
+ note = {design}
84
+ }
85
+
86
+ % ---------------------------------------------------------------- threatmodel
87
+ @book{shostack2014threat,
88
+ author = {Shostack, Adam},
89
+ title = {Threat Modeling: Designing for Security},
90
+ publisher = {Wiley},
91
+ year = {2014},
92
+ isbn = {978-1-118-80999-0},
93
+ url = {https://www.wiley-vch.de/de/fachgebiete/computer-und-informatik/threat-modeling-978-1-118-80999-0},
94
+ note = {threatmodel}
95
+ }
96
+
97
+ @misc{kohnfelder1999threats,
98
+ author = {Kohnfelder, Loren and Garg, Praerit},
99
+ title = {The Threats to Our Products},
100
+ howpublished = {Microsoft internal \emph{Interface} journal, 1 April 1999; copy hosted by Adam Shostack},
101
+ year = {1999},
102
+ url = {https://shostack.org/files/microsoft/The-Threats-To-Our-Products.docx},
103
+ urldate = {2026-10-19},
104
+ note = {threatmodel}
105
+ }
106
+
107
+ % ---------------------------------------------------------------- supplychain
108
+ @inproceedings{ladisa2023sok,
109
+ author = {Ladisa, Piergiorgio and Plate, Henrik and Martinez, Matias and Barais, Olivier},
110
+ title = {{SoK}: Taxonomy of Attacks on Open-Source Software Supply Chains},
111
+ booktitle = {2023 IEEE Symposium on Security and Privacy (SP)},
112
+ publisher = {IEEE},
113
+ year = {2023},
114
+ pages = {1509--1526},
115
+ doi = {10.1109/SP46215.2023.10179304},
116
+ note = {supplychain}
117
+ }
118
+
119
+ @inproceedings{ohm2020backstabber,
120
+ author = {Ohm, Marc and Plate, Henrik and Sykosch, Arnold and Meier, Michael},
121
+ title = {Backstabber's Knife Collection: A Review of Open Source Software Supply Chain Attacks},
122
+ booktitle = {Detection of Intrusions and Malware, and Vulnerability Assessment (DIMVA 2020)},
123
+ series = {Lecture Notes in Computer Science},
124
+ publisher = {Springer},
125
+ year = {2020},
126
+ pages = {23--43},
127
+ doi = {10.1007/978-3-030-52683-2_2},
128
+ note = {supplychain}
129
+ }
130
+
131
+ @inproceedings{zimmermann2019small,
132
+ author = {Zimmermann, Markus and Staicu, Cristian-Alexandru and Tenny, Cam and Pradel, Michael},
133
+ title = {Small World with High Risks: A Study of Security Threats in the npm Ecosystem},
134
+ booktitle = {28th USENIX Security Symposium (USENIX Security 19)},
135
+ publisher = {USENIX Association},
136
+ year = {2019},
137
+ pages = {995--1010},
138
+ isbn = {978-1-939133-06-9},
139
+ url = {https://www.usenix.org/conference/usenixsecurity19/presentation/zimmerman},
140
+ note = {supplychain}
141
+ }
142
+
143
+ @inproceedings{lauinger2017thou,
144
+ author = {Lauinger, Tobias and Chaabane, Abdelberi and Arshad, Sajjad and Robertson, William and Wilson, Christo and Kirda, Engin},
145
+ title = {Thou Shalt Not Depend on Me: Analysing the Use of Outdated {JavaScript} Libraries on the Web},
146
+ booktitle = {Network and Distributed System Security Symposium (NDSS 2017)},
147
+ publisher = {Internet Society},
148
+ year = {2017},
149
+ doi = {10.14722/ndss.2017.23414},
150
+ note = {supplychain}
151
+ }
152
+
153
+ @article{thompson1984reflections,
154
+ author = {Thompson, Ken},
155
+ title = {Reflections on Trusting Trust},
156
+ journal = {Communications of the ACM},
157
+ volume = {27},
158
+ number = {8},
159
+ year = {1984},
160
+ pages = {761--763},
161
+ doi = {10.1145/358198.358210},
162
+ note = {supplychain}
163
+ }
164
+
165
+ @inproceedings{torresarias2019intoto,
166
+ author = {Torres-Arias, Santiago and Afzali, Hammad and Kuppusamy, Trishank Karthik and Curtmola, Reza and Cappos, Justin},
167
+ title = {in-toto: Providing farm-to-table guarantees for bits and bytes},
168
+ booktitle = {28th USENIX Security Symposium (USENIX Security 19)},
169
+ publisher = {USENIX Association},
170
+ year = {2019},
171
+ pages = {1393--1410},
172
+ isbn = {978-1-939133-06-9},
173
+ url = {https://www.usenix.org/conference/usenixsecurity19/presentation/torres-arias},
174
+ note = {supplychain}
175
+ }
176
+
177
+ @inproceedings{samuel2010survivable,
178
+ author = {Samuel, Justin and Mathewson, Nick and Cappos, Justin and Dingledine, Roger},
179
+ title = {Survivable Key Compromise in Software Update Systems},
180
+ booktitle = {Proceedings of the 17th ACM Conference on Computer and Communications Security (CCS '10)},
181
+ publisher = {ACM},
182
+ year = {2010},
183
+ pages = {61--72},
184
+ doi = {10.1145/1866307.1866315},
185
+ note = {supplychain}
186
+ }
187
+
188
+ % ---------------------------------------------------------------- secrets
189
+ @inproceedings{meli2019bad,
190
+ author = {Meli, Michael and McNiece, Matthew R. and Reaves, Bradley},
191
+ title = {How Bad Can It Git? Characterizing Secret Leakage in Public {GitHub} Repositories},
192
+ booktitle = {Network and Distributed System Security Symposium (NDSS 2019)},
193
+ publisher = {Internet Society},
194
+ year = {2019},
195
+ doi = {10.14722/ndss.2019.23418},
196
+ note = {secrets}
197
+ }
198
+
199
+ @inproceedings{basak2023secretbench,
200
+ author = {Basak, Setu Kumar and Neil, Lorenzo and Reaves, Bradley and Williams, Laurie},
201
+ title = {{SecretBench}: A Dataset of Software Secrets},
202
+ booktitle = {2023 IEEE/ACM 20th International Conference on Mining Software Repositories (MSR)},
203
+ publisher = {IEEE},
204
+ year = {2023},
205
+ pages = {347--351},
206
+ doi = {10.1109/MSR59073.2023.00053},
207
+ note = {secrets}
208
+ }
209
+
210
+ % ---------------------------------------------------------------- web
211
+ @inproceedings{weichselbaum2016csp,
212
+ author = {Weichselbaum, Lukas and Spagnuolo, Michele and Lekies, Sebastian and Janc, Artur},
213
+ title = {{CSP} Is Dead, Long Live {CSP}! On the Insecurity of Whitelists and the Future of Content Security Policy},
214
+ booktitle = {Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security (CCS '16)},
215
+ publisher = {ACM},
216
+ year = {2016},
217
+ pages = {1376--1387},
218
+ doi = {10.1145/2976749.2978363},
219
+ note = {web}
220
+ }
221
+
222
+ @inproceedings{kocher1996timing,
223
+ author = {Kocher, Paul C.},
224
+ title = {Timing Attacks on Implementations of {Diffie-Hellman}, {RSA}, {DSS}, and Other Systems},
225
+ booktitle = {Advances in Cryptology -- CRYPTO '96},
226
+ series = {Lecture Notes in Computer Science},
227
+ publisher = {Springer},
228
+ year = {1996},
229
+ pages = {104--113},
230
+ doi = {10.1007/3-540-68697-5_9},
231
+ note = {web}
232
+ }
233
+
234
+ @article{crosby2009opportunities,
235
+ author = {Crosby, Scott A. and Wallach, Dan S. and Riedi, Rudolf H.},
236
+ title = {Opportunities and Limits of Remote Timing Attacks},
237
+ journal = {ACM Transactions on Information and System Security},
238
+ volume = {12},
239
+ number = {3},
240
+ year = {2009},
241
+ pages = {1--29},
242
+ doi = {10.1145/1455526.1455530},
243
+ note = {web}
244
+ }
245
+
246
+ @inproceedings{lekies2013flows,
247
+ author = {Lekies, Sebastian and Stock, Ben and Johns, Martin},
248
+ title = {25 Million Flows Later: Large-scale Detection of {DOM}-based {XSS}},
249
+ booktitle = {Proceedings of the 2013 ACM SIGSAC Conference on Computer and Communications Security (CCS '13)},
250
+ publisher = {ACM},
251
+ year = {2013},
252
+ pages = {1193--1204},
253
+ doi = {10.1145/2508859.2516703},
254
+ note = {web}
255
+ }
256
+
257
+ @inproceedings{stock2014precise,
258
+ author = {Stock, Ben and Lekies, Sebastian and Mueller, Tobias and Spiegel, Patrick and Johns, Martin},
259
+ title = {Precise Client-side Protection against {DOM}-based Cross-Site Scripting},
260
+ booktitle = {23rd USENIX Security Symposium (USENIX Security 14)},
261
+ publisher = {USENIX Association},
262
+ year = {2014},
263
+ pages = {655--670},
264
+ isbn = {978-1-931971-15-7},
265
+ url = {https://www.usenix.org/conference/usenixsecurity14/technical-sessions/presentation/stock},
266
+ note = {web}
267
+ }
268
+
269
+ @inproceedings{barth2008robust,
270
+ author = {Barth, Adam and Jackson, Collin and Mitchell, John C.},
271
+ title = {Robust Defenses for Cross-Site Request Forgery},
272
+ booktitle = {Proceedings of the 15th ACM Conference on Computer and Communications Security (CCS '08)},
273
+ publisher = {ACM},
274
+ year = {2008},
275
+ pages = {75--88},
276
+ doi = {10.1145/1455770.1455782},
277
+ note = {web}
278
+ }
279
+
280
+ @inproceedings{fett2016comprehensive,
281
+ author = {Fett, Daniel and K{\"u}sters, Ralf and Schmitz, Guido},
282
+ title = {A Comprehensive Formal Security Analysis of {OAuth} 2.0},
283
+ booktitle = {Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security (CCS '16)},
284
+ publisher = {ACM},
285
+ year = {2016},
286
+ pages = {1204--1215},
287
+ doi = {10.1145/2976749.2978385},
288
+ note = {web}
289
+ }
290
+
291
+ @misc{hodges2012rfc6797,
292
+ author = {Hodges, J. and Jackson, C. and Barth, A.},
293
+ title = {{HTTP} Strict Transport Security ({HSTS})},
294
+ howpublished = {RFC 6797, Proposed Standard, RFC Editor},
295
+ year = {2012},
296
+ month = nov,
297
+ doi = {10.17487/RFC6797},
298
+ note = {web}
299
+ }
300
+
301
+ @misc{jones2015rfc7519,
302
+ author = {Jones, M. and Bradley, J. and Sakimura, N.},
303
+ title = {{JSON} Web Token ({JWT})},
304
+ howpublished = {RFC 7519, Proposed Standard, RFC Editor},
305
+ year = {2015},
306
+ month = may,
307
+ doi = {10.17487/RFC7519},
308
+ note = {web}
309
+ }
310
+
311
+ @misc{sakimura2015rfc7636,
312
+ author = {Sakimura, N. and Bradley, J. and Agarwal, N.},
313
+ title = {Proof Key for Code Exchange by {OAuth} Public Clients},
314
+ howpublished = {RFC 7636, Proposed Standard, RFC Editor},
315
+ year = {2015},
316
+ month = sep,
317
+ doi = {10.17487/RFC7636},
318
+ note = {web}
319
+ }
320
+
321
+ @misc{lodderstedt2025rfc9700,
322
+ author = {Lodderstedt, T. and Bradley, J. and Labunets, A. and Fett, D.},
323
+ title = {Best Current Practice for {OAuth} 2.0 Security},
324
+ howpublished = {RFC 9700, BCP 240, RFC Editor},
325
+ year = {2025},
326
+ month = jan,
327
+ doi = {10.17487/RFC9700},
328
+ note = {web}
329
+ }
330
+
331
+ @inproceedings{chen2018cors,
332
+ author = {Chen, Jianjun and Jiang, Jian and Duan, Haixin and Wan, Tao and Chen, Shuo and Paxson, Vern and Yang, Min},
333
+ title = {We Still Don't Have Secure Cross-Domain Requests: an Empirical Study of {CORS}},
334
+ booktitle = {27th USENIX Security Symposium (USENIX Security 18)},
335
+ publisher = {USENIX Association},
336
+ year = {2018},
337
+ pages = {1079--1093},
338
+ isbn = {978-1-939133-04-5},
339
+ url = {https://www.usenix.org/conference/usenixsecurity18/presentation/chen-jianjun},
340
+ note = {web}
341
+ }
342
+
343
+ @misc{sheffer2020rfc8725,
344
+ author = {Sheffer, Y. and Hardt, D. and Jones, M.},
345
+ title = {{JSON} Web Token Best Current Practices},
346
+ howpublished = {RFC 8725, BCP 225, RFC Editor},
347
+ year = {2020},
348
+ month = feb,
349
+ doi = {10.17487/RFC8725},
350
+ note = {web}
351
+ }
352
+
353
+ @misc{owasp2023api,
354
+ shorthand = {OWASP API Top 10:2023},
355
+ author = {{OWASP Foundation}},
356
+ title = {{OWASP} Top 10 {API} Security Risks -- 2023},
357
+ howpublished = {OWASP API Security Project},
358
+ year = {2023},
359
+ url = {https://owasp.org/API-Security/editions/2023/en/0x11-t10/},
360
+ urldate = {2026-10-19},
361
+ note = {web}
362
+ }
363
+
364
+ @misc{kitterman2014rfc7208,
365
+ author = {Kitterman, S.},
366
+ title = {Sender Policy Framework ({SPF}) for Authorizing Use of Domains in Email, Version 1},
367
+ howpublished = {RFC 7208, Proposed Standard, RFC Editor},
368
+ year = {2014},
369
+ month = apr,
370
+ doi = {10.17487/RFC7208},
371
+ note = {web}
372
+ }
373
+
374
+ @misc{kucherawy2015rfc7489,
375
+ author = {Kucherawy, M. and Zwicky, E.},
376
+ title = {Domain-based Message Authentication, Reporting, and Conformance ({DMARC})},
377
+ howpublished = {RFC 7489, Informational, RFC Editor},
378
+ year = {2015},
379
+ month = mar,
380
+ doi = {10.17487/RFC7489},
381
+ note = {web}
382
+ }
383
+
384
+ @misc{owasp2021top10,
385
+ shorthand = {OWASP Top 10:2021},
386
+ author = {{OWASP Foundation}},
387
+ title = {{OWASP} Top 10:2021},
388
+ howpublished = {OWASP Foundation},
389
+ year = {2021},
390
+ url = {https://top10.owasp.org/2021},
391
+ urldate = {2026-10-19},
392
+ note = {web}
393
+ }
394
+
395
+ @misc{owasp2025top10,
396
+ shorthand = {OWASP Top 10:2025},
397
+ author = {{OWASP Foundation}},
398
+ title = {{OWASP} Top 10:2025},
399
+ howpublished = {OWASP Foundation},
400
+ year = {2025},
401
+ url = {https://top10.owasp.org/2025},
402
+ urldate = {2026-10-19},
403
+ note = {web}
404
+ }
405
+
406
+ @misc{owaspwstg42,
407
+ shorthand = {OWASP WSTG v4.2},
408
+ author = {{OWASP Foundation}},
409
+ title = {{OWASP} Web Security Testing Guide, Version 4.2},
410
+ howpublished = {OWASP Foundation},
411
+ url = {https://wstg.owasp.org/v4.2/},
412
+ urldate = {2026-10-19},
413
+ note = {web}
414
+ }
415
+
416
+ % ---------------------------------------------------------------- llm
417
+ @inproceedings{greshake2023signed,
418
+ author = {Greshake, Kai and Abdelnabi, Sahar and Mishra, Shailesh and Endres, Christoph and Holz, Thorsten and Fritz, Mario},
419
+ title = {Not What You've Signed Up For: Compromising Real-World {LLM}-Integrated Applications with Indirect Prompt Injection},
420
+ booktitle = {Proceedings of the 16th ACM Workshop on Artificial Intelligence and Security (AISec '23)},
421
+ publisher = {ACM},
422
+ year = {2023},
423
+ pages = {79--90},
424
+ doi = {10.1145/3605764.3623985},
425
+ eprint = {2302.12173},
426
+ archivePrefix = {arXiv},
427
+ note = {llm}
428
+ }
429
+
430
+ @inproceedings{spracklen2025package,
431
+ author = {Spracklen, Joseph and Wijewickrama, Raveen and Sakib, A H M Nazmus and Maiti, Anindya and Viswanath, Bimal and Jadliwala, Murtuza},
432
+ title = {We Have a Package for You! A Comprehensive Analysis of Package Hallucinations by Code Generating {LLMs}},
433
+ booktitle = {34th USENIX Security Symposium (USENIX Security 25)},
434
+ publisher = {USENIX Association},
435
+ year = {2025},
436
+ pages = {3687--3706},
437
+ isbn = {978-1-939133-52-6},
438
+ url = {https://www.usenix.org/conference/usenixsecurity25/presentation/spracklen},
439
+ note = {llm}
440
+ }
441
+
442
+ @misc{perez2022ignore,
443
+ author = {Perez, F{\'a}bio and Ribeiro, Ian},
444
+ title = {Ignore Previous Prompt: Attack Techniques For Language Models},
445
+ howpublished = {NeurIPS 2022 ML Safety Workshop; arXiv:2211.09527},
446
+ year = {2022},
447
+ eprint = {2211.09527},
448
+ archivePrefix = {arXiv},
449
+ doi = {10.48550/arXiv.2211.09527},
450
+ note = {llm}
451
+ }
452
+
453
+ @misc{liu2023prompt,
454
+ author = {Liu, Yi and Deng, Gelei and Li, Yuekang and Wang, Kailong and Wang, Zihao and Wang, Xiaofeng and Zhang, Tianwei and Liu, Yepang and Wang, Haoyu and Zheng, Yan and Zhang, Leo Yu and Liu, Yang},
455
+ title = {Prompt Injection attack against {LLM}-integrated Applications},
456
+ howpublished = {arXiv preprint arXiv:2306.05499},
457
+ year = {2023},
458
+ eprint = {2306.05499},
459
+ archivePrefix = {arXiv},
460
+ doi = {10.48550/arXiv.2306.05499},
461
+ note = {llm}
462
+ }
463
+
464
+ @misc{owasp2024llmtop10,
465
+ shorthand = {OWASP LLM Top 10 (2025)},
466
+ author = {{OWASP Foundation}},
467
+ title = {{OWASP} Top 10 for {LLM} Applications 2025},
468
+ howpublished = {OWASP Gen AI Security Project, published 17 November 2024},
469
+ year = {2024},
470
+ url = {https://genai.owasp.org/resource/owasp-top-10-for-llm-applications-2025/},
471
+ urldate = {2026-10-19},
472
+ note = {llm}
473
+ }
474
+
475
+ @misc{owasp2025agentic,
476
+ shorthand = {OWASP Agentic Top 10 (2026)},
477
+ author = {{OWASP Foundation}},
478
+ title = {{OWASP} Top 10 for Agentic Applications for 2026},
479
+ howpublished = {OWASP Gen AI Security Project, published 9 December 2025},
480
+ year = {2025},
481
+ url = {https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/},
482
+ urldate = {2026-10-19},
483
+ note = {llm}
484
+ }
485
+
486
+ @misc{owasp2025mcptop10,
487
+ shorthand = {OWASP MCP Top 10},
488
+ author = {{OWASP Foundation}},
489
+ title = {{OWASP} {MCP} Top 10},
490
+ howpublished = {OWASP project page (beta, living document; items MCP01:2025--MCP10:2025; project lead Vandana Verma Sehgal)},
491
+ year = {2025},
492
+ url = {https://owasp.org/www-project-mcp-top-10/},
493
+ urldate = {2026-10-19},
494
+ note = {llm}
495
+ }
496
+
497
+ @misc{mitreatlas,
498
+ shorthand = {MITRE ATLAS},
499
+ author = {{The MITRE Corporation}},
500
+ title = {{MITRE ATLAS}: Adversarial Threat Landscape for {AI} Systems},
501
+ howpublished = {Knowledge base of adversary tactics and techniques against AI systems},
502
+ url = {https://atlas.mitre.org/},
503
+ urldate = {2026-10-19},
504
+ note = {llm}
505
+ }
506
+
507
+ % ---------------------------------------------------------------- standards
508
+ @misc{oasis2023sarif,
509
+ shorthand = {SARIF 2.1.0},
510
+ author = {Fanning, Michael C. and Golding, Laurence J.},
511
+ title = {Static Analysis Results Interchange Format ({SARIF}) Version 2.1.0 Plus Errata 01},
512
+ howpublished = {OASIS Standard incorporating Approved Errata, 28 August 2023},
513
+ organization = {OASIS},
514
+ year = {2023},
515
+ url = {https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html},
516
+ urldate = {2026-10-19},
517
+ note = {standards}
518
+ }
519
+
520
+ @misc{eu2022nis2,
521
+ shorthand = {NIS2 Directive},
522
+ author = {{European Parliament and Council of the European Union}},
523
+ title = {Directive ({EU}) 2022/2555 of the {European Parliament} and of the {Council} of 14 {December} 2022 on measures for a high common level of cybersecurity across the {Union}, amending {Regulation (EU) No 910/2014} and {Directive (EU) 2018/1972}, and repealing {Directive (EU) 2016/1148} ({NIS} 2 {Directive})},
524
+ howpublished = {Official Journal of the European Union, L 333, 27.12.2022, p. 80},
525
+ year = {2022},
526
+ url = {https://eur-lex.europa.eu/eli/dir/2022/2555/oj},
527
+ urldate = {2026-10-19},
528
+ note = {standards}
529
+ }
530
+
531
+ @misc{mitrecwe,
532
+ shorthand = {MITRE CWE},
533
+ author = {{The MITRE Corporation}},
534
+ title = {{CWE}: Common Weakness Enumeration},
535
+ howpublished = {Community-developed list of software and hardware weakness types, sponsored by CISA},
536
+ url = {https://cwe.mitre.org/},
537
+ urldate = {2026-10-19},
538
+ note = {standards}
539
+ }
@@ -0,0 +1,77 @@
1
+ # References
2
+
3
+ The research and standards Penthera's methodology and findings cite. The BibTeX source is [references.bib](references.bib); this page is generated from it by `node scripts/build-references.mjs`.
4
+
5
+ Every entry was checked against the publisher or standards body (Crossref DOI metadata, USENIX, NDSS, arXiv, the RFC Editor, OWASP, MITRE, OASIS, the EU Publications Office) on 2026-10-19. Entries that could not be verified were left out. How each one is used is described in [METHODOLOGY.md](METHODOLOGY.md).
6
+
7
+ ## Black-box scanning and benchmarking
8
+
9
+ - `bau2010state`: Bau, Jason; Bursztein, Elie; Gupta, Divij; Mitchell, John (2010). *State of the Art: Automated Black-Box Web Application Vulnerability Testing*. 2010 IEEE Symposium on Security and Privacy. <https://doi.org/10.1109/SP.2010.27>
10
+ - `doupe2010johnny`: Doupé, Adam; Cova, Marco; Vigna, Giovanni (2010). *Why Johnny Can't Pentest: An Analysis of Black-Box Web Vulnerability Scanners*. Detection of Intrusions and Malware, and Vulnerability Assessment (DIMVA 2010). <https://doi.org/10.1007/978-3-642-14215-4_7>
11
+ - `antunes2010benchmarking`: Antunes, Nuno; Vieira, Marco (2010). *Benchmarking Vulnerability Detection Tools for Web Services*. 2010 IEEE International Conference on Web Services (ICWS). <https://doi.org/10.1109/ICWS.2010.76>
12
+ - `antunes2015assessing`: Antunes, Nuno; Vieira, Marco (2015). *Assessing and Comparing Vulnerability Detection Tools for Web Services: Benchmarking Approach and Examples*. IEEE Transactions on Services Computing. <https://doi.org/10.1109/TSC.2014.2310221>
13
+ - `owaspbenchmark`: OWASP Foundation. *OWASP Benchmark Project*. OWASP project page (v1.2; project leader Dave Wichers). <https://owasp.org/www-project-benchmark/>
14
+
15
+ ## Security design principles
16
+
17
+ - `saltzer1975protection`: Saltzer, J. H.; Schroeder, M. D. (1975). *The Protection of Information in Computer Systems*. Proceedings of the IEEE. <https://doi.org/10.1109/PROC.1975.9939>
18
+
19
+ ## Threat modeling
20
+
21
+ - `shostack2014threat`: Shostack, Adam (2014). *Threat Modeling: Designing for Security*. Wiley. <https://www.wiley-vch.de/de/fachgebiete/computer-und-informatik/threat-modeling-978-1-118-80999-0>
22
+ - `kohnfelder1999threats`: Kohnfelder, Loren; Garg, Praerit (1999). *The Threats to Our Products*. Microsoft internal Interface journal, 1 April 1999; copy hosted by Adam Shostack. <https://shostack.org/files/microsoft/The-Threats-To-Our-Products.docx>
23
+
24
+ ## Software supply chain
25
+
26
+ - `ladisa2023sok`: Ladisa, Piergiorgio; Plate, Henrik; Martinez, Matias; Barais, Olivier (2023). *SoK: Taxonomy of Attacks on Open-Source Software Supply Chains*. 2023 IEEE Symposium on Security and Privacy (SP). <https://doi.org/10.1109/SP46215.2023.10179304>
27
+ - `ohm2020backstabber`: Ohm, Marc; Plate, Henrik; Sykosch, Arnold; Meier, Michael (2020). *Backstabber's Knife Collection: A Review of Open Source Software Supply Chain Attacks*. Detection of Intrusions and Malware, and Vulnerability Assessment (DIMVA 2020). <https://doi.org/10.1007/978-3-030-52683-2_2>
28
+ - `zimmermann2019small`: Zimmermann, Markus; Staicu, Cristian-Alexandru; Tenny, Cam; Pradel, Michael (2019). *Small World with High Risks: A Study of Security Threats in the npm Ecosystem*. 28th USENIX Security Symposium (USENIX Security 19). <https://www.usenix.org/conference/usenixsecurity19/presentation/zimmerman>
29
+ - `lauinger2017thou`: Lauinger, Tobias; Chaabane, Abdelberi; Arshad, Sajjad; Robertson, William; Wilson, Christo; Kirda, Engin (2017). *Thou Shalt Not Depend on Me: Analysing the Use of Outdated JavaScript Libraries on the Web*. Network and Distributed System Security Symposium (NDSS 2017). <https://doi.org/10.14722/ndss.2017.23414>
30
+ - `thompson1984reflections`: Thompson, Ken (1984). *Reflections on Trusting Trust*. Communications of the ACM. <https://doi.org/10.1145/358198.358210>
31
+ - `torresarias2019intoto`: Torres-Arias, Santiago; Afzali, Hammad; Kuppusamy, Trishank Karthik; Curtmola, Reza; Cappos, Justin (2019). *in-toto: Providing farm-to-table guarantees for bits and bytes*. 28th USENIX Security Symposium (USENIX Security 19). <https://www.usenix.org/conference/usenixsecurity19/presentation/torres-arias>
32
+ - `samuel2010survivable`: Samuel, Justin; Mathewson, Nick; Cappos, Justin; Dingledine, Roger (2010). *Survivable Key Compromise in Software Update Systems*. Proceedings of the 17th ACM Conference on Computer and Communications Security (CCS '10). <https://doi.org/10.1145/1866307.1866315>
33
+
34
+ ## Secret leakage
35
+
36
+ - `meli2019bad`: Meli, Michael; McNiece, Matthew R.; Reaves, Bradley (2019). *How Bad Can It Git? Characterizing Secret Leakage in Public GitHub Repositories*. Network and Distributed System Security Symposium (NDSS 2019). <https://doi.org/10.14722/ndss.2019.23418>
37
+ - `basak2023secretbench`: Basak, Setu Kumar; Neil, Lorenzo; Reaves, Bradley; Williams, Laurie (2023). *SecretBench: A Dataset of Software Secrets*. 2023 IEEE/ACM 20th International Conference on Mining Software Repositories (MSR). <https://doi.org/10.1109/MSR59073.2023.00053>
38
+
39
+ ## Web application security
40
+
41
+ - `weichselbaum2016csp`: Weichselbaum, Lukas; Spagnuolo, Michele; Lekies, Sebastian; Janc, Artur (2016). *CSP Is Dead, Long Live CSP! On the Insecurity of Whitelists and the Future of Content Security Policy*. Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security (CCS '16). <https://doi.org/10.1145/2976749.2978363>
42
+ - `kocher1996timing`: Kocher, Paul C. (1996). *Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems*. Advances in Cryptology - CRYPTO '96. <https://doi.org/10.1007/3-540-68697-5_9>
43
+ - `crosby2009opportunities`: Crosby, Scott A.; Wallach, Dan S.; Riedi, Rudolf H. (2009). *Opportunities and Limits of Remote Timing Attacks*. ACM Transactions on Information and System Security. <https://doi.org/10.1145/1455526.1455530>
44
+ - `lekies2013flows`: Lekies, Sebastian; Stock, Ben; Johns, Martin (2013). *25 Million Flows Later: Large-scale Detection of DOM-based XSS*. Proceedings of the 2013 ACM SIGSAC Conference on Computer and Communications Security (CCS '13). <https://doi.org/10.1145/2508859.2516703>
45
+ - `stock2014precise`: Stock, Ben; Lekies, Sebastian; Mueller, Tobias; Spiegel, Patrick; Johns, Martin (2014). *Precise Client-side Protection against DOM-based Cross-Site Scripting*. 23rd USENIX Security Symposium (USENIX Security 14). <https://www.usenix.org/conference/usenixsecurity14/technical-sessions/presentation/stock>
46
+ - `barth2008robust`: Barth, Adam; Jackson, Collin; Mitchell, John C. (2008). *Robust Defenses for Cross-Site Request Forgery*. Proceedings of the 15th ACM Conference on Computer and Communications Security (CCS '08). <https://doi.org/10.1145/1455770.1455782>
47
+ - `fett2016comprehensive`: Fett, Daniel; Küsters, Ralf; Schmitz, Guido (2016). *A Comprehensive Formal Security Analysis of OAuth 2.0*. Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security (CCS '16). <https://doi.org/10.1145/2976749.2978385>
48
+ - `hodges2012rfc6797`: Hodges, J.; Jackson, C.; Barth, A. (2012). *HTTP Strict Transport Security (HSTS)*. RFC 6797, Proposed Standard, RFC Editor. <https://doi.org/10.17487/RFC6797>
49
+ - `jones2015rfc7519`: Jones, M.; Bradley, J.; Sakimura, N. (2015). *JSON Web Token (JWT)*. RFC 7519, Proposed Standard, RFC Editor. <https://doi.org/10.17487/RFC7519>
50
+ - `sakimura2015rfc7636`: Sakimura, N.; Bradley, J.; Agarwal, N. (2015). *Proof Key for Code Exchange by OAuth Public Clients*. RFC 7636, Proposed Standard, RFC Editor. <https://doi.org/10.17487/RFC7636>
51
+ - `lodderstedt2025rfc9700`: Lodderstedt, T.; Bradley, J.; Labunets, A.; Fett, D. (2025). *Best Current Practice for OAuth 2.0 Security*. RFC 9700, BCP 240, RFC Editor. <https://doi.org/10.17487/RFC9700>
52
+ - `chen2018cors`: Chen, Jianjun; Jiang, Jian; Duan, Haixin; Wan, Tao; Chen, Shuo; Paxson, Vern; Yang, Min (2018). *We Still Don't Have Secure Cross-Domain Requests: an Empirical Study of CORS*. 27th USENIX Security Symposium (USENIX Security 18). <https://www.usenix.org/conference/usenixsecurity18/presentation/chen-jianjun>
53
+ - `sheffer2020rfc8725`: Sheffer, Y.; Hardt, D.; Jones, M. (2020). *JSON Web Token Best Current Practices*. RFC 8725, BCP 225, RFC Editor. <https://doi.org/10.17487/RFC8725>
54
+ - `owasp2023api`: OWASP Foundation (2023). *OWASP Top 10 API Security Risks - 2023*. OWASP API Security Project. <https://owasp.org/API-Security/editions/2023/en/0x11-t10/>
55
+ - `kitterman2014rfc7208`: Kitterman, S. (2014). *Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1*. RFC 7208, Proposed Standard, RFC Editor. <https://doi.org/10.17487/RFC7208>
56
+ - `kucherawy2015rfc7489`: Kucherawy, M.; Zwicky, E. (2015). *Domain-based Message Authentication, Reporting, and Conformance (DMARC)*. RFC 7489, Informational, RFC Editor. <https://doi.org/10.17487/RFC7489>
57
+ - `owasp2021top10`: OWASP Foundation (2021). *OWASP Top 10:2021*. OWASP Foundation. <https://top10.owasp.org/2021>
58
+ - `owasp2025top10`: OWASP Foundation (2025). *OWASP Top 10:2025*. OWASP Foundation. <https://top10.owasp.org/2025>
59
+ - `owaspwstg42`: OWASP Foundation. *OWASP Web Security Testing Guide, Version 4.2*. OWASP Foundation. <https://wstg.owasp.org/v4.2/>
60
+
61
+ ## LLM and agent security
62
+
63
+ - `greshake2023signed`: Greshake, Kai; Abdelnabi, Sahar; Mishra, Shailesh; Endres, Christoph; Holz, Thorsten; Fritz, Mario (2023). *Not What You've Signed Up For: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injection*. Proceedings of the 16th ACM Workshop on Artificial Intelligence and Security (AISec '23). <https://doi.org/10.1145/3605764.3623985>
64
+ - `spracklen2025package`: Spracklen, Joseph; Wijewickrama, Raveen; Sakib, A H M Nazmus; Maiti, Anindya; Viswanath, Bimal; Jadliwala, Murtuza (2025). *We Have a Package for You! A Comprehensive Analysis of Package Hallucinations by Code Generating LLMs*. 34th USENIX Security Symposium (USENIX Security 25). <https://www.usenix.org/conference/usenixsecurity25/presentation/spracklen>
65
+ - `perez2022ignore`: Perez, Fábio; Ribeiro, Ian (2022). *Ignore Previous Prompt: Attack Techniques For Language Models*. NeurIPS 2022 ML Safety Workshop; arXiv:2211.09527. <https://doi.org/10.48550/arXiv.2211.09527>
66
+ - `liu2023prompt`: Liu, Yi; Deng, Gelei; Li, Yuekang; Wang, Kailong; Wang, Zihao; Wang, Xiaofeng; Zhang, Tianwei; Liu, Yepang; Wang, Haoyu; Zheng, Yan; Zhang, Leo Yu; Liu, Yang (2023). *Prompt Injection attack against LLM-integrated Applications*. arXiv preprint arXiv:2306.05499. <https://doi.org/10.48550/arXiv.2306.05499>
67
+ - `owasp2024llmtop10`: OWASP Foundation (2024). *OWASP Top 10 for LLM Applications 2025*. OWASP Gen AI Security Project, published 17 November 2024. <https://genai.owasp.org/resource/owasp-top-10-for-llm-applications-2025/>
68
+ - `owasp2025agentic`: OWASP Foundation (2025). *OWASP Top 10 for Agentic Applications for 2026*. OWASP Gen AI Security Project, published 9 December 2025. <https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/>
69
+ - `owasp2025mcptop10`: OWASP Foundation (2025). *OWASP MCP Top 10*. OWASP project page (beta, living document; items MCP01:2025-MCP10:2025; project lead Vandana Verma Sehgal). <https://owasp.org/www-project-mcp-top-10/>
70
+ - `mitreatlas`: The MITRE Corporation. *MITRE ATLAS: Adversarial Threat Landscape for AI Systems*. Knowledge base of adversary tactics and techniques against AI systems. <https://atlas.mitre.org/>
71
+
72
+ ## Standards and regulation
73
+
74
+ - `scarfone2008sp800115`: Scarfone, K. A.; Souppaya, M. P.; Cody, A.; Orebaugh, A. D. (2008). *Technical Guide to Information Security Testing and Assessment*. National Institute of Standards and Technology. <https://doi.org/10.6028/NIST.SP.800-115>
75
+ - `oasis2023sarif`: Fanning, Michael C.; Golding, Laurence J. (2023). *Static Analysis Results Interchange Format (SARIF) Version 2.1.0 Plus Errata 01*. OASIS Standard incorporating Approved Errata, 28 August 2023. <https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/sarif-v2.1.0-errata01-os-complete.html>
76
+ - `eu2022nis2`: European Parliament; Council of the European Union (2022). *Directive (EU) 2022/2555 of the European Parliament and of the Council of 14 December 2022 on measures for a high common level of cybersecurity across the Union, amending Regulation (EU) No 910/2014 and Directive (EU) 2018/1972, and repealing Directive (EU) 2016/1148 (NIS 2 Directive)*. Official Journal of the European Union, L 333, 27.12.2022, p. 80. <https://eur-lex.europa.eu/eli/dir/2022/2555/oj>
77
+ - `mitrecwe`: The MITRE Corporation. *CWE: Common Weakness Enumeration*. Community-developed list of software and hardware weakness types, sponsored by CISA. <https://cwe.mitre.org/>