70%의 웹사이트가 쓰는 PHP에서 발견된 문제

원본 영상: 70%의 웹사이트가 쓰는 PHP에서 발견된 문제
채널: 안될과학 Unrealscience · 화자: 항성

웹사이트 점검 안내 뒤에 있던 보안 문제

익숙한 웹사이트가 갑자기 점검 안내만 띄운다면, 이용자는 대개 잠시 기다리면 해결될 일로 생각한다. 영상은 2026년 10월 21일의 웹사이트 중단 사례를 출발점으로, 여러 서비스가 공통으로 사용하는 PHP의 보안 문제를 설명한다.

사건의 중심은 개별 웹사이트가 작성한 코드보다 그 코드를 실행하는 기반에 있었다. 서로 다른 기관이 각자 웹사이트를 만들었더라도 같은 PHP 실행 엔진을 사용한다면, 엔진의 결함에 함께 영향을 받을 수 있다는 것이다.

또 다른 중심은 AI다. 영상은 AI가 오래된 코드의 결함을 찾아내고 실제 공격 가능성을 시험하는 데 활용됐다고 설명한다. 동시에 공격자도 같은 도움을 받을 수 있다는 점을 짚는다.

로그인 없이 서버 코드를 실행할 수 있다는 위험

화자는 이번 결함이 특히 위험한 이유로 로그인하지 않은 상태에서도 공격이 가능하다는 점을 든다. 조작된 요청이 특정 조건에서 서버의 코드 실행으로 이어질 수 있다는 설명이다. 이는 단순한 화면 오류를 넘어, 웹사이트를 운영하는 서버 자체에 영향을 줄 수 있는 문제다.

로그인 없이 악용될 수 있는 결함의 위험을 설명하는 대목

영상은 일부 환경에서는 웹사이트 프로그램이 실행되기 전에도 문제가 발생할 수 있다고 설명한다. 따라서 웹사이트 개발자가 자신의 코드만 점검하는 것으로는 대응이 충분하지 않을 수 있다. 그 코드를 실행하는 PHP의 상태도 함께 살펴야 한다는 것이다.

PHP는 여러 웹사이트가 공유하는 실행 기반

영상은 웹사이트를 식당에 비유한다. 이용자가 보고 누르는 화면은 손님을 맞는 홀에, 요청을 받아 데이터를 처리하는 백엔드는 주방에 해당한다. PHP는 이 주방에서 사용하는 프로그래밍 언어다. 개발자가 작성한 PHP 코드가 레시피라면, 실행 엔진은 레시피를 읽고 작업을 수행하는 자동 조리 기계에 비유된다.

주방과 레시피에 빗대어 PHP를 설명하는 대목

이 비유에서 이번 문제는 개별 레시피보다 여러 웹사이트가 함께 사용하는 조리 기계의 결함에 가깝다. 사이트마다 기능과 구성이 달라도 공통 실행 기반의 문제에는 함께 노출될 수 있다.

화자는 PHP가 1990년대 중반에 등장한 뒤 널리 쓰여 왔다고 설명한다. 여기서 제목의 ‘70%’는 서버 측에서 사용하는 언어를 확인할 수 있는 웹사이트 가운데 PHP를 사용하는 비중이 약 70%라는 뜻이다. 전체 웹사이트를 아무 조건 없이 집계한 수치로 읽어서는 안 된다.

PHP 사용 비중의 조사 대상 범위를 설명하는 대목

메모리의 실제 상태와 내부 기록이 어긋날 때

영상은 두 결함을 메모리 처리와 정리 과정의 문제로 설명한다. 이해를 돕기 위해 메모리를 잠시 빌려 쓰는 공용 사물함에 비유한다. 데이터를 보관할 공간을 사용한 뒤 반납하면, 다른 작업이 그 공간을 다시 사용할 수 있다.

반납한 공간을 계속 가리키는 기록

첫 번째 문제는 메모리를 반납했는데도 그 공간을 사용하라는 내부 기록이 남아 있는 상황이다. 사물함은 이미 반납했지만 “필요한 물건은 그 칸에 있다”는 메모를 계속 따라가는 셈이다.

메모리를 반납한 뒤에도 참조 정보가 남는 상황을 설명하는 대목

그 공간에 다른 데이터가 들어온 뒤에도 이전 데이터라고 생각하고 처리하면 문제가 발생할 수 있다. 영상은 이를 ‘해제 후 사용’으로 설명한다. 핵심은 공간의 실제 상태와 그 공간을 가리키는 정보가 서로 맞지 않는다는 데 있다.

완성되지 않은 기록을 믿고 진행하는 정리

두 번째 문제는 사용 중인 공간을 목록에 올린 뒤, 관련 정보를 모두 기록하기 전에 작업이 중단되는 상황이다. 이후 PHP가 목록만 보고 필요한 정보가 모두 준비됐다고 판단하면, 불완전한 기록을 바탕으로 정리를 진행하게 된다.

목록에 오른 공간의 정보가 준비됐다고 판단하는 과정을 설명하는 대목

두 문제는 발생 방식이 다르지만, 작업이 중단된 뒤 내부 상태를 올바르게 처리하지 못한다는 공통점이 있다. 영상은 이러한 메모리 처리 오류가 실제 공격으로 이어질 수 있는지를 연구진이 시험했다고 설명한다.

오래된 결함을 찾고 검증하는 데 활용된 AI

영상이 소개한 보안업체의 설명에 따르면, 문제의 코드는 2012년에 나온 PHP 5.4까지 거슬러 올라간다. 약 14년 동안 코드에 남아 있었다는 것이다. 오랫동안 사용해 온 소프트웨어에도 아직 발견되지 않은 결함이 있을 수 있음을 보여주는 사례다.

화자는 보안업체들이 AI 모델과 도구를 활용해 결함을 발견하고 조사했다고 설명한다. AI의 역할은 의심스러운 코드를 찾아내는 데 그치지 않았다. 발견한 문제가 실제 서버 환경에서 공격에 쓰일 수 있는지 확인하는 작업에도 활용됐다.

영상에서 소개한 업체의 설명에 따르면, 연구자 한 명이 AI와 함께 이 검증 작업을 일주일 만에 수행했다. 이 기간은 해당 연구 사례에 관한 설명이다.

연구자 한 명이 AI와 함께 수행한 검증 작업의 소요 시간을 설명하는 대목

이 사례에서 AI는 오래된 결함의 발견과 실제 위험의 확인을 모두 돕는 도구로 등장한다. 코드에 이상이 있다는 사실을 알아내는 것과, 그 이상이 어떤 공격으로 이어질 수 있는지 확인하는 과정이 함께 다뤄진다.

앞당겨진 보안 업데이트와 대응의 시간

영상은 결함을 고치는 일뿐 아니라 공개 시점과 업데이트 적용 속도도 중요하게 다룬다. 수정본이 공개되더라도 각 서버에 적용되기까지는 시간이 필요하기 때문이다.

PHP 개발팀은 보안 업데이트 공개일을 10월 22일에서 10월 21일로 하루 앞당겼다. 화자는 이 과정을 통해 취약점 정보가 퍼지는 속도와 운영자가 대응할 수 있는 시간이 밀접하게 연결돼 있음을 설명한다.

보안 업데이트 공개일을 하루 앞당긴 일정을 설명하는 대목

수정본을 만드는 것과 실제 서비스에 적용하는 것은 별개의 단계다. 영상은 웹사이트 운영자와 서버 관리업체가 서버의 PHP를 업데이트해야 한다고 설명한다. 공통 기반의 결함을 고쳤더라도, 각 운영 환경에 수정이 반영돼야 보호로 이어진다는 것이다.

공격 시도와 확인된 피해는 다른 사실이다

화자는 공격 시도가 있었다는 사실과 실제 침입에 성공해 피해가 발생했다는 사실을 구분한다. 연구 환경에서 공격이 성공한 결과 역시 실제 서비스의 침해 피해와는 구별해서 읽어야 한다.

관측된 공격과 확인된 피해의 구분

08:59 - 관측된 공격과 확인된 피해의 구분

웹사이트가 일시 중단됐다는 사실만으로 피해가 발생했다고 단정할 수는 없다. 영상에서 다루는 서비스 중단에는 위험을 줄이기 위한 예방적 대응도 포함된다.

AI가 앞당길 수 있는 방어와 공격

영상 후반부에서 화자는 방어자뿐 아니라 공격자도 AI를 활용할 수 있다고 지적한다. 결함을 찾아내는 일과 그 결함으로 실제 공격을 시도하는 일 모두에서 도움을 받을 수 있다는 것이다. 오픈AI와 위즈도 AI가 공격에 필요한 도구를 만드는 일을 더 쉽게 할 수 있다고 경고했다고 전한다.

이번 사례에서 AI는 오래된 결함을 찾아 고칠 기회를 넓히는 동시에, 공격 준비를 빠르게 할 수 있는 도구로 제시된다. 화자의 문제의식은 발견 자체에 머물지 않는다. 찾아낸 문제를 얼마나 빨리 수정하고 실제 서비스에 적용하느냐가 함께 중요하다는 것이다.

AI 발전이 취약점 수정과 공격 준비에 미치는 양면적 영향

10:56 - AI 발전이 취약점 수정과 공격 준비에 미치는 양면적 영향

출처

안될과학 Unrealscience — 70%의 웹사이트가 쓰는 PHP에서 발견된 문제