[adversarial] API probes timed out during shared-host load #264

Open
opened 2026-09-27 19:51:58 +00:00 by kayg · 5 comments
Owner

Context

During the one time-boxed adversarial round for Forgejo #152, several non-SLOW requests exceeded the probe's 30-second timeout. The probes ran against the existing local dev server binary at /home/kayg/Developer/calternal-wt/gates/target/debug/calternal-server, not a server built from the import branch. The shared host had several other calternal-server builds and another adversarial attack process active at the same time.

Evidence

  • Template create storm: 2 of 16 requests timed out; 14 unique Note IDs were observed.
  • Template path traversal and both Reminders discovery requests timed out; adjacent invalid-template requests returned 400, and later Reminders sync and VTODO create/read/delete requests returned 207/201/200/204.
  • Bookmark capture storm: 4 requests timed out. The other returned statuses were 429, which the probe accepts.
  • DAV initial sync and Calendar Event-from-Log also timed out. Later Calendar create, retry, status, and link operations completed.
  • attack2.py reached feed, isolation, collaboration, public-share, exhaustion, and CLI checks. Its local sync section did not run because target/debug/calternald was not built at the time; the harness exited with FileNotFoundError.
  • No server crash or HTTP 5xx was observed. Hostile-byte checks reported zero findings. Many additional responses were marked SLOW and are treated as host load.

Follow-up

Repeat these timeout cases against an isolated server built from the target branch, then fix any reproducible server-side timeout or unexpected behavior. This report records the non-SLOW probe failures for triage; it does not attribute them to the importer.

## Context During the one time-boxed adversarial round for Forgejo #152, several non-SLOW requests exceeded the probe's 30-second timeout. The probes ran against the existing local dev server binary at `/home/kayg/Developer/calternal-wt/gates/target/debug/calternal-server`, not a server built from the import branch. The shared host had several other `calternal-server` builds and another adversarial attack process active at the same time. ## Evidence - Template create storm: 2 of 16 requests timed out; 14 unique Note IDs were observed. - Template path traversal and both Reminders discovery requests timed out; adjacent invalid-template requests returned 400, and later Reminders sync and VTODO create/read/delete requests returned 207/201/200/204. - Bookmark capture storm: 4 requests timed out. The other returned statuses were 429, which the probe accepts. - DAV initial sync and Calendar Event-from-Log also timed out. Later Calendar create, retry, status, and link operations completed. - `attack2.py` reached feed, isolation, collaboration, public-share, exhaustion, and CLI checks. Its local sync section did not run because `target/debug/calternald` was not built at the time; the harness exited with `FileNotFoundError`. - No server crash or HTTP 5xx was observed. Hostile-byte checks reported zero findings. Many additional responses were marked SLOW and are treated as host load. ## Follow-up Repeat these timeout cases against an isolated server built from the target branch, then fix any reproducible server-side timeout or unexpected behavior. This report records the non-SLOW probe failures for triage; it does not attribute them to the importer.
Author
Owner

Additional matrix result from the same round: PUT /api/v1/admin/config as a standard user returned HTTP 422, while the matrix expected 403. The route has a JSON body extractor before the authorization handler; the probe reused an incompatible owner-config body, so the extractor rejected the request before any config write. This is a response-contract mismatch in the probe/server path, not evidence of an authorization write.

Additional matrix result from the same round: `PUT /api/v1/admin/config` as a standard user returned HTTP 422, while the matrix expected 403. The route has a JSON body extractor before the authorization handler; the probe reused an incompatible owner-config body, so the extractor rejected the request before any config write. This is a response-contract mismatch in the probe/server path, not evidence of an authorization write.
Author
Owner

One-time real-server adversarial round on job/index-order after merge dev at 418fcdfce8: the DAV Reminders collection discovery request PROPFIND /dav/calendars/<user>/ with Depth: 1 returned no response (timed out). The preceding VTODO discovery returned 207 after 22.1 seconds. The runner continued after the timeout.

One-time real-server adversarial round on job/index-order after merge dev at 418fcdfce8fc1300eddb71fc6e1301d5afdedece: the DAV Reminders collection discovery request `PROPFIND /dav/calendars/<user>/` with `Depth: 1` returned no response (`timed out`). The preceding VTODO discovery returned 207 after 22.1 seconds. The runner continued after the timeout.
Author
Owner

Adversarial round evidence: the real local server did not answer REPORT /dav/calendars/<user>/... for an empty-token sync-collection DAV initial sync before the client timeout. The dependent assertion also found no sync token because the request timed out. This is an availability finding under the concurrent probe load; related Reminders discovery timeout is also recorded on this issue. No Files Index contention mismatch was observed in this round.

Adversarial round evidence: the real local server did not answer `REPORT /dav/calendars/<user>/...` for an empty-token `sync-collection` DAV initial sync before the client timeout. The dependent assertion also found no sync token because the request timed out. This is an availability finding under the concurrent probe load; related Reminders discovery timeout is also recorded on this issue. No Files Index contention mismatch was observed in this round.
Author
Owner

Additional observation from Forgejo #191's adversarial round on 2026-09-28: the media probe did not observe a generated thumbnail within its 10-second wait, so it skipped the thumbnail header check. The host had multiple simultaneous builds and adversarial rounds; this run does not distinguish worker delay under load from a reproducible thumbnail failure. The API process remained alive. Please include this probe in the isolated follow-up if it reproduces on an idle host.

Additional observation from Forgejo #191's adversarial round on 2026-09-28: the media probe did not observe a generated thumbnail within its 10-second wait, so it skipped the thumbnail header check. The host had multiple simultaneous builds and adversarial rounds; this run does not distinguish worker delay under load from a reproducible thumbnail failure. The API process remained alive. Please include this probe in the isolated follow-up if it reproduces on an idle host.
Author
Owner

Partial duplicate symptom with #250: both report Calendar Event-from-Log creation timing out at the 30-second client deadline during a shared-host adversarial run. This issue also has distinct template, Reminders, bookmark and DAV observations, and it used a server binary not built from the target branch. Recommend linking only the Event-from-Log observation to #250 and keeping the other findings separate.

Partial duplicate symptom with #250: both report Calendar Event-from-Log creation timing out at the 30-second client deadline during a shared-host adversarial run. This issue also has distinct template, Reminders, bookmark and DAV observations, and it used a server binary not built from the target branch. Recommend linking only the Event-from-Log observation to #250 and keeping the other findings separate.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal#264
No description provided.