Commit Graph

1773 Commits

Author SHA1 Message Date
Klaas van Schelven
6b46dc2513 Sparklines: copy/paste (ugly code) into stacktrace too 2025-11-18 09:06:00 +01:00
Klaas van Schelven
60de54a3dc Sparklines PoC
See #271
2025-11-17 11:34:52 +01:00
Klaas van Schelven
eeac2e750c Link to 'all tags' in the 'tags' RHS box 2025-11-16 20:08:50 +01:00
Klaas van Schelven
4137565de9 Note about (crashpad/minidump) guid 2025-11-16 19:54:13 +01:00
Klaas van Schelven
8283b80b35 Minidump API Endpoint: custom/extra fields support 2025-11-16 09:29:20 +01:00
Klaas van Schelven
f5605c8d0e Tags on issue-tags page: tailwind-based histograms 2025-11-15 16:13:05 +01:00
Klaas van Schelven
60bbf8c606 send_json/stress_test utils: Prettier tag-sending, pt.2 2025-11-15 15:44:19 +01:00
Klaas van Schelven
8da9ec593e send_json/stress_test utilities: prettier tag-sending 2025-11-15 14:51:27 +01:00
Klaas van Schelven
1829465342 Merge pull request #270 from bugsink/minidumps
Minidumps: PoC
2025-11-15 13:43:36 +01:00
Klaas van Schelven
7df7bc7f4d Minidump feature flag: configurable in docker 2025-11-15 13:38:09 +01:00
Klaas van Schelven
661d83bd93 minidumps: FEATURE flag 2025-11-15 13:33:49 +01:00
Klaas van Schelven
2660e1b027 Rendering of events w/ frames=None: be robust for it 2025-11-15 13:04:37 +01:00
Klaas van Schelven
97c1e4c71c Comment about difs_assemble endpoint 2025-11-13 08:33:31 +01:00
Klaas van Schelven
9f6cd88ec6 Remove unneeded layer of indirection in query. 2025-11-13 08:33:12 +01:00
Klaas van Schelven
3d031376ef Merge branch 'main' into minidumps 2025-11-12 22:15:40 +01:00
Klaas van Schelven
9f2a7c6737 de-chatgptize event_threads_for_process_state
this code was created in a REPL/ChatGPT/minidump-API/HITL session,
until I had something that "seemed to work". the present commit
is the result of rereading, refactoring for understanding etc.
it's not "pure refacting" in the sense that it's behavior-changing,
but AFAICT for the better. e.g. "line 0" => just leave that out and
many similar changes.
2025-11-12 22:05:42 +01:00
Klaas van Schelven
eea5f032e2 Clarified meaning of process_state.requesting_thread
(the now-removed 'treat as pid' was hallunicated by the bot; the
taken-from-sentry version missed the guard against -1)

> The index of the thread that requested a dump be written in the
> threads vector. [..] If the dump was not produced as a result of an exception
> [..] this field will be set to -1,
2025-11-12 21:33:18 +01:00
Klaas van Schelven
54ec6eaceb Populate exception['value']
mirrors how we show fetch it in `get_exception_type_and_value_for_exception`
2025-11-12 21:04:53 +01:00
Klaas van Schelven
5757b4f9b5 Typo in comment 2025-11-12 21:03:03 +01:00
Klaas van Schelven
b60980c8f3 PoC: Minidumps w/ symbolification
Plenty of TODOs left; but this proves we can find:

* file names
* function names
* line nos
* source context

See #82
2025-11-12 20:44:38 +01:00
Klaas van Schelven
74a04f6ea1 'files' is a bugsink module too; reflect in eat_your_own_dogfood 2025-11-12 16:39:50 +01:00
Klaas van Schelven
b99e26d83f Don't log non-sent emails
e.g. for users with their email addresses blanked out

See #86
2025-11-12 16:28:11 +01:00
Klaas van Schelven
2fe2b4fb9d Use debug-tools for email in development
See #86
2025-11-12 16:27:14 +01:00
Klaas van Schelven
a93f369ad7 Fix member counts on project/team list
they were at most 1
2025-11-12 16:10:10 +01:00
Klaas van Schelven
2ad2c819f9 bandit (trivial ignore) 2025-11-11 15:57:17 +01:00
Klaas van Schelven
7b079dd57b Add template-based comment 2025-11-11 15:54:39 +01:00
Klaas van Schelven
9462d0a2c7 merge 'main' with 'main' 2025-11-11 15:34:54 +01:00
Klaas van Schelven
ab065a6329 api_catch_all: header-based
rather than try-and-recover, just look at the headers and show body/POST etc.
this avoids hard-to-reason about situations where either of those won't work
because the other has already been executed; in combination with reasoning
about max size usage the explicit solution is simply easier to reason about.

further:

* makes api_catch_all one of the content_encoding-ready views.
* implement a max length for the ingest api view
2025-11-11 15:25:51 +01:00
Klaas van Schelven
937df4cbb8 minidump endpoint: support content encoding
adds readline() method to GeneratorReader (ChatGPT-generated; eyeballed for
correctness) to match the Django FILES/POST handling expectations.
2025-11-11 13:50:07 +01:00
Klaas van Schelven
72aab81d7d Add ContentEncodingCheckMiddleware 2025-11-11 13:39:44 +01:00
Klaas van Schelven
f5d7b430f2 Merge branch 'main' into minidumps 2025-11-11 10:07:06 +01:00
Klaas van Schelven
d5db5e328b Merge branch brotli-bombs-tests 2025-11-11 10:01:23 +01:00
Klaas van Schelven
54c96eb680 Minidump upload: more explicit errors (and logging) 2025-11-11 09:48:00 +01:00
Klaas van Schelven
80f65c7058 Comment: CustomWSGIRequest.get_host(): no changes needed for Django 5.2 upgrade
this method wasn't changed upstream.

See #89
2025-11-11 09:45:53 +01:00
Klaas van Schelven
1ed03ce053 Support request.body when doing Chuncked Transfer Encoding
(ran into this b/c the native minidump upload uses chunked mode and
our impl. of that looks at request.body (via FILES))

See #9
2025-11-11 09:39:12 +01:00
Klaas van Schelven
444e84edc0 Merge pull request #267 from bugsink/python-3.14
Support Python 3.14
2025-11-10 20:32:40 +01:00
Klaas van Schelven
ad077b4056 file_info's debug_id is optional
(as per my notes; didn't recheck this when committing)
2025-11-09 23:11:10 +01:00
Klaas van Schelven
690a92a1f9 Merge branch 'main' into minidumps 2025-11-09 21:56:18 +01:00
Klaas van Schelven
0432451e8e Fix inefficient bytes concatenation when KEEP_ENVELOPES != 0 2025-11-09 21:11:35 +01:00
Klaas van Schelven
a6ead89ca8 Remove event.debug_info
basically unused
2025-11-09 20:58:39 +01:00
Klaas van Schelven
53bea102d9 Compression decoding errors: return 400 rather than 500 2025-11-09 20:50:06 +01:00
Klaas van Schelven
b81f754b8c Support Python 3.14
make it so by [a] saying it is so and [b] testing it in the CI/CD
2025-11-09 20:12:55 +01:00
Klaas van Schelven
473d4de6d2 2.0.6 CHANGELOG 2.0.6 2025-11-08 23:37:11 +01:00
Klaas van Schelven
d979b17596 Merge commit from fork
Add mitigation for a 2nd class of brotli DOS attack
2025-11-08 23:36:29 +01:00
Klaas van Schelven
69a918de7d Additional test scripts for gzip/deflate bombs 2025-11-08 23:08:59 +01:00
Klaas van Schelven
60be8fa4a4 Add end-to-end test for brotli/envelope
proving that 2.0.5 solves the problem of (well-formatted) bombs
2025-11-08 23:08:49 +01:00
Klaas van Schelven
d5858a7a41 'random' (malformed) 'bomb' and test
These tests were originally in what is now 1201f754e3
but they were held back because they provide more information
to an attacker than strictly required.

The orignal (non-published, now published) commit message (which
goes with both the code and the tests) was:

As noted by @Cycloctane:

> The problem is that the infinte loop I was talking about is happening inside
> `brotli_generator`. Because brotli `decompressor.is_finished()` never returns
> True if the input is not valid brotli compressed data or is truncated. And
> `decompressor.process()` will keep returning empty bytes that won't be *yield*
> out, making the generator keep looping inside itself. `MaxDataReader` is not
> possible to limit it.
2025-11-08 23:06:32 +01:00
Klaas van Schelven
4c07000818 Add 'send_random_data' 'bomb'
credit @Cycloctane (who provided this as a curl command)
2025-11-08 23:04:19 +01:00
Klaas van Schelven
9db2498e27 send_bomb command to test brotli decompression vulnerability 2025-11-08 23:04:15 +01:00
Klaas van Schelven
c63e23f096 Clarify why I believe the curren solution will not be stuck forever 2025-11-08 22:59:49 +01:00