- Description: An attacker probes the application with crafted invalid input to trigger error conditions. If the application uses
Either
for error handling but fails to properly handle theLeft
(error) case, sensitive information (database queries, internal paths, stack traces) might be leaked directly to the attacker in the response. The attacker can repeatedly probe with variations to gather more information.- Impact: Information Disclosure: Leakage of sensitive internal application details, potentially enabling further attacks.
- Affected Arrow Component:
Either
type, and any functions that returnEither
(including custom functions and Arrow'sValidated
integration). - Risk Severity: High
- Mitigation Strategies:
- Mandatory Safe Unwrapping: Enforce (via code reviews, linting) that all
Either
values are handled usingfold
, pattern matching, or other safe methods that explicitly address bothLeft
andRight
cases. Prohibit implicit unwrapping. - Sanitized Error Responses: Implement a centralized error handling mechanism that transforms
Left
values into generic, user-friendly error messages before sending to the client. Never expose raw error details. - Input Validation: Robust input validation before operations that might result in an
Either
reduces the chance of reaching error states due to malicious input.
- Mandatory Safe Unwrapping: Enforce (via code reviews, linting) that all
- Description: An attacker repeatedly triggers operations that acquire resources (database connections, file handles) managed by Arrow's
Resource
. If the application fails to useResource.use
or equivalent mechanisms (likebracket
properly), these resources are not released, even on errors. The attacker could intentionally cause errors to accelerate the leak.- Impact: Denial of Service (DoS): Application becomes unresponsive or crashes due to resource exhaustion (connection pool depletion, file handle limits).
- Affected Arrow Component:
Resource
type, and functions likeResource.make
,Resource.use
,bracket
. - Risk Severity: High
- Mitigation Strategies:
- Strict
Resource.use
Enforcement: Enforce (via code reviews, linting) that allResource
acquisitions are immediately followed by ause
block (or equivalent safe handling). - Structured Concurrency: Use structured concurrency (Kotlin's
coroutineScope
, Arrow Fx Coroutines) to ensure resources are automatically released when the scope exits, even on exceptions. - Resource Monitoring: Implement monitoring to track resource usage (open connections, file handles) and alert on potential leaks.
- Strict
Threat: Deadlock in Arrow Fx Coroutines
- Description: An attacker triggers a specific sequence of operations that leads to a deadlock within concurrent code using Arrow Fx Coroutines. This involves multiple coroutines competing for resources (locks, shared state) in a way that creates a circular dependency.
- Impact: Denial of Service (DoS): The application becomes unresponsive; coroutines are indefinitely blocked.
- Affected Arrow Component: Arrow Fx Coroutines (specifically
Mutex
,Semaphore
,Ref
, and concurrent operations). - Risk Severity: High
- Mitigation Strategies:
- Careful Synchronization: Minimize shared mutable state. Use synchronization primitives (
Mutex
,Semaphore
) correctly, avoiding nested locks and circular dependencies. - Structured Concurrency: Use structured concurrency to manage coroutine lifecycles and ensure proper cancellation.
- Deadlock Detection Tools: Explore tools to detect potential deadlocks during development/testing.
- Timeouts: Implement timeouts for operations that acquire locks or wait for other coroutines, preventing indefinite blocking.
- Careful Synchronization: Minimize shared mutable state. Use synchronization primitives (
- Description: An attacker exploits a race condition in concurrent code using Arrow Fx Coroutines. Multiple coroutines access and modify shared mutable state without proper synchronization, leading to unpredictable results. The attacker might attempt to trigger specific timing conditions to increase the likelihood of the race.
- Impact:
- Data Corruption: Inconsistent or incorrect data due to unsynchronized access.
- Logic Errors: Unexpected application behavior from unpredictable data modifications.
- Affected Arrow Component: Arrow Fx Coroutines (
Ref
, concurrent operations, shared mutable state). - Risk Severity: High
- Mitigation Strategies:
- Immutability: Favor immutable data structures to eliminate race condition possibilities.
- Atomic Operations: Use atomic operations (
Ref.update
) for simple updates to shared mutable state. - Synchronization Primitives: Use synchronization primitives (
Mutex
,Semaphore
) to protect access to shared mutable state. - Race Condition Detection Tools: Utilize tools to identify potential race conditions during development/testing.
- Impact: