Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

adds blog entry for security audit #77

Merged
merged 1 commit into from
May 21, 2024

Conversation

eriksven
Copy link
Contributor

No description provided.

bs-jokri
bs-jokri previously approved these changes May 21, 2024
Copy link
Contributor

@bs-jokri bs-jokri left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added some suggestions for improvements. Decided yourself if you want to apply or not.

banner = "img/banners/2024-05-21-auditBanner.png"
+++

Applications that utilize artifacts from the Kuksa project need to rely on the secure execution of these components. We are, therefore, happy to announce the publication of an external audit report carried out by [Quarkslab](https://www.quarkslab.com). The audit was facilitated through [OSTIF](https://ostif.org) and the [Eclipse Foundation](https://www.eclipse.org) and made possible by the founding the Eclipse Foundation received from the [Alpha-Omega project](https://openssf.org/community/alpha-omega/).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

... of Kuksa's components

Are we not more happy about having successfully performed the audit at all? Maybe: ... happy to announce that we carried out an an external audit with Quarkslab, which is now published

founding -> funding

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would say that the audit was mostly carried by Quarkslab and not the Kuksa team. The Kuksa mostly helped during the scope setting by responding to questions.

Applications that utilize artifacts from the Kuksa project need to rely on the secure execution of these components. We are, therefore, happy to announce the publication of an external audit report carried out by [Quarkslab](https://www.quarkslab.com). The audit was facilitated through [OSTIF](https://ostif.org) and the [Eclipse Foundation](https://www.eclipse.org) and made possible by the founding the Eclipse Foundation received from the [Alpha-Omega project](https://openssf.org/community/alpha-omega/).

- The audit was scoped on the KUKSA databroker and the respective Python client SDK.
- There were 19 findings with low or higher severity, of which two had a high severity.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There were 19 findings, of which 17 had low and two had high severity.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There were 2 High, 1 Medium, 10 Low and 6 Info findings. For the summary I thought this already too much detail. I changed it to only mention the total number of the number high findings.


- The audit was scoped on the KUKSA databroker and the respective Python client SDK.
- There were 19 findings with low or higher severity, of which two had a high severity.
- The KUKSA team fixed most findings before the release of the report.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Which ones not? And why?

Copy link
Contributor Author

@eriksven eriksven May 21, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We did not fix two Info findings due to other priorities like slow handling of regex due to other priorities like reworking the API. For the level of these bullets points and even the whole blog entry I thought this would be too specific. It is still possible to read this in the full report.


## Audit process

Together with the auditors, there was an agreement to focus the analysis on the KUKSA databroker and the Python client SDK since these are the most used deliverables of the Eclipse Kuksa project. The team at Quarkslab then based their work on the threat model and extended this through automated and manual static analysis. In addition, they performed dynamic fuzz testing. After completing the report, the auditors shared their results with the Kuksa team. The maintainers of Eclipse Kuksa then resolved all findings with low or higher severity without another review by Quarkslab. We can now share some examples here for findings and their fixes.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

which threat model? as you write the threat model, it feels I would need to know which one it is but I assume there are more then one possible

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The report says here:
"The threat model is the initial step of the audit. It provides an overview of the project’s work. More importantly, this step identifies the project’s purposes and critical functionalities."

I will write "derived threat model"


## Findings

There were two findings for which the auditors assigned a high severity:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe also give one sentence to the low findings. Maybe give some examples on what those findings were

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My idea was to mention this below under "Further findings"


### Provider can crash databroker by adding new signals

In a Kuksa deployment, so-called providers update signals by retrieving the values from the vehicle bus (e.g., CAN), converting them to VSS signals, and then writing them to the databroker. With the Kuksa API '[sdv.databroker.v1](https://github.com/eclipse-kuksa/kuksa-databroker/tree/main/proto/sdv/databroker/v1)', a provider can register new signals to extend the data model managed by the databroker during runtime. However, there was no upper limit on the number of entries a provider could add. During the investigation, the auditors registered 29 million signals to cause the operating system to stop the databroker on a computer with 32 GB of RAM. The default data model of VSS 4.0 currently consists of around 1000 signals, which gives an impression of the usual number of expected signals.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

consider linking VSS with its spec and expanding the appreciation

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point, my thinking was that a person that reads the Kuksa blog is aware of what VSS is. I will expand the abbreviation.


Most findings relate to the Kuksa API 'sdv.databroker.v1'. For several reasons, which are partially also historical, the databroker implements a second gRPC API with a smaller feature set called '[kuksa.val.v1](https://github.com/eclipse-kuksa/kuksa-databroker/tree/main/proto/kuksa/val/v1)'.
The idea was already to support only one of the existing APIs or to design an API that combines the feature sets of both APIs. Based on the results of the audit, the Kuksa team decided to trigger and accelerate the deprecation of the 'sdv.databroker.v1' since many features leading to the security findings are only present in that API but not in the remaining 'kuksa.val.v1' API. As a result, the user now explicitly needs to enable the 'sdv.databroker.v1' API during the start of the databroker, or it is not active anymore.
However, some applications and frameworks like Eclipse Velocitas rely on features from that API. Because of that, it has not been removed from the code base yet to have an extended migration period. In addition, this allows the collection of feedback from the community on which of the now missing features should be part of the 'kuksa.val.v1' API or an upgraded future version. The short-term plan is to reference the audit findings in the documentation and make people aware of the security risks involved when actively enabling and using the 'sdv.databroker.v1' API.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

consider linking Eclipse Velocitas


## Deploy Kukas in your setup

We want to thank OSTIF, the Eclipse Foundation, and Quarkslab for the great collaboration and the chance to go through this audit process. We hope the results and fixes encourage you to try out and use the databroker in your use cases, e.g., through one of the SDKs currently available for Python, Android, and soon Rust.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

... and the valuable feedback we received during the audit process


## Deploy Kukas in your setup

We want to thank OSTIF, the Eclipse Foundation, and Quarkslab for the great collaboration and the chance to go through this audit process. We hope the results and fixes encourage you to try out and use the databroker in your use cases, e.g., through one of the SDKs currently available for Python, Android, and soon Rust.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe link the sdks?

@eriksven
Copy link
Contributor Author

I updated the commit, @bs-jokri could you please have another look? Thank you!

Copy link
Contributor

@bs-jokri bs-jokri left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@bs-jokri bs-jokri merged commit 471d667 into eclipse-kuksa:master May 21, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants