2P by neo 2023-10-12 | favorite | 댓글 1개
  • curl 8.4.0에서 발견된 중요한 보안 문제인 CVE-2023-38545에 대한 기사, 이는 오랜 시간 동안 curl에서 가장 심각한 보안 문제로 간주됨
  • 문제는 힙 오버플로우 문제로, SOCKS5 프록시에 연결하는 함수의 결함으로 인해 발생함
  • 이 문제는 2020년 초에 함수가 차단 호출에서 비차단 상태 기계로 변환될 때 도입되었으며, 이는 SOCKS5를 통한 대량의 병렬 전송 성능을 향상시키기 위해 수행되었음
  • 결함은 상태 기계의 INIT 상태에 있으며, 여기서 로컬 변수가 설정되어 curl이 호스트를 해결할지 프록시에 이름을 전달할지 결정함. 호스트 이름이 너무 길면 코드가 로컬 해결 모드로 전환되며, 이는 호스트 이름이 대상 버퍼보다 길 경우 메모리 오버플로우를 초래할 수 있음
  • 버퍼 크기가 65541 바이트보다 작게 설정되고 호스트 이름이 버퍼 크기보다 길 경우 오버플로우가 발생할 수 있음. 이는 악의적인 행위자가 공식에 초대형 호스트 이름을 입력해 결함을 유발하는 것을 필요로 함
  • libcurl을 사용하는 클라이언트가 SOCKS5 프록시를 통해 접근하는 HTTPS 서버를 제어하는 공격자는 HTTP 30x 응답을 통해 애플리케이션에 조작된 리디렉션을 반환하여 힙 버퍼 오버플로우를 유발할 수 있음
  • 이 문제는 curl 8.4.0에서 호스트 이름이 너무 길어 원격 해결에서 로컬 해결로 전환하는 대신 curl이 오류를 반환하도록 함으로써 수정되었음. 이 시나리오에 대한 전용 테스트 케이스도 추가되었음
  • 저자는 이 결함이 C 대신 메모리 안전 언어에서 curl이 작성되었다면 발생하지 않았을 것이라고 인정하지만, curl을 다른 언어로 포팅하는 것은 현재 계획에 없다고 밝힘
  • 저자는 메모리 안전 언어로 작성된 더 많은 종속성을 허용하고, 사용하며, 지원하는 것이 실행 가능한 접근법이며, 점차 curl의 일부를 교체할 수도 있다고 제안함
  • 저자는 실수를 인정하고 사과하며, 이 결함은 더 나은 테스트 세트로 감지할 수 있었다고 밝힘. 또한 이 함수에서 문제를 발견하지 못한 정적 코드 분석기에 대해 언급함
  • 저자는 200억 개 이상의 인스턴스에 설치된 코드에서 힙 오버플로우를 발송하는 것은 권장하지 않는 경험이라고 결론을 내림
Hacker News 의견
  • Curl 라이브러리의 힙 오버플로우 문제에 대한 기사, 이 라이브러리는 많은 기기에서 사용되며 대부분 한 사람에 의해 작성됨.
  • Curl의 저자인 Daniel이 1315일 동안 코드에서 발견되지 않았던 결함으로 인한 실수를 사과함.
  • 기사는 Curl이 C 대신 메모리 안전 언어로 작성되었다면 메모리 안전성 문제가 피해질 수 있었다고 제안함.
  • 저자는 Curl의 일부를 더 메모리 안전한 언어로 점진적으로 대체하는 가능성을 고려하지만, 그러한 개발의 느린 진행 속도를 인정함.
  • 저자는 Curl의 보안 취약점 중 41%는 메모리 안전 언어로 피할 수 있었다고 주장함.
  • 이 기사는 문제 뒤의 논리와 관점을 설명하는 명확하고 솔직한 글쓰기로 인정받음.
  • 일부 댓글은 공격 벡터가 매우 작고 이용하기 위해 매우 특정한 조건이 필요하다고 주장하며 이 문제의 심각성을 의문시킴.
  • 한 댓글은 반검열 도구를 사용하는 사람들에게 DNS를 통해 사용자 신원을 유출할 수 있는 코드 부분을 비판함.
  • 또 다른 댓글은 저자가 RFC1123에서 명시한 DNS 호스트네임 제한을 무시했음을 지적하며, 이것이 문제에 기여했을 수 있다고 지적함.
  • 최신 Windows 10 보안 업데이트가 새로운 버전의 Curl을 포함하지 않았다는 사실이 언급됨.