18년 2022월 XNUMX일
: 네트워크에서 PHP를 사용하는 경우 현재 최신 버전을 사용하고 있는지 확인하세요. 7.4.28 또는 8.1.3. 어제 [2022-02-17]에 출시된 이 버전은 다음을 수정합니다. 다양한 메모리 관리 오류 버그를 포함한 CVE-2021-21708이는 호출된 함수에서 발생한 사용 후 해제 오류입니다. php_filter_float().
PHP를 사용하여 데이터베이스를 쿼리하는 것을 기반으로 하는 개념 증명 익스플로잇은 버그가 PHP 프로세스를 충돌시키는 데 사용될 수 있음을 보여줍니다. 서비스 거부 (DoS) 공격이 가능하다는 것은 이미 알려져 있습니다.
원격 코드 실행(RCE) 가능성은 높지만, RCE를 수행하는 악용 코드는 아직 발견되지 않았습니다. RCE 악용이 가능해지면 회사 외부 PHP 시스템에서 전송된 데이터가 사용자 컴퓨터의 PHP 프로그램을 중단시킬 뿐만 아니라 그 과정에서 해당 프로그램을 제어할 수도 있습니다. 일반적으로 다음과 같은 결과가 발생합니다. 네트워크 침입, 데이터 유출, 악성 코드 이식, 또는 이 모든 방법의 조합.
PHP 필터 함수는 들어오는 데이터를 검증하도록 설계되었습니다. 예를 들어 누군가가 정수(예: 5, 7, 11)를 보낼 것으로 예상하는 경우 정수로 안정적으로 변환할 수 없는 문자열(예: )을 보내지 않았는지 확인하기 위한 것입니다. 3.14159 or 3/16 inch.
The CVE-2021-21708 버그는 유효한 부동 소수점 수 또는 실수인지 확인하는 코드의 일부입니다. 부동 소수점 수는 학교에서 "실수" 또는 "소수"라고 불렀을 것입니다.
소수점에는 일반적으로 정수 부분과 소수 부분을 구분하는 점(또는 국가에 따라 쉼표)이 있습니다. 2.5 2와 5분의 1, 또는 2와 1/2를 나타냅니다.
PHP의 숫자 필터 함수를 사용하면 들어오는 숫자가 유효한지 확인할 뿐만 아니라 숫자가 지정된 범위 내에 있는지도 확인할 수 있습니다. 예를 들어 숫자가 2.71828보다 크지 않거나 -1과 1 사이에 있는지 확인할 수 있습니다.
입력되는 숫자가 이미 부동 소수점(10진수)인 경우, 코드는 아래와 같습니다. 왼쪽은 기존 PHP 코드(8.1.2)이고 오른쪽은 새 코드(8.1.3)입니다. (여기에는 버그가 없으므로 두 버전은 동일합니다.)
C를 몰라도 걱정하지 마세요. 중요한 점은 오류 검사가 먼저 이루어지고, 그 다음에 PHP가 현재 숫자를 저장하기 위해 사용하고 있는 메모리를 해제하는 줄이 나오고, 바로 다음에 PHP가 사용할 메모리를 재할당하는 줄이 나온다는 것입니다.
혹시 궁금하시다면, 흥미로운 이름입니다. zval_ptr_dtor() ~의 속기 PHP 내부 메모리 포인터 소멸자:

숫자가 소수점이 없는 정수인 경우 약간 다른 코드가 사용됩니다.
아래에서 볼 수 있듯이, "검사를 수행하고 실패하면 종료하지만, 문제가 없으면 해당 숫자에 대한 저장 공간을 할당 해제하고 다시 할당합니다"라는 순서가 이전 버전에서 섞여 있었습니다.
시퀀스는 "이 PHP 값에 사용된 메모리를 할당 해제한 다음 검사를 수행하고 실패하면 종료합니다. 곧 다른 것에 할당되어 나중에 사용 후 해제 충돌을 일으킬 메모리를 참조하는 PHP 객체를 남겨둡니다. 하지만 검사가 성공하면 해당 숫자에 대한 새 저장소를 다시 할당합니다."였습니다.
그건 마치 먼저 도로에 들어서서 안전한지 확인한 후에야 길을 건너는 것과 같습니다.
버전 8.1.3의 업데이트된 코드는 코드를 더 안전한 순서로 복원했지만, 예를 들어 단일 함수가 호출되는 경우 더 안전할 것입니다. dtor_and_alloc_in_one_go()그러면 이후 프로그래머가 실수로 소멸자 호출과 할당자 호출 사이에 코드를 다시 삽입하지 못하게 됩니다.
새로운 규정은 도로가 안전한지 먼저 확인한 다음, 도로에 들어서서 반대쪽으로 바로 걸어가는 것과 같습니다.
"diff" 뷰(전문 용어) 코드 차이) Visual Studio Code에서 생성한 코드는 8.1.2 버전에서 빨간색으로 표시된 줄이 8.1.3 버전에서 녹색 지점으로 이동한 모습을 깔끔하게 보여줍니다.

이러한 유형의 DDOS 공격은 원격 코드 실행(RCE)에 악용될 가능성이 높습니다. RCE 유형의 공격이 개발되면 회사에서 이 취약점을 패치할 시간이 매우 부족합니다. CyberHoot은 이 위험을 우선적으로 처리하고 가능하면 48~72시간 내에 패치를 적용할 것을 권장합니다. CyberHoot은 상황을 지속적으로 모니터링하고 RCE가 공개되는 즉시 업데이트를 게시할 예정입니다. 지금 바로 조치를 취하여 평가하고 패치를 적용하십시오.
출처
최신 사이버 보안 동향, 팁, 모범 사례를 알아보고 공유하세요. 또한 주의해야 할 새로운 위협도 알려드립니다.
MDASH와 Claude Mythos Preview라는 새로운 벤치마크 데이터가 제로데이 취약점을 찾아내는 데 가장 뛰어난 AI 에이전트로 선정되었습니다.
더보기
비밀번호 하나를 잊어버려서 하마터면 큰일 날 뻔했습니다. 한 소매점의 윈도우 컴퓨터에 캐시된 비밀번호 때문에 큰 문제가 발생했습니다...
더보기