RSS 프로젝트 제로 노트

RSS 프로젝트 제로

구글의 프로젝트 제로 웹사이트는 소프트웨어의 보안 취약점을 찾고 패치하는 포괄적인 리소스입니다. 구글의 보안 연구 팀이 이끌고 있으며, 보안 결함에 대한 심층 분석, 개발자들이 제품에서 취약점을 예방하는 데 도움이 되는 가이드 및 자습서를 특징으로 합니다.

노트 스레드

Google Project Zero는 Apple 기기에서 메모리 손상 버그를 악용하기 위해 원격 ASLR 누출의 필요성에 대해 논의했습니다. 이는 메모리 안전 위반이나 타이밍 공격 없이 원격으로 포인터를 누출할 수 있는 기술의 발견으로 이어졌습니다. 이 방법은 역직렬화, 재직렬화 및 공격자가 제공한 데이터를 반환하는 공격 표면에 적용됩니다. macOS/iOS에서 즉각적인 실제 공격 표면은 확인되지 않았지만, 이 기술은 NSKeyedArchiver를 사용한 인위적인 사례를 통해 테스트되었습니다. 이 문제는 Apple에 보고되어 수정되었지만, 실제 영향이 입증되지 않아 공개 버그 추적기 항목은 만들어지지 않았습니다. 이 새로운 기술은 해시 테이블 충돌 공격과 관련된 이전 연구를 기반으로 합니다. 역사적으로 해시DoS 공격은 최악의 해시 테이블 성능을 악용하여 서비스 거부를 유발했습니다. 이전 연구에서도 해시 충돌을 사용하여 주소를 누출할 수 있음을 시사했습니다. 해시DoS 개념은 공격자가 특정 해시 버킷에 대한 액세스를 늦추는 것으로 볼 수 있습니다. 이 원리는 Firefox에서 JavaScript Map 삽입의 타이밍 측정을 통해 힙 주소를 누출하는 데 활용되었습니다. 포인터 키 데이터 구조를 반복하는 것도 객체 주소에 대한 정보를 드러낼 수 있습니다. 직렬화 메커니즘, 특히 임의의 객체 그래프를 허용하는 메커니즘은 안전하지 않을 수 있습니다. Apple의 NSKeyedUnarchiver는 역직렬화 가능한 클래스의 허용 목록으로 작동합니다. 특정 테스트 사례는 NSKeyedUnarchiver를 사용하여 공격자가 제공한 데이터를 역직렬화하고 재직렬화하여 공유 캐시 포인터를 누출하는 것을 목표로 합니다. NSNull 싱글톤 객체의 해시는 명시적으로 처리되지 않으면 기본적으로 공유 캐시에 저장된 주소로 설정됩니다. NSNumber 인스턴스는 숫자 값에 따라 다르게 해시됩니다. 사전은 키 배치를 관리하기 위해 해시 코드를 버킷 수로 나눈 값으로 사용합니다.
구글 프로젝트 제로가 취약점 공개 정책을 "90+30" 모델로 업데이트하여 패치 개발 및 채택을 가속화하고 있습니다. 그러나 여전히 중요한 도전 과제가 남아 있습니다. 즉, 패치가 출시된 후 사용자가 설치하는 데 걸리는 지연, 즉 "패치 갭"입니다. 프로젝트 제로는 업스트림 벤더가 패치를 가지고 있지만 다운스트림 의존 대상이 이를 통합하지 않은 "업스트림 패치 갭"을 확인했습니다. 이 업스트림 갭은 취약점 수명 주기를 상당히 연장합니다. 이를 해결하기 위해 새로운 시험 정책인 "보고 투명성"을 발표합니다. 이 시험에서는 취약점을 보고한 후 1주 이내에 공공적으로 공개하여 벤더, 제품, 보고 날짜, 공표 마감일을 포함합니다. 핵심 90+30 정책은 유지되며 구글 빅 슬립도 이 정책을 시험합니다. 이 정책의 목표는 투명성을 높이고 다운스트림 의존 대상에게 정보를 제공하여 업스트림 패치 갭을 줄이는 것입니다. 이 시험은 보고서에서 사용자 기기 설치까지의 시간을 추적하여 패치가 적용되지 않은 경우를 강조합니다. 공표 마감일까지는 기술적인 세부 사항이 공개되지 않으며, 이는 공격자에게 블루프린트가 아니라 경고입니다. 일부 벤더는 불편한 주의를 받을 수 있지만, 소수에 대한 위험은 생태계의 안전을 위해 취약점을 해결하는 데 있어 가치가 있습니다. 궁극적인 목표는 사용자 기기에 취약점을 해결하는 안전한 생태계입니다. 이 정책은 시험 단계이며 프로젝트 제로는 그 효과를 추적하고 정책을 적절하게 조정할 것입니다.
NSO의 BLASTPASS iMessage 악용 사례는 사용자의 어떠한 조작도 없이 최신 iOS 버전을 실행하는 아이폰을 손상시킨 제로클릭 제로데이 취약점이었습니다. 이 악용 사례는 공격자의 iMessage 계정에서 피해자에게 전송된 악성 이미지를 포함한 PassKit 첨부 파일을 포함했습니다. 애플은 2023년 9월 7일 iOS에 대한 긴급 보안 업데이트를 배포하여 이 취약점을 해결했습니다. WebP 팀도 해당 문제에 대한 수정 프로그램을 발표했으며, 이후 크롬에 통합되었습니다.이 취약점의 근본 원인은 WebP 무손실 이미지 형식, 특히 해당 형식에 사용된 허프만 코딩의 메모리 손상 문제였습니다. 이 취약점을 통해 공격자는 잘못된 허프만 트리를 정의할 수 있었고, 이는 디코딩 테이블이 생성될 때 메모리 손상을 초래할 수 있었습니다. 하지만 손상 원시값은 제한적이었고, 버그가 발생한 직후 이미지 파싱이 중지되었습니다.이 취약점의 악용은 한 번의 클릭으로 제로클릭 설정에서 악용을 수행하는 방법이 불분명했기 때문에 미스터리였습니다. 손상 원시값은 매우 제한적이었고, 샘플에 접근할 수 없었기 때문에 취약점을 악용하는 방법을 아는 것은 거의 불가능했습니다.11월 중순, 작성자는 여러 개의 BLASTPASS PKPass 샘플 파일과 실패한 악용 시도의 크래시 로그를 확보하여 샘플을 분석하고 악용 방식을 파악할 수 있었습니다. 분석 결과, 메모리 손상 문제를 유발하는 악성 이미지 파일을 전송하고, 제한적인 손상 원시값을 사용하여 임의 코드를 실행하여 취약점이 악용되었음을 알 수 있었습니다.WebP 형식은 허프만 코딩을 사용하여 이미지를 압축하는 비교적 최신 이미지 파일 형식입니다. 무손실 형식은 RIFF 컨테이너와 별도의 무손실 형식을 사용하며, 취약점은 바로 이곳에서 발견되었습니다. 취약점은 무손실 형식에 사용된 허프만 코딩, 특히 디코딩 테이블이 생성되는 방식에 있었습니다.작성자의 샘플 분석 결과, 이 악용 사례는 제한적인 손상 원시값을 사용하여 함수 포인터를 덮어쓰고 악성 코드를 실행하는 것을 포함한 여러 기술을 결합하여 임의 코드를 실행했습니다. 분석 결과, 이 악용 사례는 매우 정교했으며 WebP 형식과 그 안에 사용된 허프만 코딩에 대한 깊이 있는 이해가 필요했습니다.전반적으로 NSO BLASTPASS iMessage 악용 사례는 WebP 형식과 그 안에 사용된 허프만 코딩에 대한 깊이 있는 이해가 필요한 매우 정교하고 복잡한 취약점이었습니다. 이 취약점의 악용은 미스터리였지만, 샘플 분석 결과 여러 기술을 결합하여 임의 코드를 실행할 수 있음이 밝혀졌습니다.
구글 프로젝트 제로의 연구원 제임스 포쇼는 DCOM 및 .NET Remoting과 같은 객체 지향 원격 기술에서 "포획된 객체 버그 클래스"에 대해 논의합니다. 이러한 기술은 프로세스 및 보안 경계를 넘나드는 객체 지향 인터페이스 개발을 허용하지만, 이러한 유연성에는 권한 상승 또는 원격 코드 실행 가능성을 포함한 단점이 있습니다.원격으로 처리할 수 있는 모든 객체가 안전한 것은 아니며, XML 라이브러리와 같이 일부 객체는 XSLT 문서의 컨텍스트에서 임의의 스크립트 코드를 실행할 수 있습니다. XML 문서 객체가 경계를 넘어 액세스 가능하게 되면 클라이언트는 서버 프로세스의 컨텍스트에서 코드를 실행할 수 있습니다.이 버그 클래스를 유발할 수 있는 여러 시나리오가 있는데, 여기에는 안전하지 않은 객체를 무심코 공유하는 것, 비동기 마샬링 기본 요소를 사용하는 것, 그리고 객체를 조회하고 인스턴스화하는 기본 메커니즘을 악용하는 것이 포함됩니다. 예를 들어, Windows Runtime 라이브러리는 기존 XML DOM Document v6 COM 객체에 코드를 추가하여 런타임 관련 인터페이스를 노출하고 악의적인 클라이언트가 이전 IXMLDOMDocument 인터페이스를 쿼리하여 XSLT 스크립트를 실행할 수 있도록 하는 버그를 도입했습니다.또 다른 예로 FileInfo 및 DirectoryInfo .NET 클래스는 값과 참조로 모두 마샬링될 수 있으며 서버 프로세스에서 객체의 새 인스턴스를 만드는 데 사용될 수 있습니다. 공격자는 객체의 직렬화된 형태를 서버로 보내면 서버가 객체의 새 인스턴스를 만들고, 생성된 객체를 다시 읽으면 공격자에게 참조로 마샬링되는 것을 활용할 수 있습니다.마지막으로 언급된 시나리오는 객체를 조회하고 인스턴스화하는 기본 메커니즘을 악용하여 예상치 못한 객체를 생성하는 것입니다. 예를 들어 COM에서 공격자는 CoCreateInstance API를 사용하여 서버의 컨텍스트에서 임의의 COM 객체를 생성하고 클라이언트로 반환받을 수 있습니다. 이는 서버에서 생성된 XML DOM Document 객체를 클라이언트로 참조로 마샬링하여 반환받고, 이를 사용하여 서버의 컨텍스트에서 임의의 코드를 실행하여 악용될 수 있습니다.이러한 시나리오는 객체 지향 원격 기술 사용의 보안 영향을 신중하게 고려하고 보안 경계를 넘어 안전한 객체만 공유하도록 하는 것이 얼마나 중요한지 강조합니다.
구글 프로젝트 제로의 제임스 포쇼가 윈도우에서 가상 메모리 접근 트랩 기법을 구축하는 방법에 대한 블로그 게시글을 작성했습니다. 이 기법의 목표는 가상 메모리 주소의 읽기 또는 쓰기 작업을 상당한 시간 동안 중단시키는 것으로, 이는 커널의 특정 버그를 악용하는 데 사용될 수 있습니다. 이전 블로그 게시글에서 포쇼는 원격 서버의 SMB 파일을 사용하거나 클라우드 필터 API를 악용하여 이를 달성하는 방법을 제안했습니다. 그러나 Windows 11 24H2의 새로운 기능을 통해 원격 서버 없이 로컬 머신의 SMB 파일 서버를 직접 악용할 수 있게 되었습니다. 이 기능은 명령줄에서 SMB 클라이언트의 대상 TCP 포트를 지정하는 기능을 제공하며, 이를 통해 가짜 SMB 서버에 연결할 수 있습니다. 새로운 기능은 "가짜 파일 불변성(False File Immutability)" 버그로 알려진 취약점의 악용을 허용하며, 관리자 권한 없이도 사용할 수 있습니다. 포쇼는 자신의 예시 가짜 SMB 서버를 업데이트하여 다른 포트에 바인딩할 수 있도록 함으로써 로컬에서 공격을 수행할 수 있게 했습니다. 이 변경 사항은 일반 공개된 Windows 11 24H2에 적용되었으며, 기본적으로 활성화되어 있습니다. 관리자는 그룹 정책을 통해 이 기능을 비활성화할 수 있지만, 기업 사용자가 아닌 일반 사용자가 이 설정을 변경할 가능성은 낮습니다. 포쇼는 이 기능을 기본적으로 활성화하는 것이 실수이며 향후 Windows에 문제를 야기할 수 있다고 생각합니다. 전반적으로 이 새로운 기능은 Windows의 특정 취약점을 악용하는 새로운 방법을 제공하며, 운영 체제에 새로운 기능을 도입할 때 신중한 고려가 얼마나 중요한지를 강조합니다.
구글은 암네스티 인터내셔널에서 받은 커널 패닉 로그를 통해 퀄컴 드라이버를 대상으로 하는 야생(Wild)에서 발생한 취약점 공격을 발견했습니다. 이에 구글의 프로젝트 제로(Project Zero)와 위협 분석 그룹(Threat Analysis Group, TAG)이 함께 조사에 착수했습니다. - 초기 조사: 구글은 암네스티 인터내셔널에서 받은 커널 패닉 로그를 통해 야생에서 발생한 취약점 공격을 발견했습니다. - 커널 패닉 로그 분석: 공격 샘플이 없기 때문에 프로젝트 제로와 TAG는 커널 패닉 로그만을 통해 잠재적인 취약점을 식별했습니다. - 취약점 발견: 네 개의 패닉 로그에는 유용한 정보가 포함되어 있었고, 이 정보를 통해 퀄컴 드라이버의 여섯 개의 취약점을 발견했습니다. - 공격 전략 가설: 여섯 개의 취약점 중 하나가 야생에서 발생한 공격에 사용되었을 가능성이 높은 것으로 확인되었습니다. - 버그 세부 정보: 블로그 게시물에서는 발견된 여섯 개의 취약점에 대해 기술적인 세부 정보와 코드 조각을 제공합니다. - 위협 분석 그룹과의 협력: 구글의 TAG는 암네스티 인터내셔널과 협력하여 아티팩트를 제공하고 기술적인 분석을 지원했습니다. - 역공학 도전: 공격 샘플이 없기 때문에 취약점을 식별하기 위해 패닉 로그를 철저하게 분석해야 했습니다. - 제한된 정보: 공격 샘플이 없기 때문에 취약점을 정확하게 식별하는 것이 어려웠습니다. - 버그 사냥 기간: 조사와 취약점 발견은 약 2개월 반 동안 지속되었습니다. - 암네스티 인터내셔널의 보고서: 암네스티 인터내셔널은 목표에 대한 공격에 사용된 취약점에 대해 보고서를 발표했습니다.
TCP 연결 정의: TCP 연결은 네트워크 상의 두 엔드포인트 간의 가상 통신 채널입니다. TCP 핸드셰이킹 설명: TCP 핸드셰이킹은 클라이언트와 서버 간의 연결을 설정하는 데 필요한 3단계 핸드셰이킹을 포함합니다. TCP에서 SYN, ACK, FIN 패킷의 역할 설명: SYN 패킷은 연결 요청을 시작합니다. ACK 패킷은 수신된 데이터를 확인합니다. FIN 패킷은 연결을 종료합니다. TCP와 UDP의 차이 설명: TCP는 신뢰할 수 있는 데이터 전송을 제공하는 연결 지향적 프로토콜입니다. UDP는 신뢰성보다 속도를 우선하는 연결 없는 프로토콜입니다. TCP 슬라이딩 윈도우 설명: 슬라이딩 윈도우 메커니즘은 수신된 데이터를 확인하고 윈도우 크기를 적절하게 조정하여 효율적인 데이터 전송을 허용합니다. TCP 혼잡 제어 개념 설명: TCP 혼잡 제어 알고리즘은 네트워크 혼잡을 방지하기 위해 네트워크 상태에 따라 전송 속도를 조정합니다. TCP 재전송 메커니즘 설명: TCP는 신뢰할 수 있는 데이터 전송을 보장하기 위해 잃어버린 또는 손상된 데이터 패킷을 재전송합니다. TCP 서버와 TCP 클라이언트의 차이 설명: TCP 서버는 들어오는 연결을 기다리고 서비스를 제공합니다. TCP 클라이언트는 연결을 시작하고 서비스를 요청합니다. TCP 포트 번호의 목적 설명: TCP 포트 번호는 호스트에서 실행되는 다양한 서비스 또는 애플리케이션을 식별합니다. TCP 프록시 서버의 역할 설명: TCP 프록시 서버는 클라이언트와 서버 사이에서 중개자 역할을 하여 캐싱, 로드 밸런싱, 보안 등 추가 기능을 제공합니다.
2022년 중반, Project Zero는 ARM MTE 하드웨어에 액세스할 수 있었습니다. 이렇게 하여 C/C++ 소프트웨어 보안 개선에 있어 2023년에 가장 유망한 접근 방식으로 간주되는 MTE의 효율성을 평가할 수 있었습니다. MTE는 초기 위험한 액세스에서 메모리 훼손을 감지하는 데 있어 최고의 성능을 발휘합니다. MTE는 모든 취약한 메모리 안전 문제를 완전히 제거하지는 않지만, 특히 추측 사이드 채널 공격을 고려할 때, 다른 실용적인 제안보다 더 넓은 영향을 미칩니다. C/C++ 메모리 안전 솔루션은 MTE와 같은 범위의 커버리지에 도달하는 것이 불가능하고, AddressSanitizer/HWAsan의 런타임 오버헤드가 너무 높아 대부분의 프로덕션 워크로드에서 사용할 수 없습니다. 대규모 C/C++ 코드베이스를 유지하고 메모리 훼손을 주요 보안 위험으로 간주하는 제품은 ARM의 MTE를 적극적으로 지원해야 합니다. 블로그 시리즈는 MTE 기반 완화책을 구현하는 데 관심이 있는 사람들을 위해 구현 테스트의 객관적 요약을 제공합니다. 또한 사용자 모드 컨텍스트에서 다양한 MTE 기반 완화 접근 방식에 대한 주관적 평가를 제공하고 커널 모드 완화에 있어 직면하는 추가적인 도전 과제를 논의합니다. 시리즈의 목표는 MTE가 소프트웨어 보안에 미치는 잠재적 영향을 완전히 이해하고 실제 구현 고려 사항을 제공하는 것입니다.
자바의 표준 라이브러리는 신뢰할 수 없는 XSLT 프로그램을 처리하기 위한 JIT 컴파일러를 숨겨두고 있습니다. 이 취약점, CVE-2022-34169은 JIT 컴파일러의 정수 절단 버그로 인해 발생했습니다. 이는 자바 기반 웹 애플리케이션과 SAML 싱글 사인온을 지원하는 아이덴티티 제공자에서 임의의 코드 실행을 허용합니다.XML 서명은 웹 애플리케이션에서 사용자 인증을 위한 표준인 SAML에서 널리 사용됩니다. SAML은 서비스 제공자(애플리케이션)와 아이덴티티 제공자(IdP) 간의 XML 문서 교환을 포함합니다. XML 서명은 이러한 문서의 무결성을 보장합니다.XML 서명을 확인하려면 애플리케이션이 공격자 제어 변환을 공격자 제어 입력에 대해 실행해야 합니다. 이러한 변환 중 하나는 XSLT, 강력한 XML 프로그래밍 언어입니다.자바의 XSLT 구현은 XSLT 프로그램을 실행하기 위해 JIT 컴파일러를 사용합니다. 그러나 이 JIT 컴파일러에는 임의의 코드 실행을 얻기 위해 악용될 수 있는 정수 절단 버그가 있었습니다.이 취약점은 2022년 7월에 OpenJDK와 2022년 9월에 Apache BCEL에 대해 패치되었습니다. 이 특정 문제는 해결되었지만 연구원들은 XML 서명 검증의 내재된 복잡성으로 인해 SAML에서 유사한 취약점이 발생할 것으로 예상합니다.이 취약점은 C 또는 C++ 코드베이스의 메모리 안전성 문제보다 빈도가 낮지만 메모리 안전 언어 취약점의 존재를 강조합니다.XML 서명의 검증 과정은 두 단계로 구성됩니다. 참조 검증과 서명 검증입니다. 자바에서 서명 검증은 참조 검증 전에 수행되므로 공격자는 서명 검증 요구 사항을 우회할 수 있습니다.XSLT 변환은 XML 서명에 포함될 수 있으며 검증자가 참조된 XML 데이터에 XSLT 프로그램을 실행해야 합니다. 이는 외부 공격자에게 잠재적인 공격 표면을 열어줍니다.자바의 XSLT 검증 구현은 취약한 JIT 컴파일러를 포함하는 Apache BCEL 라이브러리를 호출합니다. 이 취약점은 SAML을 사용하여 인증에 의존하는 자바 애플리케이션에서 악용될 수 있었습니다.
2022년 6월, 연구자 제임스 포쇼(James Forshaw)는 커버로스(Kerberos)에서 RC4 암호화 처리에 대한 취약점을 발견했습니다. 이 취약점은 사용자 위장(user impersonation)을 허용합니다. 커버로스는 사용자 자격 증명을 증명하기 위해 암호화 알고리즘을 사용하며, 클라이언트와 서버 간의 협상을 허용합니다. RC4는 구식이고 취약한 알고리즘입니다. 그러나 윈도우에서는 DES가 제거되었음에도 불구하고 기본적으로 활성화되어 있습니다. 마이크로소프트는 RC4의 약점을 완화하기 위해 키화된 MD5 HMAC 해시(keyed MD5 HMAC hash), 무작위화된 "혼란(confounder)" 및 사용자의 암호에서 메시지 유형 값으로 파생된 키를 사용하여 보호를 구현했습니다. 그러나 가장 큰 취약점은 사용자의 암호에서 사용자의 키를 생성하는 것입니다. 마이크로소프트는 NTLM과 동일한 해시 값을 사용했으며, 이는 무차별 공격(brute-force attack)에 대한 보호가 부족합니다. 공격자는 커버로스팅(Kerberoasting) 또는 AS-REP 로스팅(AS-REP Roasting)을 사용하여 RC4-HMAC 키로 암호화된 암호문을 얻고 키를 무차별 공격으로 시도할 수 있습니다. 이러한 공격을 방지하기 위해 윈도우에서는 사전 인증(pre-authentication)이 필요하지만, "커버로스 사전 인증 요구하지 않음" 플래그를 사용하여 이를 비활성화할 수 있습니다. 무차별 공격의 성공 여부는 암호 복잡성에 따라 다르며, 서비스 사용자 계정은 긴 랜덤 암호로 인해 더 안전합니다. 위험을 완화하기 위해 네트워크 전체에서 RC4를 비활성화하거나 민감한 사용자를 보호 사용자 그룹(Protected Users Group)에 추가할 수 있습니다. 암호화 알고리즘은 CRYPTDLL.DLL에 구현되어 있으며, 음의 암호화 유형 값으로 표시되는 개인 유형이 있습니다.
2017년부터 현재까지의 주요 건강 관리, 기술 및 인권 관련 사건에 대한 개요입니다.- 2017년, FDA는 백혈병 치료를 위한 최초의 CAR T 세포 요법을 승인했으며, 암 면역 요법의 돌파구가 되었습니다.- 2018년, 유럽 연합은 개인 정보 보호 규정(General Data Protection Regulation, GDPR)을 시행하여 데이터 개인 정보 보호를 강화했습니다.- CRISPR 유전자 편집 기술은 두드러졌으며, 그 잠재적인 오남용에 대한 윤리적 우려를 불러일으켰습니다.- 2020년 COVID-19 대유행은 건강 관리 준비의 중요성과 공정한 백신 분배의 필요성을 강조했습니다.- 건강 관리 분야의 AI 응용은 진단 및 치료를 지원했지만, 알고리즘 편향 및 데이터 보안 문제를 제기했습니다.- 텔레헬스 서비스는 대유행 동안 확대되어 원격 환자 치료를 용이하게 했지만, 디지털 건강 격차를 악화시켰습니다.- 웨어러블 건강 기기는 더 널리 사용되며, 개인이 자신의 건강 데이터를 추적하고 관리할 수 있게 해주었습니다.- 건강 관리 산업은 데이터 유출 및 랜섬웨어 공격에 직면하여, 강력한 사이버 보안 조치를 취할 필요성을 강조했습니다.- 건강 관리 분야에서 AI 사용과 관련된 윤리적 고려는 투명성, 책임성 및 환자 동의의 중요성을 강조했습니다.- 본문은 건강 관리, 기술 및 인권 분야의 지속적인 진화와 도전을 강조하며, 공정성, 개인 정보 보호 및 혁신을 보장하는 데 중점을 두고 있습니다.