코더는 보안 OWASP 상위 10 API 시리즈를 정복 - 깨진 인증

게시일: 2020년 9월 16일
작성자: 마티아스 마두, Ph.
사례 연구

코더는 보안 OWASP 상위 10 API 시리즈를 정복 - 깨진 인증

게시일: 2020년 9월 16일
작성자: 마티아스 마두, Ph.
리소스 보기
리소스 보기

인증이 깨진 경우 API 문제에 대한 OWASP 목록이 올바르게 구현하기 어려운 것으로 악명이 높습니다. 또한 공격자는 본질적으로 대부분의 인증 문제를 사용자에게 노출해야 하므로 공격자가 이를 연구하고 악용할 수 있는 패턴이나 취약점을 찾을 수 있는 기회를 제공해야 하기 때문에 약간의 이점이 있습니다.

마지막으로 인증은 응용 프로그램 과 네트워크의 나머지 부분에 대한 게이트웨이 역할을 하는 경우가 많기 때문에 공격자에 대한 대상을 유혹하고 있습니다. 인증 프로세스가 깨지거나 취약하면 공격자가 약점을 발견하고 악용할 가능성이 높습니다.

그래서, 이 장에서, 우리는 인증 문제에 관해서 나쁜 사람을 종료하는 방법을 배울 거 야. 먼저 기술을 테스트하려면 머리를 숙이고 게임화 된 도전을 플레이하십시오.

점수를 향상시키고 싶으신가요? 우리가 그것을 무너뜨리는 동안 나와 함께 있어.

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

인증 방법이 자격 증명 스터핑에 취약하거나 알려진 사용자 이름과 암호 목록을 사용하여 보안을 끊을 수 있는 경우문제가 명확하지 않을 수 있습니다. 요청이 제한되거나 제한되거나 모니터링되지 않는 경우 다단계 인증과 같은 일반적으로 매우 안전한 권한 부여 방법조차도 취약할 수 있습니다.

예를 들어 공격자는 POST 요청을/api/system/확인 코드로 보내고 요청 본문에 사용자 이름을 제공하여 암호 복구 요청을 트리거할 수 있습니다. 앱이 6자리 코드가 사용자의 휴대폰으로 전송되지만 입력 필드가 제한되지 않는 SMS 문자 메시지 챌린지를 사용하는 경우 응용 프로그램이 단 몇 분 만에 끊어질 수 있습니다. 공격자는 올바른 조합을 칠 때까지 가능한 모든 6자리 조합을 응용 프로그램에 보내야 합니다.

이 시나리오에서는 표면에서 이중 인증을 사용하면 응용 프로그램을 안전하게 유지하는 것처럼 보입니다. 그러나 사용자 입력속도가 제한되지 않으므로 인증이 끊어지고 취약합니다.

또 다른 예에서 응용 프로그램은 인코딩된 사용자 개체를 인증 쿠키로 사용할 수 있습니다. 그러나 수준이 낮은 사용자 액세스가 있는 공격자가 Base64를 사용하여 쿠키를 디코딩하는 경우 쿠키가 세션과 사용자를 응용 프로그램에 정의하는 방법을 발견할 수 있습니다. 예를 들어, 그들은 다음 JSON을 볼 수 있습니다 한 번 디코딩:

{
"username" : "ShadyGuy",
"role" : "user"
{

이 시점에서 악의적인 사용자가 사용자 이름, 역할 또는 둘 다 변경할 수 있습니다. 몇 가지 값을 변경하여 권한 수준이 높은 다른 사용자가 될 수 있습니다.

{
"username" : "GoodGuy",
"role" : "admin"
{

이 시점에서 공격자가 정보를 다시 코딩하고 쿠키 값으로 설정하면 기본적으로 더 높은 권한 수준을 가진 새 사용자가 됩니다. 이러한 변경을 방지하기 위한 방법이 마련되지 않는 한 응용 프로그램이 변환을 수락할 가능성이 높습니다.

잘못되었거나 잘못 구성된 인증 제거

인증에 실패하면 전반적으로 보안이 손상될 가능성이 큽분입니다. 그러나 코딩 응용 프로그램이 모든 것을 안전하게 유지하는 데 도움이 될 수 있지만 몇 가지 중요한 지침을 따르면 모든 것을 안전하게 유지하는 데 도움이 될 수 있습니다.

먼저 사용자가 프로그램 기능에 액세스할 수 있도록 모든 곳에서 인증 검사를 포함해야 합니다. 인증 검사가 전혀 존재하지 않으면 처음부터 전투가 손실됩니다.

모범 사례의 관점에서 볼 때 사용자가 액세스할 수 있는 URL에 세션 ID가 노출되지 않도록 하는 것이 좋습니다. 깨진 인증과 관련하여 위의 두 번째 예에서는 공격자가 세션 쿠키에 노출되지 않으면 세션 쿠키를 디코딩하지 않도록 하는 것이 훨씬 쉽습니다.

다단계 인증을 구현하는 것도 좋습니다. 이 작업은 촉박한 일정에 따라 알고리즘적으로 암호를 생성하는 하드웨어 토큰을 사용하여 안전하게 수행할 수 있습니다. 사용자에게 이러한 장치를 제공할 수 없는 경우 SMS 문자 메시지도 작동할 수 있습니다. 그러나 사용자 요청이 30초 동안 3~4회 시도와 같은 합리적인 것으로 제한되고 코드가 단 몇 분 만에 모두 함께 만료되는지 확인해야 합니다. 거상 코드를 사용하면 잠재적인 암호에 문자와 번호를 추가하여 보안을 향상시킬 수도 있습니다.

마지막으로 가능하면 사용자 이름 또는 세션 ID로 예측 가능한 순차적 값에 따라 달라지 마십시오. 대신 매번 임의의 세션 ID를 생성하는 보안 서버 측 세션 관리자를 사용합니다.

보안 인증 방법을 구현하는 것은 평균 취약점에 대처하는 것보다 조금 더 까다롭습니다. 그러나 권한 부여는 모든 응용 프로그램, 프로그램 및 API에 매우 중요하기 때문에 올바른 것을 얻기 위해 여분의 시간을 할애할 가치가 있습니다.

체크 아웃 Secure Code Warrior 이 취약점에 대한 자세한 정보를 위한 블로그 페이지와 다른 보안 결함의 파괴로부터 조직과 고객을 보호하는 방법. 데모를 시도할 수도 있습니다. Secure Code Warrior 모든 사이버 보안 기술을 연마하고 최신 상태로 유지하기 위한 교육 플랫폼을 제공합니다.


리소스 보기
리소스 보기

저자

마티아스 마두, Ph.

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

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

더 알고 싶으신가요?

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

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

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

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

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

리소스 허브

코더는 보안 OWASP 상위 10 API 시리즈를 정복 - 깨진 인증

게시일: 2020년 9월 16일
마티아스 마두, Ph.

인증이 깨진 경우 API 문제에 대한 OWASP 목록이 올바르게 구현하기 어려운 것으로 악명이 높습니다. 또한 공격자는 본질적으로 대부분의 인증 문제를 사용자에게 노출해야 하므로 공격자가 이를 연구하고 악용할 수 있는 패턴이나 취약점을 찾을 수 있는 기회를 제공해야 하기 때문에 약간의 이점이 있습니다.

마지막으로 인증은 응용 프로그램 과 네트워크의 나머지 부분에 대한 게이트웨이 역할을 하는 경우가 많기 때문에 공격자에 대한 대상을 유혹하고 있습니다. 인증 프로세스가 깨지거나 취약하면 공격자가 약점을 발견하고 악용할 가능성이 높습니다.

그래서, 이 장에서, 우리는 인증 문제에 관해서 나쁜 사람을 종료하는 방법을 배울 거 야. 먼저 기술을 테스트하려면 머리를 숙이고 게임화 된 도전을 플레이하십시오.

점수를 향상시키고 싶으신가요? 우리가 그것을 무너뜨리는 동안 나와 함께 있어.

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

인증 방법이 자격 증명 스터핑에 취약하거나 알려진 사용자 이름과 암호 목록을 사용하여 보안을 끊을 수 있는 경우문제가 명확하지 않을 수 있습니다. 요청이 제한되거나 제한되거나 모니터링되지 않는 경우 다단계 인증과 같은 일반적으로 매우 안전한 권한 부여 방법조차도 취약할 수 있습니다.

예를 들어 공격자는 POST 요청을/api/system/확인 코드로 보내고 요청 본문에 사용자 이름을 제공하여 암호 복구 요청을 트리거할 수 있습니다. 앱이 6자리 코드가 사용자의 휴대폰으로 전송되지만 입력 필드가 제한되지 않는 SMS 문자 메시지 챌린지를 사용하는 경우 응용 프로그램이 단 몇 분 만에 끊어질 수 있습니다. 공격자는 올바른 조합을 칠 때까지 가능한 모든 6자리 조합을 응용 프로그램에 보내야 합니다.

이 시나리오에서는 표면에서 이중 인증을 사용하면 응용 프로그램을 안전하게 유지하는 것처럼 보입니다. 그러나 사용자 입력속도가 제한되지 않으므로 인증이 끊어지고 취약합니다.

또 다른 예에서 응용 프로그램은 인코딩된 사용자 개체를 인증 쿠키로 사용할 수 있습니다. 그러나 수준이 낮은 사용자 액세스가 있는 공격자가 Base64를 사용하여 쿠키를 디코딩하는 경우 쿠키가 세션과 사용자를 응용 프로그램에 정의하는 방법을 발견할 수 있습니다. 예를 들어, 그들은 다음 JSON을 볼 수 있습니다 한 번 디코딩:

{
"username" : "ShadyGuy",
"role" : "user"
{

이 시점에서 악의적인 사용자가 사용자 이름, 역할 또는 둘 다 변경할 수 있습니다. 몇 가지 값을 변경하여 권한 수준이 높은 다른 사용자가 될 수 있습니다.

{
"username" : "GoodGuy",
"role" : "admin"
{

이 시점에서 공격자가 정보를 다시 코딩하고 쿠키 값으로 설정하면 기본적으로 더 높은 권한 수준을 가진 새 사용자가 됩니다. 이러한 변경을 방지하기 위한 방법이 마련되지 않는 한 응용 프로그램이 변환을 수락할 가능성이 높습니다.

잘못되었거나 잘못 구성된 인증 제거

인증에 실패하면 전반적으로 보안이 손상될 가능성이 큽분입니다. 그러나 코딩 응용 프로그램이 모든 것을 안전하게 유지하는 데 도움이 될 수 있지만 몇 가지 중요한 지침을 따르면 모든 것을 안전하게 유지하는 데 도움이 될 수 있습니다.

먼저 사용자가 프로그램 기능에 액세스할 수 있도록 모든 곳에서 인증 검사를 포함해야 합니다. 인증 검사가 전혀 존재하지 않으면 처음부터 전투가 손실됩니다.

모범 사례의 관점에서 볼 때 사용자가 액세스할 수 있는 URL에 세션 ID가 노출되지 않도록 하는 것이 좋습니다. 깨진 인증과 관련하여 위의 두 번째 예에서는 공격자가 세션 쿠키에 노출되지 않으면 세션 쿠키를 디코딩하지 않도록 하는 것이 훨씬 쉽습니다.

다단계 인증을 구현하는 것도 좋습니다. 이 작업은 촉박한 일정에 따라 알고리즘적으로 암호를 생성하는 하드웨어 토큰을 사용하여 안전하게 수행할 수 있습니다. 사용자에게 이러한 장치를 제공할 수 없는 경우 SMS 문자 메시지도 작동할 수 있습니다. 그러나 사용자 요청이 30초 동안 3~4회 시도와 같은 합리적인 것으로 제한되고 코드가 단 몇 분 만에 모두 함께 만료되는지 확인해야 합니다. 거상 코드를 사용하면 잠재적인 암호에 문자와 번호를 추가하여 보안을 향상시킬 수도 있습니다.

마지막으로 가능하면 사용자 이름 또는 세션 ID로 예측 가능한 순차적 값에 따라 달라지 마십시오. 대신 매번 임의의 세션 ID를 생성하는 보안 서버 측 세션 관리자를 사용합니다.

보안 인증 방법을 구현하는 것은 평균 취약점에 대처하는 것보다 조금 더 까다롭습니다. 그러나 권한 부여는 모든 응용 프로그램, 프로그램 및 API에 매우 중요하기 때문에 올바른 것을 얻기 위해 여분의 시간을 할애할 가치가 있습니다.

체크 아웃 Secure Code Warrior 이 취약점에 대한 자세한 정보를 위한 블로그 페이지와 다른 보안 결함의 파괴로부터 조직과 고객을 보호하는 방법. 데모를 시도할 수도 있습니다. Secure Code Warrior 모든 사이버 보안 기술을 연마하고 최신 상태로 유지하기 위한 교육 플랫폼을 제공합니다.


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

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