개요

Linux Security Modules (LSM)은 리눅스 커널에 서 제공하는 보안 모듈들의 프레임워크를 말하는 말이다. LSM은 오픈소스 프로젝트로서, 리눅스 커널 2.6부터 리눅스 커널에 포함되었다.

디자인

LSM은 리눅스 커널에 최소한의 변경을 가하면서 Mandatory access control리눅스 커널에 구현하기 위해서 디자인 되었다. LSM은 System call interposition즉 시스템콜에 대한 Access control을 하는 방식으로 구현하지 않았는데, 이는 이 방식이 Multiprocessor에 적합하지 않으며, TOCTOU버그를 일으킬 수 있기 떄문이다. 그 대신 LSM은 MAC방식으로 시스템 콜구현에서 커널의 중요한 오브젝트 접근시에 LSM Module로 향하는 upcall을 커널에 Hook으로 만듬으로서 커널 오브젝트에 대한 모듈 컨트롤을 하였다. LSM에 대한 디자인은 USENIX Security 2002 Linux Security Modules: General Security Support for the Linux Kernel에 설명되어 있다. [1]

LSM을 사용함으로서, SELinux혹은 Apparmor와 같은 Security방식들이 커널에 직접 패칭되어 있는 것이 아니라, LSM Hook을 호출하는 방식으로 kernel module처럼 구현될 수 있도록 할 수 있었다. 이를 통해서 다양한 Security check방식들이 Linux Kernel Module형식으로 Loading time에 적제되어 리눅스 커널의 Engineering effects를 줄줄일 수 있었다.

LSM을 사용하는 모듈

  1. AppArmor
  2. SELinux

참고