0Pricing
Cloud & IT Cert Prep · 강의

취약한 인증과 안전하지 않은 역직렬화

취약한 세션 관리, 자격 증명 대입, 안전하지 않은 역직렬화 취약점으로 공격자가 계정을 탈취하고 코드를 실행할 수 있는 방식을 살펴봅니다.

취약한 인증과 안전하지 않은 역직렬화은(는) CoddyKit의 무료 Cloud & IT Cert Prep 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cloud & IT Cert Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

손상된 인증이란 무엇인가요?

손상된 인증은 애플리케이션이 사용자의 신원을 Verify하고 세션을 관리하는 방식의 약점을 의미합니다. 인증이 손상되면 공격자는 Password, 키 또는 세션 토큰을 침해하여 다른 사용자의 신원을 가장할 수 있습니다. 이 OWASP Top 10 범주에는 취약한 자격 증명, 부실한 세션 관리, MFA 누락, 안전하지 않은 자격 증명 저장 등 다양한 결함이 포함됩니다.

자격 증명 스터핑과 Password 스프레이

자격 증명 스터핑은 이전 데이터 유출에서 얻은 대규모 사용자 이름 및 Password 쌍 목록을 사용해 다른 사이트에도 대입하며, Password 재사용을 악용합니다. Password 스프레이는 반대 방식으로 작동합니다. 계정 잠금 기준을 피하기 위해 소수의 흔한 Password(예: Password1!)를 여러 계정에 시도합니다. 두 공격이 성공하는 이유는 취약한 Password 정책과 MFA의 부재입니다.

# Password spraying concept (defensive awareness)
# Attacker tries 'Password1!' against 10,000 accounts
# rather than trying 10,000 passwords against 1 account
# This avoids triggering lockout policies (e.g., 5 attempts/account)

# Defense: MFA + adaptive authentication + rate limiting

취약한 세션 관리

세션은 인증된 사용자를 애플리케이션 상태에 연결합니다. 취약한 세션 관리의 결함에는 예측 가능한 세션 토큰 값(공격자가 추측할 수 있는 순차적 ID), 만료되지 않는 토큰, HTTPS가 아닌 HTTP를 통한 토큰 전송, Logout 시 토큰을 무효화하지 않는 문제가 포함됩니다. 유효한 세션 토큰을 얻은 Attacker는 사용자의 Password를 몰라도 사용자를 가장할 수 있습니다.

# Signs of weak session management:
# /login response sets:
# Set-Cookie: session=1042  (predictable, sequential)
# Missing: Secure; HttpOnly; SameSite flags
# Missing: session expiry / Max-Age
# Logout does NOT invalidate server-side session

세션 고정과 세션 탈취

세션 고정은 피해자가 공격자가 선택한 세션 ID를 사용하도록 강제합니다. 예를 들어 공격자가 미리 설정된 세션 쿠키가 포함된 링크를 보내면, 피해자가 인증한 후 공격자는 동일한 세션 ID를 사용해 계정에 접근할 수 있습니다. 세션 탈취는 XSS, 네트워크 스니핑(암호화되지 않은 연결에서), 또는 도난당한 쿠키를 통해 기존 세션 토큰을 훔치는 공격입니다. 해결 방법은 로그인 후 세션 ID를 재생성하고 모든 곳에서 HTTPS를 사용하는 것입니다.

안전하지 않은 Password 저장

Password를 평문으로 저장하거나 취약한 해시(MD5, SHA-1)를 사용하는 것은 심각한 인증 실패입니다. 데이터베이스가 침해되면 평문 Password와 취약한 해시는 즉시 악용할 수 있습니다. 안전한 Password 저장에는 Password를 위해 설계된 적응형 해시 알고리즘인 bcrypt, Argon2 또는 사용자별 무작위 솔트를 적용한 PBKDF2가 필요합니다. 이러한 알고리즘은 의도적으로 느리게 설계되어 오프라인 크래킹에 많은 계산 비용이 들게 합니다.

# Python example — secure password hashing with bcrypt
import bcrypt

# Hash a password (includes random salt automatically)
password = b'UserSuperSecret123'
hashed = bcrypt.hashpw(password, bcrypt.gensalt(rounds=12))

# Verify
bcrypt.checkpw(password, hashed)  # returns True

안전하지 않은 역직렬화란 무엇인가요?

직렬화는 저장 또는 전송을 위해 객체의 상태를 형식(JSON, XML, 이진 형식)으로 변환합니다. 역직렬화는 해당 형식에서 객체를 재구성합니다. 안전하지 않은 역직렬화는 애플리케이션이 검증 없이 공격자가 제어하는 데이터를 역직렬화할 때 발생합니다. 공격자는 직렬화된 객체를 수정하여 애플리케이션 로직을 조작하거나, 권한을 상승시키거나, Server에서 임의의 코드를 실행할 수 있습니다.

역직렬화 공격 예시

일반적인 공격 패턴은 쿠키나 API 매개변수로 전달되는 직렬화된 객체를 이용합니다. 예를 들어 신뢰할 수 없는 데이터에 ObjectInputStream.readObject()를 사용하는 Java 애플리케이션은 널리 사용되는 라이브러리(Apache Commons Collections)의 가젯 체인을 통해 원격 코드 실행(RCE)을 유발할 수 있습니다. 공격자는 Malicious 직렬화 페이로드를 만들어 애플리케이션으로 보내며, 인증 확인이 실행되기 전이라도 역직렬화 과정에서 코드가 실행됩니다.

# Insecure deserializing pattern (Python pickle — dangerous)
import pickle

# Attacker-controlled payload
class Exploit:
    def __reduce__(self):
        import os
        return (os.system, ('id',))  # executes 'id' on server

payload = pickle.dumps(Exploit())
pickle.loads(payload)  # RCE! Never deserialize untrusted data with pickle

안전하지 않은 역직렬화 방지

안전하지 않은 역직렬화에 대한 방어 방법은 다음과 같습니다. Java 기본 직렬화나 Python pickle과 같이 위험한 형식으로 신뢰할 수 없는 데이터를 절대 역직렬화하지 않아야 합니다. 이진 직렬화보다 데이터 전용 형식(JSON, XML)을 우선 사용하십시오. 역직렬화가 필요한 경우 무결성 검사(직렬화된 객체에 HMAC 서명)를 구현하고, 역직렬화할 수 있는 class를 제한하는 허용 목록을 사용하며, 역직렬화 코드를 격리된 최소 권한 환경에서 실행해야 합니다.

# Safe approach: sign serialized data before transmitting
import hmac, hashlib, json

def serialize_safe(data, secret):
    payload = json.dumps(data)  # use JSON, not pickle
    sig = hmac.new(secret.encode(), payload.encode(), hashlib.sha256).hexdigest()
    return payload + '.' + sig

제어 수단으로서의 다중 요소 인증

다중 요소 인증(MFA)은 손상된 인증에 대응하는 가장 효과적인 단일 제어 수단입니다. 피싱, 자격 증명 스터핑 또는 데이터베이스 침해로 자격 증명이 노출되더라도 두 번째 요소가 없는 Attacker는 인증할 수 없습니다. Microsoft의 보고에 따르면 MFA는 자동화된 계정 침해 공격의 99.9% 이상을 차단합니다. 권한이 높은 계정에는 MFA를 의무화하고 모든 사용자에게 사용을 권장해야 합니다.

Account 잠금 및 속도 제한

Account 잠금 정책은 로그인 실패가 정의된 횟수에 도달하면 Account를 일시적으로 비활성화하여 무차별 대입 공격을 늦춥니다. 그러나 잠금은 정상적인 User를 대상으로 한 서비스 거부를 가능하게 할 수 있습니다. Attacker가 의도적으로 잠금을 유발하여 접근을 막기 때문입니다. 속도 제한(반복된 실패 후 지수적 백오프를 사용하여 응답을 늦추는 방식)과 CAPTCHA 문제는 DoS 위험을 줄이면서 무차별 대입 공격을 완화합니다.

OWASP Top 10의 취약한 Authentication

OWASP는 취약한 Authentication을 심각한 위험으로 분류합니다. Authentication 결함은 흔히 발생하며 영향도 크기 때문입니다. 취약한 Authentication의 주요 지표는 다음과 같습니다. 자격 증명 스터핑과 같은 자동화된 공격을 허용하는 경우, 무차별 대입이나 기타 자동화된 공격을 허용하는 경우, 기본 Password·취약한 Password·널리 알려진 Password를 허용하는 경우, 취약한 자격 증명 복구 프로세스를 사용하는 경우, 평문 또는 취약하게 해시된 Password를 사용하는 경우, 다중 요소 Authentication이 없거나 효과적으로 작동하지 않는 경우입니다.

빠른 Check

이 lesson에서 배운 CompTIA Security+ (SY0-701) 개념을 점검해 보십시오.

lesson 요약

이 lesson에서는 취약한 Authentication에 취약한 세션, 자격 증명 스터핑, 안전하지 않은 Password 저장이 포함된다는 점, 안전하지 않은 역직렬화가 악성 직렬화 Object를 통해 원격 코드 실행으로 이어질 수 있다는 점, MFA, bcrypt Password 해싱, 로그인 후 세션 재생성, 서명된 직렬화 데이터가 핵심 방어 수단이라는 점을 배웠습니다. 다음에는 보안 SDLC, SAST, DAST 도구를 살펴봅니다.

자주 묻는 질문

“취약한 인증과 안전하지 않은 역직렬화” 강의는 무료인가요?

네 — “취약한 인증과 안전하지 않은 역직렬화” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cloud & IT Cert Prep 강의 전체를 잠금 해제할 수 있습니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

“취약한 인증과 안전하지 않은 역직렬화”에서 뭘 배우나요?

취약한 세션 관리, 자격 증명 대입, 안전하지 않은 역직렬화 취약점으로 공격자가 계정을 탈취하고 코드를 실행할 수 있는 방식을 살펴봅니다. 브라우저에서 직접 실행하는 실습 코드로 Cloud & IT Cert Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cloud & IT Cert Prep을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cloud & IT Cert Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“취약한 인증과 안전하지 않은 역직렬화” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cloud & IT Cert Prep 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cloud & IT Cert Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. SQL 삽입과 명령 삽입
  2. 사이트 간 스크립팅(XSS)과 CSRF
  3. 취약한 인증과 안전하지 않은 역직렬화
  4. 보안 SDLC, SAST, DAST 도구
← Cloud & IT Cert Prep(으)로 돌아가기