자유게시판

보안패치 나왔습니다. (feat. 외부페이지)

2022.03.16 02:08
2,191
5

라이믹스 2.0.19로 업데이트하세요.

릴리즈 노트: https://rhymix.org/news/334

 

업데이트를 미루고 계신 분들을 위해 구버전 패치도 별도로 배포합니다. 이번이 정말 마지막입니다.

- 라이믹스 1.x 패치

- XE 1.x 패치

 

외부페이지로 불러오는 로컬 파일에 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 등 흔히 알려진 취약점 유형과 달리, 사실상 뭐든지 가능한 백지수표라고 보면 됩니다. 일부 외부페이지를 수정할 수 있을 때까지 닫아 두느냐, 사이트를 통째로 빼앗기느냐, 선택은 자유이고 책임은 오롯이 님의 몫입니다.

 

기진곰 Lv. 25
라이믹스 개발자 겸, 전속 곰탱이입니다.

댓글 56

  • 2022.06.29 07:55 #1694621

    저는 소개페이지(인사말,연혁,사업소개등등)는 대부분 외부페이지로 만들어 사용중에 있습니다.
    위젯페이지나 문서페이지는 온라인에서 수정 할 수 있다는 장점은 있으나, 디테일한 편집 작업은 결국 에디터를 이용해서 편집해야 하다보니.
    이부분을 좀 보완시킨 기능이 나오면 좋겠다는 생각을 늘 하고 있긴 하네요.
    외부페이지 문서도 관리자가 웹에서 직접 수정 할 수 있으면 간단한 수정 같은건 로그인해서 수정 하면 되니.

    그런데 외부페이지에서 html 형태가 아닌 프로그램 코드가 추가 되었다면 머리가 좀 아파지네요.

  • 2022.06.29 08:16 #1694626

    외부페이지를 만들기보다는 그냥 빈 문서페이지로 해놓고
    레이아웃에서 mid에 따라 적당한 템플릿을 인클루드하는 방법도 좋습니다.
    이 때, 모듈에서 출력하는 $content는 상큼하게 무시해 버립니다.

    <!--@if($mid === 'about')-->
        <include target="pages/about.html" />
    <!--@else-->
        {$content}
    <!--@end-->

    사이트에서 커스터마이징한 대부분의 페이지를 전체 디자인과 함께 관리할 수 있다는 이점이 있습니다.

  • 2022.03.20 02:16 #1667692
    구버젼 패치가 마지막이라는건... 혹시 담번엔 2.2로 버젼 올라가나요?
  • 2022.03.20 10:18 #1667747

    다음에 이런 취약점이 발견되더라도 라이믹스 1.x 및 XE 1.x용 패치를 별도 배포하지 않을 수도 있다는 얘기입니다. 구 버전 지원 종료 선언일 뿐, 라이믹스 2.x의 업데이트 일정과는 무관합니다.

  • 2022.03.21 02:48 #1668055
    감사합니다 :)
  • 2022.03.21 20:15 #1668439
    2.0.20 새로 만들어 주셨네요. 감사합니다. 적용해봤는데 잘 되네요~~~~~ 👍