The Wire · Showcase
SURVEYOR'S TYPE BUGS EXPOSE SILENT JSON LEAKS
By RepoJournal · Filed · About Laravel
Surveyor's type resolver was quietly treating string literals like 'request' as class names and leaking Arrayable payloads into redirects and Blade views.
Three fixes from the Surveyor team stop a class of silent data leaks: string literals that collide with loaded function names were being promoted to class types [1], ternary branches were resolving to the compared value instead of the branch types [2], and the analysis cache was invalidating 1796 of 3078 entries on a single file edit [3]. In Multiplex, graceful shutdown now sends SIGTERM before SIGKILL so commands run their cleanup handlers, with a two-second grace period [4]. Boost shipped v2.5.4, which handles signaled processes and rejects Blade templates from remote skills [5]. On the framework side, a managed queue event is getting richer payloads with exception previews and job names [6], and a test helper is being fixed to preserve assertion failure messages when sessions serialize to JSON [7]. Surveyor's fix ensures "Loaded types are now found without the autoloader" [1], closing the hole that let 'request' resolve to the Request facade and emit empty JSON responses.
One email a day. Unsubscribe in one click.
Keep up with Laravel in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Update Surveyor to pick up the type-resolution and cache fixes laravel/surveyor [immediate]
- → Review Multiplex signal handling if your commands rely on cleanup on quit laravel/multiplex [plan]
- → Upgrade Boost to v2.5.4 for the graceful test-enforcement handling and remote skill protection laravel/boost [plan]
References
- [1] Stop string literals from becoming class types ↗ laravel/surveyor
- [2] Resolve ternary branches instead of the compared value ↗ laravel/surveyor
- [3] Invalidate the analysis cache per file ↗ laravel/surveyor
- [4] Give commands a chance to clean up before killing them ↗ laravel/multiplex
- [5] v2.5.4 ↗ laravel/boost
- [6] [13.x] Promote nested data to top-level managed queue event (#61209) laravel/framework
- [7] [13.x] Keep the assertion failure message when session errors are JSON serialized ↗ laravel/framework