Giter Club home page Giter Club logo

heimdall2's Introduction

Heimdall

Run E2E Backend + Frontend Tests Run Frontend Tests Run Backend Tests

This repository contains the source code for Heimdall's Backend, Frontend (AKA Heimdall Lite), OHDF Converters, and InSpecJS.

Contents

Demos

Video

Hosted

These demos are only intended to show the functionality of Heimdall, please do not upload any sensitive data to them.

Released Previews

Heimdall Lite | Heimdall Server   

Github Logo

Current Development Master Branch Preview

Heimdall Lite   

Netlify Logo


Heimdall Server   

Heimdall (Lite) vs Heimdall with Backend (Server)

There are two ways to deploy the MITRE Heimdall application - Heimdall-Lite and the full Heimdall with Backend Server. Both share the same frontend but have been produced to meet different needs and use-cases.

Heimdall-Lite

As a single-page javascript app - you can run Heimdall-Lite from any web-server, a secured S3 bucket or directly via GitHub Pages (as it is here). Heimdall-Lite gives you the ability to easily review and produce reports about your InSpec run, filter the results for easy review and hot-wash, print out reports, and much more.

Heimdall with Backend (Server)

Heimdall with Backend, or Heimdall Server runs the same front end as Heimdall-Lite, but is supported with a backend database to store persistent data overtime.

Features

Features Heimdall-Lite Heimdall with Backend
Additional Installation Requirements PostgreSQL Server
Overview Dashboard & Counts
Deep Dive View of Security Control Results and Metadata
800-53 Partition and TreeMap View
Comparison View
Advanced Data / Filters for Reports and Viewing
Multiple Report Output
(DISA Checklist XML, CAT, XCCDF-Results, and more)
View Multiple Guidance Formats (InSpec profile, Checklist, DISA & CIS XCCDF)
Automatic Conversion of Various Security Formats
Authenticated REST API
CRUD Capabilities
Users & Roles & multi-team support
Authentication & Authorization Hosting Webserver Hosting Webserver
LDAP
OAuth Support for:
GitHub, GitLab, Google, and Okta.

Use Cases

Heimdall-Lite Heimdall with Backend
Just-in-Time Use Multiple Teams
Minimal Footprint & Deployment Time Timeline and Report History
Local or Disconnected Use Centralized Deployment Model
Minimal Authorization & Approval Time

Getting Started / Installation

Heimdall Lite

Heimdall Lite is published to npmjs.org and is available here.

Running via npm

To run Heimdall Lite locally, just use the npm built-in utility npx:

npx @mitre/heimdall-lite

If you use this tool often and want to have it installed locally, use the following command:

npm install -g @mitre/heimdall-lite

Then, any subsequent npx @mitre/heimdall-lite will use the local version and load much more quickly.

Running via Docker

It is also possible to run Heimdall-Lite using Docker, using the following command:

docker run -d -p 8080:80 mitre/heimdall-lite:release-latest

You can then access Heimdall-Lite at http://localhost:8080.

If you would prefer to run the bleeding edge version of Heimdall-Lite, replace mitre/heimdall-lite:release-latest with mitre/heimdall-lite:latest.


Heimdall Server - Docker

Given that Heimdall requires at least a database service, we use Docker and Docker Compose to provide a simple deployment experience. This process will also deploy an NGINX webserver in front of Heimdall to handle TLS.

Heimdall's frontend container image is distributed on DockerHub, and on Iron Bank.

Setup Docker Container (Clean Install)

  1. Install Docker

  2. Download and extract the most recent Heimdall release from our releases page. Alternatively, you can clone this repository and navigate to the heimdall2 folder.

  3. Navigate to the base folder where docker-compose.yml is located

  4. By default Heimdall will generate self-signed certificates that will last for 7 days. For production use, place your certificate files in ./nginx/certs/ with the names ssl_certificate.crt and ssl_certificate_key.key respectively. For development use, you can use the default generated certificates which means you do not need to put any certificate files in the ./nginx/certs/ folder.

NGINX Configuration Note: You can configure NGINX settings by changing values in the nginx/conf/default.conf file.

  1. Run the following commands in a terminal window from the Heimdall source directory. For more information on the .env file, visit Environment Variables Configuration.
    # For Linux or Mac
    ./setup-docker-env.sh
    
    # For Windows
    ./setup-docker-env.bat

Tip

If you would like to further configure your Docker-based Heimdall deployment, edit the .env file located in the root directory generated after running the setup-docker-env.sh or setup-docker-env.bat scripts

  1. Heimdall might need certificates to access the open internet or internal resources (ex. an LDAP server). Please convert any certificates into PEM files and place them in ./certs/ where they will be automatically ingested. Alternatively, you can place a shell script that will retrieve those certs in that directory, and modify the command attribute underneath the certs service in the docker-compose.yml to run that script.
# Below is an example of what may be in the ./certs directory, including any scripts or certificates.
# ./certs/
# ├── dodcerts.sh
# └── my_certificates.pem

# For the given example, the ./docker-compose.yml should look like the following:
services:
  ...
  certs:
    ...
    command: sh -c "sh /etc/pki/ca-trust/source/anchors/dodcerts.sh && update-ca-trust && tail -f /dev/null"
    # NOTE: The `command` attribute only needs to know about scripts not any particular certificates.
    ...
  ...

To make the docker-compose.yml aware of additional scripts, add sh /etc/pki/ca-trust/source/anchors/NAME_OF_SCRIPT.sh && to the beginning of the section in quotes. NOTE: The script should make sure to place the certs within /etc/pki/ca-trust/source/anchors/ since it will be run from the container, not the host.

  1. Start Heimdall Server by running this command:
docker-compose up
  1. Navigate to https://127.0.0.1. You should see the application's login page. (Note that if you used the option to generate your own self-signed certs, you will get warnings about them from your browser.)

Updating Docker Container

Starting with version 2.5.0, Heimdall on Docker uses SSL by default. Place your certificate files in ./nginx/certs/ with the names ssl_certificate.crt and ssl_certificate_key.key respectively.

A new version of the docker container can be retrieved by running:

docker-compose pull
docker-compose up -d

This will fetch the latest version of the container, redeploy if a newer version exists, and then apply any database migrations if applicable. No data should be lost by this operation.

Stopping the Container

From the source directory you started from run:

docker-compose down

Helm Chart

https://github.com/mitre/heimdall2-helm

Running via Cloud.gov

Cloud.gov is a FEDRAMP moderate Platform-as-a-Service (PaaS). This repository includes a sample manifest.yml.example file ready to be pushed and run the latest version of Heimdall2 as a container. Make a copy of the example file and update the key values as appropriate. $ cp manifest.yml.example manifest.yml

  1. Setup a cloud.gov account - https://cloud.gov/docs/getting-started/accounts/

  2. Install the cf-cli - https://cloud.gov/docs/getting-started/setup/

  3. Run the following commands in a terminal window from the Heimdall source directory.

$ cd ~/Documents/Github/Heimdall2
$ cf login -a api.fr.cloud.gov  --sso 
# Follow the link to copy the Temporary Authentication Code when prompted
  1. Setup a demo application space
$ cf target -o sandbox-rename create-space heimdall2-rename
  1. Create a PostgreSQL database
# Update manifest.yml file to rename application and database key name
$ cf marketplace
$ cf create-service aws-rds medium-psql heimdall2-rename
$ cf create-service-key heimdall2-db-rename heimdall2-db-test-key
$ cf push

You should be returned the URL for your new test instance to navigate to.

Note: This is only for demonstration purposes, in order to run a production level federal/FISMA system. You will need to contact the cloud.gov program and consult your organization's security team (for risk assessment and an Authority to Operate).

External Data Sources (Interfaces)

Heimdall currently provides connectivity to the following services for importing and visualizing scans:

  • AWS S3
  • Splunk
  • Tenable.SC

AWS S3

For detail information on how to setup and connect to an AWS S3 bucket see the Heimdall Interface Connection - AWS S3 Wiki

Splunk

For detail information on how to setup and connect to an Splunk instances (logical or virtual) see the Heimdall Interface Connection - Splunk Wiki

Tenable.SC

For detail information on how to setup and connect to an Tenable.SC instance see the Heimdall Interface Connection - Tenable.SC Wiki

API Usage

API usage only works when using Heimdall Enterprise Server (AKA "Server Mode").

Heimdall API documentation is being compiled and it is located in this wiki page. In the meantime here are quick instructions for uploading evaluations to Heimdall Server.

# To use API Keys, ensure you have set the API_KEY_SECRET environment variable. To create a secret run: openssl rand -hex 33
# Create an API key using the Heimdall frontend (within the edit user profile modal) and upload an evaluation with the following command
curl -F "data=@<Path to Evaluation File>" -F "filename=<Filename To Show in Heimdall>" -F "public=true/false" -F "evaluationTags=<tag-name>,<another-tag-name>..." -H "Authorization: Api-Key apikeygoeshere" "http://localhost:3000/evaluations"
# You can upload multiple files at once (up to 100)
curl -F "data=@<Path to first evaluation File>" -F "data=@<Path to second evaluation File>" ... -F "public=true/false" -F "evaluationTags=<tag-name>,<another-tag-name>..." -H "Authorization: Api-Key apikeygoeshere" "http://localhost:3000/evaluations"

For Developers

How to Install

If you would like to change Heimdall to your needs, you can use Heimdall's 'Development Mode' to ease the development process. The benefit to using this mode is that it will automatically rebuild itself and use those changes as soon as you make them. Please note that you should not run development mode when deploying Heimdall for general usage.

  1. Install system dependencies with your system's package manager. NodeJS is required and can be installed via your system's package manager, or an alternative method if desired. Documented below is the installation via your system's package manager.

    Ubuntu:

    • # grab nodesource for recent version of nodejs
      sudo curl -sL https://deb.nodesource.com/setup_18.x -o /tmp/nodesource_setup.sh
      sudo bash /tmp/nodesource_setup.sh
      
      # use apt to install dependencies
      sudo apt install postgresql nodejs git
      sudo apt install nano                        # recommended installation
      sudo npm install -g yarn

    NOTES

    • The installation scripts setup_XX.x are no longer supported and are not needed anymore, as the installation process is straightforward for any RPM and DEB distro.

    • See the Debian and Ubuntu based distributions nodesource for nodejs supported version and additional installation information

    OSX:

    • brew install postgresql node@18 git      
      brew install nano                        # recommended installation
      sudo npm install -g yarn

    WINDOWS:

    • Install Node.js via MSI Installer

      • Download the node release 18.xx installer (msi) from the nodejs site
      • Open and run (double-click) the .msi file, the installation process begins, follow the installation instructions
      • Node.js offers you options to install tools for native modules, we recommend checking the Automatically install the necessary tools check box.
      • Verify the Node and npm version
      node --version 
      npm --version
    • Install Yarn via MSI Installer

      • Download the Yarn installation file from GitHub
      • Open and run the installation file, follow the installation instructions
      • Run the following command in the PowerShell to verify the installation:
      yarn --version
  2. Clone this repository:

    • git clone https://github.com/mitre/heimdall2
  3. Setup the PostgreSQL server:

    Ubuntu:

    • # Switch to the OS postgres user
      sudo -u postgres -i
      
      # Start the Postgres terminal
      psql postgres
      
      # Create the database user
      CREATE USER <username> with encrypted password '<password>';
      ALTER USER <username> CREATEDB;
      \q
      
      # Switch back to your original OS user
      exit

    OSX:

    • # Start the postgres server corresponding to your installation method
      pg_ctl -D /opt/homebrew/var/postgres start
      # Alternatively, you may find postgres in another location like the following:
      pg_ctl -D /usr/local/var/postgres start
      # Brew method
      brew services start postgresql@13
      
      # Start the Postgres terminal
      psql postgres
      
      # Create the database user
      CREATE USER <username> with encrypted password '<password>';
      ALTER USER <username> CREATEDB;
      \q
      
      # Switch back to your original OS user
      exit

    WINDOWS:

    • Start the postgres server base on the installation method
      • Starting Postgres Server Using net start
        net start postgresql-[x32 or x64]-[version]
      • Starting Postgres Server Using pg_ctl
        pg_ctl -D "C:\[path-to-postgres-installation]\PostgreSQL\[version]\data" start
      • Starting Postgres Server Using Services Manager
        • Press the win key + R to launch the Run window.
        • Type services.msc and hit the OK button to open the Services Manager:
        • Search for Postgresql-[x32 or x64]-[version], select the service, and hit the Start/play button to start
    • Create the database user
      • Recommend using pgAdmin and follow instruction listed here
      • Open a postgres shell terminal (path to postgres executable directory must be set)
        # Start the terminal
        psql -U postgres  
        # Create the database user
        CREATE USER <username> with encrypted password '<password>';
        ALTER USER <username> CREATEDB;
        \q
  4. Install project dependencies:

    • cd heimdall2
      yarn install  # you may need to run yarn install --registry https://registry.npmjs.org
  5. Edit or generate the database environment configuration file (apps/backend/.env) using the provided setup-dev-env.sh or setup-dev-env.bat script. Make sure to set the DATABASE_USERNAME and DATABASE_PASSWORD variables with values used in step 3.

You can also edit, if exists, the apps/backend/.env file using a text editor and set additional optional configuration values. For more info on configuration values see Environment Variables Configuration.

Note

The .env file in the root repository is for the Docker deployment of the Heimdall application. Running a local build will use the .env file in the apps/backend directory for the database configurations.

  1. Create and seed the database:

    • # Windows
      yarn backend sequelize-cli-windows db:create
      yarn backend sequelize-cli-windows db:migrate
      yarn backend sequelize-cli-windows db:seed:all
      
      # All other OSs
      yarn backend sequelize-cli db:create
      yarn backend sequelize-cli db:migrate
      yarn backend sequelize-cli db:seed:all
  2. Start Heimdall:

    • yarn start:dev

This will start both the frontend and backend in development mode, meaning any changes you make to the source code will take effect immediately. Please note we already have a Visual Studio Code workspace file you can use to organize your workspace.

Debugging Heimdall Server

If you are using Visual Studio Code, it is very simple to debug this application locally. First open up the Visual Studio Code workspace and ensure the Node debugger Auto Attach feature in Visual Studio Code is enabled. Next, open the integrated Visual Studio Code terminal and run:

yarn backend start:debug

Visual Studio Code will then automatically attach a debugger and stop and any breakpoints you place in the application.

Developing Heimdall Lite Standalone

If you only want to make changes to the frontend (heimdall-lite) use the following command:

yarn frontend start:dev

Lint and fix files

To validate and lint your code run:

yarn run lint

Compile and minify the frontend and backend for production

yarn build

Run tests

To test your code to make sure everything still works:

# Run Frontend Vue Tests
yarn frontend test
# Run Backend Nest Tests (see note)
yarn backend test:ci-cov

NOTE: The Backend Nest Tests will remove (BULKDELETE) all entries in the configured PostgreSQL server for the following tables:

  • EvaluationTags
  • Evaluations
  • Users
  • GroupEvaluations
  • Groups
  • GroupUsers

Run Cypress End to End Tests

The application includes an End-to-End (E2E) frontend and Backend tests (built using the cypress.io framework). The E2E tests performed is to validate that Heimdall Server is running as intended. In order to run these tests, a running instance of the application is required.

CYPRESS_TESTING=true yarn start:dev
CYPRESS_BASE_URL=http://localhost:8080 yarn test:ui:open

The first command will start an instance of Heimdall Server and exposes additional routes required to allow the tests to run. The second will open the Cypress UI which will run the tests any time code changes are made.

Note

When running the tests locally, tests that integrate with external services such as LDAP or Splunk will fail without having that external service running and configured. If these failures occur locally and local development does not impact the code relevant to those tests, you may consider permitting these failing tests locally and check that they pass in the pipeline in lieu of standing up local services only for testing purposes.

Creating a Release

Note: This action requires appropriate privileges on the repository to perform.

The steps to create a release are now on the wiki.

Versioning and State of Development

This project uses the Semantic Versioning Policy

Contributing, Issues and Support

Contributing

Please feel free to look through our issues, make a fork and submit PRs and improvements. We love hearing from our end-users and the community and will be happy to engage with you on suggestions, updates, fixes or new capabilities.

Issues and Support

Please feel free to contact us by opening an issue on the issue board, or, at [email protected] should you have any suggestions, questions or issues. If you have more general questions about the use of our software or other concerns, please contact us at [email protected].

heimdall2's People

Contributors

aaronlippold avatar amndeep7 avatar bialogs avatar brett-w avatar camdenmoors avatar candrews avatar charleshu-8 avatar chrishinchey avatar cjdoherty avatar dependabot-preview[bot] avatar dependabot[bot] avatar djhaynes avatar dmedina6 avatar dmokllm avatar ejaronne avatar em-c-rod avatar georgedias avatar github-actions[bot] avatar hookwitz avatar jweissm avatar kentpsanders avatar lukemalinowski avatar mergify[bot] avatar mitriol avatar rlin232 avatar robthew avatar samuelsunvold avatar sesheikholeslam avatar sjoshi10 avatar wdower 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

heimdall2's Issues

Stand up GraphQL/REST DB to serve NIST and CMS control descriptions.

Resolves short term feature fix mitre/heimdall-lite#116. Standard files are big - to improve user experience, and minimize bandwidth waste, we should send as little data as is necessary (only really need the controls the user is trying to view). Request this data asynchronously via graphql, send back the relevant controls. Locally cache the ones that have been sent (not literally in the cache, just in memory).

HDF and inspec 4.x data standards and support for extended properties for the HDF, Tools and Heimdall Apps

I know I am repeating myself in various issues on this but I hope this collects a lot of these ideas.

We should also write up a 'HDF Profile and Control' Stype guide that would help lay out a lot of these 'standards' that we have established.

I am sure many of these will break out into smaller sub-issues on the vaious projects.

I am also very sure that all this stuff will have to go into the guide referenced above.

  • That we update the parsing to ensure we always use sub-descriptions on text block types rather than tags:
  • fix
  • check
  • desc

The below are used in many overlays and tailoring profiles

  • /vulnerability/
  • vulnerability_discussion ( in xccdf, csv and xls for example )
  • /justification/
  • caveat
  • etc.
  • That we allow for allow for three new types: desc, justification, caveat, discussion
    a. That caveat and or justification are appended to the 'Finding Details' in all the converters and Heidmall Applications
    b. We also allow for /*caveat*/ and /*justification*/ - such that myorg-/_caveat is discovered.
    c. that discussion or /*discussion*/ be appended to the bottom of the general description - such that vulnerability_discussion would be discovered.

  • That we support both text based impacts and numeric based impacts in our parsing and conversations to allow for better user interface ( in xccdf, csv, xccdf etc. )

  • That we update inspec_tools and heimdall_tools to use the new sub-sections

  • That the sub-descriptions are grouped and created together in the control logically:

* desc [ req ]
* title [ req ]
* impact [ req ]

* desc vuln (opt)
* *vuln* (opt)

* desc caveat (opt)
* desc *caveat* (opt)

{ tags,
nist: [reg || UM-1] => if STIG || CIS
cci: [req || N/A] => if STIG || CIS
cis_cdc [ req || N/A ] => IF CIS
 }
  
* desc check [ req ]
* desc fix [ req ]

* `ref * ` (opt)

`describe blocks` [ req ]

...

  • That CAT I / CAT II / CAT III can be processed and their derivities and be replaced by CVSS 3.0 standards in all our tools forward and backward - such that if someone creats a CSV or XLS they can ask to use the CVSS, CAT[I-IV] or CAT[1-4] severity style.

  • That our tools do not create code that uses " where ' are the correct style

  • Ensure the output of our converters formats with a standard of 2-space utf-8 conmpliant chars. Automate and other windows and ruby unzip some time have issues with the char encoding or odd things. This is an old issue but I think they are just plian using an old library or something.

  • Remove the 'Rev_*' from the nist tag array as the actual mapping for the control and its nist revision is in the CCI database, and we have the CCI. This also confuses the end users as they think when the 800-53 mapping changes we have rework the profile and silly things like that. Less is more.

  • Convert all our XLS mapping systems into proper ruby data structures that the tools and apps. Allow for us to be able to use the XLS as a source but convert that into our stable ruby defined structures so that in the binary builds we are alows useing pure ruby objects and data structures which can can loaded as static constancts so we only have to load them one etc.

As a note, once we have Compliance Mapper working - we can just interact and gen these data there.

  • Ensure the output of our converts creates well formatted aligned starting point - I think rubocop can be fanagled to support this. See the Windows 10 profile for an example - given I had to review every control I just did this by hand on the 243 controls ... I would prefer never to do that again.
# encoding: utf-8

control 'V-63319' do
  title "Domain-joined systems must use Windows 10 Enterprise Edition 64-bit
        version."
  desc  "Features such as Credential Guard use virtualization based security to
        protect information that could be used in credential theft attacks if
        compromised. There are a number of system requirements that must be met in
        order for Credential Guard to be configured and enabled properly.
        Virtualization based security and Credential Guard are only available with
        Windows 10 Enterprise 64-bit version."
  impact 0.5
  tag severity: 'medium'
  tag gtitle: 'WN10-00-000005'
  tag gid: 'V-63319'
  tag rid: 'SV-77809r3_rule'
  tag stig_id: 'WN10-00-000005'
  tag fix_id: 'F-69237r2_fix'
  tag cci: ['CCI-000366']
  tag nist: ['CM-6 b']
  tag false_negatives: nil
  tag false_positives: nil
  tag documentable: false
  tag mitigations: nil
  tag severity_override_guidance: false
  tag potential_impacts: nil
  tag third_party_tools: nil
  tag mitigation_controls: nil
  tag responsibility: nil
  tag ia_controls: nil

  desc "check", "Verify domain-joined systems are using Windows 10 Enterprise
        Edition 64-bit version.

        For standalone systems, this is NA.

        Open \"Settings\".

        Select \"System\", then \"About\".

        If \"Edition\" is not \"Windows 10 Enterprise\", this is a finding.

        If \"System type\" is not \"64-bit operating system…\", this is a finding."

  desc "fix", 'Use Windows 10 Enterprise 64-bit version for domain-joined systems.'

  describe os.arch do
    it { should eq 'x86_64' }
  end

  describe os.name do
    it { should eq 'windows_10_enterprise' }
  end
end
  • Given the above, can we create a .rubocop standard file that would help enfore a lot of this

CIS Treemap support

After we get our first cut done, I would like to see if we could add support in the treemap to also support the CIS control mappings as well.

Our cis profiles will need some tag standardization but the core of the data set is here:
https://learn.cisecurity.org/cis-controls-download
CIS Controls Version 7.0.1.a cc.xlsx
CIS Controls Version 7.1 Implementation Groups 1.2.xlsx
CIS-Controls-and-Sub-Controls-Mapping-to-NIST-CSF.xlsx

CIS-Controls-V7.1-Change-Log.xlsx
CIS-Controls-Version-7-1.pdf

Add S3 and Splunk documentation to the README and in the app

  • add the s3 docs to the readme
    ( link to aws does and perhaps an example )
  • copy the needed setup info from the hdf-to-splunk readme to the HL readme (https://github.com/mitre/hdf-json-to-splunk#reading-this-data-back-out-in-heimdall-lite)
  • add an info chip and model or link to the S3 docs or copy them in as text which ever works best
  • add a 'notice' color or something that indicates to the user that this action is needed prior to accessing data

Better rendering for HTML-rich Heimdall results (and support for newlines)

Describe the bug
Heimdall 1 supported rendering HTML (and respected \n for newlines), heimdall 2 provides the data as a large dump with no separation.

To Reproduce
Steps to reproduce the behavior:

  1. Import an
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
https://github.com/mitre/heimdall_tools/blob/master/sample_jsons/zap_mapper/webgoat.json loaded into heimdall 1 and 2:
Screen Shot 2020-04-15 at 6 46 30 PM
Screen Shot 2020-04-15 at 6 46 43 PM
https://raw.githubusercontent.com/mitre/heimdall_tools/master/sample_jsons/sonarqube_mapper/sonarqube_java_sample.json loaded into heimdall 1 and 2:
Screen Shot 2020-04-15 at 6 48 33 PM
Screen Shot 2020-04-15 at 6 49 01 PM

Additional context
Most likely need to sanitize for bad data since this frontend will now be used for both a standalone and a server application: https://www.npmjs.com/package/vue-sanitize

Separate Heimdall Ingest/DB/Frontend layers and other High Level Miscellania

This issue(s) more relevant to heimdall, specifically, but is more likely to hold my attention if placed here. Some of these goals may already be accomplished, but they are repeated here nonetheless.

Essentially, as we refactor Heimdall DB to support Heimdall lite, we should also make sure that:

  • Heimdall DB stands on its own and needs no communication with the server to have total data independence/integrity
    • In particular, it is my belief that we should firmly separate the concept of users viewing evaluations from the evaluations themselves
    • This ensures that we will have a "pure data" / HDF data format central to our architecture, and that other developers can easily utilize the Heimdall DB if they wish to make their own frontend (or have no frontend at all).
    • This will hopefully aid in wider adoption of Heimdall platform tools, as people can take exactly what they want/need (storage, file format conversion, UI, etc.) without needing to use the entire monolithic platform.
    • It will also make transitioning from current Heimdall Server frontend to Heimdall lite simpler.
  • Heimdall DB ingest layer should be separated from Heimdall frontend
    • Similar line of reasoning as above: Modularity makes transitions between different frontends simpler.
    • Furthermore, if an organization discovers a need to massively scale up the amount of data they are intaking, it would behoove us to make sure our intake procedures can scale as well.
      • This also would improve resiliency, as we won't drop data just because the frontend is down.
  • Heimdall DB should enforce data correctness (to the best of its ability)
    • Third normal form is ideal, and I see no reason for us not to have it.
    • Avoid nulls wherever possible - they are frustrating to deal with, and in almost every case I would argue that the person submitting the data knows a better method of establishing default values than some poor frontend developer (won't someone please think of the interns! and me).

Add more handholding to the Splunk GUI

We need to:

  • Give errors in a more useful format. Direct users to which fields could probably be most useful/ likely to be causing the error.
  • Remind the user to turn on CORS if network fails, with link to appropriate splunk documentation pages.
  • Use pictures!

Maybe more things later? IDK

Create exportCAAT component with wizard for customizing output

Full Data: The current function of the CAAT component.

Condensed/Interactive:
Use Case:
A user wants to fold each NIST Sub-Family into single row rather than multiple rows for every result. If they select the condensed mode - we will have a 'wizard model' come out and ask what 'standard text' we want for each column for that Sub-Family Finding - walking them across the spreadsheet.

As the user is walking though each sub-family step - It would be good if we can have another model that has a datatable of the 'detailed results' of those findings for the sub-family that they could open and close for review if needed.

UX consideration: we can we can suggest a 'default' answer -
a) like Severity ( if 8 / 10 are high or they are all the same) or
b) if they have already provided an answer - such as 'System Name' - that is unlikely to change. ( perhaps the last answer is good enough for most cases ).
c) Could use vuetify modal

Once they walk through, they can save it as a csv/xlsx.

Derived from mitre/heimdall-vue#14

Reivew cw/add-html2-reporter to make a SPA HL reporter

https://github.com/inspec/inspec/tree/cw/add-html2-reporter

This was an idea that we already pushed to the inspec folks about updating the html reporter to just use a SPA version of HL - a bit modified - to save the results data into the Single page build of HL to make a much better version of the HTML reporter.

This is a good start but as you can see - it is not so pretty

@lukemalinowski did a lot of work with the Webpack build of HL so he may be a good resource

Manual Baselines

As an Information System Owner, I need to be able to define and track manual tests so I know when control compliance needs to be reevaluated.

Possibly move controltable back to Vuetify Datatable

Now that it has proper expansion support,
https://vuetifyjs.com/en/components/data-tables#expandable-rows

and proper custom rows,
https://vuetifyjs.com/en/components/data-tables#customizing-default-rows

many of our initial reasons for simply using a list view are now moot.

This would solve the alignment issues and potentially/almost definitely. increase performance for paginated views.

However, the main reason to NOT make this change is that the initial implementation by the Vuetify devs was incredibly inefficient when doing the "all" view for extremely large #'s of rows. We must weigh the cost of development against the chance that this inefficiencies are still crippling. Additionally, we would lose our nifty stacking - however, said stacking is kind of a PITA to maintain.

Favicon should be improved

Describe the bug

  1. The favicon should have a transparent background instead of being black.

  2. Should also probably include more sizes in it to support a wider variety of usages.

  3. Also, where did we derive the art from? Other projects called Heimdall have similar logos so not sure if ours is outdated or something, ex. https://heimdall.site/.

See:

https://stackoverflow.com/questions/1344122/favicon-png-vs-favicon-ico-why-should-i-use-png-instead-of-ico

and

https://realfavicongenerator.net/blog/favicon-why-youre-doing-it-wrong/

To Reproduce
Steps to reproduce the behavior:

  1. Look at how kinda grungy the favicon looks.

Expected behavior
Favicon should look clean.

Screenshots
image

Desktop (please complete the following information):

  • OS: macOS Catalina
  • Browser: Firefox
  • Version: 75

Capabilities Treemap - Periodic Table

The community has requested that we have a second treemap view that groups by a set of capabilities which are aligned to NIST SP 800-53 controls.

For a beta we could just have a simple mapping of:

CAP 1: AC-2
CAP 1: AC-2(4)
CAP 2: CM-5
...
CAP16: ...

and then we can replace the 16 capabilities with the real labels.

We will also have to add a column and chips into the datatable to display and sort by this additional metadata.

Add Profile Layout View for Profile JSONs

At the moment the Results vue layout shows profile errors for InSpec Profile JSONs.

Given that the sidebar seems to know the difference between Results and Profile json's we should just have a second view for Profiles with a logical layout similar to the HL1.0.

Auditor Role

As a Security Control Assessor, I need to be able to review evidence of control compliance while adhering to the principle of least privilege.

Read-only user access control for circles seems like the most common use case here.

CAAT File data is not formatted

When exporting a CAAT file, the cells containing data for the following columns are not formatted, primarily carriage returns and line feeds missing:

  • weakness description
  • test objective
  • test result
  • recommended corrective action(s)

Add contextual help to the lower left of the Uploader modal for help on each type

This will help ease our support burden to the end-users as where to find the needed data for backend sources should be easy.

S3 - how do I find my ARN, ... other info asked for
Splunk - how do I find the 'requested items' in the list

a simple "help" or (i) info popup could help keep them from sending silly email questions.

Tweak caching of HDF computed properties to just be normal properties.

Message, status, etc. should be cached because being honest, CPU costs more than memory in JS world (gross!). Also, HDF objects are now less common since we generate them at intake time, so it's all good.

Technically this is an inspecJS thing but that doesn't matter - who cares - things aren't real.

Merged Baselines

As a Information System Owner, I need a combined view that aggregates the results of several scans so I can understand the overall security posture of a system or system component.

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.