SCW 아이콘
영웅 배경, 구분선 없음
블로그

코더스 컨커 시큐리티 OWASP 탑 10 API 시리즈 - 깨진 인증

마티아스 마두, Ph.
게시일 : 2020년 9월 16일
마지막 업데이트: 2026년 3월 9일

인증 실패로 인해 API 문제에 대한 OWASP 목록이 된 것은 놀라운 일이 아닙니다. 인증 메커니즘은 올바르게 구현하기가 매우 어렵기로 악명이 높습니다.또한 공격자는 그 특성상 대부분의 인증 문제를 사용자에게 노출시켜야 하기 때문에 공격자가 이를 연구하고 악용할 수 있는 패턴이나 취약점을 찾아낼 기회를 주기 때문에 약간의 이점이 있습니다.

마지막으로, 인증은 애플리케이션은 물론 잠재적으로 네트워크의 나머지 부분에 대한 게이트웨이 역할을 하는 경우가 많기 때문에 공격자의 공격 대상이 될 수 있습니다.인증 프로세스가 손상되거나 취약한 경우 공격자가 해당 취약점을 발견하고 악용할 가능성이 높습니다.

따라서 이 장에서는 인증 문제와 관련하여 악의적인 사용자를 차단하는 방법을 알아보겠습니다.먼저 실력을 테스트하고 싶다면 게임화된 챌린지를 플레이하세요.

점수를 높이고 싶으신가요?우리가 그걸 분석하는 동안 내 곁에 있어줘.

손상되거나 잘못 구성된 인증의 예로는 어떤 것이 있습니까?

인증 방법이 자격 증명 스터핑에 취약하거나 알려진 사용자 이름 및 암호 목록을 사용하여 보안을 침해하는 경우를 예로 들 수 있습니다.다단계 인증과 같이 일반적으로 매우 안전한 인증 방법이라도 요청이 제한되거나, 제한되거나, 모니터링되지 않으면 취약할 수 있습니다.

예를 들어 공격자는 /에 POST 요청을 보내 암호 복구 요청을 트리거할 수 있습니다.api/시스템/검증 코드 요청 본문에 사용자 이름을 제공합니다.앱에서 6자리 코드가 사용자의 휴대폰으로 전송되는 SMS 문자 메시지 챌린지를 사용하지만 입력 필드가 제한되지 않는 경우 몇 분 만에 애플리케이션을 분석할 수 있습니다.공격자는 올바른 숫자 조합에 도달할 때까지 가능한 모든 6자리 숫자 조합을 애플리케이션에 전송하기만 하면 됩니다.

이 시나리오에서는 표면적으로는 2단계 인증을 통해 애플리케이션을 안전하게 보호할 수 있는 것처럼 보입니다.하지만 사용자 입력이 속도 제한이 없기 때문에 인증이 제대로 이루어지지 않고 취약합니다.

또 다른 예로, 애플리케이션은 인코딩된 사용자 객체를 인증 쿠키로 사용할 수 있습니다.하지만 낮은 수준의 사용자 액세스 권한을 가진 공격자가 Base64를 사용하여 해당 쿠키를 디코딩하면 쿠키가 애플리케이션에 대한 세션과 사용자를 정의하는 방법을 발견할 수 있습니다.예를 들어 디코딩되면 다음과 같은 JSON이 표시될 수 있습니다.

{
“사용자 이름”: “ShadyGuy”,
“역할”: “사용자”
{

이때 악의적인 사용자는 사용자 이름, 역할 또는 둘 다를 변경할 수 있습니다.다음과 같은 몇 가지 값을 변경하여 더 높은 권한 수준을 가진 다른 사용자가 될 수 있습니다.

{
“아이디”: “굿가이”,
“역할”: “관리자”
{

이때 공격자가 정보를 다시 코딩하여 쿠키 값으로 설정하면 기본적으로 더 높은 권한 수준을 가진 새 사용자가 됩니다.이와 같은 변경을 방지할 수 있는 방법이 마련되어 있지 않으면 응용 프로그램이 변환을 받아들일 가능성이 높습니다.

손상되거나 잘못 구성된 인증 제거

인증에 실패하면 전반적인 보안이 침해될 가능성이 높습니다.하지만 애플리케이션을 코딩할 때 몇 가지 중요한 지침을 따르면 모든 것을 안전하게 유지하는 데 도움이 될 수 있습니다.

우선, 사용자가 프로그램 기능에 액세스할 수 있도록 모든 곳에 인증 검사를 포함해야 합니다.인증 검사가 전혀 없는 경우 전투는 처음부터 패배하게 됩니다.

모범 사례의 한 가지 좋은 점은 사용자가 액세스할 수 있는 URL에 세션 ID가 노출되지 않도록 하는 것입니다.인증 실패와 관련된 위의 두 번째 예에서는 세션 쿠키가 한 번도 노출되지 않았다면 공격자가 세션 쿠키의 디코딩을 시도하지 못하도록 하는 것이 훨씬 쉽습니다.

다단계 인증을 구현하는 것도 좋은 생각입니다.이는 촉박한 일정에 따라 알고리즘적으로 암호를 생성하는 하드웨어 토큰을 사용하여 안전하게 수행할 수 있습니다.사용자에게 이와 같은 기기를 제공할 수 없다면 SMS 문자 메시지도 효과가 있을 수 있습니다.하지만 사용자 요청은 30초 동안 세 번 또는 네 번 시도하는 것과 같이 합리적인 것으로 제한하고 코드가 모두 몇 분 후에 만료되도록 해야 합니다.영숫자 코드를 사용하면 잠재적 암호에 문자와 숫자를 추가하여 보안을 강화할 수도 있습니다.

마지막으로, 가능하면 사용자 이름이나 예측 가능한 순차적 값을 세션 ID로 사용하지 마십시오.대신 매번 임의의 세션 ID를 생성하는 안전한 서버측 세션 관리자를 사용하십시오.

보안 인증 방법을 구현하는 것은 일반적인 취약점을 해결하는 것보다 조금 더 까다롭습니다.하지만 권한 부여는 모든 애플리케이션, 프로그램 및 API에 매우 중요하므로 시간을 들여 제대로 되었는지 확인하는 것이 좋습니다.

확인해 보세요 시큐어 코드 워리어 이 취약성에 대한 자세한 정보와 다른 보안 결함으로 인한 피해로부터 조직과 고객을 보호하는 방법을 알아보려면 블로그 페이지를 참조하십시오.또한 다음과 같은 방법도 있습니다. 데모 사용해 보기 Secure Code Warrior 교육 플랫폼을 통해 모든 사이버 보안 기술을 연마하고 최신 상태로 유지할 수 있습니다.


리소스 보기
리소스 보기

인증은 애플리케이션은 물론 잠재적으로 네트워크의 나머지 부분에 대한 게이트웨이 역할을 하는 경우가 많기 때문에 공격자의 공격 대상이 됩니다.인증 프로세스가 손상되거나 취약한 경우 공격자가 해당 취약점을 발견하고 악용할 가능성이 높습니다.

더 많은 것에 관심이 있으신가요?

마티아스 마두는 보안 전문가, 연구원, CTO이자 Secure Code Warrior 의 공동 설립자입니다. 마티아스는 겐트 대학교에서 정적 분석 솔루션에 중점을 둔 애플리케이션 보안 박사 학위를 취득했습니다. 이후 미국의 Fortify에 입사하여 개발자의 보안 코드 작성을 지원하지 않고 코드 문제만 탐지하는 것만으로는 충분하지 않다는 것을 깨달았습니다. 이를 계기로 개발자를 지원하고 보안에 대한 부담을 덜어주며 고객의 기대를 뛰어넘는 제품을 개발하게 되었습니다. 팀 어썸의 일원으로 책상에 앉아 있지 않을 때는 RSA 컨퍼런스, 블랙햇, 데프콘 등의 컨퍼런스에서 무대에 올라 발표하는 것을 즐깁니다.

더 알아보세요

Secure Code Warrior는 전체 소프트웨어 개발 라이프사이클에서 코드를 보호하고 사이버 보안을 최우선으로 생각하는 문화를 조성할 수 있도록 조직을 위해 여기 있습니다.AppSec 관리자, 개발자, CISO 또는 보안 관련 누구든 관계없이 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 도와드릴 수 있습니다.

데모 예약
공유 대상:
링크드인 브랜드사회적x 로고
작성자
마티아스 마두, Ph.
게시일: 2020년 9월 16일

마티아스 마두는 보안 전문가, 연구원, CTO이자 Secure Code Warrior 의 공동 설립자입니다. 마티아스는 겐트 대학교에서 정적 분석 솔루션에 중점을 둔 애플리케이션 보안 박사 학위를 취득했습니다. 이후 미국의 Fortify에 입사하여 개발자의 보안 코드 작성을 지원하지 않고 코드 문제만 탐지하는 것만으로는 충분하지 않다는 것을 깨달았습니다. 이를 계기로 개발자를 지원하고 보안에 대한 부담을 덜어주며 고객의 기대를 뛰어넘는 제품을 개발하게 되었습니다. 팀 어썸의 일원으로 책상에 앉아 있지 않을 때는 RSA 컨퍼런스, 블랙햇, 데프콘 등의 컨퍼런스에서 무대에 올라 발표하는 것을 즐깁니다.

Matias는 15년 이상의 소프트웨어 보안 경험을 가진 연구원이자 개발자입니다. 그는 Fortify 소프트웨어와 같은 회사와 자신의 회사를 위한 솔루션을 개발했습니다. Sensei 안전. 그의 경력을 통해, Matias는 상용 제품으로 주도하고 자신의 벨트 아래 10 개 이상의 특허를 자랑하는 여러 응용 프로그램 보안 연구 프로젝트를 주도하고있다. 마티아스는 책상에서 떨어져 있을 때 고급 응용 프로그램 보안 교육을 위한 강사로 일했습니다. courses RSA 컨퍼런스, 블랙 햇, 데프콘, BSIMM, OWASP AppSec 및 브루콘을 포함한 글로벌 컨퍼런스에서 정기적으로 강연합니다.

마티아스는 겐트 대학교에서 컴퓨터 공학 박사 학위를 취득했으며, 프로그램 난독화를 통해 응용 프로그램 보안을 연구하여 응용 프로그램의 내부 작동을 숨깁니다.

공유 대상:
링크드인 브랜드사회적x 로고

인증 실패로 인해 API 문제에 대한 OWASP 목록이 된 것은 놀라운 일이 아닙니다. 인증 메커니즘은 올바르게 구현하기가 매우 어렵기로 악명이 높습니다.또한 공격자는 그 특성상 대부분의 인증 문제를 사용자에게 노출시켜야 하기 때문에 공격자가 이를 연구하고 악용할 수 있는 패턴이나 취약점을 찾아낼 기회를 주기 때문에 약간의 이점이 있습니다.

마지막으로, 인증은 애플리케이션은 물론 잠재적으로 네트워크의 나머지 부분에 대한 게이트웨이 역할을 하는 경우가 많기 때문에 공격자의 공격 대상이 될 수 있습니다.인증 프로세스가 손상되거나 취약한 경우 공격자가 해당 취약점을 발견하고 악용할 가능성이 높습니다.

따라서 이 장에서는 인증 문제와 관련하여 악의적인 사용자를 차단하는 방법을 알아보겠습니다.먼저 실력을 테스트하고 싶다면 게임화된 챌린지를 플레이하세요.

점수를 높이고 싶으신가요?우리가 그걸 분석하는 동안 내 곁에 있어줘.

손상되거나 잘못 구성된 인증의 예로는 어떤 것이 있습니까?

인증 방법이 자격 증명 스터핑에 취약하거나 알려진 사용자 이름 및 암호 목록을 사용하여 보안을 침해하는 경우를 예로 들 수 있습니다.다단계 인증과 같이 일반적으로 매우 안전한 인증 방법이라도 요청이 제한되거나, 제한되거나, 모니터링되지 않으면 취약할 수 있습니다.

예를 들어 공격자는 /에 POST 요청을 보내 암호 복구 요청을 트리거할 수 있습니다.api/시스템/검증 코드 요청 본문에 사용자 이름을 제공합니다.앱에서 6자리 코드가 사용자의 휴대폰으로 전송되는 SMS 문자 메시지 챌린지를 사용하지만 입력 필드가 제한되지 않는 경우 몇 분 만에 애플리케이션을 분석할 수 있습니다.공격자는 올바른 숫자 조합에 도달할 때까지 가능한 모든 6자리 숫자 조합을 애플리케이션에 전송하기만 하면 됩니다.

이 시나리오에서는 표면적으로는 2단계 인증을 통해 애플리케이션을 안전하게 보호할 수 있는 것처럼 보입니다.하지만 사용자 입력이 속도 제한이 없기 때문에 인증이 제대로 이루어지지 않고 취약합니다.

또 다른 예로, 애플리케이션은 인코딩된 사용자 객체를 인증 쿠키로 사용할 수 있습니다.하지만 낮은 수준의 사용자 액세스 권한을 가진 공격자가 Base64를 사용하여 해당 쿠키를 디코딩하면 쿠키가 애플리케이션에 대한 세션과 사용자를 정의하는 방법을 발견할 수 있습니다.예를 들어 디코딩되면 다음과 같은 JSON이 표시될 수 있습니다.

{
“사용자 이름”: “ShadyGuy”,
“역할”: “사용자”
{

이때 악의적인 사용자는 사용자 이름, 역할 또는 둘 다를 변경할 수 있습니다.다음과 같은 몇 가지 값을 변경하여 더 높은 권한 수준을 가진 다른 사용자가 될 수 있습니다.

{
“아이디”: “굿가이”,
“역할”: “관리자”
{

이때 공격자가 정보를 다시 코딩하여 쿠키 값으로 설정하면 기본적으로 더 높은 권한 수준을 가진 새 사용자가 됩니다.이와 같은 변경을 방지할 수 있는 방법이 마련되어 있지 않으면 응용 프로그램이 변환을 받아들일 가능성이 높습니다.

손상되거나 잘못 구성된 인증 제거

인증에 실패하면 전반적인 보안이 침해될 가능성이 높습니다.하지만 애플리케이션을 코딩할 때 몇 가지 중요한 지침을 따르면 모든 것을 안전하게 유지하는 데 도움이 될 수 있습니다.

우선, 사용자가 프로그램 기능에 액세스할 수 있도록 모든 곳에 인증 검사를 포함해야 합니다.인증 검사가 전혀 없는 경우 전투는 처음부터 패배하게 됩니다.

모범 사례의 한 가지 좋은 점은 사용자가 액세스할 수 있는 URL에 세션 ID가 노출되지 않도록 하는 것입니다.인증 실패와 관련된 위의 두 번째 예에서는 세션 쿠키가 한 번도 노출되지 않았다면 공격자가 세션 쿠키의 디코딩을 시도하지 못하도록 하는 것이 훨씬 쉽습니다.

다단계 인증을 구현하는 것도 좋은 생각입니다.이는 촉박한 일정에 따라 알고리즘적으로 암호를 생성하는 하드웨어 토큰을 사용하여 안전하게 수행할 수 있습니다.사용자에게 이와 같은 기기를 제공할 수 없다면 SMS 문자 메시지도 효과가 있을 수 있습니다.하지만 사용자 요청은 30초 동안 세 번 또는 네 번 시도하는 것과 같이 합리적인 것으로 제한하고 코드가 모두 몇 분 후에 만료되도록 해야 합니다.영숫자 코드를 사용하면 잠재적 암호에 문자와 숫자를 추가하여 보안을 강화할 수도 있습니다.

마지막으로, 가능하면 사용자 이름이나 예측 가능한 순차적 값을 세션 ID로 사용하지 마십시오.대신 매번 임의의 세션 ID를 생성하는 안전한 서버측 세션 관리자를 사용하십시오.

보안 인증 방법을 구현하는 것은 일반적인 취약점을 해결하는 것보다 조금 더 까다롭습니다.하지만 권한 부여는 모든 애플리케이션, 프로그램 및 API에 매우 중요하므로 시간을 들여 제대로 되었는지 확인하는 것이 좋습니다.

확인해 보세요 시큐어 코드 워리어 이 취약성에 대한 자세한 정보와 다른 보안 결함으로 인한 피해로부터 조직과 고객을 보호하는 방법을 알아보려면 블로그 페이지를 참조하십시오.또한 다음과 같은 방법도 있습니다. 데모 사용해 보기 Secure Code Warrior 교육 플랫폼을 통해 모든 사이버 보안 기술을 연마하고 최신 상태로 유지할 수 있습니다.


리소스 보기
리소스 보기

보고서를 다운로드하려면 아래 양식을 작성하세요.

귀하의 동의를 구하여 당사 제품 및/또는 관련 보안 코딩 주제에 대한 정보를 보내드릴 수 있도록 하겠습니다. 당사는 항상 귀하의 개인정보를 최대한의 주의를 기울여 취급하며, 마케팅 목적으로 다른 회사에 절대 판매하지 않습니다.

제출
scw 성공 아이콘
scw 오류 아이콘
양식을 제출하려면 'Analytics' 쿠키를 활성화하십시오. 완료되면 언제든지 다시 비활성화할 수 있습니다.

인증 실패로 인해 API 문제에 대한 OWASP 목록이 된 것은 놀라운 일이 아닙니다. 인증 메커니즘은 올바르게 구현하기가 매우 어렵기로 악명이 높습니다.또한 공격자는 그 특성상 대부분의 인증 문제를 사용자에게 노출시켜야 하기 때문에 공격자가 이를 연구하고 악용할 수 있는 패턴이나 취약점을 찾아낼 기회를 주기 때문에 약간의 이점이 있습니다.

마지막으로, 인증은 애플리케이션은 물론 잠재적으로 네트워크의 나머지 부분에 대한 게이트웨이 역할을 하는 경우가 많기 때문에 공격자의 공격 대상이 될 수 있습니다.인증 프로세스가 손상되거나 취약한 경우 공격자가 해당 취약점을 발견하고 악용할 가능성이 높습니다.

따라서 이 장에서는 인증 문제와 관련하여 악의적인 사용자를 차단하는 방법을 알아보겠습니다.먼저 실력을 테스트하고 싶다면 게임화된 챌린지를 플레이하세요.

점수를 높이고 싶으신가요?우리가 그걸 분석하는 동안 내 곁에 있어줘.

손상되거나 잘못 구성된 인증의 예로는 어떤 것이 있습니까?

인증 방법이 자격 증명 스터핑에 취약하거나 알려진 사용자 이름 및 암호 목록을 사용하여 보안을 침해하는 경우를 예로 들 수 있습니다.다단계 인증과 같이 일반적으로 매우 안전한 인증 방법이라도 요청이 제한되거나, 제한되거나, 모니터링되지 않으면 취약할 수 있습니다.

예를 들어 공격자는 /에 POST 요청을 보내 암호 복구 요청을 트리거할 수 있습니다.api/시스템/검증 코드 요청 본문에 사용자 이름을 제공합니다.앱에서 6자리 코드가 사용자의 휴대폰으로 전송되는 SMS 문자 메시지 챌린지를 사용하지만 입력 필드가 제한되지 않는 경우 몇 분 만에 애플리케이션을 분석할 수 있습니다.공격자는 올바른 숫자 조합에 도달할 때까지 가능한 모든 6자리 숫자 조합을 애플리케이션에 전송하기만 하면 됩니다.

이 시나리오에서는 표면적으로는 2단계 인증을 통해 애플리케이션을 안전하게 보호할 수 있는 것처럼 보입니다.하지만 사용자 입력이 속도 제한이 없기 때문에 인증이 제대로 이루어지지 않고 취약합니다.

또 다른 예로, 애플리케이션은 인코딩된 사용자 객체를 인증 쿠키로 사용할 수 있습니다.하지만 낮은 수준의 사용자 액세스 권한을 가진 공격자가 Base64를 사용하여 해당 쿠키를 디코딩하면 쿠키가 애플리케이션에 대한 세션과 사용자를 정의하는 방법을 발견할 수 있습니다.예를 들어 디코딩되면 다음과 같은 JSON이 표시될 수 있습니다.

{
“사용자 이름”: “ShadyGuy”,
“역할”: “사용자”
{

이때 악의적인 사용자는 사용자 이름, 역할 또는 둘 다를 변경할 수 있습니다.다음과 같은 몇 가지 값을 변경하여 더 높은 권한 수준을 가진 다른 사용자가 될 수 있습니다.

{
“아이디”: “굿가이”,
“역할”: “관리자”
{

이때 공격자가 정보를 다시 코딩하여 쿠키 값으로 설정하면 기본적으로 더 높은 권한 수준을 가진 새 사용자가 됩니다.이와 같은 변경을 방지할 수 있는 방법이 마련되어 있지 않으면 응용 프로그램이 변환을 받아들일 가능성이 높습니다.

손상되거나 잘못 구성된 인증 제거

인증에 실패하면 전반적인 보안이 침해될 가능성이 높습니다.하지만 애플리케이션을 코딩할 때 몇 가지 중요한 지침을 따르면 모든 것을 안전하게 유지하는 데 도움이 될 수 있습니다.

우선, 사용자가 프로그램 기능에 액세스할 수 있도록 모든 곳에 인증 검사를 포함해야 합니다.인증 검사가 전혀 없는 경우 전투는 처음부터 패배하게 됩니다.

모범 사례의 한 가지 좋은 점은 사용자가 액세스할 수 있는 URL에 세션 ID가 노출되지 않도록 하는 것입니다.인증 실패와 관련된 위의 두 번째 예에서는 세션 쿠키가 한 번도 노출되지 않았다면 공격자가 세션 쿠키의 디코딩을 시도하지 못하도록 하는 것이 훨씬 쉽습니다.

다단계 인증을 구현하는 것도 좋은 생각입니다.이는 촉박한 일정에 따라 알고리즘적으로 암호를 생성하는 하드웨어 토큰을 사용하여 안전하게 수행할 수 있습니다.사용자에게 이와 같은 기기를 제공할 수 없다면 SMS 문자 메시지도 효과가 있을 수 있습니다.하지만 사용자 요청은 30초 동안 세 번 또는 네 번 시도하는 것과 같이 합리적인 것으로 제한하고 코드가 모두 몇 분 후에 만료되도록 해야 합니다.영숫자 코드를 사용하면 잠재적 암호에 문자와 숫자를 추가하여 보안을 강화할 수도 있습니다.

마지막으로, 가능하면 사용자 이름이나 예측 가능한 순차적 값을 세션 ID로 사용하지 마십시오.대신 매번 임의의 세션 ID를 생성하는 안전한 서버측 세션 관리자를 사용하십시오.

보안 인증 방법을 구현하는 것은 일반적인 취약점을 해결하는 것보다 조금 더 까다롭습니다.하지만 권한 부여는 모든 애플리케이션, 프로그램 및 API에 매우 중요하므로 시간을 들여 제대로 되었는지 확인하는 것이 좋습니다.

확인해 보세요 시큐어 코드 워리어 이 취약성에 대한 자세한 정보와 다른 보안 결함으로 인한 피해로부터 조직과 고객을 보호하는 방법을 알아보려면 블로그 페이지를 참조하십시오.또한 다음과 같은 방법도 있습니다. 데모 사용해 보기 Secure Code Warrior 교육 플랫폼을 통해 모든 사이버 보안 기술을 연마하고 최신 상태로 유지할 수 있습니다.


웨비나 보기
시작하기
더 알아보세요

아래 링크를 클릭하고 이 리소스의 PDF를 다운로드하십시오.

Secure Code Warrior는 전체 소프트웨어 개발 라이프사이클에서 코드를 보호하고 사이버 보안을 최우선으로 생각하는 문화를 조성할 수 있도록 조직을 위해 여기 있습니다.AppSec 관리자, 개발자, CISO 또는 보안 관련 누구든 관계없이 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 도와드릴 수 있습니다.

보고서 보기데모 예약
리소스 보기
공유 대상:
링크드인 브랜드사회적x 로고
더 많은 것에 관심이 있으신가요?

공유 대상:
링크드인 브랜드사회적x 로고
작성자
마티아스 마두, Ph.
게시일: 2020년 9월 16일

마티아스 마두는 보안 전문가, 연구원, CTO이자 Secure Code Warrior 의 공동 설립자입니다. 마티아스는 겐트 대학교에서 정적 분석 솔루션에 중점을 둔 애플리케이션 보안 박사 학위를 취득했습니다. 이후 미국의 Fortify에 입사하여 개발자의 보안 코드 작성을 지원하지 않고 코드 문제만 탐지하는 것만으로는 충분하지 않다는 것을 깨달았습니다. 이를 계기로 개발자를 지원하고 보안에 대한 부담을 덜어주며 고객의 기대를 뛰어넘는 제품을 개발하게 되었습니다. 팀 어썸의 일원으로 책상에 앉아 있지 않을 때는 RSA 컨퍼런스, 블랙햇, 데프콘 등의 컨퍼런스에서 무대에 올라 발표하는 것을 즐깁니다.

Matias는 15년 이상의 소프트웨어 보안 경험을 가진 연구원이자 개발자입니다. 그는 Fortify 소프트웨어와 같은 회사와 자신의 회사를 위한 솔루션을 개발했습니다. Sensei 안전. 그의 경력을 통해, Matias는 상용 제품으로 주도하고 자신의 벨트 아래 10 개 이상의 특허를 자랑하는 여러 응용 프로그램 보안 연구 프로젝트를 주도하고있다. 마티아스는 책상에서 떨어져 있을 때 고급 응용 프로그램 보안 교육을 위한 강사로 일했습니다. courses RSA 컨퍼런스, 블랙 햇, 데프콘, BSIMM, OWASP AppSec 및 브루콘을 포함한 글로벌 컨퍼런스에서 정기적으로 강연합니다.

마티아스는 겐트 대학교에서 컴퓨터 공학 박사 학위를 취득했으며, 프로그램 난독화를 통해 응용 프로그램 보안을 연구하여 응용 프로그램의 내부 작동을 숨깁니다.

공유 대상:
링크드인 브랜드사회적x 로고

인증 실패로 인해 API 문제에 대한 OWASP 목록이 된 것은 놀라운 일이 아닙니다. 인증 메커니즘은 올바르게 구현하기가 매우 어렵기로 악명이 높습니다.또한 공격자는 그 특성상 대부분의 인증 문제를 사용자에게 노출시켜야 하기 때문에 공격자가 이를 연구하고 악용할 수 있는 패턴이나 취약점을 찾아낼 기회를 주기 때문에 약간의 이점이 있습니다.

마지막으로, 인증은 애플리케이션은 물론 잠재적으로 네트워크의 나머지 부분에 대한 게이트웨이 역할을 하는 경우가 많기 때문에 공격자의 공격 대상이 될 수 있습니다.인증 프로세스가 손상되거나 취약한 경우 공격자가 해당 취약점을 발견하고 악용할 가능성이 높습니다.

따라서 이 장에서는 인증 문제와 관련하여 악의적인 사용자를 차단하는 방법을 알아보겠습니다.먼저 실력을 테스트하고 싶다면 게임화된 챌린지를 플레이하세요.

점수를 높이고 싶으신가요?우리가 그걸 분석하는 동안 내 곁에 있어줘.

손상되거나 잘못 구성된 인증의 예로는 어떤 것이 있습니까?

인증 방법이 자격 증명 스터핑에 취약하거나 알려진 사용자 이름 및 암호 목록을 사용하여 보안을 침해하는 경우를 예로 들 수 있습니다.다단계 인증과 같이 일반적으로 매우 안전한 인증 방법이라도 요청이 제한되거나, 제한되거나, 모니터링되지 않으면 취약할 수 있습니다.

예를 들어 공격자는 /에 POST 요청을 보내 암호 복구 요청을 트리거할 수 있습니다.api/시스템/검증 코드 요청 본문에 사용자 이름을 제공합니다.앱에서 6자리 코드가 사용자의 휴대폰으로 전송되는 SMS 문자 메시지 챌린지를 사용하지만 입력 필드가 제한되지 않는 경우 몇 분 만에 애플리케이션을 분석할 수 있습니다.공격자는 올바른 숫자 조합에 도달할 때까지 가능한 모든 6자리 숫자 조합을 애플리케이션에 전송하기만 하면 됩니다.

이 시나리오에서는 표면적으로는 2단계 인증을 통해 애플리케이션을 안전하게 보호할 수 있는 것처럼 보입니다.하지만 사용자 입력이 속도 제한이 없기 때문에 인증이 제대로 이루어지지 않고 취약합니다.

또 다른 예로, 애플리케이션은 인코딩된 사용자 객체를 인증 쿠키로 사용할 수 있습니다.하지만 낮은 수준의 사용자 액세스 권한을 가진 공격자가 Base64를 사용하여 해당 쿠키를 디코딩하면 쿠키가 애플리케이션에 대한 세션과 사용자를 정의하는 방법을 발견할 수 있습니다.예를 들어 디코딩되면 다음과 같은 JSON이 표시될 수 있습니다.

{
“사용자 이름”: “ShadyGuy”,
“역할”: “사용자”
{

이때 악의적인 사용자는 사용자 이름, 역할 또는 둘 다를 변경할 수 있습니다.다음과 같은 몇 가지 값을 변경하여 더 높은 권한 수준을 가진 다른 사용자가 될 수 있습니다.

{
“아이디”: “굿가이”,
“역할”: “관리자”
{

이때 공격자가 정보를 다시 코딩하여 쿠키 값으로 설정하면 기본적으로 더 높은 권한 수준을 가진 새 사용자가 됩니다.이와 같은 변경을 방지할 수 있는 방법이 마련되어 있지 않으면 응용 프로그램이 변환을 받아들일 가능성이 높습니다.

손상되거나 잘못 구성된 인증 제거

인증에 실패하면 전반적인 보안이 침해될 가능성이 높습니다.하지만 애플리케이션을 코딩할 때 몇 가지 중요한 지침을 따르면 모든 것을 안전하게 유지하는 데 도움이 될 수 있습니다.

우선, 사용자가 프로그램 기능에 액세스할 수 있도록 모든 곳에 인증 검사를 포함해야 합니다.인증 검사가 전혀 없는 경우 전투는 처음부터 패배하게 됩니다.

모범 사례의 한 가지 좋은 점은 사용자가 액세스할 수 있는 URL에 세션 ID가 노출되지 않도록 하는 것입니다.인증 실패와 관련된 위의 두 번째 예에서는 세션 쿠키가 한 번도 노출되지 않았다면 공격자가 세션 쿠키의 디코딩을 시도하지 못하도록 하는 것이 훨씬 쉽습니다.

다단계 인증을 구현하는 것도 좋은 생각입니다.이는 촉박한 일정에 따라 알고리즘적으로 암호를 생성하는 하드웨어 토큰을 사용하여 안전하게 수행할 수 있습니다.사용자에게 이와 같은 기기를 제공할 수 없다면 SMS 문자 메시지도 효과가 있을 수 있습니다.하지만 사용자 요청은 30초 동안 세 번 또는 네 번 시도하는 것과 같이 합리적인 것으로 제한하고 코드가 모두 몇 분 후에 만료되도록 해야 합니다.영숫자 코드를 사용하면 잠재적 암호에 문자와 숫자를 추가하여 보안을 강화할 수도 있습니다.

마지막으로, 가능하면 사용자 이름이나 예측 가능한 순차적 값을 세션 ID로 사용하지 마십시오.대신 매번 임의의 세션 ID를 생성하는 안전한 서버측 세션 관리자를 사용하십시오.

보안 인증 방법을 구현하는 것은 일반적인 취약점을 해결하는 것보다 조금 더 까다롭습니다.하지만 권한 부여는 모든 애플리케이션, 프로그램 및 API에 매우 중요하므로 시간을 들여 제대로 되었는지 확인하는 것이 좋습니다.

확인해 보세요 시큐어 코드 워리어 이 취약성에 대한 자세한 정보와 다른 보안 결함으로 인한 피해로부터 조직과 고객을 보호하는 방법을 알아보려면 블로그 페이지를 참조하십시오.또한 다음과 같은 방법도 있습니다. 데모 사용해 보기 Secure Code Warrior 교육 플랫폼을 통해 모든 사이버 보안 기술을 연마하고 최신 상태로 유지할 수 있습니다.


목차

PDF 다운로드
리소스 보기
더 많은 것에 관심이 있으신가요?

마티아스 마두는 보안 전문가, 연구원, CTO이자 Secure Code Warrior 의 공동 설립자입니다. 마티아스는 겐트 대학교에서 정적 분석 솔루션에 중점을 둔 애플리케이션 보안 박사 학위를 취득했습니다. 이후 미국의 Fortify에 입사하여 개발자의 보안 코드 작성을 지원하지 않고 코드 문제만 탐지하는 것만으로는 충분하지 않다는 것을 깨달았습니다. 이를 계기로 개발자를 지원하고 보안에 대한 부담을 덜어주며 고객의 기대를 뛰어넘는 제품을 개발하게 되었습니다. 팀 어썸의 일원으로 책상에 앉아 있지 않을 때는 RSA 컨퍼런스, 블랙햇, 데프콘 등의 컨퍼런스에서 무대에 올라 발표하는 것을 즐깁니다.

더 알아보세요

Secure Code Warrior는 전체 소프트웨어 개발 라이프사이클에서 코드를 보호하고 사이버 보안을 최우선으로 생각하는 문화를 조성할 수 있도록 조직을 위해 여기 있습니다.AppSec 관리자, 개발자, CISO 또는 보안 관련 누구든 관계없이 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 도와드릴 수 있습니다.

데모 예약다운로드
공유 대상:
링크드인 브랜드사회적x 로고
리소스 허브

시작하는 데 도움이 되는 리소스

더 많은 게시물
리소스 허브

시작하는 데 도움이 되는 리소스

더 많은 게시물