🇰🇷 한글 설명
FreeRDP의 opus 디코딩 과정에서 버퍼 용량을 잘못 계산하여 발생하는 힙 기반 버퍼 오버플로우 취약점입니다. 악의적인 RDP 서버가 조작된 WAVE_FORMAT_OPUS 데이터를 전송할 경우, 클라이언트의 메모리를 손상시켜 서비스 거부(DoS)를 일으키거나 원격 코드 실행(RCE)이 가능할 수 있습니다.
💡 쉬운 설명
원격 데스크톱 연결 시 소리 데이터를 처리하는 과정에서 메모리 공간을 넘어서는 데이터를 입력받아 발생하는 보안 문제입니다. 해커가 만든 가짜 서버에 연결하면 사용자의 컴퓨터를 멈추게 하거나 해커의 명령을 실행하게 만들 수 있습니다.
🇺🇸 원문 (English)
FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to 3.28.0, freerdp_dsp_decode_opus in libfreerdp/codec/dsp.c calls Stream_EnsureRemainingCapacity on context->common.buffer even though opus_decode writes decoded PCM into the caller-supplied out stream. A malicious RDP server that negotiates WAVE_FORMAT_OPUS with a client built with WITH_OPUS enabled and WITH_DSP_FFMPEG disabled can make libopus write a large decoded frame beyond the 4096-byte StreamPool_Take destination used by channels/rdpsnd/client/rdpsnd_main.c. This can corrupt the client heap, crash the client, and may permit code execution. This issue is fixed in version 3.28.0.
📍 영향받는 시스템
FreeRDP 3.28.0 미만 버전 (WITH_OPUS 활성화 및 WITH_DSP_FFMPEG 비활성화 상태)
⚔️ 공격 벡터
악의적인 RDP 서버가 조작된 Opus 오디오 프레임을 클라이언트에 전송하여 공격
🛡️ 대응 방법
FreeRDP를 최신 보안 패치가 적용된 3.28.0 버전 이상으로 업데이트
🔧 검증 코드
출력된 FreeRDP 버전을 확인하여 3.28.0 미만인지 확인합니다.
dpkg -l | grep freerdp 2>/dev/null || rpm -q freerdp 2>/dev/null || freerdp /version