728x90
반응형
728x90
반응형
728x90
반응형

보안 권고(Security advisory) : QProcess

최근 Qt Project의 보안팀은 QProcess와 관련된 문제를 인지하고 Unix 기반 플랫폼에서만 발생하는 보안 문제로 판단했습니다. 우리는 이것이 트리거될 가능성이 최소이기 때문에 애플리케이션에 상당한 위험이 있다고 생각하지 않습니다.

특히, 문제는 QProcess를 사용하여 절대 경로 없이 응용 프로그램을 시작하는 데 있으며, 결과적으로 PATH 환경 변수에서 찾는 것에 의존합니다. 결과적으로 공격자가 문제의 실행 파일 복사본을 QProcess의 작업/현재 디렉터리에 배치하고 대신 호출하도록 할 수 있습니다.

이 상황은 PATH 환경 변수가 문제의 실행 파일을 찾기 전에 먼저 해당 디렉토리를 검색하기 때문에, Windows에서 예상됩니다. 그러나 Unix 기반 플랫폼에서 PATH 환경 변수에서 찾을 수 없는 경우, 작업/현재 디렉토리를 검색하는 것은 정상이 아닙니다. 따라서 공격자가 동일한 이름의 악성 실행 파일을 거기에 배치할 수 있습니다.

절대 또는 상대 경로와 함께 QProcess를 사용하는 경우 이는 문제가 되지 않습니다. 구체적으로 다음과 같이 특별하게 호출하는 경우에 발생함:

QProcess p;
p.start( "application", args );

이것은 문제가 발생할 수 있습니다.

현재 지원되는 Qt 및 Qt 5.12 버전에 대한 패치는 여기에서 찾을 수 있습니다.

dev: https://codereview.qt-project.org/c/qt/qtbase/+/393113

Qt 6.2: https://codereview.qt-project.org/c/qt/qtbase/+/394914 또는 https://download.qt.io/official_releases/qt/6.2/CVE-2022-25255-qprocess6-2.diff

Qt 5.15: https://codereview.qt-project.org/c/qt/tqtc-qtbase/+/394919 또는 https://download.qt.io/official_releases/qt/5.15/CVE-2022-25255-qprocess5-15.diff

Qt 5.12: https://codereview.qt-project.org/c/qt/qtbase/+/396020

Qt를 패치하지 않으려면 QProcess 내부가 아닌 애플리케이션의 전체 경로를 확인하여 이 문제를 해결할 수 있습니다. 이 목적을 위해 QStandardPaths::findExecutable() 을 사용할 수 있습니다. 이렇게 하면 PATH 환경 변수를 검색하고 결과적으로 안전한 사용 경로를 제공할 수 있기 때문입니다.

이에 대한 공식 CVE 보고서는 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-25255 에서 찾을 수 있습니다.

728x90
반응형

+ Recent posts