TECH 으로 돌아가기
TECH HACKER NEWS 오늘 9분 읽기 22 READS

워드프레스 코어에 로그인 없이 터지는 경로 탐색 취약점, 조건에 따라 서버 장악까지

워드프레스 코어에 로그인 없이 터지는 경로 탐색 취약점, 조건에 따라 서버 장악까지
SOURCE IMAGE · HACKER NEWS
워드프레스 코어에 로그인 없이 터지는 경로 탐색 취약점, 조건에 따라 서버 장악까지

워드프레스 코어에서 로그인 없이도 공격할 수 있는 경로 탐색(Path Traversal) 취약점이 공개됐어요. 워드프레스 개발팀이 GitHub 보안 권고(GHSA-7hp8-65ch-5whp)를 통해 직접 알린 건데요, 인증되지 않은 공격자가 서버의 파일 경로를 조작할 수 있고, 서버 환경에 따라서는 원격 코드 실행(RCE)까지 이어질 수 있다는 내용이에요. 워드프레스가 전 세계 웹사이트의 40% 안팎을 돌리고 있다는 걸 생각하면, 코어 자체에서 나온 무인증 취약점은 그냥 넘길 수 없는 뉴스거든요.

경로 탐색이 뭐냐면

이게 뭐냐면, 프로그램이 파일 경로를 만들 때 사용자가 넣은 값을 제대로 검사하지 않아서 생기는 문제예요. 예를 들어 서버가 '테마 폴더 안에서 이 파일을 열어줘' 하고 사용자 입력을 경로에 그대로 붙인다고 해볼게요. 공격자가 파일 이름 자리에 ../../wp-config.php 같은 값을 넣으면, ..이 '한 단계 위 폴더'라는 뜻이라서 원래 의도한 폴더를 벗어나 데이터베이스 비밀번호가 들어있는 설정 파일까지 올라가버리는 거예요.

비유하자면 아파트 택배함에 '101호'라고 써야 하는데 '../../관리사무소/금고'라고 써도 경비원이 그대로 안내해주는 상황이라고 보면 돼요. 주소 형식을 검사하지 않으니 원래 갈 수 없는 곳까지 가게 되는 거죠.

무인증이라는 게 왜 무서운가요

워드프레스 취약점은 매년 수천 건씩 나오지만, 대부분은 두 가지 특징이 있어요. 첫째, 코어가 아니라 서드파티 플러그인이나 테마에서 나와요. 둘째, 공격하려면 최소한 구독자(Subscriber)나 기여자(Contributor) 같은 낮은 권한의 계정이라도 있어야 하는 경우가 많아요.

그런데 이번 건은 둘 다 아니에요. 워드프레스 코어에서 나왔고, 계정이 아예 없어도 공격이 가능해요. 그 말은 인터넷에 노출된 워드프레스 사이트라면 누구든 시도해볼 수 있다는 뜻이고, 자동화된 스캐너가 전 세계 사이트를 긁으면서 취약한 버전을 찾아다니는 데 며칠이면 충분하다는 뜻이기도 해요.

'조건부' RCE라는 말의 의미

권고 제목에 '조건부(conditional) RCE'라고 되어 있는 게 포인트인데요. 경로 탐색 자체는 파일을 읽거나 불러오는(include) 것까지만 가능해요. 그런데 PHP에서 파일을 include하면 그 안의 PHP 코드가 실행되거든요. 그래서 공격자가 자기가 원하는 내용이 담긴 파일을 서버 어딘가에 미리 놓을 수만 있으면, 그 파일을 경로 탐색으로 불러와서 코드를 실행시킬 수 있어요.

이런 유형의 취약점에서 '조건'은 보통 이런 것들이에요. 사용자가 이미지나 첨부파일을 업로드할 수 있는 기능이 켜져 있는지, 서버가 접근 로그나 세션 파일을 예측 가능한 경로에 저장하는지, PHP 설정에서 특정 스트림 래퍼가 허용되어 있는지 같은 거요. 즉 사이트마다 환경이 다르기 때문에 어떤 사이트는 파일 노출 정도로 끝나고 어떤 사이트는 서버를 통째로 넘겨주게 되는 거예요. '우리 사이트는 조건에 안 맞으니 괜찮겠지'라고 생각하기보다는, 공격자가 그 조건을 만들어낼 수 있는 다른 플러그인 취약점을 조합할 수 있다는 걸 염두에 두는 게 안전해요.

그래서 뭘 해야 하나요

가장 먼저 워드프레스 코어를 최신 버전으로 올려주세요. 워드프레스는 보안 패치를 마이너 버전으로 자동 배포하는데, 호스팅 업체나 관리자가 자동 업데이트를 꺼둔 경우가 의외로 많거든요. 관리자 화면에서 자동 업데이트 상태부터 확인해보세요.

그다음으로는 취약점이 RCE로 이어지는 '조건'을 미리 끊어두는 게 좋아요.

업계 맥락에서 보면

이번 권고가 GitHub Security Advisory(GHSA) 형식으로 나온 것도 눈여겨볼 만해요. 예전에는 워드프레스 보안 이슈가 릴리스 노트에 한 줄로 묻어 나오는 경우가 많았는데, 최근에는 오픈소스 프로젝트들이 GitHub의 권고 시스템을 통해 CVE 발급, 영향 범위, 패치 커밋을 한 곳에서 관리하는 흐름이 자리 잡고 있어요. Dependabot이나 각종 취약점 스캐너가 이 데이터를 그대로 읽어가기 때문에, 패치 소식이 도구 생태계에 훨씬 빨리 퍼지게 되는 거죠.

한편으로는 워드프레스 생태계의 구조적인 약점도 다시 보이는데요. 코어는 비교적 잘 관리되지만, 6만 개가 넘는 플러그인 중 상당수는 관리가 멈춘 상태예요. 코어 취약점 하나가 방치된 플러그인의 작은 구멍과 결합하면 '조건부'가 '무조건'이 되는 건 순식간이거든요.

한국 개발자에게는

국내에는 기업 홈페이지, 브랜드 블로그, 소규모 쇼핑몰이 워드프레스로 만들어진 경우가 정말 많아요. 특히 에이전시가 만들어주고 떠난 뒤 아무도 관리하지 않는 사이트가 문제인데요. 이런 사이트는 워드프레스 버전이 몇 년 전에 멈춰 있고, 자동 업데이트도 꺼져 있는 경우가 흔해요. 회사에서 '우리 홈페이지 워드프레스였나?' 싶으면 지금 한 번 확인해보시는 게 좋아요.

직접 워드프레스를 만지지 않는 개발자에게도 배울 점이 있어요. 사용자 입력이 파일 경로에 들어가는 코드는 언어를 가리지 않고 같은 문제가 생기거든요. Node.js에서 path.join(baseDir, userInput)을 쓸 때 결과가 baseDir 안에 있는지 검사하는지, Python에서 os.path.realpath로 정규화한 뒤 접두사를 확인하는지, 이번 기회에 내 코드도 한 번 돌아보면 좋겠어요.

마무리

한 줄로 정리하면, 워드프레스 코어에서 로그인 없이 터지는 경로 탐색 취약점이 나왔고 환경에 따라 서버 장악까지 갈 수 있으니 지금 바로 업데이트하고 업로드 폴더 PHP 실행부터 막아두자는 거예요.

여러분 회사나 개인 프로젝트에서 워드프레스 사이트 관리는 누가 하고 있나요? 자동 업데이트를 켜두는 편인가요, 아니면 플러그인 호환성 때문에 수동으로 관리하시나요? 경험을 나눠주세요.


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://github.com/WordPress/wordpress-develop/security/advi...
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기
처리 중...