7P by kuroneko 2023-07-20 | favorite | 댓글 3개
  • Qualys는 OpenSSH에서 전달된 SSH 에이전트에서 원격 코드 실행이 가능한 취약점을 발견함.
  • SSH 에이전트 전달은 주로 CI/CD 등에서 인증 정보를 직접 저장하지 않고, 원격에 있는 인증 정보를 사용하여 로그인을 시도할 때 주로 사용됨.
  • 취약점은 SSH 에이전트가 PKCS11 지원을 허용하는 부분에서 발생.
    • PKCS11 지원을 위해 원격 사용자가 신뢰할 수 있는 위치의 공유 라이브러리를 로딩하고 닫는 것을 허용함.
    • Ubuntu Desktop에서 존재하는 모든 기본 설치된 공유 라이브러리를 모두 테스트한 결과, 기본 라이브러리는 보통 닫힐 수 있게 설계되지 않았기 때문에 SSH 에이전트에서 닫을 때 오류가 발생.
    • 이런 오류들은 몇몇 시스템 신호를 발생시키고, 이러한 것을 조합하여 원격에서 임의의 코드를 실행시키는데 성공.
  • OpenSSH는 단순히 원격 PKCS11 지원을 비활성화하고, 공유 라이브러리를 화이트 리스트로 관리하도록 수정함.
    • 기존에는 lib 폴더 밑에 있는 모든 공유 라이브러리를 로딩할 수 있었음.
  • SSH 에이전트 전달 기능을 사용한다면 필요하지 않은 경우 PKCS11 지원을 비활성화 해야함.

설정을 개인 pc에서 끄는 걸까요? 아니면 서버 설정인가…

ssh-agent forwarding을 사용한 적이 없다면, 아무런 영향을 받지 않는 것 같습니다.

취약점 상세 설명을 잠깐 봤는데, 이해할 수가 없네요...
SIGBUS, SIGSEGV 핸들러가 뭐 어쩌구 해서 SIGTRAP이 발생하고, 스택 버퍼에 뭘 저장해두고 그쪽으로 점프하도록 유도하고...

저걸 다 라이브러리 로드/언로드로 제어한다는데, 솔직히 뭔 말인지 잘 모르겠습니다.
그냥 아 그런갑다... 정도네요.

관심 있으신 분은 예제까지 포함된 것 같은 아주 상세한 문서가 있으니,
한 번 읽어보시는걸 추천드립니다.