본문 바로가기

전체 글

# [PHP 보안] 2026년 10월 PHP 치명적 RCE 취약점 2건 정리 (CVE-2026-109618, CVE-2026-109619) 2026년 10월 21일, PHP 공식 사이트에 "Critical remote code execution vulnerabilities, update now" 라는 제목의 보안 공지가 올라왔다. 로그인 없이 원격에서 서버 코드를 실행할 수 있는(RCE) 취약점 2건이고, 둘 다 등급이 Critical이다.PHP를 웹 서비스에 쓰고 있다면 SAPI가 무엇이든(PHP-FPM, Apache mod_php, php-cgi, FrankenPHP, LiteSpeed) 모두 해당된다. 공지 내용과 용어, 공격 흐름, 대응 방법을 한 번에 정리해 둔다.한 줄 요약PHP 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 미만이면 취약하다. 지금 바로 업데이트하자.설정 변경은 임시 조치일 뿐이고, 완전한 해결책은..
AI 코딩 에이전트가 프로젝트 규칙을 자꾸 놓친다면? AGENTS.md 작성법과 실전 예제 Claude Code, Codex, Gemini CLI 같은 AI 코딩 도구를 사용하다 보면 이런 경험이 생긴다.분명 TypeScript를 사용하는 프로젝트인데 JavaScript로 코드를 작성한다.기존 프로젝트의 구조를 무시하고 새로운 파일을 마음대로 만든다.테스트를 실행하지 않고 작업이 끝났다고 한다.이미 존재하는 공통 함수를 두고 비슷한 함수를 새로 만든다.프로젝트에서 사용하지 않는 라이브러리나 명령어를 제안한다.처음에는 프롬프트를 더 자세하게 작성하면 해결될 것이라고 생각하기 쉽다.하지만 같은 프로젝트에서 비슷한 문제를 반복해서 겪는다면 매번 질문을 수정하는 것보다 프로젝트의 개발 규칙을 문서로 정리하는 편이 효율적이다.이때 활용할 수 있는 파일이 AGENTS.md와 CLAUDE.md다.이번 글에..
Antigravity Gemini 4 Argon 실사용 후기: 질문 2번에 주간 쿼터 2.4% 증발한 이유 (Claude Code, Codex 비교) 이전 글에서 Google AI Pro 플랜에 Gemini 4 Argon이 추가됐다는 소식을 정리했었다. 바로 이어서 성능을 테스트해 보려고 CLI(agy)에서 가벼운 질문을 딱 두 번 던져봤는데, 생각지도 못한 주간 쿼터(Weekly Limit) 소모 속도에 좀 당황했다.실제로 질문 한 번에 쿼터가 얼마나 깎이는지, 왜 그렇게 많이 깎이는지 에이전트 본인을 추궁해 본 결과를 기록해 둔다.1. 첫 번째 질문: Argon vs Claude Code vs Codex 성능 비교일단 Argon 본인이 생각하는 경쟁 도구들과의 포지션 차이가 궁금해서 아래처럼 질문을 던졌다.> ai argon 성능 어느정도되 claude code랑 codex랑 비교해서 📌질문을 던지자마자 내부적으로 antigravity-guide..
Antigravity에 Gemini 4 Argon 추가됨 (Google AI Pro 배포, Opus 5.5 성능 비교, IDE 미표시 이슈) 이틀 전까지만 해도 Google AI Ultra 요금제에만 풀렸던 구글의 신규 추론 모델 'Gemini 4 Argon'이 오늘(10월 16일)부터 Google AI Pro 구독자에게도 열렸다.오전에 Antigravity를 켜보니 바로 업데이트 안내 팝업이 떠서 세팅해 봤다. 현재 적용되는 환경과 IDE 에디터에서 안 보이는 문제, 주간 쿼터 정책, 그리고 기존에 주력으로 쓰던 Claude Opus 5.5와의 스펙 차이까지 간단히 정리해 둔다.1. 적용 환경 확인 (데스크톱 앱 & CLI 1.3.5 vs IDE 에디터)소식을 듣고 바로 Antigravity IDE(코드 에디터 창)를 열어서 모델을 찾아봤는데 목록에 Argon이 없었다. 확인해 보니 롤아웃 초기라 클라이언트별로 적용 시점에 차이가 있다.An..
외부 API 호출을 DB 트랜잭션 안에서 하면 안 되는 이유 웹 서비스를 개발하다 보면 DB에 데이터를 저장하면서 외부 API를 호출해야 하는 상황이 자주 발생한다.예를 들어 다음과 같은 작업이 있다.주문 생성 후 외부 결제 API 호출회원 가입 후 외부 인증 서비스 호출게시글 저장 후 외부 알림 서비스 호출데이터 저장 후 외부 시스템과 동기화재고 차감 후 물류 시스템에 출고 요청이때 모든 작업을 하나의 DB 트랜잭션 안에서 처리하고 싶을 수 있다.하지만 일반적으로 외부 API 호출은 DB 트랜잭션 안에서 실행하지 않는 것이 좋다.왜 그럴까? 주요 문제와 실무에서 사용하는 설계 패턴을 알아보자.1. DB 트랜잭션 안에서 외부 API를 호출하면 발생하는 문제1-1. DB 락을 오래 점유한다DB 트랜잭션은 여러 DB 작업을 하나의 논리적 작업으로 묶어 데이터의 일관성..
Linux 디스크가 꽉 찼는데 df -h는 여유 있다면? inode와 No space left on device 원인 찾기 서버에서 갑자기 다음과 같은 오류가 발생하는 경우가 있다.No space left on device파일을 생성하거나 로그를 기록하거나 배포 파일을 복사하는 작업이 실패한다.그래서 가장 먼저 확인한다.df -h그런데 결과를 보니:Filesystem Size Used Avail Use% Mounted on/dev/xvda1 100G 60G 40G 60% /디스크가 40GB나 남아 있다.그런데 왜:No space left on device가 발생할까?이럴 때는 단순히 디스크 용량만 확인해서는 안 된다.Linux 파일 시스템에서는 파일 내용을 저장할 공간뿐만 아니라 inode라는 별도의 자원도 사용하기 때문이다.그리고 inode가 모두 사용된 경우 디스크 용량이 남아 있어도 새로운 ..
배포 후 Failed to fetch dynamically imported module이 발생한다면? Vite preloadError 원인과 해결 방법 Vue 3 + Vite로 만든 프로젝트를 배포한 뒤 갑자기 이런 오류가 발생하는 경우가 있다.TypeError: Failed to fetch dynamically imported module:https://example.com/assets/SomePage-abc123.js특히 SPA에서 라우팅을 이동하거나 특정 페이지를 열 때 발생하고, 새로고침하면 정상적으로 동작하는 경우가 있다.처음 보면 네트워크 문제나 Vue Router 문제처럼 보이지만, 배포 환경에서는 이전 버전의 JS chunk를 브라우저가 가지고 있는데 서버에서는 해당 파일이 이미 삭제된 상황일 가능성이 있다.이번 글에서는 이 문제가 왜 발생하는지, 어떻게 확인하는지, 그리고 Vite에서 제공하는 vite:preloadError를 이용해 어..
composer.json만 수정했는데 왜 composer.lock 때문에 배포가 실패할까? Laravel이나 PHP 프로젝트를 개발하다 보면 composer.json을 수정하는 일이 자주 있다.패키지를 추가하거나 버전을 변경하는 경우도 있고, Composer 설정을 변경하는 경우도 있다.그런데 로컬에서는 아무 문제 없이 동작했는데 Git에 커밋하고 CI나 배포 과정에서 갑자기 이런 오류를 만나는 경우가 있다.The lock file is not up to date with the latest changes in composer.json처음 보면 의존성 패키지에 문제가 있는 것처럼 보인다.그런데 이 오류는 패키지 자체보다 composer.json과 composer.lock의 상태가 서로 맞지 않아서 발생하는 경우가 많다.이번에는 composer.json과 composer.lock이 어떤 관계인지..