Giter Club home page Giter Club logo

isduba's Introduction

ISDuBA

Under development - some things already work

A web application for downloading and evaluating security advisories in CSAF 2.0 format. Mainly ISDuBA wants to support teams that are responsible for the IT security of a group of products.

ISDuBA uses the following components:

  • Go as programming language for the backend.
  • PostgreSQL as database
  • keycloak as identify provider
  • docker-compose setup example (planned)
  • svelte-flowbite for the single page web application frontend
  • csaf_distribution for downloading advisories
  • csaf_webview for viewing documents

How to get started

What does the name ISDuBA mean?

The abbreviation expands to a German label, which translates to Internal system for downloading and evaluating advisories.

License

ISDuBA is Free Software.

Source code written for ISDuBA was placed under the Apache License, Version 2.0.

 SPDX-License-Identifier: Apache-2.0

 SPDX-FileCopyrightText: 2024 German Federal Office for Information Security (BSI) <https://www.bsi.bund.de>
 Software-Engineering: 2024 Intevation GmbH <https://intevation.de>

ISDuBA depends on third party Free Software components which have their own right holders and licenses. To our best knowledge (at the time when they have been added) the dependencies are upwards compatible with the ISDuBA main license.

Dependencies

The top level dependencies can be seen from

  • go.mod for the isduad backend and server tools.
  • package.json for the web application frontend.
  • The build and setup descriptions (linked above).

Use one of several available Free Software tools to examine indirect dependencies and get a more complete list of component names and licenses.

For example use the SPDX-2.3 SBOM json file coming with an ISDuBA release or use https://github.com/anchore/syft to create one. Then run list_licenses.py or python3 -m json.tool on it to see more.

isduba's People

Contributors

bernhardreiter avatar cintek avatar dependabot[bot] avatar janhoefelmeyer avatar koplas avatar s-l-teichmann avatar thomasjunk avatar tschmidtb51 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

sthagen koplas

isduba's Issues

Activate Page Selection on the Home Page

Currently, the page selection buttons merely return an alert that they were clicked.

  • The expected functionality is that a new page of advisories is displayed depending on which page is opened and how many advisories are shown per page. Assuming each page shows 10 advisories, then clicking on the "page 3" button should show advisories 21-30. The last page may necessarily show less advisories.

  • The number of pages in the page selection should adjust to the number of available advisories:

    • The page selection should not be visible if all advisories are displayed at once
    • The page selection should show all available pages at once if possible
    • If not possible, e.g. due to too many advisories, then the following pages should be visible:
      • page 1
      • the page before the current page, unless the current page is page 1
      • the current page
      • the page after the current page, unless the current page is the last page
      • the last page
  • Furthermore, especially if not all pages can be shown at once, a jump function is necessary that allows opening a specific existent page by page number. This functionality could be hidden if all pages can be shown at once, but necessarily needs to exist, especially if considering cases where the page number could grow to 100 or more.

Advisories should be able to be commented

When looking at an advisory, currently, you can write a comment within the designated text area, but pressing the send button has no effect. This seems to be a bug.

Refresh keycloak token

Max wants to focus on his tasks. Right now the keycloak token expires after a certain amount of time. We need to refresh the token automatically so Max has not to logout and in to get a new token.

Activate Search Bar on the Documents Page

Currently, the search bar on the Documents Page has no functionality besides being a text field.

Expected: The search bar should be:

  • able to be written to. (This is already functional at the point of opening this issue.)

  • able to filter entries by information which has been written into the text field via pressing of the return or enter keys or via clicking on the magnifying glass located next to the search bar.

Properly license as Free Software

  • change files new with isduba to SPDX-License-Identifier: Apache-2.0
  • licensing section on the front page, much like the csaf_distribution section, but give the copyright holder.
  • activate reuse action to make sure we stay reuse compatible
  • check third party licenses and give commands how to get the list and licenses.
  • add licenses for third party code that resides inside our repositories
  • check that licenses are fully compatible

Activate Search Bar on the Home Page

Currently, the search bar on the Home Page has no functionality besides being a text field.

Expected: The search bar should be:

  • able to be written to. (This is already functional at the point of opening this issue.)

  • able to filter entries by information which has been written into the text field via pressing of the return or enter keys or via clicking on the magnifying glass located next to the search bar.

Calculate SSVC

Alex needs to calculate the SSVC for a document to make Kays decision about priorities easier (see #6). To enable Alex to do so we will use the Dryad calculator.

Kay wants to know which Advisories need to be worked upon

After login an overview shall display which advisories are there and with which status.

#4 starts addressing this

More:

  • Need to show the SSVC (a stakeholder specific value).
  • show the several CVSS values of a document in good order
  • show CVEs (not all of them)

Implement Source-Management

Currently, the Source-Page is empty sans the word "Sources". The functionality still needs to be implemented.

More information for debugging

To make debugging easier we should show some build information in the client. Therefore, we want to show a build number of the client (#19) and the backend (#20) in the client. One possible place to do so would be an "About" section in the configuration menu of the client.

Activate Search Bar on the Advisories Page

Currently, the search bar on the Advisory Page has no functionality besides being a text field.

Expected: The search bar should be:

  • able to be written to. (This is already functional at the point of opening this issue.)

  • able to filter entries by information which has been written into the text field via pressing of the return or enter keys or via clicking on the magnifying glass located next to the search bar.

Implement search for comments

If there are many comments with a lot of text and Alex remembers just a few words from a comment it would be helpful to be able to use a search function.

Add User Profile

Users need a page where their personal information can be seen or processed, like their username or which advisories they can manage.

Fix comments on wide sites

The vulnerability-overview table can get quite lengthy in size.

For those tables that exceed the standard site-width, it seems to push the comments-field out of bounds. In that case, the arrow to phase in the comment field will be left at the same position (meaning the top right of the page if not scrolled, remaining at the same fixed location n the page even if scrolling, meaning it can be pushed to the left by scrolling right), but will only allow the edge of the comment field to be seen, which is still unusable.

Closing the overview will allow the comment-field to be displayed normally.

Zooming out the view so the entire table can be seen at once will also allow the comment field to be seen and will afix the arrow to the usual place relative to the comment section.
Also: Regardless of the page-width, zooming out will stretch the comment-field horizontally.

Link to the Github repo

Since we create a Free Software in this project we should add a link to the Github repository somewhere in the application. Maybe at the bottom of the sidebar.

Allow Markdown in Comments

Alex wants to structure comments so that Kay can understand them faster.

As Github flavoured markdown is allowed in CSAF Documents' formatted messages, Alex wants to use it in comment, too.

Use Github actions for lint etc.

Currently, we only check whether the licensing is correct via github actions.

There are many other helpful actions that can raise the quality of code, like revive, and github should also check whether the build builds etc..

Field contents should be saved when reloading or logging in again

As Alex wants to continue the work at the place where it was left,
this also holds for changes to values.

Alex demands this for the same webbrowser.

Examples:

  • A configuration toggle should be effective once it was switched.
  • Sentences already entered in a comment field, shall still be there on reload (or login)

This issue is split out of #11.

Fit table of Advisories on the advisories page onto the page

On the advisories page, the table is cut off after the initial release column. (Although the rest can be seen by scrolling inside the component)

This is independent of the table being larger than the side as well.

This should be adjusted, e.g. by abbreviating overly long titles and publishers and forcing the entire table to be displayed.

Make docs better by auto generating source code files into markdown

https://github.com/csaf-poc/csaf_distribution/blob/main/.github/workflows/generate-markdown.yml
uses https://github.com/dineshsonachalam/markdown-autodocs/

to automatically generate a shell script into a markdown documentation file.
Example:

Ideally this leads to less duplication (because a technical step is only documented once in the script) and better documentation because the technical steps can actually be tested (as part of the script).

UI: Fix Position of new Advisories

The length of any given "Title" can vary greatly, which affects the position of the Title, Tracking ID, Version and State columns. Their position seems to move depending on the length of the longest title currently shown on the site and is different even with relatively minor differences in length.

Their position should probably be fixed, and a workaround for overly long titles could be considered to be implemented so the table no longer stretches beyond a screens width.

Implement Statistics

Currently, the Statistics-Page is empty sans the word "Statistics". The functionality still needs to be implemented.

Adjust sidebar if logged out due to inactivity

When idle for longer periods of time, the user will be logged out. If logged out this way, the sidebar will not reflect that. The user won't be able to access any of the tabs (since all of them will redirect them to /#/, except for about which will show the logged-out-about-page and logout, which will resolve the problem).

This could be confusing for the user (since they may mistakenly believe to be logged in due to the sidebar) or give unprivileged third parties extra information, since it's still visible who was logged in and which tabs they had access to, even if the tabs themselves are not accessible.

Information needed to display on the advisory overview

The following information is needed on the advisory overview:

  • A list of the first 4 CVEs per shown advisory
  • Max CVSS (already available via documents)
  • Max SSVC (already available via documents)
  • Title of the advisory (already available via documents)
  • ID (already available via documents)
  • Publisher (already available via documents)
  • Current Releasedate (already available via documents)
  • Document version (already available via documents)

Fix Setting Workflow

Setting the workflow of an advisory does not persist between reloads. The console shows an internal server error on setting a workflow, e.g.

XHRPUT [http://localhost:5173/api/status/ExampleInstitution/ExampleAdvisory/read](http://localhost:5173/api/status/ExampleInstitution/ExampleAdvisory/read) [HTTP/1.1 500 Internal Server Error 50ms]

This may be related to #42

Implement Configuration

Currently, the Configuration-Page is empty sans the word "Configuration". The functionality still needs to be implemented.

Clicking on the Advisory Version redirects to a 404 error

Reproduction:

Select an advisory. Click on the Advisory Version number on the top right.

Result: You're redirected to a 404-Error Page. (advisories/undefined/undefined/documents/1)

This seems to be a bug caused by:

  • Version 1 not existing
  • The advisory not being properly passed through (any advisory results in undefined)

Possibility to change the workflow state

The workflow state helps Kay to make his decision about the next steps ( see also #6). The application is already showing the state but it can't be changed yet. Now we first need an API endpoint to be able to change the workflow state. Then Kay should get the option to change the state for one or multiple documents. Some of the states should be set automatically.

It should be possible to set the following states:

  • read (automatically by client)
  • assessing (automatically by backend)
  • deleted
  • review
  • archived

connect different advisories that are related

Alex wants to connect two or more advisories that are closely related to evaluate them together.

Background: it could happen that the same vulnerability is reported by different parties in separate advisories, Alex wants to record so that an evaluation can benefit from it.

Create SBOM formats SPDX and CycloneDX

Need a documented process to create software bill of materials in the formats

  • CycloneDX
  • SPDX

to be ready for publication with each release.
Should be an automatic generation if possible.

UI: Fill Empty Space on the Home Page

Currently, the there is a lot of unused space on the home page, especially at the bottom part, if only viewing 10 Advisories per page. The next-biggest option of 20 advisories per page however is already longer than the page.

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.