- Salt Typhoon 침해 이후 통신 오픈소스를 확인하는 과정에서, FreeSWITCH에 번들된 XMLRPC 라이브러리에서 인증 없는 버퍼 오버플로가 발견됨
- 취약점은 공격자가 제공하는 Request URI를 4096바이트 스택 변수에
sprintf()로 기록하는 코드에서 발생하며, 브라우저 제한과 별개로 4096자 초과 요청이 가능할 수 있음 - SignalWire는 2025년 2월 GitHub에 수정 PR 3개가 공개됐다고 답했지만, FreeSWITCH Community의 새 릴리스는 2025년 여름까지 계획이 없다고 밝힘
- Shodan에는 FreeSWITCH 검색 결과가 약 8,300건 있었고, 릴리스 태그가 없는 운영자는 소스 빌드나 방화벽 차단으로 직접 대응해야 하는 상황임
- 이 사례는 통신 보안의 위험이 취약점 자체뿐 아니라 취약점 관리와 릴리스 대응에서도 커진다는 점을 보여주며, 2025년 4월 30일 CVE-2025-44087이 배정된 뒤에도 FreeSWITCH 릴리스는 없었음
Salt Typhoon 이후 FreeSWITCH를 살펴본 계기
- 2024년 말, 중국 정부와 연관됐다고 알려진 Salt Typhoon 그룹이 T-Mobile과 다른 통신사를 침해했다는 소식이 출발점이 됨
- 이동통신사 네트워크를 직접 조사할 수는 없었지만, GitHub에는 통신 관련 오픈소스 프로젝트가 많았음
- 과거 Asterisk와 FreeSWITCH를 쓰는 회사들과 일한 경험은 있었으나, PBX, SIP, 오디오 인코딩을 깊게 분석한 경험은 없었음
- 통신 분야에는 뛰어난 C 프로그래머, 오래된 해커 커뮤니티, Bell Labs 출신 엔지니어들의 전통이 있어 단순한 취약점은 이미 발견됐을 것이라고 예상함
- 하지만 FreeSWITCH 소스코드를 열어본 직후 취약점이 발견됨
XMLRPC HTTP 요청 처리기의 버퍼 오버플로
- FreeSWITCH에 번들된 XMLRPC 라이브러리의 HTTP 요청 처리기가 고정 크기 스택 버퍼
z[4096]에 URI를 기록함 - 문제 코드는
sprintf(z, "Index of %s" CRLF, uri);형태이며,uri는 Request URI의 path 부분에서 오기 때문에 공격자가 제어할 수 있음 - 일반 브라우저는 2048자보다 긴 URL을 잘 지원하지 않는 경우가 많지만, 관련 RFC는 대부분 약 8KB까지 허용하고 Cloudflare는 32KB까지 지원함
- 공격자가 4096자를 넘는 Request URI를 보낼 수 있다고 보는 것이 합리적이며, 이 조건이 XMLRPC 라이브러리의 무인증 버퍼 오버플로로 이어짐
- 원격 코드 실행으로 확장하는 과정은 다루지 않음
수정 방식과 공개된 패치
- 수정 방향은
sprintf()대신snprintf()를 사용하는 것임 - 이는 기본적인 방어적 C 프로그래밍 관행에 해당함
- SignalWire는 문제가 최근 수정됐다며 다음 PR을 제시함
- 패치가 이미 GitHub에 공개된 상태였기 때문에 공개 글 작성이 가능하다고 판단함
취약점 공개 과정과 릴리스 공백
- 2025년 1월 27일, FreeSWITCH 보안 정책에 적힌 이메일 주소로 취약점 세부 내용을 보냄
- 2025년 2월 7일, 보고서를 받았는지 확인하는 후속 이메일을 보냄
- 같은 날 Andrey Volk가 취약점이 최근 수정됐고 관련 PR을 보라고 답함
- 새 보안 수정이 포함된 릴리스 태그 일정을 묻자, FreeSWITCH Community 릴리스는 2025년 여름까지 계획이 없다는 답변을 받음
- 이로 인해 FreeSWITCH Advantage를 지불하지 않는 사용자는 정규 릴리스 시점까지 취약한 상태로 남을 수 있음
노출 규모와 운영자 영향
- 당시 Shodan에서 FreeSWITCH 검색 결과는 약 8,300건이었음
- 이 인스턴스들이 모두 엔터프라이즈 지원을 지불한다고 보기 어렵기 때문에, 전 세계 수천 개의 통신 스택이 여름까지 취약한 상태로 남을 수 있다고 봄
- 패치가 GitHub에 공개됐더라도 릴리스 태그가 없으면 일반 운영자가 쉽게 업데이트하기 어려움
- FreeSWITCH 운영자는 SignalWire의 릴리스를 기다리는 대신 다음 조치를 고려해야 함
- 소스에서 직접 재빌드
- 방화벽 수준에서 FreeSWITCH 스택의 공개 HTTP 접근 차단
통신 보안의 구조적 문제
- 통신 업계 지인과의 대화에서는 FreeSWITCH의 대응 속도조차 빠른 편이라는 반응이 나옴
- 2024년 12월에도 전화망에 17년 동안 존재해온 SS7 취약점에 대한 경고가 다시 나왔음
- 이 경험 이후 Asterisk나 다른 소프트웨어를 추가로 살펴보지 않음
- 결론적으로 오늘날 통신 보안은 좋지 않은 상태로 평가됨
- 이런 시스템을 안전하게 만드는 데 돈을 벌 유인이 거의 없다는 점이 큰 원인으로 보임
이후 상태
- 2025년 4월 30일 업데이트에서, 보고된 버퍼 오버플로에 CVE-2025-44087이 배정됨
- 같은 시점에도 FreeSWITCH의 태그나 릴리스는 없었음