전체 글 108

[72시간 점검기 4] 우리 서명키는 몇 벌이고, 어디 있고, 언제 바뀌었나

지난 편 끝에서 보안 담당자가 물었다. "우리 서명키, 마지막으로 바꾼 게 언제예요?" 그 자리의 누구도 답하지 못했다.다음 날 아침 회의실에 쿠팡 조사 결과 보고서를 띄웠다. 이번엔 키 이야기만 골라 읽었다. 우리 점검표를 이 보고서에서 뽑기로 했기 때문이다.쿠팡의 키가 지나온 길과기정통부 민관합동조사단 발표(2026-02-11) 내용을 키의 입장에서 따라가면 이렇다.키는 이용자 인증시스템에서 로그인한 사용자에게 주는 "전자 출입증"에 서명하는 데 쓰였다. 내부 규정은 키의 수명을 3년으로만 정했고, 교체 같은 세부 운영절차는 미흡했다.규정상 키는 키 관리 시스템에만 있어야 했다. 실제로는 재직 중인 개발자 노트북에도 있었다. 개발과 운영이 나뉘지 않아 개발자가 운영 키 관리시스템에 접근할 수 있었다...

[72시간 점검기 3] "바뀐 건 없나요?"에 답하려면 이력도 지울 수 없어야 했다

지난 편 접속기록을 정보주체 단위로 바꾸고 나서 명단은 0.8초 만에 나왔다. 화이트보드에는 물음표 하나가 남았다. 그 계정이 회원 정보를 바꿨는가.CPO가 이 질문을 왜 꼭 집었는지는 조문을 보면 안다. 개정법 제23조 제2항이 "유출등"을 분실·도난·유출·위조·변조·훼손 여섯 가지로 정했다. 변조도 통지 대상이다."본 것만 확인됐고 바뀐 건 모릅니다"라고 쓰면 통지문이 이상해진다. 정보주체는 내 연락처가 공격자 번호로 바뀌었는지 묻는다. 비밀번호 재설정 문자가 그 번호로 가기 때문이다.우리 테이블은 무엇을 기억하나회원 테이블에 있는 건 updated_at 하나였다. 1편 시나리오 속 계정이 9월 17일 새벽에 회원 18234번을 수정했다고 치자. 우리가 아는 건 "18234번이 9월 17일 02:15..

보안 이슈 2026.10.15

[72시간 점검기 2] 9시간 20분 걸린 명단, 로그는 있었는데 답이 없었다

지난 편 모의훈련 첫날, 계정 하나 끊는 데 47분이 걸렸다. 그 계정이 누구의 정보를 봤는지는 밤 10시까지 나오지 않았다.명단은 23:20에 나왔다. 2,764명. 훈련 시작부터 9시간 20분이었다.화이트보드 두 번째 칸에 숫자를 적고 다들 퇴근했다. 나는 지하철에서 액세스 로그 설정 파일을 다시 열어 봤다. maxHistory: 14. 액세스 로그는 14일만 남는다.시나리오 속 침입은 6일 전에 시작됐다. 3주 전에 시작됐다면 어떻게 됐을까. 명단은 "회원 전체"가 됐을 것이다.다음 날 아침, 쿠팡 보고서를 다시 펴다출근해서 2월에 나온 쿠팡 침해사고 조사 결과를 다시 열었다. 처음 읽을 땐 서명키 얘기만 기억에 남았다. 이번엔 로그 부분만 골라 읽었다.조사단은 쿠팡이 접속기록을 일관된 기준 없이 ..

보안 이슈 2026.10.14

[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