Attack surface reduction in contemporary operating systems via practical kernel debloating