🇰🇷 한글 설명
Apache Submarine에서 YAML 데이터를 직렬화할 때 발생하는 보안 취약점입니다. SnakeYAML 라이브러리의 결함으로 인해 사용자로부터 입력받은 YAML 데이터를 처리하는 과정에서 원격 코드 실행(RCE)이 가능할 수 있습니다.
💡 쉬운 설명
해커가 조작된 YAML 파일을 보내면 서버가 이를 읽는 과정에서 악성 명령어를 실행할 수 있는 위험이 있습니다. 마치 잘못된 명령이 적힌 쪽지를 읽다가 해커의 명령을 대신 수행하게 되는 것과 같습니다.
🇺🇸 원문 (English)
Apache Software Foundation Apache Submarine has a bug when serializing against yaml. The bug is caused by snakeyaml https://nvd.nist.gov/vuln/detail/CVE-2022-1471 .
Apache Submarine uses JAXRS to define REST endpoints. In order to
handle YAML requests (using application/yaml content-type), it defines
a YamlEntityProvider entity provider that will process all incoming
YAML requests. In order to unmarshal the request, the readFrom method
is invoked, passing the entityStream containing the user-supplied data in `submarine-server/server-core/src/main/java/org/apache/submarine/server/utils/YamlUtils.java`.
We have now fixed this issue in the new version by replacing to `jackson-dataformat-yaml`.
This issue affects Apache Submarine: from 0.7.0 before 0.8.0. Users are recommended to upgrade to version 0.8.0, which fixes this issue.
If using the version smaller than 0.8.0 and not want to upgrade, you can try cherry-pick PR https://github.com/apache/submarine/pull/1054 and rebuild the submart-server image to fix this.
📍 영향받는 시스템
Apache Submarine 0.7.0 버전부터 0.8.0 미만 버전
⚔️ 공격 벡터
application/yaml 콘텐츠 타입을 사용하여 조작된 YAML 데이터를 REST 엔드포인트로 전송
🛡️ 대응 방법
Apache Submarine를 0.8.0 버전 이상으로 업그레이드하거나, Jackson-dataformat-yaml로 교체하는 패치를 적용하십시오.
🔧 검증 코드
출력된 버전 정보가 0.7.x 또는 0.8.0 미만인 경우 취약한 상태입니다.
curl -s http://<submarine-server-url>/version | grep -E '0\.[7|0]\.'