Skip to content

Commit ece8db3

Browse files
authored
Merge pull request #1 from cuos-dev/feature/community-health-files
Community health files: templates, security policy, org profile
2 parents 1046c59 + 33a0f0b commit ece8db3

6 files changed

Lines changed: 206 additions & 15 deletions

File tree

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
name: Bug report
3+
description: Something does not work as documented
4+
labels: ["bug"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thanks for taking the time to report this. If it is a **security**
10+
issue, please do not file it here — see the security policy instead.
11+
12+
- type: dropdown
13+
id: component
14+
attributes:
15+
label: Which part of CuOS?
16+
options:
17+
- cuos — the operating system, updater, factories
18+
- cuos-release — tool.sh, building images and installers
19+
- cuos-iac — IaC manager, WebUI, fleet
20+
- Not sure
21+
validations:
22+
required: true
23+
24+
- type: dropdown
25+
id: platform
26+
attributes:
27+
label: Platform
28+
options:
29+
- x86_64
30+
- rpi-arm64 (64-bit Raspberry Pi)
31+
- rpi-arm32 (32-bit Raspberry Pi)
32+
- orangepi-zero3
33+
- LXC container
34+
- Other / not applicable
35+
validations:
36+
required: true
37+
38+
- type: textarea
39+
id: what-happened
40+
attributes:
41+
label: What happened, and what did you expect instead?
42+
validations:
43+
required: true
44+
45+
- type: textarea
46+
id: reproduce
47+
attributes:
48+
label: How can we reproduce it?
49+
description: The commands you ran, and the relevant part of your `system.json` — **with passwords and registry credentials removed**.
50+
render: shell
51+
validations:
52+
required: true
53+
54+
- type: textarea
55+
id: version
56+
attributes:
57+
label: Version
58+
description: |
59+
On a running system: `cuos version`.
60+
When building: the tag or commit of the repository, and `./tool.sh name your-system.json`.
61+
render: shell
62+
validations:
63+
required: true
64+
65+
- type: textarea
66+
id: logs
67+
attributes:
68+
label: Logs
69+
description: "`cuos log`, or `journalctl -u cuos-*` — again with any secrets removed."
70+
render: shell

‎.github/ISSUE_TEMPLATE/config.yml‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
# Blank issues stay enabled: a report that fits no template is still a report.
3+
blank_issues_enabled: true
4+
contact_links:
5+
- name: Security vulnerability
6+
url: https://github.com/cuos-dev/.github/security/policy
7+
about: Do not open an issue. Report it privately — see the security policy.
8+
- name: Building a system — documentation
9+
url: https://github.com/cuos-dev/cuos-release#readme
10+
about: How to define a system and build an image, installer or container.
11+
- name: The operating system — documentation
12+
url: https://github.com/cuos-dev/cuos/tree/main/docs
13+
about: Architecture, system.json, the update mechanism, platform support.
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
name: Feature request
3+
description: Suggest something CuOS should be able to do
4+
labels: ["enhancement"]
5+
body:
6+
- type: dropdown
7+
id: component
8+
attributes:
9+
label: Which part of CuOS?
10+
options:
11+
- cuos — the operating system, updater, factories
12+
- cuos-release — tool.sh, building images and installers
13+
- cuos-iac — IaC manager, WebUI, fleet
14+
- Not sure
15+
validations:
16+
required: true
17+
18+
- type: textarea
19+
id: problem
20+
attributes:
21+
label: What are you trying to do?
22+
description: The situation you are in, rather than the solution you have in mind — it often turns out there is a shorter way.
23+
validations:
24+
required: true
25+
26+
- type: textarea
27+
id: proposal
28+
attributes:
29+
label: What would you like CuOS to do?
30+
validations:
31+
required: true
32+
33+
- type: textarea
34+
id: alternatives
35+
attributes:
36+
label: What are you doing instead today?
37+
description: A workaround, another tool, or nothing at all — all three are useful to know.

‎.github/PULL_REQUEST_TEMPLATE.md‎

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
## What does this change, and why?
2+
3+
<!-- If it fixes an open issue, say "Fixes #123". -->
4+
5+
## How was it verified?
6+
7+
<!--
8+
Say what you actually ran, and what you did not. "Built an rpi-arm64 image and
9+
booted it on a Pi 4" and "reviewed only, not built" are both useful answers;
10+
a checkbox that means neither is not.
11+
-->
12+
13+
## Checklist
14+
15+
- [ ] Every commit is signed off (`git commit -s`) — see [DCO.txt](../DCO.txt).
16+
CI checks this and will fail the pull request otherwise.
17+
- [ ] New shell scripts carry `# SPDX-License-Identifier: Apache-2.0`.
18+
- [ ] `shellcheck --severity=warning` is clean, and any `*.test.sh` passes.
19+
- [ ] The documentation matches the change — including any command in a README
20+
that this renames or removes.
21+
22+
<!--
23+
Branch flow: pull requests go to `development`, not to `main`.
24+
History is kept as it was made: no squashing, and no rebasing of a branch that
25+
has already been pushed. Bring a branch up to date by merging `development`
26+
into it.
27+
-->

‎SECURITY.md‎

Lines changed: 53 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,64 @@
11
# Security Policy
22

3-
## Supported Versions
3+
## Reporting a vulnerability
44

5-
We release security updates for the latest stable version of the software. Older versions may not receive security updates.
5+
**Please do not open a public issue for a security problem.**
66

7-
## Reporting a Vulnerability
7+
Report it through **GitHub's private vulnerability reporting**: go to the
8+
affected repository, open the *Security* tab, and choose *Report a
9+
vulnerability*. That keeps the report private to you and the maintainers until
10+
a fix is available, and gives you a thread to follow it in.
811

9-
If you discover a security vulnerability, please report it to us privately. Do not create a public issue.
12+
If you cannot use that — no GitHub account, or the repository does not offer
13+
it — email **contact@simonwalz.de** with `CuOS security` in the subject.
1014

11-
Please email [Simon Walz](https://simonwalz.de/?id=impressum) with the details of the vulnerability. Include:
15+
Please include:
1216

13-
- A description of the vulnerability
14-
- Steps to reproduce
15-
- Any relevant logs or screenshots
17+
- which component and version (`cuos version` on a running system, or the tag
18+
or commit you built from)
19+
- what an attacker can do, and what access they need to start
20+
- steps to reproduce, and any logs — **with credentials removed**
1621

17-
We will respond as quickly as possible and coordinate a fix and disclosure timeline.
22+
### What happens next
1823

19-
## Security Best Practices
24+
| | |
25+
|---|---|
26+
| We acknowledge the report | within **5 working days** |
27+
| We tell you whether we can reproduce it, and our assessment | within **10 working days** |
28+
| We agree a disclosure date with you | once a fix or a mitigation exists |
2029

21-
- Keep your dependencies up to date.
22-
- Avoid exposing sensitive data in logs or error messages.
23-
- Use secure coding practices and input validation.
30+
If you do not hear from us in that time, please chase us — a missed
31+
notification is more likely than silence on purpose.
2432

25-
Thank you for helping us keep our project secure!
33+
We will credit you in the release notes unless you would rather stay anonymous.
34+
We have no bug bounty.
35+
36+
## Which versions get fixes
37+
38+
CuOS is **pre-1.0 and has no long-term support branches**. Security fixes go
39+
into the current release; there are no backports to older tags. If you run a
40+
pinned version, expect to move forward to take a fix.
41+
42+
Every CuOS image reference is pinned by digest and a mismatch is fatal, so
43+
updating means changing the pin deliberately rather than drifting onto a new
44+
image by accident.
45+
46+
## What is in scope
47+
48+
The four repositories of this organisation: the operating system and its update
49+
mechanism (`cuos`), the build tooling (`cuos-release`), the IaC manager, WebUI
50+
and fleet components (`cuos-iac`), and these org-wide files.
51+
52+
Out of scope: vulnerabilities in application containers you run **on** CuOS,
53+
which belong to their own projects; and the consequences of a configuration that
54+
deliberately weakens the system — an unprivileged report that CuOS is insecure
55+
when run with `os_root_password` set to a known value tells us nothing.
56+
57+
## Hardening your own deployment
58+
59+
- Pin images by digest and update deliberately.
60+
- Keep registry credentials out of images and out of `system.json` files you
61+
share; use the config encryption in `cuos-release`.
62+
- Sign your IaC repository's commits and set `iac_repo_signing_keys`, so a
63+
device only applies configuration it can verify.
64+
- Give the application container only the privileges it needs.

‎profile/README.md‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44

55
The CuOS operating system is also a solid base for IoT, edge, and VM-based products.
66

7+
## Start here
8+
9+
**To build a bootable system**, start at [cuos-release](https://github.com/cuos-dev/cuos-release#readme): describe the system you want in a `system.json` and run `./tool.sh image`. It produces a disk image, an ISO installer or an LXC container.
10+
711
## Framework overview
812

913
Components are organized in layers from device to service:
@@ -12,7 +16,8 @@ Components are organized in layers from device to service:
1216
| --- | --- | --- |
1317
| Device management | CuOS Fleet Management — agent + server for device enrollment, health telemetry, remote commands, and rollout orchestration. | [cuos-iac](https://github.com/cuos-dev/cuos-iac#readme) |
1418
| Service management | CuOS IaC — Infrastructure-as-Code manager and Web UI for defining services, builds, deployments, and release channels. | [cuos-iac](https://github.com/cuos-dev/cuos-iac#readme) |
15-
| Operating system | CuOS (OS) — minimal OS image with updater, image and installer factories, OTA tooling and reproducible builds. | [cuos](https://github.com/cuos-dev/cuos#readme) |
19+
| Operating system | CuOS (OS) — minimal OS image with updater, OTA tooling and reproducible builds. | [cuos](https://github.com/cuos-dev/cuos#readme) |
20+
| Build & release | CuOS Release Tooling — `tool.sh`, the image and installer factories, pinned image versions, configuration merging, signing and encryption. | [cuos-release](https://github.com/cuos-dev/cuos-release#readme) |
1621

1722
All components can be used independently — each CuOS component works standalone (you don’t need to run the others to use a single component).
1823

0 commit comments

Comments
 (0)