read: fail

.MOBI 관리자가 되어버린 20달러짜리 RCE 사건

.MOBI TLD의 WHOIS 서버가 변경되었으나, 이전 도메인인 dotmobiregistry.net이 만료되어 방치되었습니다. 저자들은 이 도메인을 20달러에 등록하고 WHOIS 서버를 설치하여 다양한 기관으로부터 조회를 받았습니다. 이를 통해 TLS/SSL 인증서를 부정하게 발급받을 수 있는 보안 취약점을 발견하였고, 이 문제를 해결하기 위해 NCSC와 Shadowserver와 협력하였습니다.

압축에 대한 흥미로운 탐구

압축 기술에 대한 새로운 접근 방식을 소개하는 글입니다. 특히, Result<S, T> 타입을 이용하여 데이터를 효율적으로 압축하는 방법과 이를 실제 데이터에 적용한 사례가 설명되어 있습니다. 이 기술은 JSON 필드 이름을 압축하는 데에도 사용되어 상당한 공간 절약을 이루었습니다.

Binsider - 리눅스 바이너리 분석을 위한 TUI

Binsider는 ELF 바이너리를 분석하기 위한 강력한 정적 및 동적 분석 기능을 제공하는 도구입니다. 사용자 친화적인 TUI를 통해 문자열을 검사하고, 연결된 라이브러리를 살펴보며, 헥스덤프를 수행할 수 있습니다. 이 도구는 ELF 바이너리의 구조와 동작을 깊이 있게 이해할 수 있게 도와줍니다.

예외 처리가 에러 값보다 낫다고 생각하는 이유

예외 처리는 호출 스택 어디에서나 에러를 쉽게 처리할 수 있으며, 자동으로 클린업과 자원 관리를 해줍니다. 반면, 에러 값을 반환하는 방식은 보일러플레이트 코드가 많이 필요하고, 종종 제한된 문맥 정보로 인해 도움이 되지 않는 에러 메시지를 생성합니다. 또한, 예외 처리는 성공 경로에서 제로 오버헤드를 가지며, 성능 면에서도 우수합니다.

GDB의 Python API를 활용한 디버깅 개선 방법

이 기사에서는 GDB의 Python API를 사용하여 복잡한 C++ 라이브러리의 디버깅 경험을 향상시키는 방법을 설명합니다. 주요 내용은 libClang의 Python 바인딩을 활용하여 소스 코드를 파싱하고, 자동으로 브레이크포인트를 설정하여 개발자가 라이브러리 함수의 내부에 얽매이지 않고 자신의 코드에 집중할 수 있도록 하는 것입니다.

NestedText — 인간 친화적인 데이터 포맷

NestedText는 구조화된 데이터를 저장하기 위한 파일 포맷으로, JSON과 유사하지만 더 인간 친화적으로 설계되었습니다. 이 포맷은 데이터를 중첩된 이름-값 쌍, 리스트, 문자열로 구성하며, 단순하고 직관적인 문법을 지향합니다. 주로 구성 파일, 구조화된 코드, 조합 가능한 유틸리티에 사용됩니다.

Go 개발을 위한 최고의 VSCode 플러그인 (Goland에서 VSCode로의 이전)

VSCode에서 Go 개발을 시작할 때 Go 팀의 공식 언어 플러그인은 필수입니다. 이 플러그인은 문법 강조, 코드 완성, 정의로 이동 등 다양한 기능을 제공합니다. 추가적으로, Go Outline, Go Imports, Go Snippets 등의 유용한 플러그인들이 Go 개발 경험을 향상시킬 수 있습니다.

나의 홈랩 설정

홈랩 구축에 대한 자세한 가이드를 제공하는 이 글에서는 Unifi Dream Machine Special Edition과 같은 고급 네트워크 장비를 사용하여 10GbE WAN, 내장 NVR, PoE 스위치 등을 구현했습니다. 또한, 다양한 Unifi 제품을 활용하여 강화된 보안과 효율적인 네트워크 관리를 도모하고 있습니다.

eBPF를 활용한 시끄러운 이웃 탐지

Netflix가 Linux 커널을 모니터링하고 CPU 자원을 경쟁하는 프로세스나 컨테이너로 인한 성능 저하 문제인 '시끄러운 이웃'을 식별하기 위해 eBPF를 사용하는 방법을 설명합니다. 이 기술은 스케줄러의 통찰력을 제공하고 CPU 격리 전략을 가능하게 합니다.

"인터디프" 코드 리뷰 시스템을 선호하는 이유

"인터디프" 코드 리뷰는 GitHub의 전형적인 'diff 스프' 방식 대신 사용되는 대안입니다. 이 방식은 리뷰 변경 사항을 포함하여 원본 커밋의 새 버전을 게시함으로써 깔끔하고 선형적인 커밋 이력을 유지합니다. 또한, 리뷰어는 버전 간의 증분 변경을 볼 수 있어 리뷰 과정이 더 효율적이 됩니다.

Glasskube, ArgoCD와 함께 Gitops 준비 완료

Glasskube가 Gitops와 호환되며 ArgoCD를 통해 YAML 패키지를 Git에 적용할 수 있습니다. 이를 통해 Kubernetes 패키지 배포 시간을 몇 시간에서 몇 초로 단축시킬 수 있습니다. 또한, Glasskube는 자동으로 패키지를 최신 상태로 유지하며, Glasskube Hub를 통해 패키지를 발견하고 사용할 수 있습니다.

오픈 소스에 대한 나의 생각이 바뀌었습니다

저자는 이전에 오픈 소스화에 반대했지만, 오픈 소스 커뮤니티로부터의 피드백을 받고 생각이 바뀌었습니다. 이제 Yaak을 MIT 라이선스 하에 오픈 소스로 공개하기로 결정했으며, 버그 수정에 대한 기여만 허용할 예정입니다. 이러한 모델이 합리적이라는 것을 인정하게 되었습니다.

GitHub PR 리뷰 방법

GitHub에서 큰 규모의 PR을 리뷰하면서 겪은 어려움을 극복하기 위해, 저자는 로컬에서 PR 변경사항을 검토하고, 코드에 직접 리뷰 코멘트를 남기는 방법을 추천합니다. 이러한 방식은 GitHub의 표준 PR 리뷰 프로세스보다 효율적이라고 합니다.

GitHub Actions 러너의 디스크 공간 확보 방법

GitHub Actions 러너에서 디스크 공간 부족으로 문제가 발생했을 때, Arrow 프로젝트의 스크립트를 활용해 Ubuntu 22.04 러너의 공간을 확보하는 방법을 소개합니다. 이 스크립트는 간단히 다운로드하여 실행만 하면 되며, macOS 러너에는 다른 해결책이 필요합니다.

프랙탈의 단순함

소프트웨어는 프랙탈 기하학처럼 각 부분마다 독특한 '질감'을 가지며, 이는 많은 사용자에게 충분한 초점이 됩니다. 프랙탈을 생성하는 과정은 반복되며, 소프트웨어 이해도 점진적으로 이루어집니다. 이러한 프랙탈 메타포는 코드에 대한 이해를 돕는데 유용합니다.

close 함수에서 발생하는 오류

이 글은 간단한 명령줄 프로그램에서 close() 호출 시 발생할 수 있는 오류를 묵시적으로 무시하는 문제를 다룹니다. Unix 파일 시스템 API의 설계, NFS의 도입, 그리고 에러 처리의 책임에 대한 논의를 통해 이 복잡한 문제를 여러 각도에서 조명합니다. 이는 개발자와 시스템 설계자 사이의 책임 소재를 둘러싼 오랜 논쟁을 반영합니다.

yamlpath를 이용한 YAML 특성 추출

yamlpath는 YAML 문서를 통해 키와 인덱스의 경로를 선택하고 선택된 항목의 정확한 줄/열과 바이트 범위를 포함하여 얻을 수 있는 새로운 Rust 라이브러리입니다. 이 도구는 기존의 YAML 분석 도구들의 한계를 극복하고, 더욱 유연하고 강력한 방식으로 YAML 문서를 다룰 수 있게 해줍니다.

디자인 패턴은 일시적, 언어 기능은 영원하다

디자인 패턴은 유용할 수 있지만 때로는 과도하게 사용되며, Rust와 같은 언어의 새로운 기능들이 이를 대체할 수 있음을 배웠습니다. 특히 Java 21의 패턴 매칭 기능은 Visitor 패턴을 구식으로 만들었으며, 언어 자체가 더 나은 해결책을 제공함에 따라 일부 디자인 패턴의 필요성이 줄어들고 있습니다.

보이지 않는 도롱뇽에 대한 오해

2019년에 발표된 '보이지 않는 도롱뇽' 논문은 AEAD 구조와 그 가정들에 대한 연구에 다시 관심을 불러일으켰습니다. 이 논문은 특정 암호화 시스템에서 심각한 문제를 일으킬 수 있는 '보이지 않는 도롱뇽' 문제를 지적합니다. 이는 개발자들이 종종 간과하는 중요한 이슈로, 암호학자의 도움을 받는 것이 좋습니다.

멀티버스에서의 디버깅

디버깅을 범죄 현장 조사에 비유한 이 글에서, 작가는 '타임 머신'이 있었다면 소프트웨어 문제를 해결하는 데 얼마나 도움이 될지를 상상합니다. Antithesis라는 도구를 통해 개발자들은 시간을 되돌리고, 다양한 시나리오를 탐색하며 버그의 원인을 파악할 수 있습니다.