🐹🦜 이 글에 등장하는 두 캐릭터
- 🐹
모찌 (햄스터)… AI는 아직 공부 중. “그거 무슨 뜻이야?”라고 순수하게 질문하는 학생 역할 - 🦜
키나코 (사랑앵무)… AI로 자료 조사를 하는 해설자 역할. 상냥하게 깊이 파고들어 가르치는 선생님 역할
이 글은 두 캐릭터의 대화를 받아 적은 형식입니다. 발언 맨 앞에 있는 이모지 + 이름이 화자입니다.
🐹 모찌: “키나코, PHP 취약점 뉴스 봤어. 내 사이트도 위험해?”
🦜 키나코: “진정해. 10월 21일에 PHP 본체에서 심각한 취약점이 두 건 수정되었어. 심각도는 둘 다 CVSS v4.0으로 9.2야.”
🦜 키나코: “웹을 처리하는 PHP는 기본적으로 대상이야. 수정 버전은 8.5.12, 8.4.27, 8.3.36, 8.2.35야.”
🐹 모찌: “나는 렌탈 서버만 빌려 쓰고 있는데….”
🦜 키나코: “그 경우에는 사업자가 공지한 것을 먼저 확인하는 게 우선이야. 그리고 7.4부터 8.1까지는 공식 수정 버전이 없어.”
🦜 키나코: “이번 영상에서는 자신의 PHP가 대상인지 구분하는 방법과, 패치가 왜 이렇게 멈췄는지 정리해 줄게.”
🐹 모찌: “잠깐만. PHP 버전 숫자를 보면 고쳤는지 한 번에 알 수 있잖아?”
🦜 키나코: “그렇게 생각하지. 8.2 이후라면, 수정 버전 이상의 숫자면 일단 안심할 수 있는 건 확실해. 하지만, 숫자만으로는 결정할 수 없는 경우도 있어.”
🐹 모찌: “숫자가 오래되었는데 고쳐진 경우도 있대? 그건 어떻게 아는 거야?”
🦜 키나코: “리눅스 배포처에서는 버전 번호를 바꾸지 않고 수정만 가져오는 경우가 있거든. 그래서 오래 보인다고 해도, 고쳐져 있는 경우가 있어. OpenAI의 확인 도구 설명에도 같은 주의사항이 있어.”
🐹 모찌: “그럼 숫자만 보고 ‘괜찮다’도 ‘위험하다’도 말할 수 없다는 거네?”
🦜 키나코: “응. 그러니까, 배포처의 공지에서 확인해야 해.”
🦜 키나코: “대상은 웹을 처리하는 PHP 전반이야. Apache 안에서 구동되는 mod_php나, 별도의 담당으로 구동되는 PHP-FPM, FrankenPHP 등이야.”
🦜 키나코: “그중에서도 mod_php가 공식적으로 가장 위험도가 높다고 하고 있어.”
🐹 모찌: “빌려 쓰는 경우라면, 사업자분들이 움직여 주고 계실까?”
🦜 키나코: “일본에서도 렌탈 서버 사업자 등이 긴급 유지보수에 들어갔거나 예고했다고 보도되고 있어. 빌려 쓰고 있다면, 사업자의 공지 확인이 첫 번째 단계야.”
🦜 키나코: “직접 구동하는 사람은 수정 버전으로 업데이트하고, PHP 프로세스를 재시작할 때까지가 한 세트야. 업데이트만 한다고는, 실행 중인 것은 여전히 오래된 상태로 남아있거든.”
🐹 모찌: “재시작까지 필요하구나. 7.4부터 8.1을 쓰는 사람은 어떻게 해야 해?”
🦜 키나코: “공식 수정 릴리스가 없기 때문에, 배포처나 연장 지원 제공처의 대응을 확인해야 해. 소스에는 최소한의 수정 가지만 남아있거든.”
🦜 키나코: “업데이트할 수 없는 동안 임시 방편도 공식적으로 있지만, 피해를 줄일 가능성은 있어도 안전하다고는 안 돼라고 쓰여 있어.”
🐹 모찌: “근데 어디가 고장 나는 거야? 사이트 구조가 나쁘면 노려지는 거잖아?”
🦜 키나코: “그렇게 생각하고 싶지. 하지만 이번에는, 사이트 작성 방식만의 문제가 아니라 PHP 본체 자체에도 문제가 있어.”
🦜 키나코: “공식적으로는 mod_php의 경우, 애플리케이션 코드가 실행되기 전 단계에서 성립되는 데모가 있다고 적혀있어. PHP-FPM에서는, 앱 측 코드 경로를 거쳐 확인했다고 재단이 적고 있어.”
🐹 모찌: “그럼, PHP 안에서 왜 메모리가 고장 나는 거야?”
🦜 키나코: “첫 번째는, 메모리가 부족해진 상황이야. PHP는 그때 longjmp라는 메커니즘으로 처리를 중간에 멈추고 한 번에 되돌아가거든.”
🐹 모찌: “책상을 치우다가 갑자기 불려서 돌아가는 느낌 같은 거야?”
🦜 키나코: “좋은 비유네. 어중간한 책상을, 나중에 온 정리 담당자가 제대로 된 상태라고 생각하고 만지는 거지. 거기서 메모리가 고장 나는 거야.”
🐹 모찌: “또 다른 건 어떤 버그야?”
🦜 키나코: “두 번째는, 다 쓰고 회수했다고 생각했던 장소의 정보가 나중에 다른 처리에 읽혀버리는 버그야. 다음 손님 응대를 시작하기 전에 일어나.”
🐹 모찌: “회수된 메모지가 접수대에 붙여져 있어서 누가 읽어가는 느낌?”
🦜 키나코: “맞아. 해제한 후에의 메모리를 사용해버리는, use-after-free라는 종류야. 두 건 모두, 메모리 안전성 문제로 분류되어 있어.”
🐹 모찌: "둘 다 PHP 코어 자체의 정리 문제구나. 사이트 작성 방식만 문제가 아닌가 보네."
🦜 키나코: "솔직히 말하면, 나는 이걸 단순한 누락이라고 생각했어. 그런데 재단 설명을 읽고 나니, 내 판단이 부족했다는 걸 알았지."
🐹 모찌: "누락이 아니었어? 무슨 일이 있었던 거야?"
🦜 키나코: "PHP Foundation 설명에 따르면, 2024년에 수년 만에 외부 보안 감사가 있었다고 해. 수행한 곳은 Quarkslab이야."
🦜 키나코: "그 보고서 중 하나를 수정하던 재단이 계약한 코어 개발자가 메모리 부족 문제의 첫 징후를 발견했대."
🐹 모찌: "징후가 있었는데, 왜 바로 고치지 않은 거야?"
🦜 키나코: "악용은 가능하다고 생각했지만, 구체적인 경로는 찾지 못했다고 해. 그래서 영향이 명확해진 문제가 먼저 다뤄졌다고 재단은 설명하고 있어."
🐹 모찌: "그럼, 수정 방법을 결정하는 데도 시간이 오래 걸린 거야?"
🦜 키나코: "여러 안이 경쟁했대. 호환성을 깨는 안, 새로운 장애를 유발할 수 있는 안, 여러 확장에 손을 대는 안 등. 합의로 움직이는 팀은 결정을 내리지 못했다고 해."
🦜 키나코: "그 결과, 수정 작업은 몇 달에 걸쳐 멈췄다가 다시 시작했다고 재단은 쓰고 있어."
🐹 모찌: "정말 답답하네..."
🦜 키나코: "재단 스스로가 지연이 구조적인 실패였다고 인정하고 있대. 결정 방식과 인력 부족, 이 두 가지 모두가 원인이라고. 여기는 재단의 발언을 인용한 거야."
🦜 키나코: "재단은 다수결로 결정할 수 있도록 하고, 타협을 유도하는 형태로 진행 방식을 바꾸고 있다고 적기도 했어."
🐹 모찌: "그러고 보니 AI가 발견했다는 이야기도 들었잖아! 역시 AI는 대단한 것 같아!"
🦜 키나코: "그렇게 말하고 싶긴 하지. 하지만 이건 당사자들 각자의 설명이야. 누가 뭐라고 했는지, 나누어 봐야 해."
🦜 키나코: "발견했다고 한 Calif는 자사 기사에서 조사에 LLM(Large Language Model)의 도움을 받았다고 썼어. 모델명은 없고, 초기 발견에는 특별한 도구나 비공개 모델은 사용하지 않았다고도 적고 있어."
🐹 모찌: "OpenAI는 뭐라고 해?"
🦜 키나코: "OpenAI는 Calif가 GPT-5.6 Sol로 심각한 건 하나를 발견했다고 발표했다는 보도가 나왔어. 발표 원문은 확인이 안 돼."
🦜 키나코: "'우리가 아는 한, 공격자보다 최첨단 AI가 먼저 발견했다'가 OpenAI의 주장이야."
🦜 키나코: "Wiz는 자사 기사에서 자사의 툴과 여러 모델을 사용했다고 쓰고 있어."
🐹 모찌: "다들 AI를 썼다고 하는데, AI 공로라고 단정할 수 없는 거야?"
🦜 키나코: "재단 설명에 따르면, 징후는 2024년에 사람의 감사 대응 과정에서 나타난 거야. AI가 얼마나 기여했는지는 모두 당사자들의 자체 신고일 뿐이라 제삼자가 검증했다고 말할 수 없어."
🦜 키나코: "그래서, AI 덕분이라고도, 관계없다고도 할 수 없는 게 이번에 중요한 포인트야."
🐹 모찌: "공개되기 전에 정보가 먼저 새어 나왔다는 이야기도 들었어. 공개일까지 입을 다물기로 한 약속 같은 거 있어?"
🦜 키나코: "있지. 수정이 퍼지기 전에 세부 정보를 확산시키지 않겠다는 약속을 '엠바고(Embargo)'라고 불러."
🦜 키나코: "이번에 재단 설명에서는 일본 시간으로 10월 21일 0시경, 두 건의 CVE 번호가 포럼이나 SNS에 돌았대. 공개 시점과 심각도 숫자는 오류였다고 해."
🐹 모찌: "심각도는 9.2 아니었어?"
🦜 키나코: "응, 정확한 건 CVSS v4.0의 9.2야. 돌았던 숫자가 달랐던 거지."
🦜 키나코: "이후에 연구했던 회사 중 한 곳이 영상을 실수로 공개했다고 재단은 쓰고 있어. 이 영상에서는 그 자료는 다루지 않을게."
🦜 키나코: "재단은 릴리스를 22일에서 21일로 앞당겼다고도 적고 있어. 여기에 Chainguard라는 회사가 수정된 빌드 이미지를 예정보다 빨리 공개했어."
🐹 모찌: "재단은 뭐라고 해? Chainguard가 나쁘다는 거야?"
🦜 키나코: "재단은 '일방적으로 엠바고를 위반했다'고 비판하고 있어. Chainguard 측은 보도에 따르면, 이미 공격받는 사람이 있었기 때문에 수정을 내놓았다고 말하고 있대."
🦜 키나코: "다만, 그 증거는 기사에는 제시되어 있지 않아. Amazon은 10월 17일에 공격 시도를 관측했다고 적었지만, 성공했는지는 불분명해."
🦜 키나코: "반면 CISA는 게재 시점에서는 악용을 관측하지 않았다고 쓰고 있어. 어느 쪽이 맞는지, 이 영상에서는 결정하지 않을게."
🐹 모찌: "보는 사람에 따라 보이는 게 다르구나. 뭐가 진짜인지 아직 모르겠네.
🦜 키나코: "맞아. 그래서 마지막으로 확실한 것만 정리해 줄게. 네 PHP가 대상인지 아닌지는, 직접 운영하는 건지 빌려 쓰는 건지에 따라 첫 번째 대응이 달라져."
🦜 키나코: "오늘 해줬으면 하는 건 딱 하나야. 네 PHP를, 직접 업데이트하는 것과 사업자에게 맡겨진 것으로 나누어서 적어봐."
🐹 뫼치: "나누기만 하면 되는 거라면, 나도 할 수 있을 것 같은데!"
🐹 뫼치: "이 분류 방법, 나중에 다시 보고 싶으니까 저장해 놓자!"
🐹 뫼치: "그나저나 주인님, 리엔탈 서버 공지 메일 안 열면 쌓여있을 것 같네."
🦜 키나코: "후후, 그건 말하지 마. 하지만 이번에는 공지 메일이 정말 중요해."
🦜 키나코: "여러분은, 자신의 PHP가 어디서 돌아가고 있는지 알고 있나요? 댓글로 알려줘."
🦜 키나코: "AI와 취약성에 대한 이야기는, 이전 영상에서도 '현관은 바뀌어도 열쇠의 약함은 변하지 않는다'는 관점으로 다뤘어. 궁금하면 거기도 한번 봐봐."
🐹 뫼치: "그럼 오늘은 여기까지!"
키나코&뫼치의 테크 심층 분석에서는 AI/LLM을 중심으로 한 기술 전반을 햄스터(🐹 뫼치)와 세키세이인코(🦜 키나코)의 대화로 재미있게 해설합니다.
▶️ 영상으로 보기 → PHP의 심각한 취약점, 내 사이트는 대상일까? 수정이 멈춘 이유까지
👍 이 글이 도움이 되었다면 LGTM(좋아요) 및 스토크 부탁드립니다!
📺 채널 구독하기 → 키나코&뫼치의 테크 심층 분석
🔗 다른 해설 영상 보기 → 키나코&뫼치의 테크 심층 분석 영상 목록