Ubuntu 24.04 Noble Numbat

Noble Numbat

2024-04-25(목)에 나온 우분투 최신 LTS
Pasted image 20240425130037.png
numbat은 주머니개미핥기를 말한다.
Pasted image 20240426084810.png
Pasted image 20240425130141.png
우분투 공식 로고

변경점, 추가사항

https://ubuntu.com/blog/whats-new-in-security-for-ubuntu-24-04-lts
다음의 사항들은 이 글을 참고하여 정리했다.

Unprivileged user namespace restrictions

root 권한 없는 namespace는 추가적인 보안 격리를 제공하며 샌드박스 환경을 구축하는데 활용된다.
도커를 privileged 옵션 없이 사용하는 경우를 생각하면 될 것이다.
이렇게 활용하면 제한된 네임스페이스 내에서 어플리케이션은 자유롭게 권한을 얻을 수 있고, 이전보다 더 엄격한 샌드박스 환경을 만드는 것이 가능하다.
일반적인 용례는 신뢰불가능한 웹 컨텐츠를 사용하는 웹을 들 수 있겠다.
그러나 사실 권한이 없는 네임스페이스임에도 리눅스 커널은 공격에 노출될 수 있다.
그래서 23.10 버전에서는 네임스페이스가 합법적으로 가질 수 있는 권한만을 가질 수 있도록 하는 restricted user namespace 기능이 도입되었다.
그리고 24.04에서는 이 기능이 더 강화되어 써드파티 앱에서도 활용되도록 변경하였다.
이제는 모든 앱이 권한 없는 네임스페이스를 만들 수 있으나 추가 권한은 거부된다.
컨테이너 보안에 대한 글을 보면 도커를 그냥 활용하는 것이 위험하고 추가적인 보안 조치가 필요하다는 글이 많은데, 이 기능을 통해 그것이 해결될 수 있을까 궁금하다.

Binary hardening

근래 툴체인, 컴파일러는 방어 매커니즘을 탑재한 바이너리 파일을 만들 수 있는 기능을 가지고 있다.
가령 가능한 buffer overflow를 미리 감지하고 피하거나, code reuse attack에 대한 분기 보호 기능등이 있다.
우분투 앱의 토대인 GNU C라이브러리에서도 실행 중 탐지 및 보호 기능을 제공한다.

buffer overflow

버퍼 오버플로우에 대해서는 _FORITY_SOUCRE매크로를 사용하여 막는다.
이 값은 0부터 3까지 설정할 수 있으며 보안 레벨을 의미한다.
근래 우분투는 이 값을 2로 설정하여 사용했다.
이는 sprintf, strcpy 등의 문자열 처리 함수에 대한 검사를 수반했다.
24.04에서는 보안 수준을 3으로 올렸다.
보안 수준 3에서는 memmove, memcpy 등의 메모리 관리 함수에 대한 검사까지 수행한다.
이 기능은 우분투 gcc 컴파일러에 기본적으로 활성화되었으므로 우분투 내의 모든 패키지는 이러한 보호를 받게 된다.

code reuse attack

또, arm64 아키텍처에서는 하드웨어 적용 포인터 인증, 브랜치 대상 식별 기능이 제공된다.
전자는 포인터 위치를 재조정하는 공격에 대한 인증을 거친다.
후자는 브랜치가 접근 가능한 위치를 타게팅하는지 확인한다.
이런 트래킹은 유효 위치 추적을 통해 분기로 코드 내에 다른 코드로 접근하는 악의적인 점프 기반 공격을 탐지한다.
24.04에서는 gcc 컴파일러에 -mbranch-protection=standard 옵션을 통해 활성화한다.

AppArmor 4

위에서 언급한 AppArmor 필수 액세스 제어 시스템에서 지원된다.
앱아머를 통해 시스템 관리자는 앱에 부여할 권한을 정의하고 다른 리소스는 거부하는 최소 권한 원칙을 구현할 수 있다.
앱아머는 앱과 시스템 보안 파일을 정의하는데 사용되는 유저 패키지와, 사용자 공간에 대한 정책을 제공하는 커널 영역의 모듈로서 제공된다.
4.0에서는 보안 정책을 통해 허용할 네트워크 주소를 명시하거나 복잡한 조건을 명시하는 것이 가능해졌다.
새로운 기능 중 하나는 신뢰할 수 있는 유저 영역의 프로그램에 대해 접근 권한 결정을 연기하는 것이다.
이를 통해 유저와 관리자 간 실시간 상호작용을 통한 진보된 의사결정을 내리는 것이 가능하다.
가령 snapd 프롬프팅을 할 때 사용자가 홈 디렉에서 스냅이 액세스할 수 있는 파일을 직접 제어할 수 있게 된다.
마지막으로 커널 영역에서 앱아머는 네임스페이스와 io_uring 간의 액세스 제어 기능이 생겼다.
이는 커널 공격 표면을 노출시키는 시스템이었기에, 네임스페이스가 안정적인 기능을 할 수 있도록 돕는다.

Disabling of old TLS versions

현 웹 생태계에서는 다양한 TLS 버전이 혼용되고 있으며 이는 TLS downgrade attack을 성립시킨다.
24.04는 TLS 1.0, DTLS 1.0을 강제적으로 허용하지 않도록 해 보안 취약점을 개선했다.

최신 커널 보안 기능

22.04, Jammy Jellyfish는 리눅스 커널 5.15버전을 사용하였다.
이제는 6.8 버전을 사용하며 추가적인 보안 기능들이 추가되었다.

Intel shadow stack support

최근 인텔 cpu는 return-oriented programming 과 같은 호출 스택에 가해지는 공격에 대한 하드웨어적 보안 기능을 지원한다.
섀도우 스택은 cpu에서 수정 불가능한 스택 반환 주소의 하드웨어 복사본이다.
함수 호출이 끝나면 반환 주소는 이 섀도우 스택과 비교된다.
만약 반환 주소가 이것과 다를 경우, 프로세스는 rop 공격에 대한 방지를 위해 종료된다.
이 기능은 우분투 19.10 버전에 대해서도 제공된다.
GLIBC_TUNABLES=glibc.cpu.hwcaps=SHSTK 환경 변수를 세팅하면 사용할 수 있다.

Secure virtualisation with AMD SEV-SNP and Intel TDX

보안 가상화를 통해 복잡한 코드 베이스에 있는 취약점이 초래하는 전통적인 위협모델은 해소됐다. ??
악의적인 클라우드 관리자의 허가되지 않은 접근은 vm에서 이뤄질 수 있다.
우분투 vm은 이러한 보안에 대한 보증과 제어를 이루는 것을 목표로 한다.

x86 아키텍처에서는 AMD, Intel 프로세서 모두 메모리 암호화, 무결성 보호 기능을 갖춘 vm 실행을 지원한다.