PHP 보안 릴리스 4종 공개, 11건 무더기 수정
PHP 팀이 9월 24일에 지원 중인 네 개 브랜치를 한꺼번에 갈아치웠습니다. 8.5.11, 8.4.26, 8.3.35, 8.2.34가 동시에 나왔고, 전부 보안 릴리스입니다. 4개 버전을 통틀어 보안 취약점 11건이 수정됐고, 8.2부터 8.5까지 쓰고 있다면 일단 올리는 게 맞습니다. 같은 날 다음 메이저인 8.6.0 RC2도 함께 공개됐는데, 원래 나오려던 RC1이 패키징 실수로 취소되고 RC2로 넘어간 것이고 RC3는 10월 8일 예정입니다. RC는 테스트용이라 운영에 올리면 안 됩니다.
수정된 것 중 운영에 바로 걸리는 것들부터 보겠습니다. TLS 관련 결함이 하나 있는데, SAN(Subject Alternative Name) 검증이 실패했을 때 인증서의 CN(Common Name) 필드로 되돌아가 검사하는 동작이라 다른 호스트의 인증서를 통과시킬 수 있습니다. 요즘 인증서는 CN을 잘 안 채우기 때문에 전형적인 중간자 공격 통로가 됩니다. 여기에 와일드카드 인증서를 처리하다 힙 버퍼 오버플로가 나는 OpenSSL 쪽 버그도 같이 잡혔습니다.
인프라에서 신경 쓸 것 두 개가 더 있습니다. 하나는 PHP-FPM의 listen.allowed_clients ACL 우회로, IPv6 주소 검증이 완전하지 않아 허용 목록에 없는 클라이언트가 들어올 수 있습니다. FPM을 네트워크 격리에 의존해 돌리고 있다면 확인해봐야 합니다. 다른 하나는 HTTP 스트림 래퍼가 리다이렉트를 따라갈 때 인증 헤더가 엉뚱한 오리진으로 새어 나가는 자격증명 유출입니다. 그 밖에 SOAP 재귀로 인한 스택 고갈, Phar TAR 정수 오버플로, mysqlnd 프로토콜 오버리드 같은 것들도 포함됐습니다.
알겠지만 PHP 보안 릴리스는 보통 각 브랜치가 따로 도는데, 이번엔 지원 라인 전체를 한 날짜에 맞춰 내보낸 점이 눈에 띕니다. TLS 검증과 FPM ACL처럼 서버 경계에 직접 영향을 주는 항목이 섞여 있어, 워드프레스나 라라벨 같은 걸 얹어 쓰는 환경이면 애플리케이션 코드와 무관하게 런타임만으로도 노출될 수 있습니다. 각자 쓰는 PHP 버전부터 확인하고 해당 브랜치의 최신 패치로 올려두는 편이 안전해 보입니다.
로그인 후 답글을 남길 수 있습니다.