-
> it found a CUPS server (with a known CVE that had not made it to oldstable packages), but was not able to complete exploitation due to AppArmor.
It's evident that Mandatory Access Control has become, ahem, mandatory.
Both VM and inference engine processes should be confined, at least. There's a project where it's already done for many applications. [0]
Additionally, `lockdown=confidentiality` in kernel boot flags greatly reduces attack surface. (interferes with unsigned modules like NVIDIA drivers) [1]
Then AppArmor profiles could be written for absent applications with a learning-mode tool [2]
Nothing is bullet proof, but these approach significantly reduces potential consequences [3]
[0] https://github.com/roddhjav/apparmor.d (I'm the contributor)
[1] https://madaidans-insecurities.github.io/guides/linux-harden...
[2] https://github.com/nobody43/apparmor-suggest (I'm the author)
[3] https://en.wikipedia.org/wiki/Swiss_cheese_model
-
AppSignal
Monitoring that respects your time & budget. APM, error tracking, and dashboards for modern web apps. Ten-minute setup, transparent flat pricing, and support from engineers who actually use the product.
-
> it found a CUPS server (with a known CVE that had not made it to oldstable packages), but was not able to complete exploitation due to AppArmor.
It's evident that Mandatory Access Control has become, ahem, mandatory.
Both VM and inference engine processes should be confined, at least. There's a project where it's already done for many applications. [0]
Additionally, `lockdown=confidentiality` in kernel boot flags greatly reduces attack surface. (interferes with unsigned modules like NVIDIA drivers) [1]
Then AppArmor profiles could be written for absent applications with a learning-mode tool [2]
Nothing is bullet proof, but these approach significantly reduces potential consequences [3]
[0] https://github.com/roddhjav/apparmor.d (I'm the contributor)
[1] https://madaidans-insecurities.github.io/guides/linux-harden...
[2] https://github.com/nobody43/apparmor-suggest (I'm the author)
[3] https://en.wikipedia.org/wiki/Swiss_cheese_model
-
Why do you invent a new language for your work?
Why did you not embed your language into another one, with type system that is superset of what you need?
For example, there's capabilities expressed in Haskell: https://github.com/tweag/capability
Capabilities there are tracked at type level and are subject to type erasure, if possible.
-
I'll blow my own trumpet and promote my own Haskell capabilities library, Bluefin: https://hackage.haskell.org/package/bluefin
Bluefin is used in production, and as far as I know capability is not.