Nextcloud를 직접 호스팅하는 입장에서는 위험을 다르게 평가하게 됨. 일반적인 운영 사이트는 로드 밸런서 뒤에 여러 VM·컨테이너와 PHP 작업 프로세스를 두고 봇 트래픽도 계속 받겠지만, 내 환경은 그렇지 않으며 개인 호스팅 대부분도 비슷할 듯함.
공격자가 PHP·OS·작업 프로세스 수의 수많은 조합을 시험할 필요도 없음. 나는 공식 Nextcloud Docker 이미지의 기본 설정을 그대로 쓰므로 최신 이미지만 보면 전부 알 수 있음. WAF도 사용하지 않으며 Nextcloud 기본 설정에도 들어 있지 않음. 요청 횟수 제한은 좋은 대책이지만 153회 요청으로 공격할 수 있다면 차단 기준에 걸릴지도 모르겠음.
트래픽이 적고 봇 방어가 없으며 버전 정보가 드러나는 기본 설정에 가까운 사이트라면 공격이 가능하다는 조건이 바로 내 환경에 해당함. 취약점 예고 직후 Nextcloud 인스턴스 두 개를 모두 내려둔 건 잘한 선택으로 느껴짐.
그 관점에서는 타당하며, 개인 서버를 반나절 껐다가 패치 후 켜는 데 드는 비용도 작음. 반면 중대형 사이트의 서비스 중단 비용은 상당함. 나는 하루 종일 HN·Reddit·Lobsters·여러 소셜 플랫폼을 뒤지며 정보를 찾고, 완화 조치를 적용하고, 배포판 대응이 늦어 PHP를 직접 컴파일하고, WAF 규칙을 조정하고, 일부 자원을 비활성화하고, 고객에게 침해 위험과 중단 위험을 설명해야 했음.
원문에서 내가 분석한 내용이 맞다면 사실상 불필요한 대응이었음. 매우 심각하며 신속히 패치해야 한다고 알리되, 트래픽이 중간 이상인 사이트를 공격하려면 탐지·차단하기 쉬운 DoS를 며칠간 지속해야 한다는 설명도 덧붙였다면 전 세계 운영·보안팀의 시간과 혼란을 크게 줄였을 것임. 몇몇 국가는 정부 서비스의 절반을 중단하기까지 했음.
강력한 해킹 에이전트에 대한 공포로 이익을 얻는 AI 보안 업체들의 마케팅에 많은 이들이 이용된 듯함. 이런 일이 일상이 되면 악성 요청 하나로 루트 권한을 얻는, 정말 긴급 대응이 필요한 다음 Heartbleed·Shellshock급 취약점을 충분히 심각하게 받아들이지 않을까 우려됨.
나도 비슷한 환경이지만 간단한 우회책이 있음. PHP 프로세스가 요청 하나만 처리하고 종료하도록 제한하면 됨. 트래픽이 적다면 추가 부하도 별 영향이 없음. 이런 우회책 안내가 더 없었던 건 조금 아쉽지만, 업데이트가 쉬웠고 인력과 자금이 부족한 PHP 보안팀에 추가 업무와 비판을 떠넘길 수도 있어 크게 탓하기는 어려움.
Cloudflare 뒤에 있지 않거나 사용자가 수백 명이 아니라는 이유로 나와 친구들의 데이터가 담긴 Nextcloud가 침해되는 위험을 감수하고 싶지는 않음. 악용이 생각보다 어렵다는 건 운이 좋았던 것이며, 훨씬 나쁠 수도 있었음.
곧 여기저기서 나타날 CVSS 10 취약점에 대비하는 훈련이었을 수도 있음. PHP 서비스를 도저히 끌 수 없다는 이들을 여럿 봤는데, 서버와 사용자 데이터가 실제로 털리는 상황에서도 얼마나 심각해져야 잠시 중단할지 궁금함. AWS나 GitHub보다 높은 가동률을 지키려다 감독기관에 사용자 데이터를 모두 잃은 이유를 설명하는 편을 택하는 셈임.
나도 Nextcloud를 직접 호스팅하지만, 계정이 없는 외부인이 실제로 얼마나 공격할 수 있는지 궁금함. 사용자는 배우자와 나뿐이며, 배우자가 서버에서 코드를 실행하고 싶다면 그냥 비밀번호를 요청하면 됨.
외부에 공개된 건 로그인 페이지뿐임. POST 요청은 가능하지만, 내가 파악한 바로는 Nextcloud가 취약하다고 분류된 근거는 Docker 이미지에 취약한 PHP가 들어 있다는 것이었음. 보안을 희망에 맡겨서는 안 되겠지만, 로그인 페이지는 신뢰할 수 없는 입력을 처리하도록 설계했으리라 기대함.
인스턴스를 관찰했지만 이상한 로그나 프로세스는 보이지 않았음. 업무와 가족 일정 때문에 패치 공개 후 10시간이 지나서야 업데이트했지만, 공격에는 매우 특정한 조건 조합이 필요하므로 어설픈 자동 공격이 실패하고 지나갔을 가능성이 커 보임. 이론적으로 침해될 수는 있었지만, 관찰한 내용과 공격 방식에 비춰 실제 침해 가능성은 낮게 봄.
나는 WAF를 대체로 예측하기 어려운 버그를 끼워 넣는 장치처럼 봄. 대표 기능으로 내세우는 SQL 삽입 차단부터 신뢰성 있게 보장하기 어려움.
하지만 널리 쓰이는 소프트웨어를 노리는 무차별 취약점 공격 차단은 WAF가 잘하는 일임. 특히 24시간 보안팀이 새 취약점 대응 규칙을 배포해 주면 내가 일어나 패치 방법을 찾을 때까지 시간을 벌 수 있음. 패치를 대체하거나 표적 공격을 확실히 막지는 못하지만, 공개 인터넷에서 WordPress를 운영한다면 유료 WAF를 진지하게 고려할 것임.
그렇다고 WAF로 완화할 수 있다는 이유로 취약점을 가볍게 봐서는 안 됨. 누구나 품질 좋은 최신 규칙을 적용하고 있다고 가정할 수는 없음.
언어 유지관리자가 패치 전 서버를 끄라고 권고했다면 대부분 조직의 대응을 탓하기 어려움. https://lobste.rs/s/t73wqi/just_rumour_bug_is_enough_find_security 에서 시작된 전달 과정에서, 패치 공개 몇 분 뒤 자동 공격이 시작됐다는 사실이 패치 예고만으로 몇 분 안에 취약점을 찾아 모든 환경에서 작동하는 공격 개념 증명까지 만들었다는 식으로 와전된 듯함.
반면 명성을 얻으려고 취약점을 무책임하게 활용하고, 합의한 공개 유예를 어겨 다른 이들을 위험에 빠뜨린 업체들은 비판받아야 함. Calif는 공격 시연 영상을 올리기 전에 날짜조차 확인하지 않았고, Chainguard는 공개 유예를 어겼음. 서로 발견 공로를 차지하려는 모습까지 보임. https://shellsharks.com/php2chaos 를 참고할 수 있음. 업체들의 행태가 몹시 씁쓸함.
나는 Chainguard를 특별히 탓하지 않음. 패치가 사실상 유출된 것이나 다름없고 실제 공격 시도까지 발생한 뒤에야 이미지를 공개했기 때문임.
전체 경위를 자세히 아는 건 아니라 해석이 틀릴 수 있지만, AI 에이전트와 LLM에 대한 과신·과의존이 공포를 키운 듯함. 취약점 소문이 퍼지자 누구나 챗봇에 분석을 맡겼고, 챗봇은 그럴듯하지만 일부만 작동하거나 검증을 견디지 못하는 결과를 빠르게 대량 생산함. 악의적인 운영자라면 곧바로 공격까지 시도하므로, 소식 직후부터 “검증된 공격”과 “진행 중인 공격”이 쏟아지게 됨.
대응하는 쪽도 신뢰할 정보가 부족하고 상황이 빠르게 바뀌니 LLM 분석에 의존했을 수 있음. 현재 모델은 보안 문제를 과장하고 극적으로 표현하는 경향이 있어, 인터넷 핵심 기반을 뒤흔드는 취약점이라며 최악의 두려움을 확인해 줬어도 놀랍지 않음.
AI가 실제로 재앙적인 공격을 할 수 있다는 기존 공포와 안전을 우선하는 합리적인 태도까지 더해지면, 전문가도 광범위한 피해 보고를 쉽게 믿게 됨. 실제 영향 평가에는 여전히 사람의 신중한 분석이 필요하지만, 그 속도는 이런 정보 확산에 비해 너무 느림.
지난 18개월가량 Linux의 로컬 권한 상승 취약점이 꾸준히 나왔다는 점도 문제임. 그중 하나라도 원격 코드 실행 취약점과 결합하면 치명적임. 특히 전용 서버의 로컬 권한 상승 취약점은 패치를 미루기 쉬우므로 위험이 실재함.
PHP 권한만으로 웹 애플리케이션의 데이터베이스를 읽는 등 필요한 접근이 가능하다면 루트 권한 상승조차 필요 없음.
PHP 유지관리자가 매우 심각한 취약점이며 패치 전 유일한 완화책은 서버 중단이라고 권고했으니, 그에 따라 중단하는 게 올바른 대응임.
이번 일로 잘못된 안도감이 생겨 다음에는 대응이 부족해지지 않기를 바람. 충분한 분석이 끝난 뒤 다른 보안 전문가들도 유지관리자의 판단이 옳았다고 평가할지 궁금함.
이 취약점으로 실제 침해가 발생한 사례가 있는지 궁금함.
아직 불분명함. Cloudflare와 AWS 등이 공격 시도를 관측했다고 발표한 건 봤지만, 웹사이트가 실제로 침해됐다는 보고는 보지 못한 듯함.
한발 떨어져 보면, 특히 완전 공개 이후에도 이 취약점에 당할 만한 운영자는 침해 사실을 알아낼 역량도 없을 것임.
같은 프로세스에 연속으로 요청해야 한다면, 고정 세션(sticky session) 을 쓰는 애플리케이션은 공격하기 더 쉽지 않을까?
고정 세션은 같은 서버로 보내줄 뿐 같은 프로세스까지 보장하지는 않음. 그래도 공격이 쉬워지는 건 맞음.
실제 환경에서 악용하기에는 변수가 많고 쉽지 않은 취약점이지만, 공격자가 적어도 일부 표적에는 무기화할 수 있다고 가정하는 게 합리적임. 따라서 사이트를 중단하고 업데이트를 기다리는 대응도 타당하다고 봄.
대규모 악용에 대한 공포가 다소 과장됐다는 건 초기 공격 개념 증명이 공개됐을 때부터 분명했음. 그래도 모두가 대수롭지 않게 여기고 계속 운영했다면, 누군가 특정 WordPress·Nextcloud 버전에 맞는 공격을 개발해 취약한 공개 인스턴스를 대량으로 공격했을 수 있음.
악용이 쉽지 않다는 사실의 양면성이 미묘한 부분임. 쉬웠다면 대규모 DDoS 도구로 인터넷 전체의 PHP 서버를 공격하는 무리가 몰려들었을 것임. 아직 그렇게 될 가능성은 있지만, 서버마다 공을 들여야 한다면 수지가 맞지 않을 수 있음.
반대로 눈에 띄는 대량 공격이 없어서, 오래된 PHP를 쓰는 수많은 소규모 서비스가 패치 없이 계속 운영될 수도 있음. 관심 밖이던 개인 WordPress 블로그가 누군가를 화나게 하는 글로 주목받은 뒤 표적 공격에 당하는 식임.
이럴 때는 Cloudflare 같은 WAF 서비스가 실제로 도움이 될 수도 있음. 개인적으로는 대량 자동 공격이 어렵다는 사실 때문에 오히려 취약한 서버가 오랫동안 남을 가능성이 걱정됨. 내가 유일하게 번호를 외우는 Microsoft 보안 공지인 MS08-067처럼 보안 분야에서 두고두고 다뤄질지도 모름. https://learn.microsoft.com/en-us/security-updates/… 을 참고할 수 있음.