2025-07-21 주간 URL 모음

  • GitHub - rishubil/bodiless-browser: If there's a Headless Browser, shouldn't someone make a Bodiless Browser too?
    • 요약
      • Bodiless Browser라는 헤드리스 브라우저와 반대 개념의 웹 브라우저 프로젝트
      • URL 입력 시 HTTP 상태 코드(200, 404, 500 등), 페이지 제목, 응답 시간, 컨텐츠 크기만 표시하는 단순한 기능 제공
      • 렌더링, JavaScript 실행, 복잡한 기능 없음 - 최소한의 정보만 제공
      • 개발자가 심심해서 만든 프로젝트로, 단순함이 매력이라고 설명
      • Tauri 기반으로 개발되어 npm install, npm run tauri dev, npm run tauri build 명령어로 실행 가능
      • 릴리스 페이지에서 인스톨러를 다운로드하여 바로 사용 가능
      • 기능 추가는 가능하지만 단순함을 유지하는 것이 핵심이라고 강조
      • MIT 라이선스로 오픈소스 프로젝트이며 기여 환영
  • Avoiding the Top 10 NGINX Configuration Mistakes
    • 요약
      • NGINX 사용자들은 경험이 풍부한 엔지니어들조차 동일한 설정 실수를 반복적으로 저지르며, 가장 빈번한 10가지 오류가 식별되고 해결책이 제공됨
      • 워커 연결과 파일 디스크립터 불일치: 기본 worker_connections (512)는 대부분의 배포에 비해 너무 작지만, 중요한 실수는 worker_rlimit_nofile을 최소한 worker_connections 값의 두 배로 설정하지 않는 것인데, 각 연결마다 여러 파일 디스크립터가 필요하기 때문
      • 잘못된 error_log off 사용: access_log와 달리 error_log 지시어는 off 매개변수를 받지 않으며 대신 "off"라는 이름의 파일을 생성함; 비활성화하는 올바른 방법은 error_log /dev/null emerg;
      • 업스트림 서버에 대한 keepalive 연결 누락: 각 요청마다 새로운 연결을 여는 것은 비효율적이고 소스 포트를 고갈시킬 수 있음; 해결책은 upstream{} 블록에서 keepalive 지시어를 사용하고 proxy_http_version 1.1proxy_set_header "Connection" "";을 설정하는 것
      • 지시어 상속 오해: add_headerproxy_set_header 같은 배열 지시어는 하위 컨텍스트에서 부모 값에 추가되는 것이 아니라 완전히 재정의하므로, 하위 블록에서 부모 헤더를 수동으로 재정의해야 함
      • 불필요한 proxy_buffering 비활성화: proxy_buffering off 설정은 성능을 저하시키고 속도 제한/캐싱을 중단시킴; 롱 폴링과 같은 특정 사용 사례에만 비활성화해야 함
      • 문제가 있는 if 지시어 사용: if 지시어는 location{} 블록에서 위험하며 세그먼테이션 폴트를 일으킬 수 있음; 더 안전한 대안으로는 map{} 블록을 사용하거나 if{} 내에서 return/rewrite를 사용하는 것
      • 업스트림당 여러 헬스 체크: 동일한 업스트림에 대해 모든 server{} 블록에서 health_check를 정의하는 것은 불필요한 부하를 생성함; upstream{} 블록당 하나의 헬스 체크로 충분함
      • 보안되지 않은 메트릭 엔드포인트: stub_statusapi 엔드포인트는 민감한 정보를 노출함; HTTP Basic 인증(auth_basic), IP 제한(allow/deny), 또는 satisfy any를 사용한 조합으로 보호해야 함
      • 동일한 /24 CIDR에서 ip_hash 사용: 모든 트래픽이 동일한 네트워크 세그먼트에서 오는 경우, ip_hash는 처음 세 옥텟만 사용하므로 실패함; 해결책은 전체 IP 해싱을 위해 hash $binary_remote_addr consistent를 사용하는 것
  • Hackers exploit a blind spot by hiding malware inside DNS records
    • 요약
      • 해커들이 DNS 레코드 내부에 악성코드를 숨기고 있으며, 대부분의 보안 방어 시스템이 도달할 수 없는 감시가 거의 되지 않는 영역을 악용하고 있습니다
      • 이 기법을 통해 악성 스크립트는 의심스러운 사이트나 이메일 첨부파일에서 다운로드하지 않고도 바이너리 파일을 가져올 수 있으며, 이러한 파일들은 일반적으로 백신 소프트웨어에 의해 격리됩니다
      • DNS 트래픽은 보안 도구에 있어 중요한 사각지대를 나타내는데, 웹과 이메일 트래픽은 DNS 조회보다 훨씬 더 면밀한 감시를 받기 때문입니다
      • DomainTools 연구진은 이 방법이 컴퓨터 정상 기능을 방해하는 성가신 악성코드인 Joke Screenmate의 악성 바이너리를 호스팅하는 데 사용되고 있음을 발견했습니다
      • 악성코드 파일은 컴팩트한 문자 표현을 위해 바이너리에서 16진수 형식(0-9 숫자와 A-F 문자 사용)으로 변환되었습니다
      • 16진수 데이터는 수백 개의 청크로 나뉘어져, 서로 다른 서브도메인의 DNS TXT 레코드에 저장되었습니다
      • TXT 레코드는 임의의 텍스트를 저장할 수 있으며, Google Workspace와 같은 서비스 설정 시 사이트 소유권 확인을 위해 일반적으로 사용됩니다
      • 공격자들은 무해해 보이는 DNS 요청을 통해 청크들을 검색하고, 이를 재조립한 후 실행을 위해 바이너리 형식으로 다시 변환할 수 있습니다
      • 이 기법은 암호화된 DNS 조회 방법(DOH 및 DOT)의 채택이 더 널리 확산됨에 따라 탐지가 더욱 어려워집니다
  • Gaslight-driven development
    • 요약
      • "Gaslight-driven development"라는 새로운 개발 패러다임이 등장함 - LLM이 API 설계에 대한 의견을 제시하고, 개발자들이 이에 맞춰 코드를 수정하는 현상
      • 컴퓨터 사용자들은 이미 무의미한 작업들(계정 생성, 이메일 확인, 캡차 해결 등)을 기계가 시키는 대로 수행하며 기계에 복종하고 있음
      • 2025년 9월까지 90%의 코드가 AI에 의해 작성될 예정이어서, 개발자들은 LLM의 요구사항을 따를 수밖에 없는 상황
      • 실제 사례들:
        • Soundslice은 ChatGPT가 존재한다고 계속 말하는 기능을 실제로 추가함
        • Instant는 LLM이 계속 tx.create를 사용하려 해서 기존 tx.update와 별도로 tx.create를 추가함
      • 이런 접근법의 긍정적 측면: LLM이 수백만 개의 다른 API를 학습해서 가장 직관적이고 개발자가 먼저 생각할 법한 것을 제안함
      • 독특한 테스팅 도구 역할: 개발자들은 API를 잘못 사용해도 자신을 탓하고 문서를 읽어 수정하지만, ChatGPT를 통해서는 "초보자 관점"을 언제든 체험할 수 있음
      • 한계점: 새롭고 독창적인 것을 시도할 때는 LLM이 이해하지 못함
      • 대부분의 경우 API에서 영리함보다는 가장 명백한 방법이 최선일 수 있다는 관점 제시
      • AI가 도구를 사용하는 것을 넘어서 도구가 어떻게 만들어져야 하는지에 대한 의견을 갖게 됨
      • AI는 정중하게 요청하는 대신 모든 사람을 가스라이팅하여 원래 그랬던 것처럼 착각하게 만드는 새로운 시대가 도래함