안전하지 않은 역직렬화란? 객체 변조가 코드 실행으로 이어지는 이유

안전하지 않은 역직렬화

안전하지 않은 역직렬화 취약점의 발생 원인과 객체 변조가 코드 실행으로 이어지는 과정, 취약한 Java 코드 및 안전한 대응 방법을 알아봅니다. 웹 애플리케이션은 사용자 설정, 로그인 상태, 캐시 데이터처럼 여러 정보를 저장하거나 다른 시스템으로 전달한다. 이 과정에서 프로그램이 사용하는 객체를 파일이나 문자열 형태로 변환하기도 한다. 변환된 데이터를 다시 객체로 복원할 때 외부에서 조작된 값을 그대로 사용하면 … 더 읽기

XXE 취약점이란? XML 외부 개체 공격의 원인과 대응 방법

XXE 취약점

XXE 취약점이 발생하는 원인과 XML 외부 개체가 처리되는 원리, 취약한 Java 코드 및 DTD·외부 엔티티를 차단하는 방법을 알아봅니다. XML은 시스템 사이에서 데이터를 주고받거나 설정 정보를 저장할 때 사용하는 문서 형식이다. 최근에는 JSON이 널리 사용되고 있지만, SOAP 기반 웹서비스와 기업용 연계 시스템, 문서 변환 기능에서는 여전히 XML을 사용한다. XML 데이터를 처리하는 과정에서 파서의 외부 개체 기능이 … 더 읽기

SSRF 취약점이란? 서버가 내부 주소로 요청하게 되는 원리

SSRF 취약점이란

SSRF 취약점이 발생하는 원인과 서버가 내부 주소로 요청을 보내는 과정, 취약한 Java 코드 및 URL 검증·네트워크 차단 방법을 알아봅니다. 웹사이트에는 사용자가 입력한 URL의 내용을 서버가 대신 가져오는 기능이 있다. 게시물에 포함된 링크의 미리보기 생성, 외부 이미지 등록, 웹훅 전송, 원격 파일 다운로드와 같은 기능이 대표적이다. 정상적인 사용자는 공개된 웹사이트 주소를 입력하지만 공격자는 서버만 접근할 수 … 더 읽기

파일 업로드 취약점이란? 웹쉘 업로드를 차단하는 보안 설정

파일 업로드 취약점

파일 업로드 취약점이 발생하는 원인과 웹쉘 공격 과정, 취약한 코드 및 확장자 검사·저장 경로 분리·실행 권한 차단 방법을 알아봅니다. 게시판 첨부파일, 프로필 사진, 이력서 제출처럼 파일을 올리는 기능은 대부분의 웹사이트에서 사용된다. 사용자는 파일 하나를 선택할 뿐이지만 서버에서는 파일의 이름과 형식을 확인하고, 지정된 경로에 저장한 뒤 다시 내려받을 수 있도록 처리한다. 이 과정에서 파일을 제대로 검사하지 … 더 읽기

파일 삽입 취약점이란? LFI와 RFI의 차이점 쉽게 이해하기

파일 삽입 취약점

파일 삽입 취약점이 발생하는 원리를 살펴보고 LFI와 RFI의 차이, 경로 조작 취약점과의 구분, 안전한 파일 호출 방법을 알아봅니다. 예전 웹사이트에서는 하나의 주소로 여러 화면을 불러오기 위해 URL 파라미터에 페이지 이름을 전달하는 방식을 자주 사용했습니다. 주소 뒤에 page=notice나 menu=contact 같은 값이 붙고, 서버는 이 값을 이용해 해당 파일을 불러오는 구조입니다. 문제는 사용자가 전달한 값을 서버에서 그대로 … 더 읽기

경로 조작 취약점이란? 디렉터리 트래버설의 원리와 대응 방법

경로 조작 취약점

경로 조작 취약점과 디렉터리 트래버설이 발생하는 원리를 알아보고, 안전한 파일 경로 검증과 기준 디렉터리 제한을 이용한 대응 방법을 살펴봅니다. 웹사이트에서 첨부파일을 내려받을 때 주소를 살펴보면 파일명이나 파일 번호가 파라미터로 전달되는 경우가 있습니다. 서버는 해당 값을 받아 저장된 파일의 위치를 찾고 사용자에게 파일을 전송합니다. 정상적인 파일만 선택할 수 있다면 별다른 문제가 없습니다. 하지만 사용자가 전달한 파일명이나 … 더 읽기

OS 명령어 삽입 취약점이란? 위험한 코드와 안전한 예방 방법

OS 명령어 삽입

OS 명령어 삽입 취약점이 발생하는 원리와 위험한 코드 구조를 살펴보고, 외부 명령어 제거와 입력값 검증, 최소 권한 설정을 이용한 대응 방법을 알아봅니다. 웹서비스를 개발하다 보면 운영체제 기능이 필요한 순간이 생깁니다. 서버 상태를 확인하거나 파일을 변환하고, 특정 프로그램을 실행해야 할 수도 있습니다. 이때 자바의 Runtime.exec(), 파이썬의 os.system(), PHP의 system()과 같은 기능을 사용할 수 있습니다. 문제는 사용자가 … 더 읽기

CSRF 공격이란? 사용자 요청이 위조되는 원리와 방어 방법

CSRF 공격이 발생하는 원리와 실제 피해 유형을 살펴보고 CSRF 토큰, SameSite 쿠키, Origin 검증 등을 이용한 안전한 대응 방법을 알아봅니다. 웹사이트에 로그인한 상태에서 다른 페이지의 링크를 클릭했을 뿐인데, 내 계정의 이메일 주소가 바뀌거나 원하지 않는 요청이 처리된다면 어떨까요? 사용자는 정상적인 사이트에서 직접 기능을 실행하지 않았지만, 서버에는 로그인된 사용자가 보낸 것처럼 요청이 전달될 수 있습니다. 이처럼 … 더 읽기

XSS 취약점이란? Stored·Reflected·DOM 방식의 차이점

XSS 취약점

XSS 취약점의 개념과 발생 원인을 알아보고 Stored XSS, Reflected XSS, DOM Based XSS의 동작 방식과 차이점, 안전한 대응 방법을 설명합니다. 웹사이트는 사용자가 입력한 검색어, 게시물, 댓글, 닉네임과 같은 정보를 화면에 출력합니다. 이때 외부 입력값을 안전하게 처리하지 않으면 공격자가 삽입한 스크립트가 다른 사용자의 웹 브라우저에서 실행될 수 있습니다. 이러한 웹 보안 취약점을 XSS(Cross-Site Scripting)라고 합니다. XSS … 더 읽기

SQL 인젝션이란? 발생 원인과 공격 원리, 안전한 대응 방법

SQL 인젝션의 개념과 발생 원인, 공격 원리, 피해 사례를 알아보고 PreparedStatement, 입력값 검증, 최소 권한 설정을 이용한 안전한 대응 방법을 설명합니다. 웹사이트에서 로그인하거나 게시물을 검색하면 사용자가 입력한 정보가 데이터베이스로 전달됩니다. 이 과정에서 입력값을 안전하게 처리하지 않으면 공격자가 SQL 문법을 삽입해 데이터베이스 명령을 조작할 수 있습니다. 이러한 보안 취약점을 SQL 인젝션(SQL Injection)이라고 합니다. SQL 인젝션은 오래전부터 … 더 읽기