[Critical Issue] React Server Components (RSC) 관련 치명적 보안 취약점 조치법
·
개발 일상
상황최근 기술 트렌드를 살펴 보다가 엄청난 보안 이슈를 발견했다. React 19 버전의 Server Components에서원격 코드 실행(RCE) 취약점이 발견되어 CVSS 점수 10.0 (Critical)을 받은 것이다. 심지어 미국CISA(사이버보안 및 인프라 보안국)에서도 연방 기관들에게 12월 12일까지 패치를 강제하는 지시를내렸다고 한다.내가 운영 중인 프로젝트가 영향을 받는지 확인하기 위해 취약점을 분석하고, 안전성을 검토해보았다.취약점 분석CVE-2025-55182: 무엇이 문제인가?핵심 문제:React Server Components의 역직렬화(deserialization) 과정에서 발생공격자가 Server Function 엔드포인트로 악의적인 HTTP 요청을 보내면React가 이를 역직..
React 사이드바 토글 시 ECharts 레이아웃 깨짐 해결법 (w.ResizeObserver)
·
개발 일상
상황최근 회사 프로젝트(react + python)에서 프론트엔드 작업 중 사이드바를 열고 닫을 때 간헐적으로 대시보드 상의 차트 오른쪽에 여백이 생기는 현상을 발견했다.해당 증상은 간헐적으로 발생하였고, 사이드바의 너비(width)만큼 생긴다는 것을 확인하였다.증상 분석사이드바를 열면 메인 화면(차트 포함)이 오른쪽으로 밀림사이드바를 닫으면 다시 원위치 되어야 함하지만 간헐적으로 차트의 오른쪽에 여백이 남는 현상 발생아래 이미지처럼 차트 오른쪽이 padding된 것처럼 비어 있는 증상이 발생함보안을 위해 이미지의 내용은 masking 처리하였음을 참고원인 분석프로젝트의 레이아웃 구조는 대략적으로 다음과 같다. // 이 안에서 CustomECharts 컴포넌트 사용상위 컴포넌트인 layout...
Windows 서버에서 FastAPI 자동 실행 시 발생한 서비스 오류 대응기
·
개발 일상
상황회사 업무로 특정 사이트에 특정 시스템 구축을 해줘야 하는 상황이었다.제반 환경* 배포 환경(서버 os): Windows 2022 Server* 개발 환경(내 os): ubuntu 22.04 lts* python을 이용한 FastAPI 서버 구축* 해당 서버는 특정 클라이언트들에서 감지한 정보를 서버의 특정 경로(static 폴더)로 수집한다Ubuntu 개발 환경에서 구축한 FastAPI 서버를 Windows Server 2022 환경에 배포하고, 해당 서버가 자동으로 실행되도록 커스텀 서비스화(nssm 이용)하여 구축하였다.하지만 배포 후 자동 실행이 되지 않는 문제가 발생했고, 오류 로그도 남지 않아 디버깅이 어려웠다.아래는 static 경로 문제, 인코딩 문제, Windows 서비스 실행 특성 ..
서로 다른 서버 간 MongoDB 컬렉션 데이터 마이그레이션(ubuntu)
·
개발 일상
상황특정 백엔드 서버의 추가 기능 개발을 위해 동일한 테스트 환경 구축 작업을 하며, MongoDB에서 특정 컬렉션만 복사해서 옮겨야 할 일이 생겼다이 경우, 써드파티 프로그램을 이용하는 방법도 있지만, 라이센스 이슈나 상업적 이용 이슈로 인해 CLI를 활용하는 것이 나을 수 있다.이번에는 mongodump, mongorestore 명령어를 이용해 서로 다른 서버에 위치한 MongoDB 간 컬렉션 복사를 진행하였다.작업 환경os: Ubuntu 22.04외부의 특정 원격 서버 A(특정 ip)테스트용 로컬 서버 B (localhost)목적서버 A에 있는 MongoDB의 특정 컬렉션을 로컬 서버 B로 동일하게 복사하되, 컬렉션 데이터와 메타데이터(bson + metadata.json)를 그대로 가져와야 한다...
[ubuntu 22.04] 최신 chrome 브라우저에서 키보드 입력 문제 해결법
·
개발 일상
문제 상황ubuntu 22.04 환경의 작업용 pc를 새로 셋팅하고 있었다. 크롬 브라우저를 설치하고 브라우저 상에서 키보드를 입력했는데 몇몇 키가 제대로 작동하지 않음을 발견했다. 특히 특수문자(@, ! 등)는 눌러도 안 나오고, 한글 전환도 되지 않았다.그런데 신기하게 터미널에서는 전혀 문제가 없었다.어라? 입력기는 잘 잡히는데 왜 크롬에서만 이러지?커뮤니티 사이트 등 구글링을 해보니, 크롬 최신 버전(137)이랑 Ubuntu 22.04의 입력기 간의 호환성 이슈가 있다는 것을 발견했다.그에 따라 크롬 브라우저 다운그레이드가 필요한 상황 증상 요약 • 크롬에서 일부 키 입력이 안 됨 • 특수문자 입력 불가 • 한영 전환 안 됨 • 방향키, Enter, Bac..
YOLO 객체 감지 후 위험 영역 판단 로직 개선기
·
개발 일상
회사에서 개발 중인 AI 기반 안전 설비 시스템의 백엔드(python) 로직을 개선했다.카메라 영상에서 사람을 감지하고 사람이 설정한 위험 구역에 진입했는지를 판단해서 실시간으로 설비를 제어하는 시스템이다.기존 방식 이슈YOLO를 통해 사람을 감지하면 [x1, y1, x2, y2] 형태의 bbox 좌표가 얻어진다.이 좌표를 기반으로 DB에 저장된(설정한) ROI(위험 구역) 다각형과의 겹침 여부를 판단하는데기존의 코드를 분석하니 기존에는 bbox의 하단선(bottom)만 사용하는 방식이였고, 현장에서 개선사항이 발생해 판단 로직을 수정하게 되었다.bbox_matrix = LineString([(x1, y2), (x2, y2)])위와 같은 경우 객체의 하단면이 위험 구역에 닿지 않으면 위험으로 판정되지 않..
대량의 파일, 효율적으로 압축 & 전송하기 – 우분투 기반 백업 최적화
·
개발 일상
문제 상황회사 업무로 외부 네트워크와 완전히 분리된 환경(망 분리 환경)에 설치된 특정 솔루션을 점검하러 방문했다. 해당 사이트에서 수집된 정보(이미지, 영상, 로그 등)를 반출해야 하는 상황이었는데, 이러한 환경에서는 외부와의 통신이 차단되어 있기 때문에 SSH, SFTP, 클라우드 업로드 등의 일반적인 데이터 백업 수단을 사용할 수 없었다.물리적인 외장 스토리지를 이용한 데이터 반출이 유일한 방법이었다.이번 작업의 목적은 해당 솔루션에 저장된 다량의 이미지, 로그, 영상 등 이력 데이터를 외장 SSD를 통해 수집하고 반출하는 것이었다.데이터는 날짜별로 수많은 폴더로 나뉘어 저장되어 있으며, 총 파일 수는 약 3만 건 이상, 용량은 약 30GB에 달했다.초기에는 단순하게 GUI를 이용해 마우스로 복사를..
[python] data.dict() vs jsonable_encoder(). 그리고 datetime 쿼리 삽질기
·
개발 일상
문제 상황MongoDB에 저장된 데이터를 기간별로 가공해서 출력해주는 코드를 만들다가 이상한 점을 하나 발견했다.createdAt 같은 날짜/시간 필드가 문자열(string)로 저장돼 있던 것.처음엔 model에서 datetime으로 지정했으니까 당연히 datetime으로 들어갔을 거라 생각했는데, 막상 DB를 까보니까 "2024-01-01T12:00:00"처럼 string으로 저장되어 있던 것을 깨달았다.그래서 코드 전체를 훑기 시작했다.DTO, Model엔 분명히 datetime 타입으로 잘 들어가 있었고, 이상 없어 보였다.그런데 문제는 라우터 코드였다.라우터에서 데이터를 서비스 쪽으로 넘기기 전에 jsonable_encoder(data)로 한번 감싸고 있었는데, 이게 문제의 시작이었다.jsonab..
MongoDB Aggregation을 활용한 통계 API 구현(python)
·
개발 일상
상황회사 업무 중에 다른 통합 서비스와의 연동을 위해 내가 개발 중인 특정 시스템 백엔드에서 통계 기능을 API 형태로 제공해야 하는 상황이 발생했다. 이 기능은 일일, 주간, 월간 현황 등 다양한 기간별 통계를 제공해야 했고, 데이터베이스는 MongoDB를 사용하고 있었다. 이를 위해 MongoDB의 Aggregation Pipeline을 활용하여 데이터를 가공하였고, 특히 시간대(timezone) 처리에 주의를 기울였다.1. 데이터 저장 시 시간대 처리MongoDB는 기본적으로 날짜 데이터를 UTC 기준으로 저장한다. 따라서 한국 시간(KST)으로 입력된 날짜도 내부적으로는 UTC로 변환되어 저장된다. 예를 들어, 한국 시간으로 2025-05-21T15:47:52에 저장된 데이터는 MongoDB에서는..
주기적인 MongoDB 서비스 Down 증상 해결
·
개발 일상
문제 발견최근에 사내에서 호스팅하는 서버 중 하나에 접근이 안되어서 서버를 확인해보니 해당 서버 내의 MongoDB 서버가 일정 주기로 다운되는 현상을 발견했다. 문제 원인을 찾기 위해서 mongodb 로그를 확인해보니 다음과 같은 에러 메시지가 있었다참고 환경: ubuntu 22.04 os# mongod.log의 최근 내역 확인sudo tail -n 100 /var/log/mongodb/mongod.log...Failed to write to interim file buffer for full-time diagnostic data capture: /var/lib/mongodb/diagnostic.data/metrics.interim.tempActual exception type: mongo::error..
[React.js] setTimeout 사용 시 최신 상태(state)가 반영되지 않는 이슈 처리
·
개발 일상
서론React에서 타이머(setTimeout)를 이용하여 일정 시간 후에 특정 함수를 호출하는 기능을 구현하던 중,함수 내부에서 참조하는 상태(state)가 최신값이 아닌 과거 값으로 작동하는 문제가 발생했다. 문제 원인을 체크해보니 React의 비동기 렌더링 이슈가 아닌 자바스크립트의 클로저(Closure)의 특징으로 발생한 것이라는 걸 알게 되었다.문제 상황const goToMaintainPage = () => { // 작업 상태값을 저장하고 다음 페이지로 이동// mySwrState : 생성한 커스텀 useSWR 임 setMySwrState({ ...mySwrState, director: directorName, // useState 값(생성했다고 가정) workerNumber:..
이미지 생성 서버 만들기: 1탄 - 서버 환경 구축
·
생성 AI 활용
서론요즘은 Dall-e, midjourney, stable-diffusion 등 생성형 이미지를 "딸깍" 한번으로 만들어주는 사이트들도 많고, 본인의 컴퓨터 사양(특히 GPU)이 좋은 사람들은 로컬 환경에서 stable-diffusion webui(이하 webui), compyui 등을 통해서 이미지를 생성할 수 있는 시대입니다.그렇다보니 이러한 이미지 생성 기능을 활용한 프로그램이나 웹 사이트를 구축해보려는 개발자들도 많은데요...저도 이미지 생성 ai에 관심이 생겨 로컬에서 webui를 이용하여 이미지 생성 좀 해보다보니여기서 나아가 이미지 생성 기능을 제공하는 웹 사이트를 만들면 어떨까하여 공부하게 되었고 그 과정에서 얻게 된 정보를 정리하고자 합니다.기본조건* nvidia gpu가 장착된 pc* ..