보안패치 나왔습니다. (feat. 외부페이지)
라이믹스 2.0.19로 업데이트하세요.
릴리즈 노트: https://rhymix.org/news/334
업데이트를 미루고 계신 분들을 위해 구버전 패치도 별도로 배포합니다. 이번이 정말 마지막입니다.
외부페이지로 불러오는 로컬 파일에 PHP 코드나 템플릿 코드가 포함되어 있는 경우, 이를 이용하여 공격자가 서버단에서 실행되는 임의의 코드를 주입할 수 있는 원격 코드 실행(RCE) 취약점입니다. 얼마 전 떠들썩했던 log4j 취약점과 유사한 형태로, 2007년 가을 이후 공개된 모든 버전에 문제가 있습니다. RXE 역사상 가장 오래 묵은 보안취약점이 아닐까 싶네요.
외부페이지에서 템플릿 코드를 사용하지 않더라도 PHP 코드가 한 줄이라도 있다면 위험한 것은 마찬가지이니 안심하지 마시기 바랍니다. 외부페이지 내용을 변환하는 과정이 잘못 설계되어서 관리자가 쓰지 않은 템플릿 코드를 공격자가 임의로 삽입할 수 있다는 점이 문제의 핵심이니까요. (위젯 코드, CSS, JS 코드는 괜찮습니다. 다른 사이트의 URL을 불러오는 외부페이지도 이번 취약점과는 무관하지만, 그건 그것대로 위험한 짓이고...)
라이믹스 2.0.19로 업데이트하시면 모든 외부페이지에서 <!--@if(조건문)-->, {$var}, <load target=""> 등의 템플릿 코드가 작동하지 않게 됩니다. 각 페이지 설정에서 템플릿 코드 해석 여부를 선택하는 옵션이 있으나 기본값이 OFF이므로, 필요한 페이지에 한하여 다시 켜시면 됩니다. 템플릿 코드 해석 기능을 켜더라도 현재 알려진 취약점과 관련해서는 안전합니다. 그러나 유사한 취약점이 또 발견될 수도 있으니, 앞으로는 가급적 외부페이지에서 템플릿 코드 사용을 자제하시기 바랍니다.
라이믹스 1.x 및 XE 1.x용으로 배포하는 패치도 템플릿 코드가 작동하지 않게 되는 것은 마찬가지이지만, 다시 켤 수 있는 옵션 없이 무조건 다 막힙니다. 따라서 외부페이지에서 템플릿 코드를 모두 제거해야 정상 작동하게 됩니다. 템플릿 코드가 꼭 필요한 분은 라이믹스 2.0.19 또는 그 이후 버전으로 업데이트하는 것이 유일한 선택지입니다.
그렇다고 패치를 미루면 더 곤란합니다. RCE 취약점은 관리자 권한 탈취, 민감한 정보 노출은 물론, 사이트를 고스란히 삭제해 버릴 수도 있는 매우 위험한 문제입니다. 얼마 전 log4j 취약점이 알려졌을 때는 마인크래프트를 해킹해서 전혀 다른 게임으로 치환하거나, 남의 사이트를 강제로 패치해 주는 일명 "백신"까지 나왔을 정도로 활용도가 높지요. XSS, CSRF 등 흔히 알려진 취약점 유형과 달리, 사실상 뭐든지 가능한 백지수표라고 보면 됩니다. 일부 외부페이지를 수정할 수 있을 때까지 닫아 두느냐, 사이트를 통째로 빼앗기느냐, 선택은 자유이고 책임은 오롯이 님의 몫입니다.

댓글 56
저는 소개페이지(인사말,연혁,사업소개등등)는 대부분 외부페이지로 만들어 사용중에 있습니다.
위젯페이지나 문서페이지는 온라인에서 수정 할 수 있다는 장점은 있으나, 디테일한 편집 작업은 결국 에디터를 이용해서 편집해야 하다보니.
이부분을 좀 보완시킨 기능이 나오면 좋겠다는 생각을 늘 하고 있긴 하네요.
외부페이지 문서도 관리자가 웹에서 직접 수정 할 수 있으면 간단한 수정 같은건 로그인해서 수정 하면 되니.
그런데 외부페이지에서 html 형태가 아닌 프로그램 코드가 추가 되었다면 머리가 좀 아파지네요.
외부페이지를 만들기보다는 그냥 빈 문서페이지로 해놓고
레이아웃에서 mid에 따라 적당한 템플릿을 인클루드하는 방법도 좋습니다.
이 때, 모듈에서 출력하는 $content는 상큼하게 무시해 버립니다.
<!--@if($mid === 'about')-->
<include target="pages/about.html" />
<!--@else-->
{$content}
<!--@end-->
사이트에서 커스터마이징한 대부분의 페이지를 전체 디자인과 함께 관리할 수 있다는 이점이 있습니다.
다음에 이런 취약점이 발견되더라도 라이믹스 1.x 및 XE 1.x용 패치를 별도 배포하지 않을 수도 있다는 얘기입니다. 구 버전 지원 종료 선언일 뿐, 라이믹스 2.x의 업데이트 일정과는 무관합니다.