Security News
PyPI’s New Archival Feature Closes a Major Security Gap
PyPI now allows maintainers to archive projects, improving security and helping users make informed decisions about their dependencies.
This is a work in progress, a toy that I've been working on over the weekend. It's on GitHub just as a safe place to save it. It's in a public repo because it's not sensitive but I'm not encouraging anyone to use it :)
Programatically model trees like those described by Kelly Shortridge, here
The goal is to decouple the model from the view. In reality I'm removing the need for the user to understand Graphviz and introducing a need for them to understand python.
Models differentiate between controls that are imlemented and those that are not; modelling both the current security posture, and a potential (improved) posture.
The renderer.render()
function can toggle whether to include unimplemented things in it's graph.
Your system needs an installed version of graphviz for rendering to work.
On MacOS this can be installed using brew install graphviz
See https://graphviz.org/download/ for other options.
attacktree is available in PyPI, we recommend installing in a virtualenv
python3 -m venv .venv
source .venv/bin/activate
pip install attacktree
S3Simple.py
is a simple model, containing only a single path in some hypothetical S3 threat model. It can be run simply:
python3 examples/S3Simple.py
S3Complex.py
contains some potential blocking mitigations, things the security team might be considering but hasn't implemented yet.
python3 examples/S3Complex.py
In messing with this idea, I've found the easiest approach is to map the existing paths out first, without consideration for things you might implement. To see what that looks like checkout examples/S3Simple.py. After this one can either create a new tree with potential mitigations or add them to the existing tree, for examples purposes I chose the former; examples/S3Complex.py.
See Methodology.md for more thoughts on how this might work in practice.
There are serveral types of node modelled, they're mostly self documenting.
There are two types of line, solid and dashed (note, these can be changed in style.json).
The last line in each of those files is a call to render the tree:
renderer.render(
node=root,
renderUnimplemented=True,
style=style,
fname="example_complexS3",
fout="png"
)
I imagine that in general usage, we'd just want one model for a specific attacker; not a _simple and a complex one. However, it's very useful to be able to see what those different graphs look like, as the latter models things we could do but are currently unimplemented - for that reason the render()
function has a parameter to enable or disable rendering of unimplemented paths. This way you can record everything in one tree (and maybe add that into version control, as a system of record) and render different outputs, one that shows your current reality, and one that shows your potential reality (hopefully improved).
Below is the output of running the _complex example with renderUnimplemented=True
, note that if you set this to False
the generated graph looks the same as examples/S3Simple.py.py
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
deactivate
FAQs
Build, analyize and render attack trees
We found that attacktree demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now allows maintainers to archive projects, improving security and helping users make informed decisions about their dependencies.
Research
Security News
Malicious npm package postcss-optimizer delivers BeaverTail malware, targeting developer systems; similarities to past campaigns suggest a North Korean connection.
Security News
CISA's KEV data is now on GitHub, offering easier access, API integration, commit history tracking, and automated updates for security teams and researchers.