블로그

Psychic Signatures - 알아야 할 모든 것

April 27, 2022
찰리 에릭슨
다양한 암호화 기호가 흩어져 있는 종이를 돋보기로 들여다보는 모습.

2022년 4월 19일, 닐 매든(Neil Madden)은 Oracle Java 15~18 버전과 OpenJDK 15, 17, 18 버전에서 발견된 취약점을 공개했습니다. 이 취약점은 ECDSA 서명 암호화 방식에 존재하며, 공격자가 해당 서명에 대한 확인 과정을 완전히 우회할 수 있게 합니다.

ECDSA 서명이라는 생소한 개념 때문에 이 취약점에 관한 헤드라인을 보고도 무심코 지나치기 쉽습니다. 하지만 ECDSA 서명은 사실 인증과 같은 중요한 작업을 수행하는 인터넷상의 시스템을 보호하는 데 핵심적인 역할을 합니다.

본격적으로 자세히 알아보기 전에, 해커가 사이킥 시그니처를 어떻게 악용하는지 직접 경험해보고 싶다면 무료 실습 - 미션(Missions)에 참여해 직접 확인해 보세요.

ECDSA가 왜 중요한가요?

ECDSA라는 용어가 생소할 수 있습니다. 이는 타원 곡선 디지털 서명 알고리즘(Elliptic Curve Digital Signature Algorithm)의 약자로, 타원 곡선의 수학적 성질을 활용하여 현재 업계에서 가장 강력한 암호화 보안을 제공하는 암호화 방식 중 하나입니다.

따라서 다음과 같은 중요한 기능들에 널리 사용됩니다.

  • SSL 인증서 서명
  • 암호화 통신 중 핸드셰이크
  • SAML
  • JWT 서명
  • OpenID Connect 서명

즉, ECDSA는 시스템을 보호하는 가장 민감한 기능들의 핵심 요소입니다. 서명 확인 과정을 우회할 수 있다는 것은 잠재적으로 매우 치명적인 결과를 초래할 수 있습니다.

이 취약점은 어떻게 악용되나요?

안타깝게도 ECDSA의 수학적 원리는 다소 복잡합니다. 하지만 핵심은 ECDSA 서명이 r과 s라는 두 가지 정보로 구성된다는 점입니다.

이 숫자들은 서명의 유효성을 계산하는 데 사용됩니다. 값 r은 방정식의 우변에 있는 r과 s를 모두 사용하여 계산한 결과(좌변)입니다. 0을 곱하는 것은 좋지 않기 때문에, ECDSA 사양에서는 r 또는 s의 값이 0일 경우 이를 폐기해야 한다고 명시하고 있습니다.

하지만 Java의 ECDSA 구현에서는 이 점을 고려하지 않았습니다. 따라서 r과 s가 모두 0인 서명을 수락하게 되며, 이는 항상 참(true)이 됩니다. JWT 예시를 통해 이것이 얼마나 쉬운지 보여드리겠습니다. https://token.dev/를 사용하여 애플리케이션에서 생성되는 것과 유사한 ES256 알고리즘 토큰을 생성해 보겠습니다.

ES256 알고리즘으로 생성된 토큰

JWT는 세 부분으로 나뉜다는 점을 기억하세요.

  • 헤더(파란색)
  • 페이로드(녹색)
  • 서명(빨간색)

그렇다면 서명 확인 과정을 우회하려면 어떻게 해야 할까요? 서명은 r과 s의 값을 지정하며, DER 형식으로 인코딩됩니다.

서명 값을 위한 DER 인코딩

이제 JWT가 이 새로운 서명을 사용하도록 변경해 보겠습니다. JWT에서는 등호(=)가 포함되지 않는다는 점을 유의하세요.

Colored strings of letters and numbers in blue, green, and red inside a black rectangular border.
DER 인코딩 서명을 사용하는 새로운 JWT

이제 서명의 r과 s 값이 0으로 설정되었습니다. 취약한 버전의 Java에서는 사용자가 지정한 모든 페이로드에 대해 서명 검증이 성공하게 됩니다.

영향을 받는 대상과 완화 방법은 무엇인가요?

이 취약점은 Oracle Java와 OpenJDK 모두에 영향을 미칩니다. 대상은 다음과 같습니다.

Oracle Java SE (및 지원이 종료된 이전 버전):

  • 18
  • 17.0.2

Oracle GraalVM Enterprise Edition:

  • 22.0.0.2
  • 21.3.1

OpenJDK:

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

Both Oracle and OpenJDK have put out advisories, and patches for the issue that can be applied right away. 

이 취약점을 방어하기 위한 실습

Secure Code Warrior는 Psychic Signatures와 같은 최신 취약점이든 수년간 존재해 온 취약점이든, 개발자에게 가장 관련성 높은 정보와 실습 예제를 제공하기 위해 노력하고 있습니다.

위험을 진정으로 방지하려면 개발자가 방어 메커니즘을 이해하고 처음부터 안전한 코드를 작성할 수 있도록 지원해야 한다고 믿습니다. 이것이 바로 저희가 귀하와 영향을 받는 팀을 위해 이 취약점(및 기타 여러 취약점)에 대한 단계별 가이드를 제작하는 이유입니다.

이 가이드를 통해 지침에 따라 JWT에서 Psychic Signature를 악용해 보고, 실제 작동 중인 앱에 미치는 영향을 실시간으로 확인할 수 있습니다.

지금 바로 시도해 보세요.

‍

태그라인

배포 전 AI 기반 개발 거버넌스 확보

AI 기반 위험을 측정하고, 커밋 시점에 보안 코딩 정책을 적용하며, SDLC 전반에 걸쳐 안전한 소프트웨어 제공 속도를 높이세요.

데모 예약하기
리소스 라이브러리

더 많은 블로그 살펴보기

보안 코딩, AI 거버넌스, 소프트웨어 리스크 관리에 관한 전문가 콘텐츠를 확인해 보세요.

전체 보기
사례 연구
필터 라벨
div 블록 내부의 텍스트입니다.

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

더 알아보기
사례 연구
필터 라벨
div 블록 내부의 텍스트입니다.

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

더 알아보기
사례 연구
필터 라벨
div 블록 내부의 텍스트입니다.

하나의 보안 문화: Sage는 어떻게 챔피언 프로그램을 구축했는가

Sage가 유연하고 관계 중심적인 접근 방식을 통해 보안을 강화하고, 200명 이상의 보안 챔피언을 양성하며 실질적인 위험 감소를 달성한 사례를 확인해 보세요.

더 알아보기
블로그
필터 라벨
div 블록 내부의 텍스트입니다.

2026년 사이버 보안 인식의 달: 기업 방어의 핵심, AI 보안 이해하기

주요 AI 기업 대부분이 안전 가이드라인이 마련될 때까지 AI 개발 속도를 전 세계적으로 늦춰야 한다고 공개적으로 촉구하는 시점에 이르렀지만, 사실 심각한 보안 문제는 이미 현실화되었습니다. 이로 인해 AI 도입에 따른 금전적 비용과 위험 부담이 계속 쌓이면서 수많은 보안 책임자와 경영진이 절박한 상황에 놓였습니다.

더 알아보기
블로그
필터 라벨
div 블록 내부의 텍스트입니다.

인에이블러 8: 프로그램 브랜딩

성공적인 보안 코딩 프로그램을 위해서는 훌륭한 콘텐츠 그 이상의 것이 필요합니다. 인에이블러 8에서는 브랜딩을 통해 참여를 누구나 선망하는 위상 중심의 경험으로 바꾸는 방법을 알아봅니다.

더 알아보기
블로그
필터 라벨
div 블록 내부의 텍스트입니다.

이제 모든 직원이 AI 사이버 보안의 최전선에 있습니다

엔터프라이즈 기술 환경은 너무 늦기 전까지는 아무도 예상하지 못한 속도로 변화하고 있습니다. 우리는 공식적으로 사람이 직접 작성한 코드와 기본적인 코파일럿 지원의 시대를 지나 '에이전트 기반 개발 수명 주기(ADLC)'의 시대로 진입했습니다. 자율형 AI 에이전트는 여러 기능 전반에 걸쳐 전례 없는 효율성을 약속하지만, 동시에 완전히 새로운 차원의 보안 및 규제 위험을 야기합니다.

더 알아보기

배포 전 AI 기반 개발 보안 확보

소프트웨어 개발 수명 주기 전반에서 개발자 리스크를 파악하고, 정책을 시행하며, 취약점을 예방하세요.

데모 예약하기
항목이 없습니다.