Open source
A scanner for model files, and a vulnerable app to test scanners against. Both MIT licensed, both built out of work we needed done for ourselves.
Security scanner for machine-learning model files. Know whether a checkpoint will run code on your machine, before you load it.
torch.load, joblib.load and numpy.load(allow_pickle=True) execute code from the file they read. That is not a bug, it is what pickle does. The file is named pytorch_model.bin, and the .bin is doing a lot of work in that sentence. It is a program, and loading it runs it, with your credentials, as you.
Hayward reads the file without executing it and tells you what it found.
weights.safetensors does not walk past on its extension.A working MLOps platform with 82 vulnerabilities planted in it on purpose. Target practice for scanners, agents, and people who think they are good at code review.
Flask and SQLite, with a model registry, dataset uploads, experiment tracking, a prediction API and a built-in LLM assistant. The bugs are spread across web classes, LLM and agent attacks, authentication, supply chain, and several IDOR variants. Each one is verified exploitable.
The answer key is kept outside the code, so a scanner or an agent can be pointed at the app blind and graded afterwards against a fixed list.
Licensing
Hayward and Langfail are MIT. Thicket and Rowan are commercially licensed and are not part of this. Report a vulnerability in either open-source project to hello@hedgerow.dev rather than in a public issue.