프록시 소프트웨어 Xray-core는 오랫동안 '인증서 검증 건너뛰기' 기능, 즉 allowInsecure 옵션을 못마땅하게 여겨 왔다. 유지보수팀은 이 옵션을 켜는 것이 사실상 아무런 보안 장치 없이 '알몸으로' 네트워크에 노출되는 것과 같으며 중간자 공격(MITM)에 취약해진다고 주장해 왔다. 그런데 정작 Xray-core 자체의 결함이 사용자를 그 '알몸' 상태로 만들었을 때 어떤 일이 벌어졌는지가 이번 제보의 핵심이다. 취약점을 발견해 제보한 당사자가 net4people 포럼에 공개한 일지에 따르면, 이 문제는 설계 방침과 실제 대응 사이의 괴리를 적나라하게 드러낸다.
이중 방어에서 단일 방어로
이야기의 출발점은 2021년 10월 21일 추가된 pinnedPeerCertificateChainSha256 옵션이다. 이 옵션은 일반적인 인증서 검증에 더해 사용자 지정 인증서 체인 고정(pinning) 로직을 추가로 수행하는, 말하자면 이중 방어 장치였다. 자체 서명 인증서를 쓰려는 사용자는 allowInsecure와 이 옵션을 함께 켜서 일반 검증은 건너뛰되 체인 고정 검증만 수행하는 방식으로 안전하게 운용할 수 있었다. 알려진 결함도 없었다.
문제는 2026년 1월 9일 Xray-core가 이 옵션을 제거하고 pinnedPeerCertSha256라는 새 옵션으로 대체하면서 시작됐다. 사용자가 검증을 건너뛰지 못하게 하겠다는 취지였지만, 기존 옵션이 사라졌기 때문에 사용자들은 선택의 여지 없이 새 옵션으로 이전해야 했다. 그리고 1월 13일 공개된 첫 버전부터 이 새 옵션에는 인증서 검증 우회 취약점이 들어 있었다. 다만 이 시점까지는 자체 서명 인증서를 쓰지 않고 allowInsecure도 켜지 않은 사용자라면 일반 검증이 어느 정도 보호막 역할을 해 주고 있었다.
마지막 보호막이 걷힌 순간
방어선이 완전히 무너진 것은 1월 16일이다. Xray-core가 pinnedPeerCertSha256의 동작을 수정해, 이 옵션을 쓰면 항상 일반 인증서 검증을 건너뛰고 사용자 지정 고정 로직만 수행하도록 바꾼 것이다. 즉 일반 검증이라는 보호 계층이 상시 제거된 상태에서, 그 자리를 대신해야 할 고정 로직 자체에 우회 결함이 있었다. 두 겹 가운데 하나를 떼어냈는데 남은 한 겹에 구멍이 있었던 셈이니, 결과적으로 인증서 검증이 사실상 존재하지 않게 되어 중간자 공격이 성립할 수 있는 상태가 됐다.
제보자는 2026년 2월 6일 이 취약점을 확인하고 유지보수팀에 비공개로 알렸다. 그가 설명한 원리는 단순하다. 중간자 공격자가 인증서 체인의 아무 위치에나 리프(leaf) 인증서를 끼워 넣어도 고정 로직이 그 리프 인증서를 성공적으로 검증해 버려 공격이 통한다는 것이다. 본인 표현대로 '고급 보안 지식 없이도 한눈에' 알아챌 만큼 초보적인 결함이었다.
공개 대신 선택한 침묵
문제는 발견 이후의 대응이다. Xray-core는 같은 날 이 결함을 조용히 수정했지만, 커밋 메시지에는 '코드를 단순화한다'고만 적어 실제 성격을 에둘러 표현했다. 같은 날 배포된 새 버전에도 보안 취약점에 대한 언급은 전혀 없었고, 사용자는 상황을 알 수 없었다. 더 나아가 같은 날 텔레그램 채널에는 '소프트웨어는 보안을 핵심에 두고 설계되어야 하며, 인적 요인의 영향을 제거해 가장 말단의 사용자조차 알몸으로 노출되지 않도록 해야 한다'는 취지의 글이 올라왔다고 한다. 제보자는 바로 그 '인적 요인'이 Xray-core 자신이었다고 지적한다. 안전한 옛 옵션을 없애고 결함 있는 새 옵션으로 강제 이전시킨 결과, 가장 말단의 사용자들이 한 달 가까이 자신도 모르게 노출돼 있었기 때문이다.
이 사건이 한국의 실무자에게 주는 교훈은 특정 도구에 대한 비판을 넘어선다. 첫째, 보안 옵션을 폐기하고 신규 옵션으로 강제 마이그레이션할 때는 신규 구현의 검증 성숙도가 기존 수준에 미치는지가 핵심이며, 특히 '검증을 항상 건너뛴다'는 식의 기본 동작 변경은 단일 실패 지점을 만들기 쉽다. 둘째, 인증서 체인 고정을 직접 구현할 때 리프 인증서의 위치를 고정하지 않으면 체인 어디든 끼워 넣기 공격에 뚫린다는 점은, 자체 핀닝 로직을 다루는 모든 팀이 되새길 전형적 실수다.
끝으로 공급망 투명성의 문제가 남는다. 제보자에 따르면 Xray-core는 2026년 7월 3일까지도 이 취약점을 사용자에게 공개하지 않았다. 더욱이 그날 그는 앞선 수정이 불완전해 특정 조건에서 여전히 검증 우회가 가능하다는 사실을 발견했고, 재차 은폐되는 것을 막기 위해 결국 GitHub 보안 권고(Security Advisory)를 통해 공식 보고하는 길을 택했다. 그의 서술이 사실이라면 사용자들은 반년 가까이 노출 상태에 있었던 셈이다. 다만 이 기록은 제보자 한쪽의 일지에 기반한 것인 만큼, 각 버전의 변경 이력과 보안 권고 내용을 직접 대조해 영향 범위와 패치 완결 여부를 확인하는 절차가 실무 차원에서는 반드시 필요하다.