🇰🇷 한글 설명
Symfony YAML 컴포넌트의 특정 버전에서 인라인 컬렉션의 중첩 구조를 처리할 때 재귀 호출 제한을 우회하여 스택을 소진하는 취약점이 발견되었습니다. 공격자가 깊게 중첩된 YAML 문서를 전송할 경우 PHP 프로세스가 충돌하거나 치명적인 오류가 발생하여 서비스 거부(DoS) 상태에 빠질 수 있습니다.
💡 쉬운 설명
복잡하게 꼬인 데이터를 처리하다가 컴퓨터의 메모리 공간이 꽉 차서 프로그램이 갑자기 꺼지는 문제입니다. 나쁜 의도를 가진 사람이 특수한 파일을 보내면 웹사이트가 멈출 수 있습니다.
🇺🇸 원문 (English)
In Symfony YAML prior to versions 5.4.54, 6.4.45, 7.4.18, and 8.1.6, Yaml\Parser::lexInlineStructure() recursed through lexInlineMapping() and lexInlineSequence() for every { and [ of an inline collection, without entering the nesting level that the rest of the parser bounds with maxNestingLevel. A document made of deeply nested inline collections, such as [[[[...]]]], exhausted the stack while it was being lexed: depending on the PHP version and its stack settings, the process crashed or the request ended with a fatal error.
Any code parsing untrusted YAML is affected. That includes #[MapRequestPayload] when the Yaml component is installed and the endpoint does not restrict acceptFormat: a single unauthenticated request with a YAML content type is enough.
This issue affects symfony/yaml through v5.4.53, v6.0.0-BETA1 through v6.4.44, v7.0.0-BETA1 through v7.4.17, and v8.0.0-BETA1 through v8.1.5.
📍 영향받는 시스템
symfony/yaml v5.4.53 이하, v6.4.44 이하, v7.4.17 이하, v8.1.5 이하 버전
⚔️ 공격 벡터
인증되지 않은 사용자가 YAML 형식을 포함한 악의적인 중첩 구조의 요청을 전송
🛡️ 대응 방법
Symfony YAML 컴포넌트를 최신 보안 패치 버전(5.4.54, 6.4.45, 7.4.18, 8.1.6 이상)으로 업데이트
🔧 검증 코드
출력된 버전이 취약한 버전 범위(v5.4.53, v6.4.44, v7.4.17, v8.1.5 이하)에 포함되는지 확인
composer show symfony/yaml | grep 'versions'