심령 서명 - 당신이 알아야 할 것

게시일: Apr 27, 2022
by 찰리 에릭슨
사례 연구

심령 서명 - 당신이 알아야 할 것

게시일: Apr 27, 2022
by 찰리 에릭슨
리소스 보기
리소스 보기

2022년 4월 19일, 닐 매든은 Oracle Java 15~18 및 OpenJDK 15, 17 및 18의 취약점을 공개했습니다. 이 취약점은 ECDSA 서명에 대한 암호화에 있으며, 이를 통해 공격자는 이러한 서명에 대한 서명 검사를 완전히 우회할 수 있습니다. 

이 취약점에 대한 헤드 라인을 쉽게 볼 수 있으며 ECDSA 서명의 모호한 특성을 감안할 때 바로 지나칠 수 있습니다. 그러나 ECDSA 서명은 실제로 인증과 같은 중요한 작업을 위해 인터넷을 통해 시스템을 보호하는 데 중요한 역할을합니다.

우리가 세부 사항에 뛰어 들기 전에, 해커가 심령 서명을 직접 활용하는 방법을 경험하고 싶다면. 우리의 바로 뛰어 들어라. 무료 실험실 - Missions 직접 시도해보십시오.

ECDSA의 큰 문제는 무엇입니까?

이전에 ECDSA에 대해 들어 못했을 수도 있습니다. 타원 곡선 디지털 서명 알고리즘의 짧은 이름으로, 타원 곡선의 수학적 속성을 사용하는 암호화 유형으로, 현재 업계에서 가장 강력한 암호화 보안을 제공합니다.

이것은 다음과 같은 많은 중요한 기능에 사용된다는 것을 의미합니다.

  • SSL 인증서의 서명
  • 암호화된 통신 중 핸드셰이크
  • 증권 시세 표시기
  • JWT 서명
  • OpenID Connect 서명

즉, ECDSA는 시스템을 보호하기위한 가장 민감한 많은 기능의 핵심 부분입니다. 서명 검사를 우회하는 기능은 잠재적으로 매우 파괴적입니다.

이 취약점은 어떻게 악용됩니까?

ECDSA의 수학은 불행히도 다소 복잡합니다. 그러나 알아야 할 중요한 점은 ECDSA 서명에는 r 과 s의 2 가지 정보가 포함되어 있다는 것입니다

이 숫자는 서명의 유효성을 계산하는 데 사용됩니다. 값 r 은 방정식의 오른쪽에있는 rs를 모두 사용하는 계산의 "결과"(왼쪽)입니다. 0을 곱하는 것이 나쁜 생각이라는 점을 감안할 때, ECDSA 사양은 r 또는 s의 값이 0이면 폐기해야한다고 명시 적으로 요구합니다. 

그러나 ECDSA의 Java 구현은이 점을 고려하는 것을 잊어 버렸습니다. 따라서 r 과 s 모두 0 인 서명 수락하며 이는 항상 사실입니다. JWT의 예를 통해이를 시연하여 얼마나 쉬운 지 보여줄 수 있습니다. https://token.dev/ 를 사용하여 응용 프로그램에서 생성 할 알고리즘과 유사한 ES256 알고리즘으로 토큰을 생성 할 수 있습니다.

algo ES256으로 생성된 토큰

JWT는 3 부분으로 나뉩니다.

  • 머리글(파란색)
  • 페이로드(녹색)
  • 서명(빨간색)

이제 서명 검사를 우회하고 싶다면 어떻게해야합니까? 서명은 r 및 s의 값을 지정하며 DER 형식으로 인코딩됩니다. 

서명 값에 대한 DER 인코딩

이 새 서명을 사용하도록 JWT를 변경해 보겠습니다. JWT에서는 등호가 포함되지 않습니다.

DER로 인코딩된 서명을 사용하는 새 JWT

이제 서명에 rs가 0으로 설정되고 취약한 버전의 Java에서는 지정한 페이로드에 대해 서명 검사가 성공합니다. 

영향을받는 사람은 누구이며이를 완화하는 방법은 무엇입니까?

이 취약점은 Oracle Java와 OpenJDK 모두에 영향을 미칩니다. 여기에는 다음이 포함됩니다.

오라클 자바 SE (및 이전, 지원되지 않는 버전) : 

  • 18
  • 17.0.2

오라클 GraalVM 엔터프라이즈 에디션: 

  • 22.0.0.2
  • 21.3.1

오픈 JDK :

  • 18
  • 17.0.2
  • 15.0.6
  • 13.0.10
  • 11.0.14
  • 8u322
  • 7u331

오라클OpenJDK 모두 즉시 적용 할 수있는 문제에 대한 권고와 패치를 발표했습니다. 

이 취약점으로부터 방어하기 위한 실습 사례

여기 Secure Code Warrior, 우리는 개발자에게 심령 서명과 같은 최신 취약점이든 수년간 사용되어 온 것이든 중요한 취약점에 대한 가장 관련성이 높은 정보와 실습을 제공하기 위해 노력합니다.

우리는 진정으로 위험을 막으려면 개발자가 방어 메커니즘을 이해하고 처음부터 보안 코드를 작성할 수 있어야한다고 생각합니다. 그렇기 때문에 귀하와 영향을받는 팀을 위해이 취약점 (및 다른 많은 취약점)에 대한 단계별 연습을 만듭니다. 

연습에서는 지침에 따라 JWT의 물리 서명을 활용하고 작동하는 앱에 미치는 영향을 실시간으로 확인할 수 있습니다.

지금 사용해보십시오.

리소스 보기
리소스 보기

저자

찰리 에릭슨

더 알고 싶으신가요?

블로그에서 최신 보안 코딩 인사이트에 대해 자세히 알아보세요.

Atlassian의 광범위한 리소스 라이브러리는 안전한 코딩 숙련도를 확보하기 위한 인적 접근 방식을 강화하는 것을 목표로 합니다.

블로그 보기
더 알고 싶으신가요?

개발자 중심 보안에 대한 최신 연구 보기

광범위한 리소스 라이브러리에는 개발자 중심의 보안 코딩을 시작하는 데 도움이 되는 백서부터 웨비나까지 유용한 리소스가 가득합니다. 지금 살펴보세요.

리소스 허브

심령 서명 - 당신이 알아야 할 것

게시일: Apr 27, 2022
By 찰리 에릭슨

2022년 4월 19일, 닐 매든은 Oracle Java 15~18 및 OpenJDK 15, 17 및 18의 취약점을 공개했습니다. 이 취약점은 ECDSA 서명에 대한 암호화에 있으며, 이를 통해 공격자는 이러한 서명에 대한 서명 검사를 완전히 우회할 수 있습니다. 

이 취약점에 대한 헤드 라인을 쉽게 볼 수 있으며 ECDSA 서명의 모호한 특성을 감안할 때 바로 지나칠 수 있습니다. 그러나 ECDSA 서명은 실제로 인증과 같은 중요한 작업을 위해 인터넷을 통해 시스템을 보호하는 데 중요한 역할을합니다.

우리가 세부 사항에 뛰어 들기 전에, 해커가 심령 서명을 직접 활용하는 방법을 경험하고 싶다면. 우리의 바로 뛰어 들어라. 무료 실험실 - Missions 직접 시도해보십시오.

ECDSA의 큰 문제는 무엇입니까?

이전에 ECDSA에 대해 들어 못했을 수도 있습니다. 타원 곡선 디지털 서명 알고리즘의 짧은 이름으로, 타원 곡선의 수학적 속성을 사용하는 암호화 유형으로, 현재 업계에서 가장 강력한 암호화 보안을 제공합니다.

이것은 다음과 같은 많은 중요한 기능에 사용된다는 것을 의미합니다.

  • SSL 인증서의 서명
  • 암호화된 통신 중 핸드셰이크
  • 증권 시세 표시기
  • JWT 서명
  • OpenID Connect 서명

즉, ECDSA는 시스템을 보호하기위한 가장 민감한 많은 기능의 핵심 부분입니다. 서명 검사를 우회하는 기능은 잠재적으로 매우 파괴적입니다.

이 취약점은 어떻게 악용됩니까?

ECDSA의 수학은 불행히도 다소 복잡합니다. 그러나 알아야 할 중요한 점은 ECDSA 서명에는 r 과 s의 2 가지 정보가 포함되어 있다는 것입니다

이 숫자는 서명의 유효성을 계산하는 데 사용됩니다. 값 r 은 방정식의 오른쪽에있는 rs를 모두 사용하는 계산의 "결과"(왼쪽)입니다. 0을 곱하는 것이 나쁜 생각이라는 점을 감안할 때, ECDSA 사양은 r 또는 s의 값이 0이면 폐기해야한다고 명시 적으로 요구합니다. 

그러나 ECDSA의 Java 구현은이 점을 고려하는 것을 잊어 버렸습니다. 따라서 r 과 s 모두 0 인 서명 수락하며 이는 항상 사실입니다. JWT의 예를 통해이를 시연하여 얼마나 쉬운 지 보여줄 수 있습니다. https://token.dev/ 를 사용하여 응용 프로그램에서 생성 할 알고리즘과 유사한 ES256 알고리즘으로 토큰을 생성 할 수 있습니다.

algo ES256으로 생성된 토큰

JWT는 3 부분으로 나뉩니다.

  • 머리글(파란색)
  • 페이로드(녹색)
  • 서명(빨간색)

이제 서명 검사를 우회하고 싶다면 어떻게해야합니까? 서명은 r 및 s의 값을 지정하며 DER 형식으로 인코딩됩니다. 

서명 값에 대한 DER 인코딩

이 새 서명을 사용하도록 JWT를 변경해 보겠습니다. JWT에서는 등호가 포함되지 않습니다.

DER로 인코딩된 서명을 사용하는 새 JWT

이제 서명에 rs가 0으로 설정되고 취약한 버전의 Java에서는 지정한 페이로드에 대해 서명 검사가 성공합니다. 

영향을받는 사람은 누구이며이를 완화하는 방법은 무엇입니까?

이 취약점은 Oracle Java와 OpenJDK 모두에 영향을 미칩니다. 여기에는 다음이 포함됩니다.

오라클 자바 SE (및 이전, 지원되지 않는 버전) : 

  • 18
  • 17.0.2

오라클 GraalVM 엔터프라이즈 에디션: 

  • 22.0.0.2
  • 21.3.1

오픈 JDK :

  • 18
  • 17.0.2
  • 15.0.6
  • 13.0.10
  • 11.0.14
  • 8u322
  • 7u331

오라클OpenJDK 모두 즉시 적용 할 수있는 문제에 대한 권고와 패치를 발표했습니다. 

이 취약점으로부터 방어하기 위한 실습 사례

여기 Secure Code Warrior, 우리는 개발자에게 심령 서명과 같은 최신 취약점이든 수년간 사용되어 온 것이든 중요한 취약점에 대한 가장 관련성이 높은 정보와 실습을 제공하기 위해 노력합니다.

우리는 진정으로 위험을 막으려면 개발자가 방어 메커니즘을 이해하고 처음부터 보안 코드를 작성할 수 있어야한다고 생각합니다. 그렇기 때문에 귀하와 영향을받는 팀을 위해이 취약점 (및 다른 많은 취약점)에 대한 단계별 연습을 만듭니다. 

연습에서는 지침에 따라 JWT의 물리 서명을 활용하고 작동하는 앱에 미치는 영향을 실시간으로 확인할 수 있습니다.

지금 사용해보십시오.

우리는 당신에게 우리의 제품 및 / 또는 관련 보안 코딩 주제에 대한 정보를 보낼 수있는 귀하의 허가를 바랍니다. 우리는 항상 최대한의주의를 기울여 귀하의 개인 정보를 취급 할 것이며 마케팅 목적으로 다른 회사에 판매하지 않을 것입니다.

전송
양식을 제출하려면 '분석' 쿠키를 활성화하세요. 완료되면 언제든지 다시 비활성화할 수 있습니다.