용어 사전
CVE, CVSS, RCE, SSRF, XSS, SPF/DKIM/DMARC — 용어마다 한 줄 정답과 쉬운 설명을 함께 담았습니다.
패스키란? 훔칠 것이 없는 비밀번호 없는 로그인
패스키는 공유된 비밀이 없는 로그인입니다. 기기가 개인 키와 생체 인증으로 서명하고 서버는 짝이 되는 공개 키만 저장합니다. 따라서 유출되어도 악용할 수 없고, 서명이 도메인에 묶여 있어 가짜 사이트에서는 완료되지 않아 구조적으로 피싱에 강합니다. 비밀번호 + SMS 코드보다 안전하며, 중요한 계정부터 먼저 전환하세요.
비밀번호 해싱이란? 단방향 변환으로 비밀번호를 안전하게 저장하기
비밀번호 해싱은 비밀번호를 되돌릴 수 없는 단방향 변환으로 저장하는 것입니다. 평문으로 저장하지 마세요. 암호화와 달리 복호화해 되돌릴 수 없으며, 그것이 바로 목적입니다. 그러나 평범한 MD5/SHA-256은 레인보우 테이블과 무차별 대입에 무너집니다. 해법: 사용자별 솔트와 의도적으로 느린 해시(bcrypt/Argon2/scrypt). 직접 만들지 말고 표준 함수를 사용하세요.
솔트란? 비밀번호 해시에 더하는 사용자별 '양념'
솔트는 비밀번호를 해싱하기 전에 더하는 사용자별 무작위 값입니다. 그러면 같은 비밀번호도 사용자마다 다르게 저장되어, 미리 계산된 레인보우 테이블을 무력화하고 한 번의 크래킹으로 여러 계정을 깨는 것을 막습니다. 솔트는 비밀이 아니므로 해시와 함께 저장하세요. bcrypt/Argon2는 자동으로 더해 줍니다.
피싱이란? 공격 유형과 '알아채기'보다 확실한 방어법
피싱은 신뢰하는 상대를 사칭해 가짜 로그인 페이지로 유인하여 자격 증명이나 데이터를 훔치거나 악성코드를 실행시킵니다. 소프트웨어 결함이 아닌 사람의 판단을 노리며, 랜섬웨어와 정보 유출의 최대 진입 경로입니다. 현대의 중간자(AiTM) 피싱은 일회용 코드까지 실시간으로 실제 사이트에 중계하므로 SMS/앱 MFA가 무력화될 수 있습니다. 확실한 방어는 '알아채기'가 아니라 메커니즘입니다. 도메인에 묶인 피싱에 강한 MFA(패스키/보안 키), 링크 대신 공식 사이트로 직접 가기, 이메일 인증(SPF/DKIM/DMARC).
JWT(JSON Web Token)란? 서명된 출입증의 작동 원리와 안전하게 쓰는 법
JWT는 서버가 서명해 발급하는 변조 방지 '출입증'입니다. header.payload.signature 세 부분으로 이루어지며, 서버가 서명을 검증해 진위를 확인합니다. 주의: (1) 항상 서명을 검증하고 기대하는 alg를 고정(alg:none 거부); (2) 누구나 내용을 읽을 수 있으니 시크릿을 넣지 말 것; (3) 만료를 짧게 두고 폐기 전략을 마련. 디코딩(읽기)과 검증(진위 확인)은 다른 것입니다.
랜섬웨어란? 동작 원리, 침투 경로, 그리고 몸값을 내지 않는 법
랜섬웨어는 파일을 암호화하고 되돌려주는 대가로 지불을 요구하는 악성코드입니다. 현대의 공격은 이중 갈취를 더합니다 — 먼저 데이터를 훔치고 유출하겠다고 협박하므로, 복호화만으로는 침해가 멈추지 않습니다. 주요 진입 경로: 피싱, 약하거나 MFA가 없는 VPN/RDP, 패치되지 않은 인터넷 노출 결함. 가장 중요한 방어는 오프라인/불변 백업과 복원 테스트 — 몸값 없이 복구할 수 있는 능력입니다. 또한 진입을 막고(MFA, 패치) 피해 범위를 한정하세요(최소 권한, 분할).
BitLocker란 — 분실·도난된 기기의 데이터를 지키는 Windows 디스크 암호화
BitLocker는 Windows에 내장된 디스크 암호화입니다. PC가 꺼져 있거나 드라이브가 분리된 상태의 데이터를 보호해, 도난·분실을 암호문으로 바꿉니다. 가장 큰 함정은 복구 키 — 잃어버리면 본인조차 잠겨버립니다. 켜져 있고 로그인된 PC는 보호하지 못하므로, 강력한 로그인과 자동 잠금을 함께 써야 합니다.
C2(명령 제어)란 — 침해 후 공격자가 기기를 조종하는 통로
C2는 감염된 기기가 공격자 서버로 콜백(비콘)하여 명령을 받고 데이터를 빼내는 통로로, 침해 이후 단계입니다. 포착의 핵심은 의심스러운 주기적 아웃바운드 트래픽과 알려진 악성 목적지입니다. 방어: 이그레스 필터링, DNS 모니터링, IOC/IOA 대조, 최소 권한. '잔존 C2 없음'을 확인하는 것은 침해 조사의 핵심 단계입니다.
CORS란 — 작동 원리와 잘못된 설정이 노출하는 것
CORS는 다른 오리진의 JS가 내 API 응답을 읽을 수 있는지를 브라우저가 제어하는 방식입니다. 설정 오류 — 임의의 Origin 반사, 또는 자격 증명과 함께 Access-Control-Allow-Origin:* — 는 제3자 사이트가 로그인된 데이터를 읽게 합니다. 진짜 방어: 허용 목록, Origin 무분별 반사 금지, 기본 거부.
EDR이란 — 엔드포인트의 '행위'를 기록해 빠져나간 공격을 탐지·대응하기
EDR은 엔드포인트의 행위를 지속적으로 기록하고, 의심스러운 활동을 탐지(IOA 방식)하며, 대응(격리, 조사)을 돕습니다. 시그니처/IOC 기반 안티바이러스가 놓치는 파일리스·정상 도구 악용 공격을 행위와 타임라인으로 잡아냅니다. 소규모 팀은 흔히 풀 EDR이 필요 없으며 — OS 내장 보호 + 로그 + IOA 사고방식으로 상당한 가치를 얻습니다.
IOA(Indicator of Attack)란 — 흔적이 아니라 행위로 침해를 알아채기
IOA(Indicator of Attack)는 진행 중인 공격의 행위(권한 상승 → 측면 이동 → 탈취)로 침해를 알아챕니다. 사후의 IOC와 짝을 이루는 개념입니다. 공격자는 해시와 IP를 즉시 바꾸지만, 기법(행위)은 바꾸기 어려워 — IOA는 더 오래 유효합니다. 소규모 팀도 '평소와 다른 행위'를 지켜보는 것으로 접근할 수 있습니다.
IOC(Indicator of Compromise)란 — 침해를 드러내는 흔적
IOC(Indicator of Compromise)는 침해가 남긴 흔적 — 알려진 악성 파일 해시, 공격자 IP/도메인, URL, 이상한 프로세스 — 입니다. 가치는 알려진 악성을 기계적으로 탐지·차단하는 것입니다. 하지만 공격자가 값싸게 바꿀 수 있는 사후적 단서이므로, IOC 대조는 치료제가 아니라 마지막 점검입니다. 진짜 방어는 타지 않는 설계(최소 권한, 패치, MFA)입니다.
세션 고정(Session Fixation)이란 — 공격자가 이미 아는 ID로 피해자를 로그인시키는 공격
세션 고정은 공격자가 아는 세션 ID를 피해자가 쓰게 만든 뒤, 그 ID로 로그인하면 피해자를 가장하는 공격입니다. 진짜 방어법: 로그인 시(그리고 권한 변경 시) 세션 ID를 재생성하는 것. URL의 ID를 받지 말고, HttpOnly/Secure/SameSite로 쿠키를 강화하세요.
클릭재킹이란 — 숨겨진 버튼을 누르게 만드는 보이지 않는 함정
클릭재킹은 진짜 사이트를 공격자 페이지 위에 투명하게 겹쳐, 사용자가 의도치 않은 행동(송금, 설정 변경, 동의)을 하게 만듭니다. 진짜 방어는 프레임에 끼이지 않는 것 — CSP frame-ancestors와 X-Frame-Options입니다.
IDOR이란 — ID만 바꿔서 남의 데이터를 보게 되는 것
IDOR은 사용자가 ?id=124를 125로 바꿔 남의 청구서나 개인 데이터를 읽게 만드는 — 취약한 접근 제어입니다. 진짜 방어: 매 접근마다 서버 측에서 로그인된 사용자가 이 객체에 권한이 있는지 검사하기. 추측하기 어려운 ID는 해결책이 아닙니다.
오픈 리디렉션이란 — 신뢰받는 URL이 다른 사이트로 가는 발판이 되는 취약점
오픈 리디렉션은 ?next= 형태의 파라미터가 사용자를 임의의 외부 사이트로 넘겨 보내, 신뢰받는 도메인을 피싱에 빌려주는 취약점입니다. 진짜 방어법: 외부 URL을 리디렉션 대상으로 절대 받지 않고, 상대 경로와 허용 목록만 허용하는 것.
경로 탐색(Path Traversal)이란 — ../ 로 서버가 절대 내주면 안 되는 파일을 읽는 취약점
경로 탐색은 파일명 입력에 ../ 를 섞어 기준 디렉터리를 빠져나가 .env, 설정, 키를 읽거나 쓰는 취약점입니다. 진짜 방어법: 사용자 입력을 날것의 파일 경로로 절대 쓰지 말고, 정규화한 뒤 허용된 기준 디렉터리 안으로 가두는 것.
CSRF(사이트 간 요청 위조)란 — 로그인된 사용자가 의도치 않게 행동하게 만들기
CSRF는 브라우저가 쿠키를 자동으로 붙이는 습성을 악용해, 로그인된 사용자의 브라우저가 의도치 않은 행동을 보내게 만듭니다. 진짜 방어는 CSRF 토큰과 SameSite 쿠키입니다. 상태 변경에 GET을 절대 쓰지 마세요.
SPF / DKIM / DMARC란 — 도메인을 위장 메일로부터 지키는 세 가지
SPF/DKIM/DMARC는 수신 측이 당신 도메인의 메일을 검증할 수 있게 하는 세 가지 DNS 설정입니다. SPF = 어느 서버가 보낼 수 있는가, DKIM = 암호학적 서명, DMARC = 정책과 보고서. 함께 쓰면 당신의 이름을 사칭한 위장을 막습니다. DMARC는 p=none에서 위로 단계적으로 올리세요.
SQL 인젝션(SQLi)이란 — 입력이 데이터베이스의 명령을 바꿔 쓰는 취약점
SQLi는 입력이 데이터가 아니라 '명령의 일부'로 읽혀 쿼리의 의미를 바꾸는 취약점입니다 — 곧장 읽기/변경/삭제로 이어집니다. 진짜 방어법은 SQL을 문자열로 이어 붙이기를 멈추고, 값을 플레이스홀더(프리페어드 스테이트먼트)로 넘기는 것입니다.
XSS(Cross-Site Scripting)란 — 다른 사람의 브라우저에서 실행되는 코드
XSS는 공격자가 제공한 문자열을 다른 사용자의 브라우저에서 '스크립트로' 실행시킵니다 — 곧장 세션 탈취와 가장으로 이어집니다. 진짜 방어법은 출력 시 이스케이프입니다. 프레임워크의 자동 이스케이프를 끄지 마세요.
CVE란 — 취약점에 붙는 공용 '등번호'
CVE는 취약점에 부여되는 전 세계 공용 식별자입니다(예: CVE-2025-12345). CVE = 이름, CVSS = 심각도, KEV = 실제로 악용되는가. 모니터링의 기준점입니다. 손이 아니라 기계로 추적하세요.
CVSS란 — 심각도 점수와 그 실제 채점 방식
CVSS는 심각도를 0.0–10.0으로 평가합니다. 점수는 정의된 지표(공격 벡터, 복잡도, 권한, 사용자 상호작용, 범위, CIA 영향)를 공개 공식으로 계산한 값이며 — 추측이 아닙니다. 기준을 알면 10.0이 무엇을 뜻하는지 읽을 수 있습니다. 그래도 우선순위는 KEV(악용 여부)와 사용 여부로 정하세요.
.env란 — 환경 파일이 유출되면 무슨 일이 일어나는가
.env는 앱의 시크릿(DB 인증, API 키, 암호화 키)을 담습니다. 키가 한 파일에 모여 있어, 노출되면 모든 시크릿이 한꺼번에 새어 나갑니다. 앱은 문서 루트 바깥에 두고, git에 절대 커밋하지 말며, 유출되면 전부 교체하세요.
RCE(원격 코드 실행)란 — 왜 최악의 취약점 부류인가
RCE는 공격자가 당신의 서버에서 임의의 코드를 실행하게 합니다 — 곧장 장악으로 이어지는 최악의 부류입니다. 피해 범위는 실행 중인 프로세스의 권한으로 결정됩니다. 핵심 방어는 빠른 패치, CVE 모니터링, 최소 권한입니다.
SSRF(Server-Side Request Forgery)란
SSRF는 외부 입력 URL을 악용해 서버가 내부 자원(내부 IP, 클라우드 메타데이터)을 치게 만듭니다. URL을 가져오는 기능이 있다면, 목적지 허용 목록, 내부 대상 차단, 그리고 리디렉션/DNS 리바인딩 구멍을 닫는 것이 필요합니다. Capital One 침해의 진입점이었습니다.