#security #web-apps #fraud #detection #bulwark

bulwark-decision

Decision-making under uncertainty for the Bulwark security engine

5 releases (breaking)

new 0.5.0 Apr 7, 2024
0.4.0 Nov 23, 2023
0.3.0 Aug 3, 2023
0.2.0 Jun 29, 2023
0.1.0 May 19, 2023

#1237 in WebAssembly

Download history 28/week @ 2024-02-19 19/week @ 2024-02-26 12/week @ 2024-03-04 16/week @ 2024-03-11 10/week @ 2024-03-18 14/week @ 2024-03-25 154/week @ 2024-04-01

197 downloads per month
Used in 7 crates (3 directly)

Apache-2.0 WITH LLVM-exception

41KB
1K SLoC

Bulwark Decisions

Automated security decision making under uncertainty.

What is Bulwark?

Bulwark is a fast, modern, open-source web application security engine that makes it easier than ever to implement resilient and observable security operations for your web services. It is designed around a user-friendly detection-as-code pattern. Security teams can quickly compose powerful detections from reusable building-blocks while unburdening product application logic from the increased complexity of domain-specific controls.

A complete overview may be found in Bulwark's documentation.

Decision

The decision crate is responsible for representing and processing Bulwark's security decisions.

Bulwark makes all of its security decisions by reading the output from plugins. Plugins primarily output a decision structure, accompanied by an optional set of tags that help to annotate the result. The decision structure is designed to allow plugins to quantitatively express uncertainty in an intuitive way. Each decision is composed of three values, an accept value, a restrict value, and an unknown value. All three are expected to be real numbers in the range zero to one, and have a combined sum of one. The greater the value for either the accept or restrict value, the stronger the evidence a plugin is claiming for the respective outcome. The greater the unknown value, the weaker a plugin is claiming its evidence is. Plugins may indicate that they have no evidence one way or the other by simply returning nothing or by setting their decision's unknown component to its maximum value.

It is based on Dempster-Shafer theory, and a more advanced discussion of the decision structure and combination algorithms may be found in the decision internals documentation.

Dependencies

~5–7MB
~157K SLoC