웹개발 관련
- CVE-2025-29927: Next.js Middleware Authorization Bypass - Technical Analysis : Next.js에서 미들웨어서 권한 검사를 하는 경우 이를 우회할 수 있는 취약점이 발견되었다.(CVE-2025-29927) 이 취약점은
x-middleware-subrequest
헤더를 요청에 추가하면 미들웨어를 완전히 우회할 수 있는 취약점으로 Next.js 11.1.4 ~ 13.5.6, 14.2.25 이전의 14.x, 15.2.3 이전의 15.x의 모든 버전이 영향을 받았다. 이x-middleware-subrequest
는 프레임워크 내부에서 무한 실행 루프를 방지하기 위해 만들어졌지만, 이를 공격자가 이용할 수 있었고 Next.js에서는 취약점을 해결한 모든 라인의 수정 버전을 릴리스했다.(영어) - Land ahoy: leaving the Sea of Nodes : Chrome의 V8 엔진의 엔드 티어 최적화 컴파일러인 Turbofan은 Sea of Nodes(SoN) 데이터 구조를 사용하고 있었지만 3년 전부터 SoN을 없애고 전통적인 Control-Flow Graph(CFG), Intermediate Representation(IR)로 다시 돌아가고 있고 이를 Turboshaft라고 불렀습니다. 현재는 Turbofan의 JavaScript 백엔드는 Turboshaft를 사용하고 WebAssembly는 전체에 걸쳐서 TUrboshaft를 사용하고 있다. Turbofan을 10년 동안 사용했지만, JavaScript와 WebAssembly에서는 SoN의 단점이 많다고 느끼기 시작했는데 너무 복잡하고 제한적이면 컴파일 속도도 느린 문제가 있어서 CFG, IR로 돌아가게 되었다.(영어)
- 웹 글꼴의 메모리 안전 : Chrome에서 FreeType을 대체해서 더 안전하게 글꼴을 처리할 수 있도록 Rust로 skrifa라는 프로젝트를 만들었다. FreeType은 Android, ChromeOS, Linux에서 기본 글꼴 처리 라이브러리로 사용되므로 여기에 취약점이 있는 경우 많은 사용자가 영향을 받게 되는데 FreeType의 취약점 문제는 쉽게 해결하기가 어려웠습니다. Chrome에서 Skia 그래픽 라이브러리로 Skia는 FreeType을 사용해서 글꼴을 로드하는데 Skrifa를 만들어서 FreeType의 일부를 대체하게 되었고 이를 통해 더 안전하게 글꼴을 처리할 수 있게 되었다.(한국어)
- You should know this before choosing Next.js : Netlify에서 4년 넘게 근무하는 엔지니어가 Next.js로 Vercel이 이익을 얻는 것은 당연하지만 오랜 기간 Netlify에서 Next.js를 지원하는 작업을 하면서 투명성이 존재하지 않는다고 설명하는 글이다. 최신 웹 프레임워크는 어댑터 개념으로 특정 배포 대상에 맞게 구성하게 제공하고 있지만 Next.js에는 어댑터 개념이 없어서 Vercel 배포에 독점적이며 운영을 효율적으로 할 수 있는 서버리스 모드는 2022년 별다른 설명 없이 제거되었다. 또한, Next.js에는 Vercel 전용인 코드 경로가 있어서 다른 인프라에서 제공하기가 쉽지 않으며 최근 취약점 이슈에서도 투명하게 공유하지 않았다.(영어)
- (번역) 모노레포 인사이트: Nx, Turborepo 그리고 PNPM 1, 2, 3, 4 : 디지털 솔루션 업체인 ekino에서 모노레포를 도입하기 위해서 Nx, PNPM, Turborepo를 비교한 글이다. 모노레포 매니저의 이론적 기반을 Nx, Turborepo, PNPM의 기능과 특징, 장단점을 비교한 뒤 자신들의 요구사항에 잘 맞는 PNPM Workspace와 Vite를 조합해서 사용하기로 했다고 한다.(영어)
그 밖의 개발 관련
- How Cursor (AI IDE) Works : Cursor같은 AI IDE가 VS Code를 포크해서 파일을 읽고 쓰고 명령어를 실행하는 도구에 내부 프롬프트를 최적화하도록 구성되어 있고 프롬프트로 AI 코딩을 잘 활용하는 방법을 설명한다. Cursor의 시스템 프롬프트를 라인별로 분석하며 LLM에서 어떤 의미를 가지는지 설명하면서 Cursor에서 rules를 잘 작성하는 방법을 설명한다.(영어)
- 애플리케이션 개발 측면에서 본 Drizzle ORM 대 Kysely 비교 : TypeScript의 ORM으로 Drizzle ORM와 Kysely를 둘 다 사용해 보고 비교한 글이다. Drizzle ORM이 스키마 선언 방식과 관계 설정 등이 직관적이고 편했으며
drizzle-kit
을 이용한 손쉬운 마이그레이션을 지원했다. Kysely도 TypeScript 기반 마이그레이션을 지원해서 꽤 복잡한 시나리오도 구현할 수 있었고 업그레이드와 다운그레이드도 지원했으며 더 가벼우면서 유연한 장점을 제공한다. 하지만 Python의 SQLAlchemy가 가장 강력하고 두 ORM 모두 SQLAlchemy 수준으로 발전할 필요가 있다.(한국어) - 한국 서비스를 기반으로 시스템 디자인 공부하기 – 런데이 : 시스템 디자인을 공부하기 위해 영어 서비스 대신 국내 서비스를 기준으로 시스템 디자인을 해보는 글이다. 러닝을 기록하는 런데이 서비스의 기능을 살펴보고 요구사항을 정리 후 하나씩 설계해 가면서 고려해야 할 상황과 기술 선택을 정리해 두었다.(영어)
- Code completion in GitHub Copilot for Eclipse is now generally available : GitHub Copilot이 Eclipse에서도 사용할 수 있게 되었다.(영어)
인프라 관련
- Reconstructing the TJ Actions Changed Files GitHub Actions Compromise : 지난 3월 14일 tj-actions/changed-files라는 GitHub Action에서 심각한 보안 취약점이 발견되었다. 23,000개의 저장소가 이 액션을 사용해서 어떤 파일의 변경 사항이 있었는지 파악하고 있었는데 공격자가 어떻게 권한을 얻었는지는 밝혀지지 않았지만
tj-actions/changed-files
에 악의적 커밋을 올린 후 어떤 브랜치에서도 보이지 않도록 orpan 커밋으로 만들고 릴리즈가 orpan 커밋을 가리키도록 수정해서 사용 중인 모든 저장소에서 액션이 접근하는 시크릿을 로그에 출력하도록 만들었다.(영어) - Open-sourcing OpenPubkey SSH (OPKSSH): integrating single sign-on with SSH : OPKSSH(OpenPubkey SSH)가 OpenPubkey 프로젝트 산하에서 오픈소스로 공개되었다. OPKSSH를 사용하면 SSH 키를 관리할 필요 없이 OpenID Connect 같은 SSO 기술로 SSH를 사용할 수 있다.(영어)
- Observability Survey : Grafana Labs에서 진행한 Observavility Survey의 리포트가 나왔다. 이번 설문은 1,255명이 응답했다.(영어)
- 101가지 옵저버빌리티 기술이 현재 사용 중으로 도구의 오버헤드가 존재한다.
- 71%의 조직은 Prometheus와 OpenTelemetry를 사용
- 74%는 도구를 선택할 때 가장 큰 우선 순위가 사용 편의성이나 상호 운영섣ㅇ
- 39%의 응답자가 복잡도와 오버헤드가 가장 큰 장애물이라고 응답
- 85%의 회사가 통합된 인프라스트럭쳐와 애플리케이션 옵저버빌리티를 사용보다 비용이라고 응답
AI 관련
- EXAONE Deep Released ━ Setting a New Standard for Reasoning AI : LG AI Research에서 추론 AI 모델 EXAONE-Deep-32B을 공개했다. EXAONE Deep는 32B에서도 수학에서 우수한 성과를 거두었고 7.8B와 2.4B도 주요 벤치마크에서 압도적인 성능을 보여주었다.(영어)
- Gemini 2.5: Our most intelligent AI model : Google이 최신 AI 모델인 Gemini 2.5를 출시했다. Gemini 2.5는 응답 전에 생각할 수 있어서 성능이 향상되고 정확도가 높아졌으면 이번에 2.5 Pro의 실험적 버전을 공개했다.(영어)
- New ways to collaborate and get creative with Gemini : Google Gemini에 Canvas 기능이 추가되어 문서나 코드를 실시간으로 편집할 수 있게 되었고 Audio Overview로 문서나 슬라이드, 보고서를 팟캐스트 스타일의 오디오로 변환할 수 있게 되었다.(영어)
- Introducing next-generation audio models in the API : OpenAI에서 기존 Whisper 모델을 개선한
gpt-4o-transcribe
와gpt-4o-mini-transcribe
오디오 모델을 출시했다.(영어) - Introducing 4o Image Generation : OpenAI에서 GPT-4o의 이미지 생성 기능이 추가되어 문자도 제대로 출력하고 멀티 턴으로 이미지를 개선할 수 있게 되었다.(영어)
- DeepSeek-V3-0324 Release : DeepSeek V3의 성능이 개선된 새로운 버전인 0324 릴리스가 나왔다.(영어)
볼만한 링크
- Inside Google’s Two-Year Frenzy to Catch Up With OpenAI : OpenAI가 ChatGPT를 공개하고
구글이 Sissie Hsiao에게 100일 이내에 ChatGPT의 경쟁 제품을 개발하라는 임무를 주고 Google Bard를 실험 모델로 공개한 뒤 DeepMind와 Google Brain을 통합해서 Google Deepmind를 만들어서 Gemini를 만들어서 공개하면서 AI 시장에서 싸워온 과정을 정리한 글인데 흥미진진하다.(영어) - The Burnout Machine : 기술 업계가 열정이라는 미명아래 주 80시간의 근무를 요구하지만, 노동자에게는 번아웃과 불안, 해고 위협만 있다면 기술직 노동조합의 중요성을 얘기하는 글이다. 애자일은 왜곡되어 경영진이 직원을 밀어붙이기 위한 도구가 되었고 번아웃도 당연시되어 가며 고용 안정성이 없어 불안 속에 살게 만들고 있다. 업계는 스스로 고쳐지지 않을 것이기 때문에 노조를 조직해서 통제권을 되찾아야 하며 알파벳의 노동조합이 그 좋은 예시라고 하고 있다.(영어)
- 애플, 혁신과 실행력? (번역) : Apple이 그동안 아이폰, 아이패드, 에어팟 등으로 많은 혁신을 주도했지만, 그동안 완성된 제품을 내보였던 것에 반해 Vision Pro도 그렇고 Apple Intelligence도 작년에 발표했지만 1년이 다 지난 시점에도 릴리스를 못 하고 있는 상황에서 그동안 Apple이 보여주었던 실행력에 문제가 생긴 것은 아닌지 의문을 제기하고 있다.(한국어)
IT 업계 뉴스
- Google announces agreement to acquire Wiz : Google이 클라우드 보안 플랫폼인 Wiz를 현금 거래로 320억 달러에 인수하기로 했다.(영어)
- Elon Musk’s xAI buys Elon Musk’s X for $33 billion on paper : Elon Musk가 소유한 AI 회사인 xAI가 Twitter로 알려진 X를 인수했다. 이번 인수로 xAI의 가치는 800억 달러이고 X의 가치는 330억 달러이다.(영어)
- 발란, 기업회생절차 신청…“회생 인가 전 인수자 유치” : 온라인 명품 플랫폼 발란이 기업회생 절차를 신청했다.(영어)
- 23andMe bankruptcy: With America’s DNA put on sale, market panic gets a new twist : DNA 검사 업체인 23andME가 파산함에 따라 23andME가 가진 수많은 사람의 DNA가 최고 입찰자에게 판매될 수도 있게 되었다.(영어)
- Deno v Oracle Update 3: Fighting the JavaScript Trademark : Deno에서 Oracel이 보유한 JavaScript에 대한 상표권을 포기하도록 하는 소송이 계속 진행 중이다. 저번에 Oracle이 기각 신청을 제출한 이후 Deno에서는 이 부분을 반박했고 Oracle은 기존 입장을 유지하고 있다. 이제 3~4주 이내에 상표 심판 및 이의신청위원회에서 진행 여부가 결정될 예정이다.(영어)
프로젝트
- Playwright MCP : Microsoft에서 만든 Playwright의 MCP(Model Context Protocol)
- Kubernetes Spec Explorer : Kubernetes 명세를 확인할 수 있는 사이트
- eks-node-viewer : EKS 클러스터의 노드 사용량을 시각화하는 도구.
- LLMs.txt generator : 웹사이트 주소를 입력하면
llms.txt
파일을 만들어주는 웹사이트. - es-git : Node.js Git 라이브러리
- Typer : Python CLI 작성용 라이브러리.
- Mario Kart 3.js : WebGL로 만든 마리오 카트 게임.
버전 업데이트
- JDK 24 : Java Development Kit, 릴리스 공지
- GraalVM for JDK 24 : 통합 가상 머신, 릴리스 공지
- Kafka v4.0.0 : 분산 이벤트 스트리밍 플랫폼, 릴리스 공지
- Apache ZooKeeper없이 KRaft 모드로 동작하는 최초의 메이저 릴리스
- 새로운 Consumer Rebalance Protocol 적용
- Queues for Kafka의 얼리 엑세스
- Rsdoctor v1.0 : Rspack/Webpack의 분석기, 릴리스 공지
- tRPC v11 : TypeScript RPC 라이브러리, 릴리스 공지
- Babylon.js v8.0.0 : WebGL 자바스크립트 프레임워크, 릴리스 공지
- GIMP v3.0 : 오픈소스 이미지 편집기, 릴리스 공지
- Rspack v1.3.0 : 웹 번들러, 릴리스 공지
- Rsbuild v1.3.0 : Rspack 기반의 빌드 도구, 릴리스 공지
- React v19.1.0 : 자바스크립트 UI 라이브러리, 릴리스 공지
- three.js r175 : JavaScript 3D 라이브러리, 릴리스 공지
- Grafana v11.6 : 매트릭 대쉬보드, 릴리스 공지
- Zed v0.179.4 : 코드 에디터, 릴리스 공지
- Vitest v3.1.0 : Vite 유닛 테스트 프레임워크, 릴리스 공지
- Swift v6.1 : 프로그래밍 언어, 릴리스 공지
- ClickHouse v25.3 : 컬럼형 데이터베이스, 릴리스 공지
Comments