안드로이드 단말에도 탑재되어 있는 리눅스 커널에 임의 파일을 덮어쓸 수 있는 취약성이 발견됐다. 루트 권한이 필요한 파일도 덮어쓸 수 있어 특권 승격을 실시할 수 있기 때문에 영향이 클 수 있다.
이 취약성은 더티파이프(Dirty Pipe) CVE-2022-0847로 명명됐다. 명칭에서 알 수 있듯 리눅스에서 복수 프로그램 통신을 담당하는 파이프에서 기인하는 것이다. 리눅스는 한 번 읽은 파일을 메모리에 캐시로 둬서 다시 액세스할 때 읽기 속도를 가속화하는 페이지 캐시라는 메커니즘이 존재하지만 더티 파이프를 이용해 파이프를 통해 페이지 캐시 임의 영역을 자유롭게 재기록 가능하게 되어 있다.
이런 취약성 단독으로는 공격 대상이 메모리상 캐시만 하는 것으로 실제 파일을 재기록하지 않기 때문에 흔적을 남기지 않고 공격할 수 있는 것 외에 캐시만 재기록하는 특성상 CD-ROM 등 읽기 전용 데이터를 재기록하는 것도 가능하다. 이 캐시 재기록을 통해 SSH 키를 불법적으로 만들거나 사용자를 만들고 루트 권한을 부여할 수 있다.
리눅스 커널 코드에 근본적인 문제가 있기 때문에 리눅스를 수정 버전으로 업데이트하는 이외 대책은 존재하지 않는다고 한다. 이 취약점이 2022년 2월 20일 커널 보안팀에 보고된 뒤 2월 23일 업데이트를 통해 수정됐다. 수정 후 버전 번호는 5.16.11, 5.15.25, 5.10.102다. 다만 리눅스 커널 코드에 이 취약성이 포함되게 된 건 버전 5.8이므로 5.8보다 이전 버전을 이용하고 있는 경우에는 대응할 필요가 없다.
리눅스를 이용하고 있는 안드로이드도 이 취약성 영향을 받는다. 구글은 2월 24일 수정 패치를 안드로이드 커널에 병합했다. 자신의 안드로이드 단말이 이 취약점을 안고 있는지는 설정→디바이스 정보→안드로이드 버전에서 커널 버전을 확인한다. 이 버전이 5.8 미만인 경우에는 문제가 없지만 5.10 계열로 3번째 숫자가 102 미만이면 취약성을 갖고 있으며 5.15계열은 3번째 숫자가 25 미만, 5.16 계열은 11 미만이면 취약성이 있어 업데이트가 필요하다.
해당 취약점을 발견한 연구자는 이 문제에 대해 발견에 이른 경위와 개념 실증 코드 등 자세한 내용을 리포트로 정리하고 있다. 관련 내용은 이곳에서 확인할 수 있다.