Replies: 1 comment 1 reply
|
Pasting here a response to this topic in Discord from user xxx3780#: Some of my questions for ur post I guess would be: For me, I would probably wanna know if there are vulnerabilities that exists within what you discuss here(as it may seems so). p.s. Just to set things straight, im just a volunteer, not in anyway tied with any comp. here or paid by them. Just trying to help out based on my experience in the IT field |

Uh oh!
There was an error while loading. Please reload this page.
Hi all,
I recently put together a security workshop around attacking and compromising Home Assistant instances. As part of it, I created intentionally malicious or "sideloaded" apps to explore what an attacker could do after obtaining control of an app.
The goal wasn't to demonstrate a particular vulnerability, but to explore the blast radius of the privileges available to an app.
The current problem
Apps can request different levels of access through mechanisms such as
hassio_role,hassio_api,homeassistant_api,docker_api,full_access, etc.The important question for me isn't whether these mechanisms are technically correct — they clearly serve a purpose — but rather:
How does a Home Assistant user understand and monitor the security implications of granting those permissions to an app?
Today, much of that trust decision happens at installation/configuration time. Once an app has been granted a privilege, there is comparatively little user-facing visibility into:
This creates an interesting asymmetry: an honest app author has to request the privileges they need, but the platform doesn't necessarily make the principle of least privilege particularly visible to the user — and a malicious app can potentially benefit from the same trust model.
What I observed while building the workshop
While experimenting with intentionally malicious apps, I was able to demonstrate several scenarios where an app with broad privileges could have consequences far beyond the app itself.
One example involved an app with Supervisor-level privileges performing a sensitive authentication operation such as resetting a user's password. Combined with an outbound reverse tunnel, this could provide a path for an attacker to remotely reach the Home Assistant instance and authenticate using the newly controlled credentials.
The individual attack chain isn't really the point — it was a controlled workshop environment.
What caught my attention was the blast radius of the initial permission grant.
A user may think:
But technically they may be granting it the ability to perform highly privileged administrative operations against their Home Assistant instance.
I think that distinction deserves more visibility.
I also found that some of the existing isolation mechanisms are difficult for users to reason about. For example, an AppArmor profile being present does not necessarily tell a user how restrictive that profile actually is. There is potentially a useful distinction between having a security control configured and having a security control that provides meaningful containment.
I'm not suggesting that these mechanisms are ineffective or that Home Assistant's current security model is fundamentally broken. Rather, I think there may be an opportunity to make the trust boundaries more explicit and observable.
What I'm proposing
I'd like to explore three related changes at the Supervisor level.
1. Explicit, human-readable app permissions
At installation time, instead of presenting permissions primarily as technical capabilities, expose a human-readable summary of what the app would be allowed to do.
For example:
The exact permission categories would obviously need discussion.
The important idea is that users should be able to make an informed security decision without having to understand Supervisor APIs, Docker capabilities, AppArmor or the app configuration format.
This could potentially be combined with risk tiers, so that low-risk permissions don't create unnecessary friction while particularly sensitive permissions receive more explicit confirmation.
2. Supervisor-level security auditing
The second idea is to make privileged app activity auditable.
Rather than only having technical logs, I'd like to explore the possibility of Supervisor maintaining a security-oriented audit trail such as:
The goal wouldn't necessarily be to log every internal operation forever. Even a relatively small audit trail for security-sensitive actions could be valuable.
This would make it possible to answer questions such as:
The key distinction I'm interested in is between ordinary application logging and security auditing: the latter should make it straightforward to attribute sensitive actions to the app that performed them.
3. Security notifications for high-impact operations
Building on the audit trail, I think there is an opportunity for Supervisor to actively notify the Home Assistant administrator when an app performs particularly sensitive security operations.
For example:
Or potentially:
I don't think every Supervisor API call should necessarily generate a notification. That would quickly become unusable.
Instead, there could be a small set of high-impact security events where notifying the administrator makes sense — authentication changes, credential/token operations, or other actions capable of materially changing the security posture of the instance.
This would address an important gap between auditability after the fact and detection while an attack is happening.
A compromised app shouldn't necessarily be able to silently perform a major security-sensitive operation and leave the administrator unaware until they investigate logs.
A related UX/security-signalling issue
There's also something about the current permission badges that I find potentially confusing.
Some app permissions, such as the blue Supervisor API badge, can arguably be interpreted more like a trust/official-status indicator than a warning that the app has elevated access.
I don't think that's necessarily the intended meaning, but from a user's perspective there is an important distinction between:
and
I'd be interested in whether permissions should be visually separated from signals about app origin, trust, or official status — and whether the current badges communicate the security implications clearly enough.
Secondary question: validating isolation
A related, but probably separate, discussion is whether Home Assistant could provide better feedback about the quality of app isolation.
For example, an AppArmor profile that is technically present but extremely broad may deserve a different security assessment from one that is carefully scoped.
This could potentially involve better validation of app security policies, stricter defaults, or eventually other sandboxing mechanisms.
I'm mentioning this as a related direction rather than proposing that AppArmor itself should be replaced or redesigned as part of this proposal.
Why I think this could help
The underlying idea is to move more of the trust decision towards the layer that can actually understand and mediate app privileges: the Supervisor.
Today, app security is partly expressed through technical configuration and isolation mechanisms that are primarily meaningful to developers and administrators with a fairly deep understanding of the platform.
I think there is an opportunity to make that model more explicit:
Before installation:
"What exactly am I allowing this app to do?"
During operation:
"What privileged actions is this app performing?"
When something unusual happens:
"Why am I being warned that this app just changed a user's password?"
After an incident:
"What did this app actually do?"
None of these mechanisms would prevent a compromised app on their own. The goal is instead to improve least privilege, transparency, accountability and detection.
Questions for the community
I'm intentionally not proposing a concrete implementation yet. I'd first like to establish whether the underlying problem make sense for mo more people (altough i already got a feeling in the workshop) and whether there is a direction that makes sense for Home Assistant
Thanks!
All reactions