아보카도 3호기

Linux 안전할줄 알았는데 OpenScap 이야기

2025년에도 리눅스 커널과 주요 컴포넌트에서 심각한 취약점이 연이어 공개되고 있습니다. 2025년 상반기에만 커널 CVE가 130건 이상 발표되어 전례 없는 패치를 촉진하고 있습니다. 2024년 한 해에는 3,500건 이상의 커널 취약점이 집계되어, 이전 연도 대비 10배 가까이 늘어나는 등 관리 및 대응 부담이 급증하고 있습니다

  • 공개패치 지연 및 복잡한 위험 평가: 취약점 양이 급증하다 보니, 실제 서비스에 미치는 영향과 우선순위 평가가 매우 어렵고, 기업 보안팀의 인적/운영 리소스 소모가 심화되고 있습니다. 패치 적용 윈도우가 짧아졌으나, 완벽한 즉각 대응은 현실적으로 불가능합니다.

1.2 주목받은 최근 주요 취약점과 사례

CVE 코드 주요 영향 노출 시스템 실제 피해/위협
CVE-2025-5054, 4598 패스워드 해시 탈취, 권한상승 Ubuntu, RHEL, Fedora 코어 덤프 핸들러 결함으로 로컬 공격자가 /etc/shadow에서 패스워드 해시 탈취
CVE-2025-37798 외 루트 권한상승, 시스템 장악 Ubuntu 24.04 LTS 커널 메모리/프로세스 처리 취약점으로 미패치 시 치명적 시스템 침해 가능
CVE-2025-32462, 32463 Sudo 툴 권한 상승 주요 리눅스 배포판 Sudo 취약점 악용, 로컬에서 풀 루트 권한 획득 다수 보고
CVE-2025-37899 커널 SMB 0-Day, 원격코드 실행 등 최신 커널(ksmbd) SMB 프로토콜 처리 중 ‘use-after-free’로 임의 코드 실행 가능
CVE-2024-53197 등 ALSA, USB 드라이버 권한상승, RCE 커널 장치 드라이버 실 사용 환경에서 취약점 악용 사례(오디오·영상 드라이버) 다수 관측

1.3 주요 영향 및 평가지표

  • 실제 침해 사례 다수: 2025년 들어 Sudo, 코어 덤프, 커널 드라이버 등에서 발생한 취약점 일부는 이미 공격자에 의해 실제 악용된 것으로 파악됐으며, 러시아, 유럽, 아시아권 데이터센터 서버에서 권한상승 및 데이터 탈취 사고가 보고됐습니다

  • 운영 가용성 및 신뢰 훼손: 취약점 노출로 인한 시스템 마비, 운영 중단, 규제 위반(패스워드 유출) 등 비즈니스 연속성 리스크도 증가했습니다.

  • 정책·기술 복합 대응 필요: 보안 패치 외에도, SUID 설정 강화, 코어 덤프 비활성화, 코드리뷰 및 취약점 탐지 자동화 등 전방위적 보안 강화책이 필수적으로 여겨지고 있습니다

1.4 종합 평가

최근 리눅스 침해 사고와 취약점 증가는 단순한 패치 수준의 사안이 아닌, 공급망 신뢰 및 보안 운영 체계 전반에 대한 재정비가 요구되는 주요 위기입니다. 경영진 차원의 정책 투자, 개발-운영-보안 간 협업, 그리고 신속한 패치 및 모니터링 강화를 통한 종합 대응이 없다면, 리눅스 생태계의 신뢰와 실사용 환경 모두 위태로워질 수 있습니다.

특히, 로컬 권한상승 및 정보 유출 유형이 매우 빈발하며, 실질적으로 치명적 피해로 이어질 수 있으므로 체계적인 취약점 대응 역량 강화와 선제적 방어가 필요합니다

2. 2025년 Linux 취약점 증가 추세와 미래 위험

2.1 공격자 표적·침해 규모의 대형화

  • 공격 자동화 및 대량화 취약점이 빠른 속도로 늘어나면 공격자들은 자동화 도구를 활용해 수천, 수만 대의 Linux 서버를 한 번에 스캔 및 침투할 수 있습니다. 이는 대규모 랜섬웨어, 데이터 탈취, DDoS 봇네트 구축 등 “대량 침해”로 이어질 위험을 높입니다.

  • 공급망(서플라이체인) 타격 심화 최근 증가한 오픈소스 패키지의 취약점과 백도어 사례처럼, 단일 취약점이 소프트웨어 공급망 전체에 영향을 미쳐 광범위한 피해가 발생할 수 있습니다.

2.2 실제 피해 양상 심화

  • 권한상승 및 시스템 장악 커널·Sudo·드라이버 취약점의 증가는 공격자가 시스템 권한을 손쉽게 탈취하게 하며, 이는 데이터베이스 유출·서비스 마비·내부망 확산 등 2차 피해로 이어질 수 있습니다.

  • 운영 중단 및 신뢰 저하 중요한 인프라 서버·클라우드 환경에서 침해가 발생하면, 운영상 큰 차질(서비스 지연·중단) 및 사용자 신뢰 하락이 불가피합니다.

2.3 보안 관리 복잡성 심화

  • 패치·대응 자원 부담 취약점 수가 급증하면, 모든 시스템에 대한 신속한 패치 적용이 사실상 불가능해 “영구적인 취약 환경”이 상존하게 됩니다. 이는 방치 취약점 악용 위험을 높입니다.

  • 보안 우선순위 혼란 너무 많은 CVE와 PoC(public exploit)가 쏟아지면 실제로 치명적인 위협과 상대적으로 덜 위험한 사안을 구분해 대응하는 것이 더욱 어려워져, 집중 대응의 실패로 이어질 수 있습니다.

종합 전망

2025년 이후 Linux 취약점 증가 추세는 “공격의 대중화”·“공급망 불안정”·“보안 관리 한계” 등 중·장기적으로 복합적인 위험을 야기합니다. 특히 실제 피해(권한탈취, 데이터 유출)가 다양해지고 공급망 신뢰가 훼손될 경우 경제적·사회적 파급효과가 커질 수 있으므로, 선제적 보안 자동화, 취약점 관리 체계 혁신, 오픈소스 관리 신뢰성 개선이 매우 중요해졌습니다.

참고:

  • 2025년 상반기 커널 취약점 및 공급망 침해 분석(리눅스 보안 커뮤니티, 2025)
  • 보안 전문 매체 및 CERT/CC 주간 리포트(2025)

3. OpenSCAP 기반 취약점 스캐닝과 패치 리포트의 한계 및 효과

3.1 OpenSCAP 주기적 스캔 및 패치 보고의 효과

  • 신속한 취약점 발견 OpenSCAP을 통한 주기적 취약점 스캐닝은 시스템 내 알려진 취약점(CVE), 보안 설정 미비 등 주요 리스크를 조기에 파악하는 데 매우 효과적입니다.

  • 패치 이행 관리 보안 패치 적용 여부에 대한 보고 체계는 미적용 취약점을 빠르게 도출하고, 패치 누락 방지·감사 준비(Compliance)에도 도움이 됩니다.

  • 운영 실무 관점에서의 보안 수준 향상 실무자/보안팀이 최신 위협 동향에 맞춘 점검 및 대응 절차를 주기적으로 반복하게 되어, 일반적인 침해 사고(취약점 방치, 관리 소홀 등)의 상당 부분을 예방할 수 있습니다.

3.2 주요 한계와 현실적 우려

  • 알려진 취약점(CVE) 위주로만 대응 OpenSCAP, 패키지 관리 기반 취약점 진단 도구는 이미 공개된 CVE, 표준 보안 설정만을 점검하므로, 미공개 0-Day 취약점이나 새로운 공격 수법에는 한계가 있습니다.

  • 패치 적용의 “실제 효과” 한계 모든 패치가 즉각적이고 완벽하게 적용되기 어려우며, 서비스 다운타임, 호환성 이슈, 사용자 맞춤 환경 등 현실적 제약도 큽니다.

  • 공급망 및 오픈소스 생태계 위협의 복잡성 최근 증가하는 공급망(서플라이체인) 공격, 정상 프로세스 및 패키지 자체에 삽입되는 백도어 등에는 기존 스캐닝·패치 체계만으로 즉각 대응이 어렵습니다.

  • 권한상승, 설정 오류, 오용 등 비정형 위협 시스템 내부의 권한상승, 설정 오류, SUID/Sudo 미스설정, 사후 로그 감시 우회 등은 단순 CVE 대응을 넘어선 종합적 보안 관리가 필요합니다.

3.3 종합적 접근의 필요성

  • 보안 자동화와 사람 간 협업의 병행 OpenSCAP 등 스캔·패치 도구의 자동화와 더불어, 관리자 직접 리뷰, 침해 탐지 모니터링, 비정상 행위 분석 등 추가적 통제가 병행되어야 합니다.

  • 패치 외 신뢰·공급망 검증 절차 강화 오픈소스 패키지 신뢰도 평가, 외부 감사, 코드 리뷰, 무결성 검증 등 추가 조치도 반드시 논의되어야 합니다.

  • 위협 인텔리전스/교육·정책 강화 최신 위협 정보 공유, 구성원 보안 교육, 취약점 위계화 및 우선순위 선정 등 조직 차원의 체계 강화가 중요합니다.

3.4 결론

OpenSCAP을 활용한 정기 스캐닝과 패치 이행 보고는 보안의 “필수 기반”이지만, 현대화된 리눅스 위협의 모든 문제를 완전히 해결할 수는 없습니다.

0-Day, 공급망, 권한상승, 정책 부재 등 복합 위험을 고려해, 기술적 자동화와 함께 사람 중심의 검증·정책·모니터링을 병행해야 근본적인 침해 리스크를 낮출 수 있다는 점을 반드시 인지해야 합니다.

  • 예시 참고:
    • XZ Utils 백도어, Sudo 루트권한상승 등 2024~2025년 실제 사고의 다수는 “정상 패키지, 관리 시스템 아래”에서 발생했으며, 단일 도구로 대응이 어려운 복합침해가 반복되고 있음
    • 국내외 보안 권고 및 리눅스 보안 전문 기관(CERT, KISA 등) 보고서

4. OpenScap을 이용한 취약점 스캐닝 스크립트

해당 포스팅에서는 Rocky Linux 8 버젼에서 DISA STIG를 감사하고 HTML 보고서를 만드는 스크립트를 적용하였습니다.

#!/bin/bash

# Configuration Variables
REPORT_BASE_DIR="./oscap_cve_reports"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
LOG_FILE="$REPORT_BASE_DIR/oscap_scan_$TIMESTAMP.log"

# Determine OS and corresponding DataStream file
# This script assumes a Red Hat-based system (RHEL, CentOS, Rocky Linux, AlmaLinux)
# For other distributions, you'll need to adjust the DS_FILE path accordingly.
if grep -q "Red Hat Enterprise Linux" /etc/os-release || grep -q "CentOS" /etc/os-release || grep -q "Rocky Linux" /etc/os-release || grep -q "AlmaLinux" /etc/os-release; then
    OS_RELEASE_ID=$(grep -oP '(?<=^VERSION_ID=")[0-9]+' /etc/os-release | head -1)
    if [ -n "$OS_RELEASE_ID" ]; then
        DS_FILE="/usr/share/xml/scap/ssg/content/ssg-rhel${OS_RELEASE_ID}-ds.xml"
        echo "ℹ️ Detected RHEL/CentOS/Rocky/AlmaLinux $OS_RELEASE_ID. Using DataStream: $DS_FILE" | tee -a "$LOG_FILE"
    else
        echo "⚠️ Could not determine RHEL/CentOS/Rocky/AlmaLinux version. Attempting RHEL8 DataStream as fallback." | tee -a "$LOG_FILE"
        DS_FILE="/usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml" # Fallback to RHEL 8
    fi
else
    echo "❌ Unsupported OS detected. This script is primarily designed for RHEL-based systems." | tee -a "$LOG_FILE"
    echo "Please manually specify the DS_FILE for your operating system." | tee -a "$LOG_FILE"
    exit 1
fi

REPORT_HTML="$REPORT_BASE_DIR/cve_report_$TIMESTAMP.html"
REPORT_XML="$REPORT_BASE_DIR/cve_result_$TIMESTAMP.xml"

# --- Script Start ---

echo "🚀 Starting OpenSCAP CVE Scan..." | tee -a "$LOG_FILE"
mkdir -p "$REPORT_BASE_DIR"

# Pre-checks
if [ ! -f "$DS_FILE" ]; then
    echo "❌ SCAP DataStream file not found: $DS_FILE" | tee -a "$LOG_FILE"
    echo "Please ensure the 'scap-security-guide' package is installed and the DataStream exists." | tee -a "$LOG_FILE"
    exit 1
fi

if ! command -v oscap &> /dev/null; then
    echo "❌ OpenSCAP 'oscap' command not found." | tee -a "$LOG_FILE"
    echo "Please install OpenSCAP using your distribution's package manager (e.g., 'sudo dnf install openscap-scanner')." | tee -a "$LOG_FILE"
    exit 1
fi

echo "🔍 CVE scan initiated using DataStream: $DS_FILE" | tee -a "$LOG_FILE"
echo "Results will be saved to: $REPORT_HTML and $REPORT_XML" | tee -a "$LOG_FILE"
echo "Logs are being written to: $LOG_FILE" | tee -a "$LOG_FILE"

# Perform the OpenSCAP scan
# Using 'tee' to capture stdout/stderr to the log file while also displaying it
sudo oscap xccdf eval \
    --profile xccdf_org.ssgproject.content_profile_stig \
    --results "$REPORT_XML" \
    --report "$REPORT_HTML" \
    "$DS_FILE" 2>&1 | tee -a "$LOG_FILE"

SCAN_EXIT_CODE=${PIPESTATUS[0]} # Get the exit code of the oscap command

if [ "$SCAN_EXIT_CODE" -eq 0 ]; then
    echo "✅ OpenSCAP scan completed successfully!" | tee -a "$LOG_FILE"
else
    echo "⚠️ OpenSCAP scan completed with warnings or errors (Exit Code: $SCAN_EXIT_CODE)." | tee -a "$LOG_FILE"
fi

echo "Detailed report available at: $REPORT_HTML" | tee -a "$LOG_FILE"
echo "Raw XML results at: $REPORT_XML" | tee -a "$LOG_FILE"

# Attempt to open the report automatically
if command -v xdg-open >/dev/null 2>&1; then
    echo "🌐 Attempting to open the HTML report in your default browser..." | tee -a "$LOG_FILE"
    xdg-open "$REPORT_HTML" &> /dev/null # Redirect output to /dev/null to avoid console spam
elif command -v gnome-open >/dev/null 2>&1; then
    echo "🌐 Attempting to open the HTML report using gnome-open..." | tee -a "$LOG_FILE"
    gnome-open "$REPORT_HTML" &> /dev/null
elif command -v open >/dev/null 2>&1 && [[ "$(uname)" == "Darwin" ]]; then
    echo "🌐 Attempting to open the HTML report using 'open' (macOS)..." | tee -a "$LOG_FILE"
    open "$REPORT_HTML" &> /dev/null
else
    echo "ℹ️ No suitable command found to automatically open the report (xdg-open, gnome-open, open)." | tee -a "$LOG_FILE"
    echo "Please open '$REPORT_HTML' manually in your web browser." | tee -a "$LOG_FILE"
fi

echo "--- Script Finished ---" | tee -a "$LOG_FILE"드를 입력하세요

4.1 OpenScap 스캐닝 레포트

4.2 OpenSCAP Scan Result Example

Result
(결과)
Description (Description)
(설명)
Impact on Score
(스코어 영향)
Visual Meaning
(시각적 의미)
Pass
(통과)
The system complies with the rule. No security issues found.
(규칙을 준수함. 보안 이슈 없음)
Increases score
(점수 증가)
Compliant
(준수)
Fail
(실패)
The system does not comply with the rule. Security issue detected.
(규칙을 준수하지 않음. 보안 취약점 발견)
Decreases score
(점수 감소)
Non-compliant/Vulnerable
(비준수/취약)
Not checked
(확인되지 않음)
Automatic verification not possible. Manual review needed.
(자동 평가 불가. 수동 점검 필요)
No impact
(영향 없음)
Requires attention
(주의 필요)
Not applicable
(해당 없음)
The rule does not apply to this system.
(해당 시스템에는 규칙이 적용되지 않음)
No impact
(영향 없음)
N/A
(해당 없음)
Error/Unknown
(오류/알 수 없음)
An error occurred during scanning. Status unknown.
(스캔 중 오류 발생. 상태 불명)
No impact
(영향 없음)
Error (review needed)
(오류, 점검 필요)