
이것은 리눅스 시스템에서 권한 상승 문제를 겪고 있는 저장소와 'Dirty pipeline' 문제에 관한 뉴스를 다루고 있습니다.
Max Kellermann(CM4all이라는 독일 웹 호스팅 회사의 개발자)은 2022년 초에 이를 발견했지만, 취약점을 찾으려고 한 것은 아니었습니다. 그는 고객이 서버 로그가 자발적으로 손상되는 것에 불만을 느꼈다는 사실을 알게 된 후 디버깅을 하고 있었습니다. Kellermann은 이를 추적하는 데 몇 달을 보냈습니다. 그의 작업은 결국 리눅스 커널이 파이프(pipe)와 페이지 캐시(page cache)를 처리하는 방식의 깊숙한 조건으로 이어졌습니다. 그는 로그 손상을 설명하기 위해 발견한 버그가 실제로는 훨씬 더 심각한 것임을 깨달았습니다. 즉, 완전한 권한 상승 취약점(전체 권한 상승 취약점은 공격자가 표준 사용자, 게스트, 권한 없는 애플리케이션과 같은 낮은 수준의 접근 권한을 가지고도 시스템에 대한 관리자, 슈퍼유저 또는 루트 수준의 제어 권한을 획득할 수 있게 하는 중요한 보안 결함입니다. 이는 공격자가 모든 의도된 보안 경계를 우회하여 시스템 파일 수정, 소프트웨어 설치, 데이터 도난 또는 파일 삭제를 포함한 완전한 제어 권한을 얻게 됨을 의미합니다)였습니다. 그는 책임감 있게 이 사실을 리눅스 커널 팀과 Linus Torvalds本人에게 공개했습니다. 며칠 만에 패치가 이루어졌습니다. 실제 문제는 -- splice()가 데이터를 파이프로 전송할 때, 대상 버퍼에서 이 플래그를 지우는 것을 잊었다는 점입니다. 따라서 splice된 페이지(파일의 읽기 전용 페이지 캐시를 직접 가리킴)에는 여전히 CAN_MERGE가 설정되어 있었습니다. 이제 해당 파이프에 쓰기를 하면, 커널은 CAN_MERGE를 보고 페이지가 쓰기 가능하다고 가정하여, 권한 확인 없이 데이터를 페이지 캐시(파일의 메모리 내 콘텐츠)에 직접 병합합니다. 결과: 사용자는 su, passwd, sudo와 같은 SUID(Set User ID) 루트 바이너리를 포함하여 읽을 수 있는 모든 파일의 내용을 덮어쓸 수 있습니다. 왜 이 버그가 그렇게 중요했는가? 몇 가지 이유가 있습니다: