원문 캡처 · foxio.io
원문 캡처 · foxio.io

임베디드 웹 서버 GoAhead에서 TLS 라이브러리와 설정에 따라 인증서 폐지 확인 누락, 인증서 체인 길이 제한 우회, TLS 세션 복호화 가능성이 생기는 오류 3건이 확인됐다. 영향 여부는 기기에 적용된 TLS 백엔드와 설정에 달려 있으며, GoAhead 6.1.1 이상으로 업그레이드하는 것이 주요 해결책이다.

오픈SSL 호환 백엔드에서는 GoAhead 3.4.5~6.1.0이 CRL(인증서 폐지 목록)을 불러오더라도 폐지 여부 확인을 활성화하지 않아, 폐지된 클라이언트 인증서가 mTLS 연결을 통과할 수 있다. 신뢰된 CA와 발급자 확인을 설정한 경우에도 해당 문제가 발생한다. GoAhead 6.1.1 이상으로 업그레이드해야 한다.

Mbed TLS 백엔드의 GoAhead 4.0.2~6.1.0에는 디피-헬먼(DH) 매개변수 길이를 잘못 지정한 오류가 있다. 이에 따라 2048비트 모듈러스가 1바이트로 잘리고, TLS 1.2 DHE_RSA 연결에서 잘못된 매개변수를 받아들이는 클라이언트와의 세션은 관찰자가 복호화할 수 있다. 일반적인 OpenSSL 클라이언트는 이 매개변수를 거부했으며, TLS 1.3과 ECDHE 연결은 이 문제의 영향을 받지 않는다. 업그레이드하거나 유한체 DHE 암호군을 비활성화하고, 또는 OpenSSL 백엔드를 사용할 수 있다.

LibreSSL 3.2.x 및 3.3.2~3.3.6의 레거시 검증기를 사용하는 GoAhead 6.1.0 이하에서는 발급자 확인을 끈 설정(VERIFY_PEER=1, VERIFY_ISSUER=0)에서 허용 길이를 넘는 클라이언트 인증서 체인이 통과할 수 있다. 신뢰할 CA를 설정하고 발급자 확인을 켜거나 OpenSSL 또는 LibreSSL 4.x를 사용하면 이 우회 조건을 피할 수 있다.

세 취약점의 보안 권고와 GoAhead의 SSL 문서는 다음과 같다. 재현 코드는 공개 저장소에서 확인할 수 있다.