Since UML is a port to Linux, it runs as a set of processes on the host.
All hardware is virtual. Devices are constructed from resources on the host. Block devices live in files, consoles and serial lines use a number of character devices, and there are a number of host network interfaces that can be used by the UML network driver.
It is also non-privileged, normally running as a normal user, although a setuid helper is needed in order to set up an network interface on the host.
No modifications to the host kernel are needed.