Following on from a conversation I had with Chris, I thought it would make sense to expand on the idea of focusing on the Go parser.
The idea was to pick one language to focus on, then to make the tools etc as awesome as possible for that language, to showcase the capabilities of code-driven threat modelling. By trying to do too many languages at once, there is a risk of not being able to test ideas quickly and consistently if everything is having to be replicated into different codebases. The only reason why I though Go would make sense is because we already have a parser and know that Go's callgraph utility should allow us to relatively easily generate dynamic Data Flow Diagrams - something which I think would be a key feature of ThreatSpec.
Having said that, it doesn't have to be Go. We also have a Python parser, so if it's easy to generate to generate callgraphs using Python, it would probably be quicker to experiment with Python rather than Go (for me at least because I use Python regularly these days). However, callgraphs in Python is a big unknown for me, I'd love input from others.
Finally, I'm doing a lot of AWS stuff these days, mostly through CloudFormation. I really, really like the idea of being able to threat model at the infrastructure layer. I'm wondering if this might be a good approach, because code-driven threat modelling seems to be a new concept anyway.. people might see it as an alternative to traditional AppSec, which it isn't. Doing something focused on Infrastructure-as-code might reduce the confusion, because as far as I know, there isn't really anything out there like AppSec for CloudFormation templates. I would imagine that you'd use ThreatSpec to define the trust boundaries and components in the CloudFormation templates, then those can be referenced in application code deployed to those components. Or something like that anyway.
So, do we focus on Go, Python or CloudFormation templates?