https://github.com/massimostanzione/refmon
A reference monitor for enhanced file protection. Project for the course "Advanced Operating Systems (and Systems Security)"
https://github.com/massimostanzione/refmon
linux-kernel linux-kernel-module reference-monitor
Last synced: 2 months ago
JSON representation
A reference monitor for enhanced file protection. Project for the course "Advanced Operating Systems (and Systems Security)"
- Host: GitHub
- URL: https://github.com/massimostanzione/refmon
- Owner: massimostanzione
- Created: 2024-07-25T13:21:14.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-11-11T16:48:11.000Z (7 months ago)
- Last Synced: 2025-02-09T07:41:43.792Z (4 months ago)
- Topics: linux-kernel, linux-kernel-module, reference-monitor
- Language: C
- Homepage:
- Size: 2.85 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# refmon
*A reference monitor for enhanced file protection*.
## What is it?
`refmon` is the final project for the *Advanced Operating Systems (and Systems Security)* course (9 CFU = 9 ETCS), took at *University of Rome Tor Vergata*.
It aims to the implementation of a **Linux Kernel Module** for a **Reference Monitor**, according to some specification that you can consult [on the official course site](https://francescoquaglia.github.io/TEACHING/AOS/AA-2023-2024/PROJECTS/project-specification-2023-2024.html).## How to run `refmon`
### Quickstart
If you want to *just run* the project, follow this simple steps:1. **Clone** the repo:
git clone https://github.com/massimostanzione/refmon --recurse-submodules
> [!IMPORTANT]
> Please don't forget **`--recurse-submodules`**, as there are some [external modules](https://github.com/massimostanzione/refmon/edit/main/README.md#external-modules) that must be added in order to refmon to be fully functioning.2. **Launch** refmon:
cd refmon
make run
3. **Play!**
That's it, you are all set! You can try to add some paths to `refmon`:sudo refmon --set-state REC-ON
# default password is "ciao" - remember to change it afterwards
sudo refmon --reconf-add PATH
... and try to write-access your `PATH`. You should be able to get an error message, *i.e.* `-EACCESS` errno.### Keep it calm
Now that you have enjoyed the *quickstart*, feel free to explore every `refmon` functionality by typingrefmon --help
A list of all the commands available will be displayed. Use it as your guide!## External modules
This project uses the following external modules:
- [*Linux syscall table discoverer*](https://github.com/FrancescoQuaglia/Linux-sys_call_table-discoverer) module, by the lecturer [Francesco Quaglia](https://github.com/FrancescoQuaglia), in order to hack some free syscall table entries and use them for `refmon` purposes;
- [*Munit*](https://github.com/nemequ/munit) test framework, by [nemequ](https://github.com/nemequ), in order to test `refmon` with a lightweight, *nuisance-free* test framework.## Can I contribute?
Feel free to report any bug or to contribute!