Giter Club home page Giter Club logo

seasponge's Introduction

No Maintenance Intended Build Status

SeaSponge is an accessible web-based threat modeling tool developed for Mozilla Winter of Security 2014.


About

This web-based application is being developed with three characteristics in mind:

  • Accessibility: We want everyone to be able to map out their infrastructures and generate security reports on any operating-system and on any browser.
  • Aesthetics: We're tired of clunky, boring interfaces - we want to bring the pizazz into threat-modeling.
  • Intuitive User-Experience: We hate manuals, and we want you to be able to use this software without one.

Please see http://mozilla.github.io/seasponge/ for a live demo of the application.
There is also a video on Air Mozilla available at https://air.mozilla.org/mozilla-winter-of-security-seasponge-a-tool-for-easy-threat-modeling/

Example Threat Model developed with SeaSponge

Here is a share link for the SeaSponge threat model we developed in our Air Mozilla demo video: http://goo.gl/Q8mt0T

Usage

See our Usage page in our Wiki for more details.

usage_demo

Authors

With Mozilla Advisor Curtis Koenig and Professor Dr. Pawan Lingras

Contributing

Please see our Contributing Guidelines

Dependencies

You may need to prefix commands with sudo

After forking and cloning the repository in the location of your choice run the following commands to install your Node.js and Bower dependencies.

On Debian and Ubuntu-based platforms, the nodejs-legacy package must be installed along with nodejs and npm using apt-get in order to fix a naming conflict that will otherwise prevent some packages from building and running correctly, as explained in [/usr/share/doc/nodejs/README.Debian] (http://apt-browse.org/browse/ubuntu/trusty/universe/i386/nodejs/0.10.25~dfsg2-2ubuntu1/file/usr/share/doc/nodejs/README.Debian)

npm install
bower install

Building

Once you have the application and dependencies installed you can start building the app.

# Previews the app on a local server
grunt serve

# Builds the application to dist/
grunt build

Documentation

# Build docs to docs/
grunt docs

# Build docs and serve docs/ for web browser
grunt serve:docs

Developing

Please see the Development Guide

Links

seasponge's People

Contributors

amuntner avatar curtisko avatar frozenfire92 avatar glavin001 avatar jvehent avatar rainbee2214 avatar simplicityguy avatar thebayesian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

seasponge's Issues

Import and export to .sponge file format

For exporting/importing files, we will have our own file format to save/load threat models .


  • Research into .tm4, Microsoft's Threat Model file format, and learn from how they architected their form. See #4

  • Saving
    • Serialization
      • Elements
      • Flows (Connections)
      • Boundaries
    • Download as file
  • Loading
    • Deserialization
    • Load from file

Data Classification & Security Controls

  • Data Classifications and Security Controls
    • adding
    • editing
      • title
      • type
    • removing
  • serialize
  • deserialize
  • Import more Data Classifications and Security Control options, see #44

Integration with ThreatExchange

Facebook recently announced an initiative to put security threats in a comprehensive database: ThreatExchange.

We could integrate the known threats into our software accordingly for fast detection.

Overlay Modal Instead of Two-Step Pages

It is more intuitive for the user to have an overlay modal with "New" & "Load" when starting the application instead of travelling on two different pages.

Consider how draw.io does it

Implement Boundaries

Boundaries are going to be a special type of stencil. @Glavin001 and I have discussed and we think a default jsplumb object (with no connectors) will work so long as

  • we can resize the element
  • we save the top left and bottom right corner

This way any elements that are within the range of the two corners are considered bound

Remove the "Made with <3 footer"

Regarding the "Made with <3 by the Mozilla SeaSponge team" footer on the splash page of the application.

Although it is cute for smaller applications, hackathon ideas, companies, it should be avoided for this project.

Here are reasons that we shouldn't include it:

  • A unnecessary distraction to the user
  • It is childish for this type application; I understand that you are trying to imply friendliness, but there are other ways

Although I mentioned it before in #24 , @Glavin001 said that we should:

  • Keep it due to majority consensus of the group
  • Talking about it is a waste of time

Although it is a very small fix, this change will set the stage for the rest of the design choices for the application; we are aiming for a professionally-polished software (both from a software developer and product developer's perspective). Again, it is a small fix, however I really don't think discussing it further is a waste of time.

Generate messages or warnings about the diagram

[Medium] Messages or warnings about the current threat model are shown to the user. Being able to detect problems such as missing connections between elements or forgetting a trust boundary.

Change name of Stencil/Element

  • Change title in Element editor
  • Title changes and updates js-plumb Element
  • Serialization support
  • Deserialization support

Custom icon for Stencil/Elements

  • Render Icon on Element
  • Use icon field for rendering Icon
  • Refresh icon on change / loading (deserializing)
  • Serialize
  • Deserialize

Draw threat models using a drag-n-drop interface

[Medium] This is the core feature of the application and top priority. We will use jsPlumb, a graph drawing tool, for this task. We will need to extend certain features of jsPlumb to suit our needs. Elements added will each have their own properties that can be edited by the user.

Change colors for connections and elements

Users may wish to have multiple colors in their diagrams to help distinguish things based on their standards. Being able to easily change colors (or palettes) would add customization with an easy implementation.

Loading screen Animation

While JS Plumb and a graphical components load up, a cool spinner animation full-screen overlay would be entertaining.

Generate reports based on threat model created

[Medium] Users can generate reports based on a threat model and the STRIDE analysis. Types of generated reports include:

  • A list of threats and information related to them
  • Bugs (user entered) or potential bugs related to the model
  • Diagram only
  • Analysis of threat model (STRIDE)

Setup Google Analytics

@curtisko what is Mozilla's policy on implement (Google) Analytics?

I believe it would be beneficial to track usage and also record events from users to detect what features they are using most, to help us decide the priority of what we should work on next.

Alternatively, we could use Segment.io.

Design a logo

Requirements:

  • Polished, and professionally crafted & designed
  • Look gorgeous/bad-ass and comparable to the logos of past Mozilla projects

Filter Stencils

Instead of adding another library @Glavin001 and I have discussed it may be better to implement Angular's built in filter/search. I have attempted to do this on this branch however it doesn't seem to be working. Ultimately we are filtering by the stencils title and category

See old issue #27

User entered mitigations from STRIDE analysis

[Easy] Users can enter mitigations to potential threats generated via STRIDE analysis. These can be mitigations that already exist, and ones that are to be implemented in the future.

Create multiple diagrams per model

[Medium] Users can have many diagrams pertaining to a particular model. Being able to switch between and edit them independently is useful.

Assumptions for Model

  • User entered assumptions to explain context for the project
  • Key value pairs [user entered] for assumptions
  • Edit Model UI
  • Serialize
  • Deserialize

Export reports as HTML/PDF

This feature entails exporting a generated security report as a HTML/PDF file so that the user can present it or use it for reference.

Documentation

  • Video / Screencast for usage
  • Source code commented and documentation generated
  • Usage documented in Wiki
  • Provide sample .sponge file that showcases features

Scaffold the foundation for this project

Dependencies:

TODO:

Learning Patterns from Graphical Models

We could use machine learning (ML) to create our own STRIDE analysis system.

Both STRIDE and DREAD is a fairly lame heuristic approach for automatically alerting threats. This issue proposes a new way to analyze threats using ML. That is, we would analyze patterns of threats discovered by humans using the application, and create a learning model to send.


- [ ] Derive a trend analyzer based on human interactions - [ ] In UI ask person: "Would you let us collect anonymous statistics to see how you are using the app so we can serve you better?"

Our mechanism would compete with STRIDE analysis and likely be much better than STRIDE analysis being derived from actual human usage.

How would we derive this model? No private data would be taken, for instance if we notice people tend to label 'a "general process" with an authentication scheme isn't using SSL' being a threat - then our model would learn this trend and alert future people with in a same setup.

Import Microsoft threat-model (.tm4) format

The current most popular tool for threat modeling is the the Microsoft Threat Modelling Tool. This tool uses an XML based format for storing threat models. A user can import threat models that have been created using the Microsoft tool.

Relate GitHub issues to threats

[Medium] Users may wish to create or relate to an existing GitHub issue based on potential threats SeaSponge has detected. The Threat Model can be associated to a GitHub repository, so that detected threats can be related to project issues. When corresponding issues are closed they can resolve mitigations in the threat model.

Export threat model to image/HTML/PDF

[Easy] The user may want to export an image of the threat model itself for presentation purposes. The user will be able to set the resolution or page size preferences upon export or print. With jsPlumb this should be fairly easy to add.

Implement copy for existing screen elements

Often when drawing you have an element you'd like to reproduce (icon, name, tags, etc) several times on the diagram like processes, users, etc.

Currently you can do this by adding the same stencil multiple times and manually changing the attributes to be the same, but it would be easier if there was a 'copy element' option to facilitate.

Export and import to cloud storage

[Easy] Users may wish to save their threat models to a cloud service such as Google Drive or Dropbox. Implementing this would require using their API’s and connecting it to SeaSponge.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.