OWASP 개발자 웹 애플리케이션 API 보안 가이드

owasp 보안 가이드

OWASP 개발자 웹 애플리케이션 API 보안 가이드 – OWASP 에서는 개발자들에게 웹 애플리케이션 API 보안 가이드를 제공하고 있으며 코드 및 샘플 공격 방법 등을 제공함으로써 보안 지침과 권장 사항을 제공합니다.





 

권한(인증) 부재 취약점 / 객체 수준의 권한 인증 부재

깨진 객체 수준 권한은 API에서 적절하지 않은 인가 제어로, API 호출이 미승인된 사용자가 민감한 데이터 또는 기능에 접근할 수 있게 하는 위험을 가리킵니다. 이는 API 호출이 호출자의 권한을 올바르게 확인하지 않거나, 권한이 서버 측에서 올바르게 적용되지 않은 경우 발생할 수 있습니다.

 

위험

객체 수준 권한과 관련된 몇 가지 일반적인 위험 요소는 다음과 같습니다:
• 미승인된 당사자에 의한 민감한 데이터의 접근 또는 수정
• 민감한 기능에 대한 미승인된 액세스, 데이터 삭제 또는 수정과 같은 기능
• 미승인된 당사자에 의한 권한 상승

 

공격 시나리오

클라우드 애플리케이션에 대한 공격 시나리오는 다음과 같을 수 있습니다:
• 공격자가 API 호출을 가로채어 호출자의 권한을 변경하여 민감한 데이터 또는 기능에 액세스
• 공격자가 더 높은 권한을 가진 손상된 계정을 사용하여 민감한 데이터 또는 기능에 액세스
• 공격자가 API의 취약점을 이용하여 인가 검사를 우회





 

취약한 샘플 코드

아래는 Go 언어에 대한 취약한 샘플 코드 입니다:


unc deleteData(w http.ResponseWriter, r *http.Request) {
// Get the user’s ID from the request
userID := r.Header.Get(“X-User-ID”)
// Delete the data from the database
err := database.DeleteData(userID)
if err != nil {
http.Error(w, “Error deleting data”, http.StatusInternalServerError)
return
}
// Return a success message to the user
json.NewEncoder(w).Encode(“Data deleted successfully”)
}


이 예시에서 API 호출은 요청 헤더에 포함된 사용자의 ID를 기반으로 데이터베이스에서 데이터를 검색합니다. 그러나 사용자가 데이터에 액세스할 권한이 있는지 확인하거나 인가를 확인하는 검증 절차가 없습니다. 공격자는 API 호출을 가로채어 사용자 ID를 수정하여, 자신이 액세스할 권한이 없는 데이터에 접근할 수 있는 취약점을 악용할 수 있습니다.

 

공격 예시

다음과 같은 curl 명령어를 사용한 공격 예시 입니다.


curl -H “X-User-ID: attacker_user_id” -X DELETE http://www.koreapulse.com/


 

MITRE ATT&CK 프레임워크 참조

깨진 함수 수준 권한은 Tactic(전략): 권한 상승 및 Techniques(기법): 제3자 도메인에 대한 제어되지 않은 링크 지향, MITRE ATT&CK 프레임워크의 경로 요소에서 제어되지 않는 검색과 연결될 수 있습니다. 이러한 기법은 인가 제어의 취약점을 악용하여 공격자가 액세스할 수 없는 리소스나 기능에 액세스하는 것을 포함합니다.





완화 방안

클라우드 API 애플리케이션에서 깨진 객체 수준 권한을 완화하기 위해 다음 단계를 취할 수 있습니다:

  1. 적절한 액세스 제어 사용: 역할 기반의 액세스 제어를 구현하고 객체가 승인된 사용자에 의해서만 액세스 가능하도록 보장합니다.
  2. 사용자 입력 유효성 검증: 모든 사용자 입력이 유효성을 검사하고 무단으로 객체에 액세스하지 못하도록 살균합니다.
  3. 암호화 사용: 네트워크를 통해 전송되는 민감한 데이터와 클라우드에 저장되는 데이터를 보호하기 위해 암호화를 사용합니다.
  4. API 활동 모니터링: 비정상적이거나 의심스러운 행동을 모니터링하고 적절한 로깅 및 감사 메커니즘을 구현합니다.
  5. 속도 제한 구현: 브루트 포스 공격을 방지하고 DDoS 공격의 영향을 제한하기 위해 속도 제한을 구현합니다.
  6. API 키 사용: API 요청을 인증하고 승인된 요청만 처리되도록 API 키를 사용합니다.
  7. API 게이트웨이 사용: API 게이트웨이를 사용하여 API 액세스를 제어하고 보안 정책을 시행하며 API 사용을 모니터링합니다.
  8. OAuth2 사용: OAuth2를 사용하여 인증 및 권한 부여를 통해 API에 안전한 액세스를 제공합니다.
  9. API 문서 사용: API 문서를 사용하여 API를 안전하게 사용하고 일반적인 보안 문제를 방지하기 위한 명확한 지침을 제공합니다.
  10. 최신 상태 유지: 클라우드 환경 및 API의 최신 보안 패치 및 업데이트를 유지합니다.





답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다