OpenSSH 10.6에는 기존 사용 시나리오 일부를 중단할 수 있는 두 가지 보안 변경 사항이 포함됩니다. SSH 압축에서 반복 사전 구축을 담당하는 LZ77 구성 요소를 비활성화하고, 명령줄을 통해 전달되는 사용자 이름에 $ 및 \ 기호가 포함된 경우 이를 거부합니다. 프로젝트 개발자들은 일부 환경과 도구에 수정이 필요할 것이라는 점을 알고 이러한 결정을 내렸습니다.
SSH 압축이 약화된 이유
하나의 SSH 세션에는 대화형 터미널 채널, 포트 포워딩 또는 동적 SOCKS 프록시가 포함될 수 있습니다. 압축이 활성화되면 채널들은 하나의 압축 상태를 공유했습니다. Ruhr University Bochum의 연구자 Fabian Bäumer와 Marcus Brinkmann은 공격자가 한 채널에 자신이 선택한 텍스트를 삽입하고 암호화된 트래픽을 관찰함으로써 동일한 세션의 다른 채널을 통해 전송되는 비밀 데이터를 추론할 수 있음을 보였습니다.
이 공격은 LZ77 메모리에 의존합니다. LZ77은 이전에 나타난 시퀀스를 완전히 인코딩하는 대신 재사용합니다. 공격자의 추측이 비밀의 일부와 일치하면 압축된 결과가 약간 더 짧아질 수 있으며, 이는 데이터를 복구하는 데 도움이 되는 신호를 제공합니다. 이 방식은 CRIME 및 BREACH 공격 계열에 속하지만, SSH 압축 활성화, 트래픽 일부를 제어할 수 있는 권한, 다중 채널 SSH 세션 안에 비밀과 공격 대상 채널이 함께 존재한다는 특정 조건이 필요합니다.
노이즈가 적은 테스트에서 연구자들은 26개 문자로 구성된 알파벳에서 8자 비밀을 100회 실험을 통해 중앙값 276회의 추측으로 복구했습니다. 브라우저 기반의 더 큰 노이즈가 있는 시나리오에서는 그 수가 약 27,600회의 추측으로 증가했습니다. 원문 자료에 따르면 개념 증명 모델은 Claude Code를 사용해 구축되었습니다.
압축에서 실제로 무엇이 바뀌는가?
OpenSSH는 Huffman 인코딩을 유지했지만 ssh와 sshd 모두에서 LZ77 부분을 비활성화했습니다. 따라서 압축이 완전히 사라지는 것은 아니지만 효율성은 낮아집니다. 프로젝트는 일반적인 대화형 세션에서는 큰 차이를 거의 느끼지 못할 것이라고 설명합니다. 반면 제한된 대역폭의 연결을 통해 압축 가능한 대량의 데이터를 전송하는 자동화 작업은 영향을 받을 수 있습니다.
OpenSSH는 압축을 애플리케이션 계층으로 옮길 것을 권장합니다. 애플리케이션 계층의 압축은 일반적으로 더 효율적이며 이러한 유형의 공격에도 노출되지 않습니다. 실제로 SSH 압축에 의존하는 자동화 시스템 소유자는 업그레이드 후 전송량과 실행 시간을 측정한 다음, SSH 압축에 의존하는 것보다 데이터를 전송 전에 압축하는 편이 적절한지 판단해야 합니다.
사용자 이름과 자동화 경로
버전 10.6은 명령줄을 통해 전달되는 사용자 이름에서 $ 및 \ 기호를 거부합니다. 이는 ssh "$INPUT_USER@host"와 같은 명령을 구성하는 내부 도구, CI 작업 및 에이전트를 대상으로 합니다. 이후 사용자 이름이 ProxyCommand 또는 Match exec와 같은 지시문에 도달하면 이러한 기호가 일반 데이터가 아니라 셸 구성의 일부로 해석될 수 있기 때문입니다.
SSH 설정 파일의 User 지시문을 통해 사용자 이름을 지정하는 경우에는 동일한 제한이 적용되지 않습니다. 따라서 이러한 기호가 포함된 정상적인 계정도 이 방식으로 계속 사용할 수 있지만, 명령줄을 통해 직접 전달하는 스크립트와 도구는 변경이 필요할 수 있습니다. 이는 OpenSSH 10.3의 관련 수정 이후에 이루어졌습니다. 당시 셸 문자의 검사가 늦게 수행되어 해당 문자가 ssh_config의 확장 경로에 도달할 수 있었습니다.
워크플로에 영향을 줄 수 있는 추가 변경 사항
- 양자 내성 하이브리드 서명 알고리즘 ssh-mldsa44-ed25519에서 실험적 접미사 @openssh.com이 제거되었습니다. 따라서 이전 구현으로 생성된 키는 다시 생성하거나 제거해야 합니다.
- 프로젝트는 원격 호스트에서 다른 원격 호스트로 복사하는 scp -R의 중단을 예고하기 시작했습니다. 이 옵션은 OpenSSH 10.6에서 계속 작동하지만 경고를 출력하며, 향후에는 무시될 예정입니다.
이러한 변경 사항은 자동화된 사용이 데이터 유출이나 명령 주입 경로를 드러낼 때 기존 동작과의 호환성이 더 이상 절대적인 우선순위가 아님을 보여줍니다. 그러나 실질적인 제약은 동일하지 않습니다. 압축 데이터 유출 위험에는 특정 세션과 조건이 필요하지만, 사용자 이름 거부는 외부 입력에 의존하는 스크립트에서 즉시 나타날 수 있습니다. 따라서 운영팀은 업그레이드를 테스트하고, SSH 명령 구성 방식을 검토하며, 버전을 광범위하게 도입하기 전에 키와 복사 옵션을 확인해야 합니다.
뉴스 출처
The New Stack - Software Development
원문 보기 ↗