전체 글 105

[72시간 점검기 1] CPO가 물었다, "72시간 안에 통지 가능한가요?"

9월 11일, 개정 개인정보 보호법이 시행됐다. 그 주 목요일 오후에 CPO가 개발팀 전체에 메일을 보냈다. 제목은 한 줄이었다."72시간 가능한가요?"본문도 짧았다. 이제는 유출이 확정되지 않아도 불법 접근을 알게 되면 정보주체에게 알려야 한다. 기한은 72시간이다. 우리 시스템으로 그게 되는지 확인해 달라.팀장이 메일을 전달하며 한 줄을 붙였다. "이건 말로 답하지 말고 직접 재 봅시다."그렇게 두 달 가까운 점검이 시작됐다. 이 시리즈는 그 기록이다.무엇을 재야 하나훈련 전에 바뀐 조문부터 다시 읽었다. 기사 제목은 대부분 "과징금 매출 10%"였다. 개발팀이 볼 부분은 따로 있었다.먼저 제34조 제2항이 새로 생겼다. 유출등의 가능성을 알게 돼도 통지해야 한다. 입법예고 때 설명된 사유는 두 가지..

보안 이슈 2026.10.13

AI가 짜 준 로그인 코드, 리뷰에서 걸러야 할 보안 실수 4가지 (바인딩만으로는 부족한 이유)

올해 3월 9일, 보안 스타트업 CodeWall이 McKinsey 사내 AI 플랫폼 Lilli의 취약점을 공개했다. 자기들 AI 에이전트가 두 시간 안에 데이터베이스 읽기·쓰기 권한까지 얻었다는 내용이다. 원인은 SQL 인젝션이었다. 눈에 띄는 건 값은 제대로 바인딩돼 있었다는 점이다. 뚫린 곳은 JSON의 필드 이름을 SQL에 그대로 이어 붙인 부분이었다.McKinsey는 외부 포렌식 조사 결과 고객 데이터에 무단 접근한 흔적은 없었다고 밝혔다. CodeWall이 주장한 접근 규모(메시지 수천만 건 등)는 공격 코드가 공개되지 않아 따로 검증된 숫자는 아니다.국내에서는 올해 2월 쿠팡 사고 조사 결과가 나왔다. 성명·이메일 3,367만여 건이 유출됐다. 공격자는 인증 시스템을 만들던 전직 개발자였다. ..

AI 2026.10.11

전자정부 5.0이 쓰는 Spring Boot 3.5, 오픈소스 지원 끝났는데 뭘 해야 하나 (pom.xml 실험 5가지)

전자정부 표준프레임워크 5.0으로 새 사업을 시작했다면 Spring Boot 3.5.6 위에서 돌고 있다. 그런데 Spring Boot 3.5는 2026년 6월 30일에 오픈소스 지원이 끝났다. 전자정부 부모 pom을 그대로 둔 채 패치 버전만 올릴 수 있는지, pom.xml을 다섯 가지로 바꿔 가며 실제로 들어오는 버전을 확인했다.한눈에 보기전자정부 5.0.0~5.0.2 모두 Spring Boot 3.5.6, Spring 6.2.11, Security 6.5.5 고정Boot 3.5 마지막 오픈소스 패치는 3.5.16 (2026-06-25). 이후 패치는 상용 지원만Boot 식 속성(spring-framework.version)으로 덮어쓰면 Spring은 안 바뀐다다섯 번째 방법으로 Boot 3.5.16..

보안 이슈 2026.10.11

Spring Boot Actuator를 통째로 열어 봤다 (/env 평문 노출과 heapdump, 정부24 메모리 덤프 유출까지)

9월 30일, 정부24 해킹 소식이 나왔다. 8월 17일 어린이포털 취약점을 노린 공격으로 서버에서 메모리 덤프 파일 11개가 빠져나갔다고 한다. 행안부 추정으로는 주민등록번호 36개, 정부24 아이디·비밀번호 55개도 함께 유출됐다.메모리 덤프라는 말에 눈이 갔다. Spring Boot에도 메모리를 통째로 파일로 떨궈 주는 엔드포인트가 있다. Actuator의 heapdump다.해외에서도 비슷한 일이 있었다. 올해 3월 Trend Micro가 사고 분석 하나를 냈다. 공격자는 인증 없이 열린 Actuator에서 설정값을 읽었다. 거기서 시작해 회사 SharePoint 문서까지 내려받았다. 악성코드도 취약점 공격도 없었다. 4월에는 Spring Boot 4.0.0~4.0.5에서 Actuator 전체가 인..

보안 이슈 2026.10.10

pom에 버전을 올렸는데 Spring은 그대로였다

Spring Boot 3.5 오픈소스 지원이 6월 30일에 끝났다. 전자정부 표준프레임워크 5.0은 아직 Boot 3.5.6 위에 있다. 부모 pom은 그대로 두고 패치 버전만 올릴 수 있는지 궁금해서 빈 샘플 프로젝트를 하나 만들었다.의존성은 네 개만 넣었다. starter-web, starter-security, 전자정부 공통 모듈, 테스트. pom에 적힌 숫자보다 실제로 실린 jar가 궁금해서 mvn dependency:list부터 돌렸다.spring-boot:jar:3.5.6spring-core:jar:6.2.11spring-security-core:jar:6.5.5tomcat-embed-core:jar:10.1.46막힌 곳Boot 프로젝트에서 늘 하던 대로 속성만 바꿨다.6.2.19BUILD S..

아카이브 2026.10.03

Next.js 15 지원 종료(10월 21일), 16으로 올릴지 판단 기준 5가지 (codemod 실행 기록)

Next.js 15.x는 2026-10-21에 지원이 끝난다. 이후 보안 패치는 16에만 나온다. 15.5.27 샘플을 공식 codemod로 16.3.8까지 올려 봤다. 빌드는 세 번 깨졌다. 15에서 한 번, codemod 뒤에 두 번. 그 로그를 기준으로 언제 올릴지 판단할 체크리스트를 정리했다.TL;DR15.x EOL: 2026-10-21빌드 실패 3회 (15에서 1회, codemod 뒤 2회)빌드 시간 8.1s에서 5.7s로 단축 (같은 샘플, 같은 머신)확인할 것: 동기 params, middleware.ts, revalidateTag, image quality실습 환경항목값fromNext.js 15.5.27, React 19.1.0 (create-next-app@15)toNext.js 16.3..

보안 이슈 2026.10.03

디버깅 툴

Firefox 자바스크립트를 많이 사용하는 개발을 한다면 Firefox는 필수. Firefox Web Developer & DOM Inspector FireBug 실제 개발할 때는 Web Developer나 DOM Inspector보다 이게 더 유용하다. 콘솔에서 버그 상황도 볼 수 있고 Ajax 요청도 볼 수 있다. 간단한 디버깅도 가능하고 DOM Inspector도 원래 딸려 있는 것보다 편리하다. FireBug 1.0 beta Spket IDE JavaScript IDE. Eclipe 기반. WTP의 JS 에디터보다는 훨씬 좋다. 자바스크립트 인터액티브 셀 firefox에서는 Tab으로 Content Assist도 가능 IE developer toolbar Firefox의 Web Developer와..

아카이브 2008.09.03

DML과 With Check Option의 사용

insert into(select s_id, s_name, reg_date, major_id, tuition, discount, sex from student where dept_id = 120) values(199, 'Jojo', to_date('07-JUN-99', 'DD-Mon-RR'), 'ART_309', 3400, null, 'FEMALE'); 위의 문장은 현재 Jojo 라는 학생의 정보를 새롭게 추가할 때 학과아이디(dept_id)가 120라는 값과 select 절에 명시한 컬럼 값을 설정하고 있다. 원래의 의도는 학과아이디(dept_id)값도 함께 추가하는 것이지만 실제 실행결과는 다르게 나온다. select 절에 학과아이디(dept_id)를 명시하지 않았기 때문에 dept_id=120이란 ..

아카이브 2008.08.27

NULL관련 함수

NVL2 NVL2(a, b, c) a : 널(null)을 포함하는 컬럼 이름 또는 임의의 값 b : a가 널(null)이 아니면 b를 출력 c : a가 널(null)이면 c를 출력 NULLIF NULLIF(a, b) a : 널(null)을 포함하는 컬럼 이름 또는 임의의 값 b : 널(null)을 포함하는 컬럼 이름, 또는 임의의 값 COALESCE COALESCE(a, b, c) a 값이 널(null)인지를 확인한다. 널(null)이 아니면 a 값을 결과로 돌려주면 널(null)이면 그 다음 b 값을 확인한다. b 값이 널(null)이 아니면 b 값을 결과로 돌려주면 널(null)이면 c 값이 최종 결과가 된다.

아카이브 2008.08.27