리더보드 1위와 2위는 태스크 0.36개 차이였다. 내 하네스엔 두 달 반 죽어 있던 게이트가 있었다

8월 첫 주에 AI 툴 뉴스가 두 갈래로 왔다. 한쪽은 가격이었다. OpenAI가 7월 30일에 Luna 입력 단가를 80% 내렸고, Anthropic은 Opus 5를 직전 세대 절반 값에 내놨다. 다른 한쪽은 순위였다. Terminal-Bench 2.1 리더보드에서 1위와 2위가 0.4%p 차이로 붙어 있었다. 두 소식을 나란히 놓고 보니 드는 생각이 있었다. 지금이 툴을 갈아탈 타이밍인가. 갈아타기 전에 하나만 확인하고 싶었다. 0.4%p라는 게 대체 뭘 재는 숫자인가. 리더보드는 퍼센트로 나오는데 그 퍼센트의 분모가 몇인지는 표에 안 적혀 있다. 그래서 분모를 찾아 곱해봤다. 89개였다. 0.4%p는 태스크 0.36개다. 여기까진 예상한 결론이었다. "벤치마크 몇 %p 차이로 툴 고르지 마라"는 말은 나도 여러 번 했고 여러 번 들었다. 확인 사살에 가까운 산수였다. 그런데 산수를 끝내고 나니 질문이 하나 남았다. 벤치 점수가 내 결과를 안 가른다면, 가르는 건 뭔가. 하네스라고 생각했으니 내 하네스를 세어보러 갔다. 그리고 세다가, 두 달 반 동안 아무것도 검증하지 않은 채로 돌고 있던 게이트를 다시 마주쳤다. 모델을 0.4%p 위로 올릴지 말지 고민하는 동안, 내 쪽 검증 레이어는 0%로 돌고 있었다. 8월에 뉴스가 두 갈래로 왔다 먼저 가격 쪽부터 본다. 7월 30일에 OpenAI가 단가를 내렸는데, 내림폭이 모델마다 달랐다. 모델 이전 (입력/출력, 100만 토큰) 7월 30일 이후 Luna $1 / $6 $0.20 / $1.20 Terra $2.50 / $15 $2 / $12 Sol $5 / $30 동결 Luna 입력이 80% 빠졌다. Terra는 20%쯤 내렸고, 최상위인 Sol은 안 움직였다. Anthropic 쪽은 Opus 5가 $5/$25로, Fable 5의 절반 값이다. Sonnet 5는 도입가로 $2/$10을 붙여뒀고 8월 31일 무렵까지만 그 값이다. 이후엔...

AI 챗봇에 불만 아홉 줄을 쏟았더니 정작 당사자에게 말할 문장은 하나도 안 남았다

말을 더 잘하고 싶었다. 같이 일하는 사람 한 명에 대해 몇 년치가 쌓여 있었고, 언젠가는 말해야 한다고 생각했다. 그래서 말하기 전에 정리부터 하기로 했다. AI 창을 열고 순서 없이 적어 내려갔다. 아홉 줄이 나왔다. 정리는 완벽했다. 흩어져 있던 게 항목이 됐고, 뭉쳐 있던 감정이 문장 단위로 쪼개졌고, 다 적고 나니 화도 가라앉았다. 목표한 그대로였다. 그 아홉 줄을 지금까지 그 사람에게 한 줄도 말하지 않았다. 한참 뒤에 그 목록을 다시 열어보고 나서야 이유를 알았다. 아홉 줄 전부, 주어가 그 사람이었다. 아홉 줄 여기에 아홉 줄을 그대로 옮길까 하다가 안 옮기기로 했다. 이유는 이 글 뒤쪽에서 저절로 나오는데, 먼저 말해두는 게 나을 것 같다. 저 아홉 줄은 당사자에게 못 할 말이었다. 못 할 말을 당사자 대신 블로그에 적으면 채널만 바뀌고 하는 짓은 똑같다. 그래놓고 뒤에서 "판단은 전달하는 게 아니라 갖고 있는 것"이라고 쓰면 그건 글이 아니라 알리바이다. 그리고 이 글에서 실제로 일하는 건 무슨 일이 있었느냐가 아니다. 그 문장들이 어떤 모양이었느냐다. 그래서 모양만 적는다. 아홉 줄에는 이런 공통점이 있었다. 전부 "~한 점"으로 끝났다 아홉 개 전부 주어가 그 사람이었다 날짜가 하나도 없었다. 언제 있었던 일인지 적힌 줄이 없다 요청이 하나도 없었다. 뭘 해달라는 문장이 아홉 개 중 0개다 내용은 크게 세 덩어리였다. 일을 처리하는 방식에 대한 것이 몇 줄, 태도로 보이는 것에 대한 것이 몇 줄, 그리고 앞으로도 이럴 것 같다는 내 예측이 한 줄. 굳이 하나만 예로 들면, 몇 년 전에 내가 제안해서 진행된 일이 나중에 그 사람 아이디어로 소개된 적이 있다. 목록에는 이게 "내가 제안한 걸 자기 생각이었다고 말한 점"으로 적혀 있었다. 아홉 줄이 전부 저 어미로 끝난다고 보면 된다. 이건 누구에게 전달하려고 쓴 문장이 아니다. 판결문에 가깝다. 아홉 줄 중에 상...

회사가 사주는 AI를 쓰다가 내 돈으로 또 샀다

AI에 쓰는 돈을 줄여보려고 했다. 회사가 ChatGPT를 지원하기 시작했을 때 제일 먼저 한 게 개인 구독 해지였다. 6개월 동안 매달 빠져나가던 20달러가 사라졌고, 카드 명세서에서 한 줄이 지워졌다. 계획대로였다. 오늘 그 줄이 돌아왔다. 옆에 한 줄이 더 붙은 채로. 14일이 6개월이 되던 과정 내가 AI를 처음 제대로 만진 건 ChatGPT였다. 무료 체험 14일로 시작했다. 그때는 이게 얼마짜리인지 감이 없어서, 체험 기간이라니까 그냥 눌렀다. 써보니까 너무 좋았다. 이건 좀 부끄러운 표현인데 달리 쓸 말이 없다. 그냥 좋았다. 14일이 끝나고 무료 플랜으로 하루를 버텼다. 딱 하루였다. 응답이 느려지고, 모델이 조용히 아래 등급으로 내려가고, 하루 질문 수 상한에 걸리는 걸 연달아 겪고 나니, 내가 지난 2주 동안 쓴 게 무료 플랜이 아니었다는 게 그제서야 몸으로 이해됐다. 다음 날 결제했다. 여기서 하나 짚고 갈 게 있다. 무료 체험은 제품이 얼마나 좋은지를 보여주려고 있는 게 아니다. 무료 플랜이 얼마나 불편한지를 보여주려고 있다. 이 구조가 꽤 정교하다. 만약 처음부터 무료 플랜만 줬다면 나는 "AI는 이 정도구나" 하고 판단을 끝냈을 거다. 비교 대상이 없으니 불편한 줄도 몰랐을 거다. 그런데 14일 동안 위쪽을 먼저 보여주고 나서 아래로 내리면, 같은 무료 플랜이 완전히 다른 물건이 된다. 없던 걸 파는 게 아니라 있던 걸 뺏는 방식 이다. 사람은 안 가진 걸 얻는 것보다 가진 걸 잃는 데 훨씬 민감하게 반응한다. 나는 그 설계에 정확히 걸렸고, 걸린 걸 알면서도 결제했다. 설계를 알아본다고 해서 안 걸리는 게 아니었다. 그게 잘 만든 제품이라는 뜻이기도 하다. 실제로 그 14일 동안 내 작업 방식이 바뀌어 있었고, 바뀐 방식을 되돌리는 게 20달러보다 비쌌다. 그렇게 6개월을 썼다. 회사가 사주기 시작하자 지운 줄 6개월쯤 지났을 때 회사에서 ChatGPT를 지원하기 시작했다. 업무 계정이 생겼고, ...

침해를 알아챈 뒤 공개까지, 한쪽은 7일이고 한쪽은 40개월이었다

오늘 뉴스타파 기사를 읽다가 2022년 10월 15일로 끌려갔다. 그날 오후 판교 SK C&C 데이터센터 지하 배터리실에서 불이 났다. 그때 나는 카카오 엔터로 이적한 후였고, 카카오는 한창 신규 사옥을 만들던 중이었다. 그 화재가 무엇을 세웠는지는 그 주에 한국에서 스마트폰을 쓴 사람이면 다 안다. 그런데 같은 화재가 다른 것도 하나 들췄다는 걸 그 기사에서 알았다. 그 데이터센터에는 SK이노베이션 E&S의 서버도 있었고 같이 탔다. 복구하려고 서버를 점검하던 중에, 그 회사는 자기네 사내망이 이미 털려 있었다는 사실을 발견한다. 해킹 시점은 9월 30일이었고 발견은 11월 4일이었다. 화재가 없었으면 언제 알았을지 모르는 침해였다. 여기까지는 그냥 운 나쁜 사고다. 내가 며칠 붙잡고 있었던 건 그 다음이다. 발견한 날부터 정부에 신고한 날까지 40개월이 걸렸다. 같은 기간에 나는 다른 침해 공개를 하나 읽고 있었다. 7월 30일에 Anthropic이 자사 모델이 실제 기업 세 곳의 프로덕션 인프라에 무단 접근했다고 발표했다. 사고 성격은 전혀 다르지만 세어야 하는 숫자는 같다. 언제 알았고, 언제 말했나. 그쪽은 7일이었다. 두 시간표를 같은 축에 올려놓고 보니 차이가 선명했다. 여기까지는 예상한 결론이었다. 예상 못 한 건 그 다음이었다. 같은 잣대를 내 레포에 대봤더니, 나는 애초에 시계를 시작할 수조차 없는 상태였다. 40개월이라는 숫자가 만들어진 과정 먼저 SK이노베이션 E&S 쪽 시간표를 날짜로 편다. 이 사건이 지금 문제가 되는 건 유출 규모 때문이 아니라 이 날짜들 때문이다. 시점 일어난 일 2022-09-30 1차 침해. 노후 서버의 보안 업데이트가 안 된 상태로 취약점이 방치돼 있었다 2022-10-15 SK C&C 판교 데이터센터 화재. 해당 서버도 소실 2022-11-03 사내 구성원이 네트워크 이상을 제보 2022-11-04 자체 보안점검으로 침해 인지....

keyv 웜은 npm install을 기다리지 않았다. 내 레포 6곳 훅 29개를 세어봤다

8월 4일 keyv가 털렸다는 글을 아침에 읽고, 내 일은 아니라고 판단했다. 이 블로그 레포는 파이썬 스크립트와 마크다운뿐이라 package.json 이 없다. 확인차 사이드 프로젝트 폴더 두 개를 훑어 lockfile을 찾았고 결과는 0개였다. keyv 도 flat-cache 도 file-entry-cache 도 설치돼 있지 않았다. 깨끗하다고 결론을 내리고 탭을 닫으려던 참에 문단 하나가 눈에 걸렸다… 같은 공격자가 keyv 레포에 커밋한 파일이 setup.mjs 하나가 아니었다. .claude/settings.json 과 .vscode/tasks.json 도 같이 들어갔다. 그 두 개는 npm install 을 안 해도 실행된다. 레포를 클론해서 에디터로 열거나 Claude Code 세션을 켜면 그때 돈다. 그러니까 lockfile을 뒤진 내 확인은 대상을 잘못 고른 확인이었다. 진짜 봐야 할 건 내가 이미 갖고 있는 훅이었고, 그건 세어보니 여섯 개 레포에 스물아홉 개였다. 30분 만에 열두 조직으로 번진 경로 먼저 사고 자체를 시간 순으로 본다. 숫자가 이 사건의 성격을 거의 다 설명한다. 2026년 8월 4일 09시 02분 37초(UTC), jaredwray 계정으로 keyv 저장소에 서명 없는 커밋이 하나 올라간다. setup.mjs 와 Math_Symbol.js 두 파일이 추가된다. 2분 뒤 09시 04분 30초에 두 번째 커밋이 올라가는데 이건 GitHub에서 verified 배지가 붙어 있다. 작성자가 github-actions[bot] 으로 스푸핑돼 있었다. 이 커밋이 앞서 말한 에디터 훅 파일들을 심는다. 09시 23분 50초에는 preinstall.test.ts 가 삭제된다. preinstall 동작을 검증하던 테스트를 먼저 치웠다. 그리고 09시 35분에 keyv@6.0.0 이 npm에 올라간다. 여기부터가 이 사고의 특이한 부분이다. 이 릴리스에는 유효한 SLSA provenance와 OIDC 증명이 붙어 있었다. ...

AI 거품이 터지면 내 개발 환경은 7배 느려진다. 내 커밋 92%가 거기 얹혀 있었다

빅테크가 데이터센터를 빚으로 짓는다는 얘기를 올해 초부터 계속 봤는데, 볼 때마다 내 일과 무슨 상관인지가 잘 안 붙었다. 주식 얘기로 읽히니까 넘겼다. 그런데 어제 숫자 하나를 보고 생각이 바뀌어서, 내가 쓰는 추론 비용과 그 부채가 어디서 만나는지 종이에 그려봤다. 만나는 자리가 네 개 나왔고 넷 다 내 워크플로우 안이었다. 여기까진 예상한 결론이었다… 같이 나온 게 내 의존도였다. 회사 레포에서 내 커밋을 월별로 세보니 3월에 49%였던 게 5월부터 92%에서 안 내려오고 있었다. 그 숫자를 나는 모르고 있었다. 장부 밖에 얼마가 서 있나 숫자부터 본다. 니케이가 7월 23일에 알파벳과 마이크로소프트, 아마존, 메타, 오라클 다섯 곳의 장부 밖 부채를 1조 6,500억 달러로 집계했다 . 4년 만에 여덟 배다. 이 숫자가 의미를 갖는 건 비교 대상이 있을 때다. 같은 다섯 회사가 장부에 올려둔 부채는 약 1조 3,500억 달러다. 장부 밖이 장부 안보다 크다. 메타 한 곳이 4,200억 달러를 장부 밖에 두고 있다. 어떻게 장부 밖에 두나. 데이터센터를 직접 짓지 않고 특수목적법인을 세운다. 그 법인이 채권을 발행하거나 사모 대출을 받아 돈을 빌리고, 빅테크는 그 법인과 장기 임대 계약을 맺어 컴퓨팅 용량만 받는다. 빌린 돈은 그 법인 장부에 잡히고 빅테크 장부에는 임대료만 남는다. 자본적 지출이 아니라 임차료로 기록되니까 감가상각 흐름도 달라진다. 메타가 텍사스에 짓는 1기가와트급 데이터센터가 이 방식이다. 125억 달러가 들어가는데 그 시설을 소유한 회사를 따로 세우고 사모 신용 펀드가 지분 대부분을 가져간다. 위험이 사라진 게 아니라 이동한다. 그 법인에 돈을 댄 채권 투자자와 보험사, 연기금이 위험을 든다. 빅테크는 계약상 일정 대가를 치르고 그 구조에서 빠져나올 선택권을 갖는 경우가 많다. 구조가 2008년 이전의 부채담보부증권과 겉모습이 닮았다는 지적이 여기서 나온다. 완전히 같지는 않다. 기초자산이 주택담보대출이 아니라 실제로 가...