GCC 15는 Arm 보호 제어 스택(Guarded Control Stack, GCS) 코드 생성 옵션을 추가하여 중요한 향상을 이루었습니다. GCS는 소프트웨어에 의해 할당된 가상 주소 공간의 보호된 영역으로 설계되었습니다. Branch with Link (BL) 명령어를 실행할 때, 반환 주소는 GCS와 Link Register (LR)에 저장됩니다. 프로시저에서 반환할 때, 가장 최근의 반환 주소는 GCS에서 검색됩니다. 프로세서는 이 값을 LR과 비교하거나 직접 사용할 수 있는 기능을 가지고 있습니다.
보안을 강화하기 위해 새로운 1단계 권한이 구현되었습니다. 이 권한은 소프트웨어가 GCS에서 읽을 수 있도록 허용하면서, 쓰기 작업은 오직 GCSPUSH 명령어 또는 BL 명령어 실행의 결과로 제한됩니다. 이 메커니즘은 GCS에 대한 우발적이거나 악의적인 변경을 방지하는 데 중요하며, 코드 실행 프로세스의 전반적인 무결성과 보안을 향상시킵니다.
GCC 15에서 GCS의 도입은 컴파일러 기술의 주목할 만한 발전을 나타내며, 특히 실행 환경에서 강력한 보안 조치를 요구하는 애플리케이션에 유용합니다. 이 기능은 Arm 아키텍처로 작업하는 개발자들에게 새로운 제어 흐름 관리 보호 계층을 제공할 것으로 기대됩니다.
* 이 글은
phoronix.com의 기사를 요약한 것입니다. 전체 기사의 내용은
이곳에서 확인하실 수 있습니다.