<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>IT 나누기</title>
    <link>https://togethergrow.tistory.com/</link>
    <description>IT 종사자의 일상 나누기
- 보안, OS, 네트워크, DBMS</description>
    <language>ko</language>
    <pubDate>Sat, 13 Jun 2026 22:29:26 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>하루하루 IT 나누기</managingEditor>
    <image>
      <title>IT 나누기</title>
      <url>https://tistory1.daumcdn.net/tistory/8304655/attach/889c419722954970a26b5e4a65781542</url>
      <link>https://togethergrow.tistory.com</link>
    </image>
    <item>
      <title>파고네트웍스, 스텔라사이버 공식 MDR 인증 획득&amp;hellip;아시아 보안 운영 협력 확대</title>
      <link>https://togethergrow.tistory.com/entry/%ED%8C%8C%EA%B3%A0%EB%84%A4%ED%8A%B8%EC%9B%8D%EC%8A%A4-%EC%8A%A4%ED%85%94%EB%9D%BC%EC%82%AC%EC%9D%B4%EB%B2%84-%EA%B3%B5%EC%8B%9D-MDR-%EC%9D%B8%EC%A6%9D-%ED%9A%8D%EB%93%9D%E2%80%A6%EC%95%84%EC%8B%9C%EC%95%84-%EB%B3%B4%EC%95%88-%EC%9A%B4%EC%98%81-%ED%98%91%EB%A0%A5-%ED%99%95%EB%8C%80</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta http-equiv=&quot;x-ua-compatible&quot; content=&quot;ie=edge&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;파고네트웍스, 스텔라사이버 공식 MDR 인증 획득…아시아 보안 운영 협력 확대&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;스텔라사이버가 파고네트웍스를 공식 MDR 인증 파트너로 선정했다. Open XDR 기반 통합 탐지·대응과 AI 기반 자율형 SOC 협력 강화 의미를 운영 관점에서 정리한다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;파고네트웍스,스텔라사이버,MDR,관리형 탐지 대응,Open XDR,보안운영,SOC,자율형 SOC,에이전틱 AI,MSSP,APAC,위협탐지&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:locale&quot; content=&quot;ko_KR&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;파고네트웍스, 스텔라사이버 공식 MDR 인증 획득…아시아 보안 운영 협력 확대&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;스텔라사이버가 파고네트웍스를 공식 MDR 인증 파트너로 선정했다. Open XDR 기반 협력 강화의 의미를 운영 관점에서 정리한다.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;파고네트웍스, 스텔라사이버 공식 MDR 인증 획득…아시아 보안 운영 협력 확대&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;공식 MDR 인증 파트너 선정으로 Open XDR 기반 아시아 MDR 협력 확대. 자율형 SOC 협력 포인트를 정리한다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main&gt;
    &lt;article class=&quot;post-content&quot; aria-label=&quot;본문&quot;&gt;
      &lt;header class=&quot;post-header&quot;&gt;
        &lt;p class=&quot;kicker&quot;&gt;보안 운영 · MDR · Open XDR&lt;/p&gt;
        &lt;h1&gt;파고네트웍스, 스텔라사이버 공식 MDR 인증 획득…아시아 보안 운영 협력 확대&lt;/h1&gt;
        &lt;p class=&quot;subhead&quot;&gt;스텔라사이버·파고네트웍스, AI 기반 자율형 SOC 협력 강화&lt;/p&gt;
      &lt;/header&gt;

      &lt;section class=&quot;lead&quot;&gt;
        &lt;p&gt;
          글로벌 오픈 확장 탐지·대응(Open XDR) 플랫폼 기업 &lt;strong&gt;스텔라사이버(Stellar Cyber)&lt;/strong&gt;가
          &lt;strong&gt;파고네트웍스(PAGO Networks)&lt;/strong&gt;를 공식 &lt;strong&gt;MDR 인증 파트너(Certified MDR Partner)&lt;/strong&gt;로 선정했다.
          이번 인증을 계기로 양사는 스텔라사이버의 Open XDR 플랫폼을 기반으로 &lt;strong&gt;아시아 시장에서 관리형 탐지·대응(MDR) 사업 협력&lt;/strong&gt;을 강화한다.
        &lt;/p&gt;
        &lt;p&gt;
          핵심은 “연동”이 아니라 “운영”이다.&lt;br&gt;
          스텔라사이버는 파고네트웍스가 기존 마스터 MSSP 파트너 역할을 넘어,
          실제 고객 환경에서 &lt;strong&gt;위협 탐지·분석·대응&lt;/strong&gt;까지 수행할 수 있는 운영 중심 역량을 공식 인정받았다고 밝혔다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;이번 MDR 인증이 의미하는 것&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;요약 포인트&lt;/strong&gt;&lt;br&gt;
          1) 스텔라사이버가 “실제 운영 수행 능력”을 검증하는 MDR 인증 프로그램을 운영&lt;br&gt;
          2) 파고네트웍스는 아시아 시장 운영 경험과 고객 대응 역량을 바탕으로 인증 요건 충족&lt;br&gt;
          3) Open XDR 기반 통합 가시성과 자동화로 탐지 정확도·대응 속도·운영 효율을 강화
        &lt;/div&gt;

        &lt;p&gt;
          스텔라사이버는 글로벌 파트너 생태계 확대 전략에 따라, 실제 보안 운영을 수행할 수 있는 MDR 파트너를 선별하는 인증 프로그램을 운영하고 있다.
          파고네트웍스는 아시아 시장에서 축적한 보안 운영 경험과 고객 대응 역량을 바탕으로 인증 요건을 충족한 것으로 평가됐다.
        &lt;/p&gt;
        &lt;p&gt;
          운영 환경에서는 “누가 플랫폼을 잘 쓰느냐”가 아니라 “누가 운영 결과를 책임지고 낼 수 있느냐”가 중요하다.&lt;br&gt;
          이번 인증은 그 실행력 자체를 공식적으로 확인받았다는 점에서 의미가 크다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;Open XDR이 보안 운영을 바꾸는 방식&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;p&gt;
          스텔라사이버가 강조하는 &lt;strong&gt;Open XDR&lt;/strong&gt;은 여러 보안 제품에서 발생하는 데이터를 하나의 플랫폼으로 모아 분석하고,
          위협 탐지와 대응을 자동화하는 접근 방식이다.
          기업 보안 환경에서는 엔드포인트 탐지·대응(EDR), 네트워크 보안, 클라우드 보안, 계정/아이덴티티 보안 등
          다양한 솔루션이 따로 운영되는 경우가 많다.
        &lt;/p&gt;

        &lt;div class=&quot;grid&quot;&gt;
          &lt;div class=&quot;card&quot;&gt;
            &lt;h3&gt;분산 운영의 흔한 문제&lt;/h3&gt;
            &lt;ul&gt;
              &lt;li&gt;콘솔이 많아질수록 경보(알림)는 늘고, 맥락은 부족해짐&lt;/li&gt;
              &lt;li&gt;로그 상관관계 분석이 늦어져 공격 흐름 파악이 지연&lt;/li&gt;
              &lt;li&gt;현장 대응(차단/격리/권한 조치)이 워크플로우로 연결되지 않음&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/div&gt;
          &lt;div class=&quot;card&quot;&gt;
            &lt;h3&gt;Open XDR이 제공하는 개선점&lt;/h3&gt;
            &lt;ul&gt;
              &lt;li&gt;다영역 데이터 통합으로 “한 화면에서” 사건 맥락 확인&lt;/li&gt;
              &lt;li&gt;상관관계 기반 탐지로 정확도 향상&lt;/li&gt;
              &lt;li&gt;자동화된 대응 시나리오로 대응 속도·운영 효율 개선&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/div&gt;
        &lt;/div&gt;

        &lt;p&gt;
          Open XDR은 분산된 데이터를 통합해 공격 징후를 연결하고,
          보안 운영팀이 더 빠르게 판단할 수 있도록 지원하는 데 초점을 맞춘다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;파고네트웍스의 운영형 MDR 포인트&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;p&gt;
          파고네트웍스는 그동안 스텔라사이버의 Open XDR 플랫폼을 활용해
          엔드포인트, 네트워크, 클라우드, 아이덴티티 등 여러 보안 영역에서 발생하는 데이터를 통합 분석해왔다.
          이를 통해 위협 간 상관관계를 기반으로 탐지 정확도를 높이고,
          고객 환경에서 대응 속도와 운영 효율성을 개선하는 데 집중해왔다.
        &lt;/p&gt;

        &lt;div class=&quot;table-wrap&quot; role=&quot;region&quot; aria-label=&quot;운영 관점 체크리스트&quot;&gt;
          &lt;table class=&quot;table&quot;&gt;
            &lt;thead&gt;
              &lt;tr&gt;
                &lt;th scope=&quot;col&quot;&gt;운영 항목&lt;/th&gt;
                &lt;th scope=&quot;col&quot;&gt;핵심 내용&lt;/th&gt;
                &lt;th scope=&quot;col&quot;&gt;기대 효과&lt;/th&gt;
              &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
              &lt;tr&gt;
                &lt;td&gt;통합 분석&lt;/td&gt;
                &lt;td&gt;다영역 보안 데이터 상관관계 분석&lt;/td&gt;
                &lt;td&gt;오탐 감소, 탐지 정밀도 개선&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;대응 워크플로우&lt;/td&gt;
                &lt;td&gt;탐지→분석→대응을 실행 중심으로 연결&lt;/td&gt;
                &lt;td&gt;MTTR 단축, 운영 부담 완화&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;운영 모델&lt;/td&gt;
                &lt;td&gt;AI 자동화 + 보안 전문가 판단 결합&lt;/td&gt;
                &lt;td&gt;확장 가능한 보안 운영 체계&lt;/td&gt;
              &lt;/tr&gt;
            &lt;/tbody&gt;
          &lt;/table&gt;
        &lt;/div&gt;

        &lt;p&gt;
          특히 파고네트웍스는 클라우드 기반 MDR 전문 기업으로,
          &lt;strong&gt;‘PAGO DeepACT MDR-as-a-Service Framework’&lt;/strong&gt;를 중심으로 보안 운영 서비스를 제공하고 있다.
          위협 탐지·분석뿐 아니라 선제적 대응, 능동적 운영, 신속한 차단을 포함한 실행 중심 MDR 서비스를 지향하며,
          고객의 보안 의사결정과 대응 과정까지 지원하는 운영 모델을 강화하고 있다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;자율형 SOC 협력 강화, 어떤 그림인가&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;p&gt;
          스텔라사이버 공동창업자 겸 최고기술책임자인 &lt;strong&gt;에이미 웨이(Aimei Wei)&lt;/strong&gt;는
          “보안 운영의 복잡성이 빠르게 증가하는 환경에서 조직은 단일 플랫폼을 넘어 다양한 보안 데이터를 통합적으로 활용할 수 있는 운영 모델을 갖추는 것이 중요하다”며,
          “파고네트웍스와 같은 검증된 MDR 파트너와의 협력은 고객이 보다 효율적이고 확장 가능한 보안 운영 체계를 구축하는 데 핵심적인 역할을 할 것”이라고 말했다.
        &lt;/p&gt;

        &lt;p&gt;
          &lt;strong&gt;얼빈 탄(Alvin Tan)&lt;/strong&gt; 스텔라사이버 APAC 부사장은
          파고네트웍스가 아시아 시장에서 빠르게 성장하며 실제 운영 환경에서 검증된 실행 역량을 보여준 파트너라고 평가했고,
          “에이전틱 AI와 사람의 협업으로 구현하는 자율형 SOC 비전”을 고객 환경에 현실적으로 적용할 수 있는 역량을 갖추고 있다는 점을 강조했다.
        &lt;/p&gt;

        &lt;p&gt;
          파고네트웍스 &lt;strong&gt;권영목 대표&lt;/strong&gt;는
          이번 MDR 공식 인증이 보안 운영 역량이 글로벌 기준에서도 인정받았다는 의미가 있다며,
          스텔라사이버와의 협력을 기반으로 AI 기반 자동화와 보안 전문가의 판단을 결합한 MDR 서비스를 지속적으로 고도화하겠다고 밝혔다.
        &lt;/p&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;실무 기준으로 보면&lt;/strong&gt;&lt;br&gt;
          자율형 SOC는 “완전 자동”이 아니라, 자동화가 반복 업무를 줄이고 사람이 결정 품질을 높이는 방향이 현실적이다.&lt;br&gt;
          이번 협력은 Open XDR 기반 통합 데이터 + 에이전틱 AI + 운영 조직의 실행력을 한 묶음으로 강화하는 흐름에 가깝다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;아시아 시장 협력 확대가 가져올 변화&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;p&gt;
          이번 인증을 계기로 양사는 협력 범위를 넓히고,
          에이전틱 AI와 보안 전문가가 함께 운영하는 자율형 SOC 모델을 중심으로 공동 대응 전략을 확대할 계획이다.
          파고네트웍스가 과거 스텔라사이버로부터 &lt;strong&gt;‘MSSP Partner of the Year’&lt;/strong&gt; 상을 두 차례 수상한 이력도
          협력의 연속성을 보여주는 포인트다.
        &lt;/p&gt;

        &lt;div class=&quot;grid&quot;&gt;
          &lt;div class=&quot;card&quot;&gt;
            &lt;h3&gt;고객사 관점&lt;/h3&gt;
            &lt;ul&gt;
              &lt;li&gt;보안 이벤트의 “원인-경로-영향”을 더 빠르게 파악&lt;/li&gt;
              &lt;li&gt;대응 의사결정과 실행(차단/격리/계정조치)까지 연결&lt;/li&gt;
              &lt;li&gt;운영 효율 개선으로 야간/주말 대응 품질 유지에 도움&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/div&gt;
          &lt;div class=&quot;card&quot;&gt;
            &lt;h3&gt;운영 조직 관점&lt;/h3&gt;
            &lt;ul&gt;
              &lt;li&gt;반복 분석 업무를 자동화로 흡수&lt;/li&gt;
              &lt;li&gt;고난도 사건에 인력을 집중할 수 있는 구조&lt;/li&gt;
              &lt;li&gt;표준화된 운영 모델로 확장(지역/고객) 용이&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;기업 소개&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;p&gt;
          &lt;strong&gt;스텔라사이버(Stellar Cyber)&lt;/strong&gt;는 Open XDR 기반 단일 플랫폼을 통해 보안 데이터의 통합 가시성과
          자동화된 위협 탐지·대응 기능을 제공하는 글로벌 보안 기업이다.
          여러 보안 솔루션을 하나의 플랫폼으로 통합해 보안 운영의 복잡성과 비용을 줄이고,
          조직이 위협에 더 빠르게 대응할 수 있도록 지원한다.
        &lt;/p&gt;

        &lt;p&gt;
          &lt;strong&gt;파고네트웍스(PAGO Networks)&lt;/strong&gt;는 클라우드 기반 MDR 전문 기업으로,
          ‘PAGO DeepACT MDR-as-a-Service Framework’를 중심으로 보안 운영 서비스를 제공한다.
          위협 탐지·분석뿐 아니라 선제적 대응, 능동적 운영, 신속한 차단을 포함한 실행 중심 MDR 서비스를 지향한다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section class=&quot;closing&quot;&gt;
        &lt;h2&gt;정리&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;p&gt;
          스텔라사이버의 공식 MDR 인증 파트너 선정은 파고네트웍스의 “운영형 MDR” 역량이 공식적으로 검증됐다는 신호다.
          Open XDR 기반 통합 가시성과 자동화, 그리고 에이전틱 AI·전문가 협업 모델이 결합되면
          아시아 시장에서 보다 확장 가능한 보안 운영 체계를 빠르게 구축하는 데 유리해진다.
        &lt;/p&gt;
      &lt;/section&gt;
    &lt;/article&gt;

    &lt;!-- 관리자 입력용 태그(정확히 10개) --&gt;
    &lt;!-- TAGS: 파고네트웍스, 스텔라사이버, MDR, Open XDR, 보안운영, SOC, 자율형 SOC, 에이전틱 AI, MSSP, 위협탐지 --&gt;
  &lt;/main&gt;

  &lt;script type=&quot;application/ld+json&quot;&gt;
  {
    &quot;@context&quot;: &quot;https://schema.org&quot;,
    &quot;@graph&quot;: [
      {
        &quot;@type&quot;: &quot;BreadcrumbList&quot;,
        &quot;itemListElement&quot;: [
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 1,
            &quot;name&quot;: &quot;홈&quot;,
            &quot;item&quot;: &quot;https://example.com/&quot;
          },
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 2,
            &quot;name&quot;: &quot;보안 운영&quot;
          }
        ]
      },
      {
        &quot;@type&quot;: &quot;BlogPosting&quot;,
        &quot;headline&quot;: &quot;파고네트웍스, 스텔라사이버 공식 MDR 인증 획득…아시아 보안 운영 협력 확대&quot;,
        &quot;description&quot;: &quot;스텔라사이버가 파고네트웍스를 공식 MDR 인증 파트너로 선정했다. Open XDR 기반 통합 탐지·대응과 AI 기반 자율형 SOC 협력 강화 의미를 운영 관점에서 정리한다.&quot;,
        &quot;inLanguage&quot;: &quot;ko-KR&quot;,
        &quot;mainEntityOfPage&quot;: {
          &quot;@type&quot;: &quot;WebPage&quot;,
          &quot;@id&quot;: &quot;https://example.com/&quot;
        },
        &quot;articleSection&quot;: &quot;보안 운영&quot;,
        &quot;keywords&quot;: [
          &quot;파고네트웍스&quot;,
          &quot;스텔라사이버&quot;,
          &quot;MDR&quot;,
          &quot;관리형 탐지 대응&quot;,
          &quot;Open XDR&quot;,
          &quot;보안운영&quot;,
          &quot;SOC&quot;,
          &quot;자율형 SOC&quot;,
          &quot;에이전틱 AI&quot;,
          &quot;MSSP&quot;,
          &quot;APAC&quot;,
          &quot;위협탐지&quot;
        ]
      }
    ]
  }
  &lt;/script&gt;

  &lt;style&gt;
    .post-content {
      line-height: 1.7;
      word-break: keep-all;
    }
    .post-header .kicker {
      margin: 0 0 6px 0;
      font-size: 14px;
      opacity: 0.85;
    }
    .post-header h1 {
      margin: 0 0 10px 0;
      font-size: 30px;
      line-height: 1.25;
      letter-spacing: -0.2px;
    }
    .post-header .subhead {
      margin: 0 0 18px 0;
      font-size: 16px;
      opacity: 0.9;
    }
    .lead p {
      margin: 0 0 12px 0;
    }
    .spacer {
      height: 10px;
    }
    .post-content h2 {
      margin: 26px 0 0 0;
      font-size: 22px;
      line-height: 1.35;
      letter-spacing: -0.2px;
    }
    .post-content h3 {
      margin: 0 0 10px 0;
      font-size: 16px;
      line-height: 1.35;
    }
    .post-content p {
      margin: 0 0 12px 0;
      font-size: 16px;
    }
    .post-content ul {
      margin: 0;
      padding: 0 0 0 18px;
    }
    .post-content li {
      margin: 0 0 6px 0;
    }
    .callout {
      margin: 14px 0;
      padding: 14px 14px;
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 14px;
    }
    .grid {
      display: grid;
      grid-template-columns: 1fr;
      gap: 12px;
      margin: 12px 0 14px 0;
    }
    .card {
      padding: 14px 14px;
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 14px;
    }
    .table-wrap {
      margin: 12px 0 14px 0;
      overflow-x: auto;
      border-radius: 14px;
      border: 1px solid rgba(0,0,0,0.12);
    }
    .table {
      width: 100%;
      border-collapse: collapse;
      min-width: 720px;
    }
    .table th,
    .table td {
      padding: 12px 12px;
      border-bottom: 1px solid rgba(0,0,0,0.10);
      vertical-align: top;
      text-align: left;
      font-size: 15px;
    }
    .table thead th {
      border-bottom: 1px solid rgba(0,0,0,0.16);
      font-weight: 700;
    }
    .closing p {
      margin-bottom: 0;
    }

    @media (min-width: 860px) {
      .post-header h1 {
        font-size: 34px;
      }
      .grid {
        grid-template-columns: 1fr 1fr;
      }
    }
  &lt;/style&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>IT 소식 뉴스/IT 소식</category>
      <category>mdr</category>
      <category>MSSP</category>
      <category>Open XDR</category>
      <category>soc</category>
      <category>관리형 탐지 대응</category>
      <category>보안운영</category>
      <category>스텔라사이버</category>
      <category>에이전틱 ai</category>
      <category>자율형 SOC</category>
      <category>파고네트웍스</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/551</guid>
      <comments>https://togethergrow.tistory.com/entry/%ED%8C%8C%EA%B3%A0%EB%84%A4%ED%8A%B8%EC%9B%8D%EC%8A%A4-%EC%8A%A4%ED%85%94%EB%9D%BC%EC%82%AC%EC%9D%B4%EB%B2%84-%EA%B3%B5%EC%8B%9D-MDR-%EC%9D%B8%EC%A6%9D-%ED%9A%8D%EB%93%9D%E2%80%A6%EC%95%84%EC%8B%9C%EC%95%84-%EB%B3%B4%EC%95%88-%EC%9A%B4%EC%98%81-%ED%98%91%EB%A0%A5-%ED%99%95%EB%8C%80#entry551comment</comments>
      <pubDate>Wed, 10 Jun 2026 21:39:53 +0900</pubDate>
    </item>
    <item>
      <title>ORA-01031 해결: 권한 부족 원인별 점검과 최소 권한 복구</title>
      <link>https://togethergrow.tistory.com/entry/ORA-01031-%ED%95%B4%EA%B2%B0-%EA%B6%8C%ED%95%9C-%EB%B6%80%EC%A1%B1-%EC%9B%90%EC%9D%B8%EB%B3%84-%EC%A0%90%EA%B2%80%EA%B3%BC-%EC%B5%9C%EC%86%8C-%EA%B6%8C%ED%95%9C-%EB%B3%B5%EA%B5%AC</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;ORA-01031 해결: 권한 부족 원인별 점검과 최소 권한 복구&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;ORA-01031(권한이 불충분합니다) 오류는 시스템 권한, 객체 권한, 롤 적용, definer/invoker 권한, PDB/컨테이너 권한 범위 등에서 발생한다. 증상 재현부터 권한 확인, 복구, 재발 방지까지 운영 환경 기준으로 정리한다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;ORA-01031,insufficient privileges,Oracle 권한,GRANT,시스템 권한,객체 권한,ROLE 적용,AUTHID CURRENT_USER,Definer rights,PDB 권한&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;ORA-01031 해결: 권한 부족 원인별 점검과 최소 권한 복구&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;GRANT 했는데도 실패하는 ORA-01031? 객체 권한/시스템 권한/롤/프로시저 권한/컨테이너 범위를 한 번에 점검하는 실무 절차.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/post/ora-01031-privileges&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;ORA-01031 해결: 권한 부족 원인별 점검과 최소 권한 복구&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;권한 부여했는데도 안 된다면? ROLE/definer rights/PDB 권한 범위까지 포함해 ORA-01031을 단계별로 해결.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .article-wrap{line-height:1.7; word-break:keep-all;}
    .article-wrap .content-inner{max-width:980px; margin:0 auto; padding:0 10px;}
    .article-wrap h1{font-size:1.9rem; margin:0 0 14px;}
    .article-wrap h2{font-size:1.35rem; margin:26px 0 10px;}
    .article-wrap h3{font-size:1.1rem; margin:18px 0 10px;}
    .article-wrap p{margin:10px 0;}
    .article-wrap ul{margin:10px 0 10px 18px;}
    .article-wrap li{margin:6px 0;}
    .article-wrap .note{
      border:1px solid rgba(0,0,0,0.12);
      border-radius:14px;
      padding:12px 14px;
      margin:12px 0;
    }
    .article-wrap .note strong{display:inline-block; margin-bottom:6px;}
    .article-wrap pre{
      overflow:auto;
      border:1px solid rgba(0,0,0,0.12);
      border-radius:14px;
      padding:12px 14px;
      margin:12px 0;
    }
    .article-wrap code{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace;}
    .article-wrap table{width:100%; border-collapse:collapse; margin:12px 0; overflow:hidden; border-radius:14px; border:1px solid rgba(0,0,0,0.12);}
    .article-wrap th,.article-wrap td{border-top:1px solid rgba(0,0,0,0.12); padding:10px; vertical-align:top; text-align:left;}
    .article-wrap th{font-weight:700; background:rgba(0,0,0,0.03);}
    .article-wrap .divider{height:1px; background:rgba(0,0,0,0.08); margin:18px 0;}
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;div class=&quot;content-inner&quot;&gt;
      &lt;article&gt;
        &lt;header&gt;
          &lt;h1&gt;ORA-01031 해결: 권한 부족 원인별 점검과 최소 권한 복구&lt;/h1&gt;
          &lt;p&gt;
            &lt;strong&gt;ORA-01031: insufficient privileges&lt;/strong&gt;(권한이 불충분합니다) 오류는
            “권한이 없다”라는 한 문장으로 끝나지 않는 경우가 많습니다.
            같은 메시지지만 원인은 &lt;strong&gt;시스템 권한&lt;/strong&gt;, &lt;strong&gt;객체 권한&lt;/strong&gt;, &lt;strong&gt;롤(ROLE) 적용 방식&lt;/strong&gt;,
            &lt;strong&gt;프로시저 권한 모델(definer/invoker)&lt;/strong&gt;, &lt;strong&gt;PDB/컨테이너 권한 범위&lt;/strong&gt;까지 다양하게 갈립니다.
          &lt;/p&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;실무 기준으로 보면&lt;/strong&gt;&lt;br&gt;
            ORA-01031은 “GRANT 한 번 더 주면 된다”로 끝내면 재발합니다.&lt;br&gt;
            어떤 작업(DDL/DML/패키지 호출)을 누가(스키마/프로시저/잡)가 실행했는지부터 확정하고,&lt;br&gt;
            그 경로에 맞는 최소 권한을 정확히 주는 게 운영 안전성과 감사 대응에 유리합니다.
          &lt;/div&gt;
        &lt;/header&gt;

        &lt;section&gt;
          &lt;h2&gt;개요&lt;/h2&gt;

          &lt;p&gt;
            Oracle 권한은 크게 &lt;strong&gt;시스템 권한&lt;/strong&gt;(예: &lt;code&gt;CREATE TABLE&lt;/code&gt;, &lt;code&gt;ALTER SYSTEM&lt;/code&gt;)
            과 &lt;strong&gt;객체 권한&lt;/strong&gt;(예: 특정 테이블에 대한 &lt;code&gt;SELECT&lt;/code&gt;, &lt;code&gt;EXECUTE&lt;/code&gt;)으로 나뉩니다.
            여기에 &lt;strong&gt;ROLE&lt;/strong&gt;은 세션에서는 적용되지만, 일반적으로
            &lt;strong&gt;Definer Rights(기본 AUTHID DEFINER)로 실행되는 PL/SQL&lt;/strong&gt; 내부에서는 자동 적용되지 않는 등
            “실행 컨텍스트”에 따라 체감 동작이 달라집니다.
          &lt;/p&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;환경&lt;/h2&gt;

          &lt;ul&gt;
            &lt;li&gt;DB: Oracle Database (11g~19c/21c, CDB/PDB 포함)&lt;/li&gt;
            &lt;li&gt;발생 지점: DDL 수행, 타 스키마 객체 접근, 패키지/프로시저 실행, DB 링크 사용, 잡(SCHEDULER) 실행&lt;/li&gt;
            &lt;li&gt;점검 뷰: &lt;code&gt;DBA_SYS_PRIVS&lt;/code&gt;, &lt;code&gt;DBA_TAB_PRIVS&lt;/code&gt;, &lt;code&gt;DBA_ROLE_PRIVS&lt;/code&gt;, &lt;code&gt;ROLE_SYS_PRIVS&lt;/code&gt;, &lt;code&gt;SESSION_ROLES&lt;/code&gt;&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;증상&lt;/h2&gt;

          &lt;p&gt;ORA-01031은 아래 패턴에서 자주 보입니다.&lt;/p&gt;

          &lt;ul&gt;
            &lt;li&gt;DDL 실행: &lt;code&gt;CREATE&lt;/code&gt;, &lt;code&gt;ALTER&lt;/code&gt;, &lt;code&gt;DROP&lt;/code&gt;, &lt;code&gt;GRANT&lt;/code&gt; 등&lt;/li&gt;
            &lt;li&gt;타 스키마 객체 접근: &lt;code&gt;SELECT other_schema.table&lt;/code&gt;, &lt;code&gt;EXEC other_schema.pkg&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;프로시저 내부에서 외부 객체 호출 시 실패(직접 실행은 되는데 프로시저에서만 실패)&lt;/li&gt;
            &lt;li&gt;PDB에서 권한을 줬는데 CDB/다른 PDB에서는 적용이 안 됨&lt;/li&gt;
            &lt;li&gt;DBMS_* 패키지 호출이 특정 계정에서만 막힘&lt;/li&gt;
          &lt;/ul&gt;

          &lt;pre&gt;&lt;code&gt;ORA-01031: insufficient privileges&lt;/code&gt;&lt;/pre&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;1차 점검&lt;/h2&gt;

          &lt;p&gt;
            가장 먼저 아래 4가지를 확정해야 합니다. 이 단계가 애매하면 권한을 “과다 부여”하게 됩니다.
          &lt;/p&gt;

          &lt;table&gt;
            &lt;thead&gt;
              &lt;tr&gt;
                &lt;th&gt;점검 항목&lt;/th&gt;
                &lt;th&gt;확인 포인트&lt;/th&gt;
              &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
              &lt;tr&gt;
                &lt;td&gt;실행 주체&lt;/td&gt;
                &lt;td&gt;실패한 계정(스키마), 프록시/앱 계정 여부, 잡(Job) 실행 계정&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;실패 작업&lt;/td&gt;
                &lt;td&gt;정확한 SQL/패키지 호출, DDL인지 DML인지, 대상 객체(스키마.객체명)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;실행 컨텍스트&lt;/td&gt;
                &lt;td&gt;직접 실행인지, 프로시저/트리거 내부 실행인지(Definer/Invoker)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;컨테이너&lt;/td&gt;
                &lt;td&gt;CDB/PDB 중 어디에서 실행했는지(권한은 컨테이너 범위를 타는 경우가 많음)&lt;/td&gt;
              &lt;/tr&gt;
            &lt;/tbody&gt;
          &lt;/table&gt;

          &lt;h3&gt;현재 세션 권한/롤 확인&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;-- 세션에 활성화된 롤
SELECT * FROM session_roles;

-- (권한 점검용) 내가 가진 시스템 권한
SELECT * FROM user_sys_privs;

-- (권한 점검용) 내가 가진 객체 권한
SELECT owner, table_name, privilege
FROM   user_tab_privs;&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;실무 팁&lt;/strong&gt;&lt;br&gt;
            “직접 실행은 되는데 프로시저에서만 ORA-01031”이면 10번 중 7~8번은 ROLE 문제입니다.&lt;br&gt;
            PL/SQL(Definer Rights)은 ROLE을 기본적으로 사용하지 않으니, 필요한 권한은 롤이 아니라 &lt;strong&gt;직접 GRANT&lt;/strong&gt;로 줘야 합니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;심화 분석&lt;/h2&gt;

          &lt;h3&gt;원인 1) 객체 권한이 없음(타 스키마 테이블/뷰/시퀀스/프로시저)&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;-- 대상 객체에 대한 권한이 있는지(관리자 관점)
SELECT grantee, owner, table_name, privilege
FROM   dba_tab_privs
WHERE  grantee = 'APPUSER'
AND    owner   = 'OTHER_SCHEMA'
AND    table_name IN ('T1','V1','SEQ1','PKG1')
ORDER  BY owner, table_name, privilege;&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;원인 2) 시스템 권한이 없음(DDL/관리 기능)&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;SELECT grantee, privilege
FROM   dba_sys_privs
WHERE  grantee = 'APPUSER'
ORDER  BY privilege;&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;원인 3) ROLE로만 권한이 부여되어 PL/SQL에서 실패&lt;/h3&gt;
          &lt;p&gt;
            예: &lt;code&gt;ROLE_A&lt;/code&gt;에 &lt;code&gt;SELECT&lt;/code&gt; 권한이 있고 APPUSER가 ROLE_A를 받았지만,
            APPUSER 소유 프로시저가 &lt;code&gt;OTHER_SCHEMA.T1&lt;/code&gt;을 조회하면 ORA-01031이 날 수 있습니다.
          &lt;/p&gt;
          &lt;pre&gt;&lt;code&gt;-- APPUSER가 받은 롤 확인
SELECT granted_role
FROM   dba_role_privs
WHERE  grantee = 'APPUSER';

-- 롤이 가진 권한 확인(객체 권한은 DBA_TAB_PRIVS에서 GRANTEE=롤명으로 조회)
SELECT grantee, owner, table_name, privilege
FROM   dba_tab_privs
WHERE  grantee = 'ROLE_A'
ORDER  BY owner, table_name, privilege;&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;원인 4) Definer/Invoker 권한 모델 불일치&lt;/h3&gt;
          &lt;p&gt;
            패키지/프로시저가 &lt;code&gt;AUTHID CURRENT_USER&lt;/code&gt;(Invoker Rights)인지,
            기본값(Definer Rights)인지에 따라 필요한 권한이 달라집니다.
          &lt;/p&gt;

          &lt;pre&gt;&lt;code&gt;-- 객체 소유자/상태 확인
SELECT owner, object_name, object_type, status
FROM   dba_objects
WHERE  owner = 'APPUSER'
AND    object_name = 'P_TEST';

-- 소스에서 AUTHID 확인(프로시저/패키지)
SELECT text
FROM   dba_source
WHERE  owner = 'APPUSER'
AND    name  = 'P_TEST'
AND    type  IN ('PROCEDURE','PACKAGE','PACKAGE BODY')
ORDER  BY line;&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;원인 5) CDB/PDB 권한 범위 문제&lt;/h3&gt;
          &lt;p&gt;
            CDB 환경에서는 같은 사용자/롤이라도 컨테이너마다 권한 부여 상태가 달라질 수 있습니다.
            “PDB에서만 발생”하거나 “특정 PDB에서만 해결됐다”면 컨테이너를 확정하고 권한을 다시 점검해야 합니다.
          &lt;/p&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;관리자 입장에서&lt;/strong&gt;&lt;br&gt;
            ORA-01031은 “권한이 없다”라기보다 “권한이 그 컨텍스트에서 유효하지 않다”인 경우가 많습니다.&lt;br&gt;
            특히 ROLE과 PL/SQL 실행 모델, 그리고 CDB/PDB 범위가 같이 얽히면 원인 파악이 늦어집니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;복구&lt;/h2&gt;

          &lt;p&gt;
            복구 원칙은 간단합니다. &lt;strong&gt;필요한 권한을 직접(Direct Grant)로 최소 범위로 부여&lt;/strong&gt;하고,
            “전체 권한” 역할(&lt;code&gt;DBA&lt;/code&gt; 등) 부여는 가능한 피합니다.
          &lt;/p&gt;

          &lt;h3&gt;1) 타 스키마 테이블 조회 권한 부여(객체 권한)&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;-- OTHER_SCHEMA 소유 테이블 T1을 APPUSER가 조회해야 하는 경우
GRANT SELECT ON OTHER_SCHEMA.T1 TO APPUSER;

-- DML이 필요하면 필요한 것만 추가
GRANT INSERT, UPDATE, DELETE ON OTHER_SCHEMA.T1 TO APPUSER;&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;2) 타 스키마 패키지 실행 권한 부여(객체 권한)&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;GRANT EXECUTE ON OTHER_SCHEMA.PKG_API TO APPUSER;&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;3) 프로시저에서만 실패한다면(ROLE 의존 제거)&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;-- 롤에만 있던 권한을 APPUSER에 직접 부여(Definer Rights 대응)
GRANT SELECT ON OTHER_SCHEMA.T1 TO APPUSER;&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;4) DDL이 필요하다면(시스템 권한)&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;-- 예: APPUSER가 테이블을 생성해야 하는 경우
GRANT CREATE TABLE TO APPUSER;

-- 시퀀스/뷰 등도 필요한 것만
GRANT CREATE SEQUENCE TO APPUSER;
GRANT CREATE VIEW TO APPUSER;&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;주의&lt;/strong&gt;&lt;br&gt;
            &lt;code&gt;GRANT ANY PRIVILEGE&lt;/code&gt;, &lt;code&gt;SELECT ANY TABLE&lt;/code&gt;, &lt;code&gt;EXECUTE ANY PROCEDURE&lt;/code&gt; 같은 ANY 권한은 영향 범위가 매우 큽니다.&lt;br&gt;
            급한 장애 조치로 남발하면, 나중에 회수하기도 어렵고 감사 이슈로 이어질 수 있습니다.
          &lt;/div&gt;

          &lt;h3&gt;5) 적용 확인&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;-- 권한 부여 후 즉시 재현 SQL로 확인
SELECT COUNT(*) FROM OTHER_SCHEMA.T1;

BEGIN
  OTHER_SCHEMA.PKG_API.PING;
END;
/
&lt;/code&gt;&lt;/pre&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;재발 방지&lt;/h2&gt;

          &lt;ul&gt;
            &lt;li&gt;&lt;strong&gt;최소 권한 설계&lt;/strong&gt;: 업무별로 필요한 객체/권한 목록을 정의하고 직접 GRANT로 관리&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;ROLE 사용 원칙&lt;/strong&gt;: 세션 편의용(개발자 도구 등)과 애플리케이션 실행 권한을 분리&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;PL/SQL 권한 모델 표준화&lt;/strong&gt;: Definer/Invoker 사용 기준을 문서화하고 코드 리뷰에 포함&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;컨테이너 범위 점검&lt;/strong&gt;: CDB/PDB 환경에서 권한 부여 위치(어느 컨테이너에서 GRANT했는지) 기록&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;권한 변경 이력&lt;/strong&gt;: GRANT/REVOKE 변경은 티켓/승인 기반으로 남기고 주기적으로 회수 점검&lt;/li&gt;
          &lt;/ul&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;실제 사용 시&lt;/strong&gt;&lt;br&gt;
            ORA-01031은 한번 해결해도, 배포/계정 변경/권한 회수 작업에서 쉽게 재발합니다.&lt;br&gt;
            “누가 무엇을 실행할 수 있어야 하는지”를 표준 권한 정책으로 고정해두면 장애가 급격히 줄어듭니다.
          &lt;/div&gt;
        &lt;/section&gt;

      &lt;/article&gt;
    &lt;/div&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;ORA-01031 해결: 권한 부족 원인별 점검과 최소 권한 복구&quot;,
              &quot;item&quot;: &quot;https://example.com/post/ora-01031-privileges&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;TechArticle&quot;,
          &quot;headline&quot;: &quot;ORA-01031 해결: 권한 부족 원인별 점검과 최소 권한 복구&quot;,
          &quot;description&quot;: &quot;ORA-01031(권한이 불충분합니다) 오류는 시스템 권한, 객체 권한, 롤 적용, definer/invoker 권한, PDB/컨테이너 권한 범위 등에서 발생한다. 증상 재현부터 권한 확인, 복구, 재발 방지까지 운영 환경 기준으로 정리한다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/post/ora-01031-privileges&quot;
          },
          &quot;keywords&quot;: [
            &quot;ORA-01031&quot;,
            &quot;insufficient privileges&quot;,
            &quot;Oracle 권한&quot;,
            &quot;GRANT&quot;,
            &quot;시스템 권한&quot;,
            &quot;객체 권한&quot;,
            &quot;ROLE 적용&quot;,
            &quot;AUTHID CURRENT_USER&quot;,
            &quot;Definer rights&quot;,
            &quot;PDB 권한&quot;
          ]
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>지식 공유/DBMS</category>
      <category>AUTHID CURRENT_USER</category>
      <category>Definer rights</category>
      <category>grant</category>
      <category>insufficient privileges</category>
      <category>ORA-01031</category>
      <category>Oracle 권한</category>
      <category>PDB 권한</category>
      <category>ROLE 적용</category>
      <category>객체 권한</category>
      <category>시스템 권한</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/550</guid>
      <comments>https://togethergrow.tistory.com/entry/ORA-01031-%ED%95%B4%EA%B2%B0-%EA%B6%8C%ED%95%9C-%EB%B6%80%EC%A1%B1-%EC%9B%90%EC%9D%B8%EB%B3%84-%EC%A0%90%EA%B2%80%EA%B3%BC-%EC%B5%9C%EC%86%8C-%EA%B6%8C%ED%95%9C-%EB%B3%B5%EA%B5%AC#entry550comment</comments>
      <pubDate>Thu, 4 Jun 2026 16:43:17 +0900</pubDate>
    </item>
    <item>
      <title>ORA-01841 해결: 날짜 값 범위 오류 점검과 변환 표준화</title>
      <link>https://togethergrow.tistory.com/entry/ORA-01841-%ED%95%B4%EA%B2%B0-%EB%82%A0%EC%A7%9C-%EA%B0%92-%EB%B2%94%EC%9C%84-%EC%98%A4%EB%A5%98-%EC%A0%90%EA%B2%80%EA%B3%BC-%EB%B3%80%ED%99%98-%ED%91%9C%EC%A4%80%ED%99%94</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;ORA-01841 해결: 날짜 값 범위 오류 점검과 변환 표준화&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;ORA-01841 오류는 연도(YYYY) 값이 0이거나 허용 범위를 벗어난 날짜/시간 값이 변환 과정에서 발생할 때 나타난다. 환경 점검부터 NLS 설정, TO_DATE/TO_TIMESTAMP 변환, 바인드 변수, ETL 입력 데이터 검증까지 단계별로 정리한다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;ORA-01841,Oracle 날짜 오류,TO_DATE,TO_TIMESTAMP,NLS_DATE_FORMAT,NLS_TIMESTAMP_FORMAT,YYYY year 0,날짜 파싱,바인드 변수,ETL 데이터 정합성,Oracle 19c&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;ORA-01841 해결: 날짜 값 범위 오류 점검과 변환 표준화&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;연도 0 또는 허용 범위를 벗어난 날짜 값 때문에 ORA-01841이 발생할 때, 입력값·포맷·NLS·바인드를 한 번에 점검하는 실무 절차.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/post/ora-01841-date-range&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;ORA-01841 해결: 날짜 값 범위 오류 점검과 변환 표준화&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;0년/범위 밖 연도, 포맷 불일치, NLS 설정 차이로 터지는 ORA-01841을 개요~재발 방지까지 정리.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .article-wrap{line-height:1.7; word-break:keep-all;}
    .article-wrap .content-inner{max-width:980px; margin:0 auto; padding:0 10px;}
    .article-wrap h1{font-size:1.9rem; margin:0 0 14px;}
    .article-wrap h2{font-size:1.35rem; margin:26px 0 10px;}
    .article-wrap h3{font-size:1.1rem; margin:18px 0 10px;}
    .article-wrap p{margin:10px 0;}
    .article-wrap ul{margin:10px 0 10px 18px;}
    .article-wrap li{margin:6px 0;}
    .article-wrap .note{
      border:1px solid rgba(0,0,0,0.12);
      border-radius:14px;
      padding:12px 14px;
      margin:12px 0;
    }
    .article-wrap .note strong{display:inline-block; margin-bottom:6px;}
    .article-wrap pre{
      overflow:auto;
      border:1px solid rgba(0,0,0,0.12);
      border-radius:14px;
      padding:12px 14px;
      margin:12px 0;
    }
    .article-wrap code{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace;}
    .article-wrap table{width:100%; border-collapse:collapse; margin:12px 0; overflow:hidden; border-radius:14px; border:1px solid rgba(0,0,0,0.12);}
    .article-wrap th,.article-wrap td{border-top:1px solid rgba(0,0,0,0.12); padding:10px; vertical-align:top; text-align:left;}
    .article-wrap th{font-weight:700; background:rgba(0,0,0,0.03);}
    .article-wrap .divider{height:1px; background:rgba(0,0,0,0.08); margin:18px 0;}
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;div class=&quot;content-inner&quot;&gt;
      &lt;article&gt;
        &lt;header&gt;
          &lt;h1&gt;ORA-01841 해결: 날짜 값 범위 오류 점검과 변환 표준화&lt;/h1&gt;
          &lt;p&gt;
            &lt;strong&gt;ORA-01841&lt;/strong&gt;은 날짜/시간 변환 과정에서 &lt;strong&gt;연도(YYYY) 값이 0이거나&lt;/strong&gt;
            허용 범위를 벗어난 값이 들어올 때 발생하는 대표적인 오류입니다.
            특히 문자열을 &lt;code&gt;DATE&lt;/code&gt;나 &lt;code&gt;TIMESTAMP&lt;/code&gt;로 변환하는 SQL/PLSQL,
            또는 애플리케이션/ETL에서 넘어오는 파라미터 처리에서 자주 나타납니다.
          &lt;/p&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;실무 기준으로 보면&lt;/strong&gt;&lt;br&gt;
            ORA-01841의 원인은 “오라클이 날짜를 이해 못했다”가 아니라,&lt;br&gt;
            “입력값(문자열/바인드)이 기대한 포맷·범위가 아니다”인 경우가 대부분입니다.&lt;br&gt;
            그래서 쿼리를 고치기 전에 &lt;em&gt;문제 입력값 1건&lt;/em&gt;을 먼저 잡는 게 가장 빠릅니다.
          &lt;/div&gt;
        &lt;/header&gt;

        &lt;section&gt;
          &lt;h2&gt;개요&lt;/h2&gt;

          &lt;p&gt;
            Oracle에서 &lt;code&gt;DATE&lt;/code&gt;와 &lt;code&gt;TIMESTAMP&lt;/code&gt;는 내부적으로 유효 범위를 갖고 있고,
            문자열을 날짜로 변환할 때는 &lt;code&gt;TO_DATE&lt;/code&gt;, &lt;code&gt;TO_TIMESTAMP&lt;/code&gt; 및 세션의 NLS 포맷(&lt;code&gt;NLS_DATE_FORMAT&lt;/code&gt; 등)에 영향을 받습니다.
            이 과정에서 연도 0, 너무 큰/작은 연도, 잘못된 자리수, 포맷 불일치가 발생하면 ORA-01841이 터질 수 있습니다.
          &lt;/p&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;환경&lt;/h2&gt;

          &lt;ul&gt;
            &lt;li&gt;DB: Oracle Database (11g~19c/21c 전반)&lt;/li&gt;
            &lt;li&gt;유형: SQL에서 문자열→날짜 변환, 바인드 변수 날짜 처리, ETL/배치 적재, CSV/엑셀 입력&lt;/li&gt;
            &lt;li&gt;영향 요소: &lt;code&gt;TO_DATE&lt;/code&gt;/&lt;code&gt;TO_TIMESTAMP&lt;/code&gt; 포맷 모델, 세션 NLS 설정, 애플리케이션 바인드 타입&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;증상&lt;/h2&gt;

          &lt;p&gt;대표적인 발생 지점은 아래와 같습니다.&lt;/p&gt;

          &lt;ul&gt;
            &lt;li&gt;&lt;code&gt;TO_DATE(col, 'YYYYMMDD')&lt;/code&gt;, &lt;code&gt;TO_TIMESTAMP(:p, ...)&lt;/code&gt; 수행 시 ORA-01841&lt;/li&gt;
            &lt;li&gt;바인드 변수로 날짜가 들어오는데, 실제로는 문자열/숫자로 넘어와 암묵 변환이 발생&lt;/li&gt;
            &lt;li&gt;ETL 적재 중 일부 레코드(특정 행)에서만 실패&lt;/li&gt;
            &lt;li&gt;환경(개발/운영)마다 재현이 달라짐 → NLS 설정 차이 가능성&lt;/li&gt;
          &lt;/ul&gt;

          &lt;pre&gt;&lt;code&gt;-- 흔한 패턴(암묵 변환이 끼어드는 경우)
WHERE date_col &amp;gt;= '20260101'    -- 문자열 비교/암묵 변환 위험
-- 또는
INSERT INTO t(dt) VALUES('00000101'); -- 연도 0 또는 잘못된 값&lt;/code&gt;&lt;/pre&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;1차 점검&lt;/h2&gt;

          &lt;p&gt;아래 4가지를 먼저 확정하면 원인 파악이 급격히 빨라집니다.&lt;/p&gt;

          &lt;table&gt;
            &lt;thead&gt;
              &lt;tr&gt;
                &lt;th&gt;점검 항목&lt;/th&gt;
                &lt;th&gt;확인 포인트&lt;/th&gt;
              &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
              &lt;tr&gt;
                &lt;td&gt;문제 입력값(원본)&lt;/td&gt;
                &lt;td&gt;실패한 한 건의 날짜 문자열/값(예: &lt;code&gt;0000-01-01&lt;/code&gt;, &lt;code&gt;99999999&lt;/code&gt;, 공백 포함 등)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;변환 코드&lt;/td&gt;
                &lt;td&gt;&lt;code&gt;TO_DATE&lt;/code&gt;/&lt;code&gt;TO_TIMESTAMP&lt;/code&gt; 포맷이 입력과 정확히 일치하는지&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;NLS 설정&lt;/td&gt;
                &lt;td&gt;&lt;code&gt;NLS_DATE_FORMAT&lt;/code&gt;, &lt;code&gt;NLS_TIMESTAMP_FORMAT&lt;/code&gt;, &lt;code&gt;NLS_CALENDAR&lt;/code&gt; 차이 여부&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;바인드 타입&lt;/td&gt;
                &lt;td&gt;애플리케이션이 날짜를 DATE/TIMESTAMP로 바인딩하는지, 문자열로 보내는지&lt;/td&gt;
              &lt;/tr&gt;
            &lt;/tbody&gt;
          &lt;/table&gt;

          &lt;h3&gt;NLS 설정 확인&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;SELECT * FROM nls_session_parameters
WHERE parameter IN ('NLS_DATE_FORMAT','NLS_TIMESTAMP_FORMAT','NLS_TIMESTAMP_TZ_FORMAT','NLS_CALENDAR');

SELECT * FROM nls_database_parameters
WHERE parameter IN ('NLS_DATE_FORMAT','NLS_TIMESTAMP_FORMAT','NLS_TIMESTAMP_TZ_FORMAT','NLS_CALENDAR');&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;관리자 입장에서&lt;/strong&gt;&lt;br&gt;
            개발에서는 되는데 운영에서만 터지는 ORA-01841은 NLS 차이가 원인인 경우가 많습니다.&lt;br&gt;
            특히 “암묵 변환”이 있으면, 같은 SQL이 세션 포맷에 따라 성공/실패가 갈립니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;심화 분석&lt;/h2&gt;

          &lt;p&gt;ORA-01841의 대표 원인을 케이스별로 정리하면 아래와 같습니다.&lt;/p&gt;

          &lt;div class=&quot;grid&quot;&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;케이스 A: 연도 0(YYYY=0000) 또는 자리수 깨짐&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                입력값에 &lt;code&gt;0000&lt;/code&gt;년이 포함되거나, 연도 자리수가 모자라/넘쳐 변환이 실패합니다.&lt;br&gt;
                예: &lt;code&gt;0000-12-31&lt;/code&gt;, &lt;code&gt;00000101&lt;/code&gt;, &lt;code&gt;0/1/1&lt;/code&gt;
              &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;케이스 B: 포맷 불일치&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                입력은 &lt;code&gt;YYYY-MM-DD&lt;/code&gt;인데 포맷을 &lt;code&gt;YYYYMMDD&lt;/code&gt;로 주는 등 불일치가 있을 때 발생합니다.&lt;br&gt;
                공백/로케일(월 이름)/타임존까지 포함되면 실패 가능성이 커집니다.
              &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;케이스 C: 암묵 변환(Implicit Conversion)&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                문자열을 DATE 컬럼과 비교하거나, 문자열을 DATE 컬럼에 넣을 때 세션 NLS 포맷으로 변환됩니다.&lt;br&gt;
                세션 포맷이 바뀌면 동일 SQL이 터질 수 있습니다.
              &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;케이스 D: ETL/파일 입력의 더러운 값&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                &lt;code&gt;NULL&lt;/code&gt; 대신 &lt;code&gt;00000000&lt;/code&gt;, &lt;code&gt;99999999&lt;/code&gt;, 공백, 잘못된 구분자 등이 섞여 들어오는 경우가 많습니다.&lt;br&gt;
                “99/99/9999” 같은 더미 날짜가 특히 위험합니다.
              &lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;실무 포인트&lt;/strong&gt;&lt;br&gt;
            ORA-01841을 해결하는 가장 빠른 길은 “실패한 입력값 1건”을 재현 환경에서 그대로 변환해보는 것입니다.&lt;br&gt;
            그 한 건을 잡으면, 어떤 규칙으로 필터/정정해야 하는지가 바로 나옵니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;복구&lt;/h2&gt;

          &lt;p&gt;
            복구는 크게 3갈래입니다: (1) 암묵 변환 제거, (2) 입력값 정제/검증, (3) 바인딩 표준화.
            운영 환경에서 안전하게 적용하려면 “임시 우회”보다 “표준화”를 권장합니다.
          &lt;/p&gt;

          &lt;h3&gt;1) 암묵 변환 제거(명시적 변환 사용)&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;-- 나쁜 예(세션 NLS에 따라 동작이 달라짐)
WHERE dt &amp;gt;= '2026-06-01'

-- 좋은 예(입력과 포맷을 명시)
WHERE dt &amp;gt;= TO_DATE('2026-06-01', 'YYYY-MM-DD')&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;2) 더러운 입력값 필터링(ETL/적재 전)&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;-- 예시: 8자리 날짜(YYYYMMDD)만 허용하고, 00000000/공백은 제외
WHERE REGEXP_LIKE(src_dt, '^[0-9]{8}$')
  AND src_dt NOT IN ('00000000')
  AND SUBSTR(src_dt,1,4) &amp;lt;&amp;gt; '0000'&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;3) 안전 변환(실패 시 NULL 처리) 패턴&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;-- 12.2+ 환경에서 유용: 변환 실패 시 NULL
SELECT TO_DATE(src_dt DEFAULT NULL ON CONVERSION ERROR, 'YYYYMMDD')
FROM   src;&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;주의&lt;/strong&gt;&lt;br&gt;
            “변환 실패 시 NULL”은 장애는 막지만 데이터 품질 이슈를 숨길 수 있습니다.&lt;br&gt;
            운영에서는 NULL 처리와 함께 “오류 레코드 별도 적재/리포트”를 같이 설계하는 편이 안전합니다.
          &lt;/div&gt;

          &lt;h3&gt;4) 애플리케이션 바인딩 표준화&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;-- 권장 원칙(개념)
- 애플리케이션은 날짜 파라미터를 문자열로 만들지 말고 DATE/TIMESTAMP 타입으로 바인딩
- SQL 내부에서 문자열 날짜를 만들 필요가 있으면 포맷을 강제(TO_DATE/TO_TIMESTAMP)
- 세션 NLS에 기대는 로직(암묵 변환)을 제거&lt;/code&gt;&lt;/pre&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;재발 방지&lt;/h2&gt;

          &lt;ul&gt;
            &lt;li&gt;&lt;strong&gt;입력 표준&lt;/strong&gt;: 날짜는 한 가지 포맷(예: &lt;code&gt;YYYY-MM-DD&lt;/code&gt; 또는 &lt;code&gt;YYYYMMDD&lt;/code&gt;)로만 저장/전달&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;암묵 변환 금지&lt;/strong&gt;: DATE/TIMESTAMP 컬럼에 문자열 비교/대입을 하지 않도록 코딩 규칙화&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;데이터 품질 규칙&lt;/strong&gt;: &lt;code&gt;0000&lt;/code&gt;년, &lt;code&gt;00000000&lt;/code&gt;, &lt;code&gt;99999999&lt;/code&gt; 등 더미 값을 명시적으로 금지&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;에러 레코드 격리&lt;/strong&gt;: 적재 실패 데이터는 별도 테이블/파일로 분리해 원인 추적 가능하게 유지&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;NLS 고정&lt;/strong&gt;: 배치/ETL 계정은 세션 시작 시 NLS 포맷을 명시적으로 세팅(필요 시)&lt;/li&gt;
          &lt;/ul&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;실제 사용 시&lt;/strong&gt;&lt;br&gt;
            날짜 오류는 결국 “데이터 규칙 부재”에서 반복됩니다.&lt;br&gt;
            한 번 터진 ORA-01841은, 입력 데이터 규칙과 변환 표준을 문서로 고정하지 않으면 다시 터질 확률이 높습니다.
          &lt;/div&gt;
        &lt;/section&gt;

      &lt;/article&gt;
    &lt;/div&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;ORA-01841 해결: 날짜 값 범위 오류 점검과 변환 표준화&quot;,
              &quot;item&quot;: &quot;https://example.com/post/ora-01841-date-range&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;TechArticle&quot;,
          &quot;headline&quot;: &quot;ORA-01841 해결: 날짜 값 범위 오류 점검과 변환 표준화&quot;,
          &quot;description&quot;: &quot;ORA-01841 오류는 연도(YYYY) 값이 0이거나 허용 범위를 벗어난 날짜/시간 값이 변환 과정에서 발생할 때 나타난다. 환경 점검부터 NLS 설정, TO_DATE/TO_TIMESTAMP 변환, 바인드 변수, ETL 입력 데이터 검증까지 단계별로 정리한다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/post/ora-01841-date-range&quot;
          },
          &quot;keywords&quot;: [
            &quot;ORA-01841&quot;,
            &quot;Oracle 날짜 오류&quot;,
            &quot;TO_DATE&quot;,
            &quot;TO_TIMESTAMP&quot;,
            &quot;NLS_DATE_FORMAT&quot;,
            &quot;NLS_TIMESTAMP_FORMAT&quot;,
            &quot;YYYY year 0&quot;,
            &quot;날짜 파싱&quot;,
            &quot;바인드 변수&quot;,
            &quot;ETL 데이터 정합성&quot;
          ]
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>지식 공유/DBMS</category>
      <category>ETL 데이터 정합성</category>
      <category>NLS_DATE_FORMAT</category>
      <category>NLS_TIMESTAMP_FORMAT</category>
      <category>ORA-01841</category>
      <category>Oracle 날짜 오류</category>
      <category>TO_DATE</category>
      <category>to_timestamp</category>
      <category>YYYY year 0</category>
      <category>날짜 파싱</category>
      <category>바인드 변수</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/549</guid>
      <comments>https://togethergrow.tistory.com/entry/ORA-01841-%ED%95%B4%EA%B2%B0-%EB%82%A0%EC%A7%9C-%EA%B0%92-%EB%B2%94%EC%9C%84-%EC%98%A4%EB%A5%98-%EC%A0%90%EA%B2%80%EA%B3%BC-%EB%B3%80%ED%99%98-%ED%91%9C%EC%A4%80%ED%99%94#entry549comment</comments>
      <pubDate>Thu, 4 Jun 2026 16:40:06 +0900</pubDate>
    </item>
    <item>
      <title>ORA-24256 해결: 네트워크 ACL 설정 오류 점검</title>
      <link>https://togethergrow.tistory.com/entry/ORA-24256-%ED%95%B4%EA%B2%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-ACL-%EC%84%A4%EC%A0%95-%EC%98%A4%EB%A5%98-%EC%A0%90%EA%B2%80</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;ORA-24256 해결: 네트워크 ACL 설정 오류 점검&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;ORA-24256 오류는 주로 Oracle 네트워크 ACL(Access Control List) 구성 문제로 발생한다. 증상 확인부터 1차 점검, 심화 분석, 복구, 재발 방지까지 운영 환경에서 바로 적용 가능한 절차를 정리한다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;ORA-24256,Oracle ACL,DBMS_NETWORK_ACL_ADMIN,네트워크 권한,UTL_HTTP,UTL_SMTP,UTL_TCP,메일 발송 오류,HTTPS 호출,19c&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;ORA-24256 해결: 네트워크 ACL 설정 오류 점검&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;UTL_HTTP/UTL_SMTP/UTL_TCP 호출 시 ORA-24256이 발생할 때, ACL 누락·중복·권한 미부여를 빠르게 진단하고 복구하는 방법.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/post/ora-24256-acl&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;ORA-24256 해결: 네트워크 ACL 설정 오류 점검&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;운영 환경에서 자주 나오는 ORA-24256(네트워크 ACL) 오류를 개요/환경/증상/점검/복구/재발 방지 흐름으로 정리.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .article-wrap{line-height:1.7; word-break:keep-all;}
    .article-wrap .content-inner{max-width:980px; margin:0 auto; padding:0 10px;}
    .article-wrap h1{font-size:1.9rem; margin:0 0 14px;}
    .article-wrap h2{font-size:1.35rem; margin:26px 0 10px;}
    .article-wrap h3{font-size:1.1rem; margin:18px 0 10px;}
    .article-wrap p{margin:10px 0;}
    .article-wrap ul{margin:10px 0 10px 18px;}
    .article-wrap li{margin:6px 0;}
    .article-wrap .note{
      border:1px solid rgba(0,0,0,0.12);
      border-radius:14px;
      padding:12px 14px;
      margin:12px 0;
    }
    .article-wrap .note strong{display:inline-block; margin-bottom:6px;}
    .article-wrap pre{
      overflow:auto;
      border:1px solid rgba(0,0,0,0.12);
      border-radius:14px;
      padding:12px 14px;
      margin:12px 0;
    }
    .article-wrap code{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace;}
    .article-wrap table{width:100%; border-collapse:collapse; margin:12px 0; overflow:hidden; border-radius:14px; border:1px solid rgba(0,0,0,0.12);}
    .article-wrap th,.article-wrap td{border-top:1px solid rgba(0,0,0,0.12); padding:10px; vertical-align:top; text-align:left;}
    .article-wrap th{font-weight:700; background:rgba(0,0,0,0.03);}
    .article-wrap .divider{height:1px; background:rgba(0,0,0,0.08); margin:18px 0;}
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;div class=&quot;content-inner&quot;&gt;
      &lt;article&gt;
        &lt;header&gt;
          &lt;h1&gt;ORA-24256 해결: 네트워크 ACL 설정 오류 점검&lt;/h1&gt;
          &lt;p&gt;
            &lt;strong&gt;ORA-24256&lt;/strong&gt;은 대체로 DB에서 외부 네트워크(HTTP/HTTPS, SMTP, TCP 등)로 나가려는 시도 중
            &lt;strong&gt;네트워크 ACL(Access Control List)&lt;/strong&gt; 설정이 맞지 않아 발생하는 오류입니다.
            일반오류형(확장형 매뉴얼) 흐름으로, 운영 환경에서 바로 확인 가능한 점검과 복구 절차를 정리합니다.
          &lt;/p&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;실무 기준으로 보면&lt;/strong&gt;&lt;br&gt;
            ORA-24256은 “네트워크가 안 된다”가 아니라 “DB 사용자에게 네트워크 권한이 없다/잘못 매핑됐다”에 가깝습니다.&lt;br&gt;
            즉, OS 방화벽이나 라우팅 문제를 보기 전에 ACL 매핑과 권한을 먼저 확인하는 게 시간을 절약합니다.
          &lt;/div&gt;
        &lt;/header&gt;

        &lt;section&gt;
          &lt;h2&gt;개요&lt;/h2&gt;

          &lt;p&gt;
            Oracle은 보안 강화를 위해 DB 내부에서 외부 네트워크로 연결하는 기능(예: &lt;code&gt;UTL_HTTP&lt;/code&gt;, &lt;code&gt;UTL_SMTP&lt;/code&gt;, &lt;code&gt;UTL_TCP&lt;/code&gt;)을
            기본적으로 제한하고, &lt;strong&gt;ACL로 허용 대상(호스트/포트)과 주체(스키마)&lt;/strong&gt;를 명시적으로 부여하도록 설계되어 있습니다.
            ACL이 누락되거나 중복되거나, 권한이 잘못 부여되면 ORA-24256 같은 네트워크 ACL 관련 오류가 발생합니다.
          &lt;/p&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;환경&lt;/h2&gt;

          &lt;ul&gt;
            &lt;li&gt;DB: Oracle Database (11g 이후 전반, 19c/21c 환경에서 특히 자주 확인)&lt;/li&gt;
            &lt;li&gt;기능: DB 내부에서 외부 호출(HTTP/HTTPS API, SMTP 메일, TCP 소켓 등)&lt;/li&gt;
            &lt;li&gt;주요 패키지: &lt;code&gt;UTL_HTTP&lt;/code&gt;, &lt;code&gt;UTL_SMTP&lt;/code&gt;, &lt;code&gt;UTL_TCP&lt;/code&gt;, &lt;code&gt;DBMS_NETWORK_ACL_ADMIN&lt;/code&gt;&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;증상&lt;/h2&gt;

          &lt;p&gt;대표적인 발생 패턴은 아래와 같습니다.&lt;/p&gt;

          &lt;ul&gt;
            &lt;li&gt;PL/SQL에서 외부 API 호출 시 실패(&lt;code&gt;UTL_HTTP&lt;/code&gt; 사용)&lt;/li&gt;
            &lt;li&gt;DB에서 메일 발송 시 실패(&lt;code&gt;UTL_SMTP&lt;/code&gt; 사용)&lt;/li&gt;
            &lt;li&gt;소켓 통신 시 실패(&lt;code&gt;UTL_TCP&lt;/code&gt; 사용)&lt;/li&gt;
            &lt;li&gt;오류 로그에 &lt;code&gt;ORA-24256&lt;/code&gt;이 포함되어 ACL/권한 문제로 의심되는 상황&lt;/li&gt;
          &lt;/ul&gt;

          &lt;pre&gt;&lt;code&gt;-- 예시(형태)
ORA-24256: ... (네트워크 ACL 관련 오류)
ORA-24247: network access denied by access control list (같이 동반되는 경우가 많음)&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;포인트&lt;/strong&gt;&lt;br&gt;
            ORA-24247(ACL로 거부)와 함께 나타나는 경우가 흔합니다.&lt;br&gt;
            ORA-24256이 단독으로 보이더라도, 실질적인 원인은 ACL 매핑/권한 설정에서 찾는 경우가 많습니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;1차 점검&lt;/h2&gt;

          &lt;p&gt;
            가장 먼저 “어떤 계정이, 어디로, 어떤 포트로 나가려 했는지”를 확정해야 합니다.
            이 3가지가 확정되지 않으면 ACL을 만들어도 빗나갈 가능성이 큽니다.
          &lt;/p&gt;

          &lt;table&gt;
            &lt;thead&gt;
              &lt;tr&gt;
                &lt;th&gt;점검 항목&lt;/th&gt;
                &lt;th&gt;확인 포인트&lt;/th&gt;
              &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
              &lt;tr&gt;
                &lt;td&gt;호출 주체(스키마)&lt;/td&gt;
                &lt;td&gt;프로시저 실행 계정(OWNER), 프록시/권한 위임 여부, 잡(Job) 실행 계정&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;대상 호스트&lt;/td&gt;
                &lt;td&gt;도메인/아이피, 와일드카드 적용 필요 여부(서브도메인 포함)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;대상 포트&lt;/td&gt;
                &lt;td&gt;HTTP(80), HTTPS(443), SMTP(25/587) 등 실제 포트 범위&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;네임 리졸브&lt;/td&gt;
                &lt;td&gt;DB 서버에서 DNS가 제대로 되는지(호스트명 사용 시)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;네트워크 레벨 차단&lt;/td&gt;
                &lt;td&gt;OS 방화벽/보안장비가 막는지(ACL 설정 후에도 실패한다면 의심)&lt;/td&gt;
              &lt;/tr&gt;
            &lt;/tbody&gt;
          &lt;/table&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;실무 팁&lt;/strong&gt;&lt;br&gt;
            “ACL은 맞는데도 안 된다”는 케이스의 상당수는 DNS/방화벽/프록시 문제입니다.&lt;br&gt;
            다만 ORA-24256이 보이는 순간만큼은 우선순위를 ACL 점검으로 두는 게 일반적으로 빠릅니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;심화 분석&lt;/h2&gt;

          &lt;p&gt;
            ORA-24256을 유발하는 대표적인 ACL 이슈는 아래 3가지로 압축됩니다.
          &lt;/p&gt;

          &lt;ul&gt;
            &lt;li&gt;&lt;strong&gt;ACL 누락&lt;/strong&gt;: 대상 호스트/포트에 매핑된 ACL이 없거나, 스키마 권한이 없음&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;ACL 중복/충돌&lt;/strong&gt;: 같은 호스트/포트에 여러 ACL이 엮여 기대와 다른 룰이 적용&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;권한 종류 불일치&lt;/strong&gt;: 필요 권한(connect/resolve)이 빠짐 또는 다른 스키마에만 부여됨&lt;/li&gt;
          &lt;/ul&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;h3&gt;현재 ACL 상태 확인(조회)&lt;/h3&gt;
          &lt;p&gt;아래 조회로 “어떤 ACL이 어떤 호스트/포트에 붙어 있는지”부터 확인합니다.&lt;/p&gt;

          &lt;pre&gt;&lt;code&gt;-- 호스트/포트 매핑 확인
SELECT host, lower_port, upper_port, acl
FROM   dba_network_acls
ORDER  BY host, lower_port, upper_port;

-- ACL에 부여된 권한(주체/권한 종류) 확인
SELECT acl, principal, privilege, is_grant, invert
FROM   dba_network_acl_privileges
ORDER  BY acl, principal, privilege;&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;운영 환경에서는&lt;/strong&gt;&lt;br&gt;
            “원칙상 최소 권한”이 중요합니다.&lt;br&gt;
            무작정 &lt;code&gt;*&lt;/code&gt; 호스트나 광범위 포트를 열기보다, 업무에 필요한 호스트/포트만 열고 스키마도 제한하는 편이 안전합니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;복구&lt;/h2&gt;

          &lt;p&gt;
            아래는 가장 흔한 복구 패턴(예: 특정 스키마가 특정 API 서버의 443으로 나가야 하는 상황) 기준의 예시입니다.
            실제 적용 전, &lt;strong&gt;호스트/포트/스키마&lt;/strong&gt;를 운영 환경 값으로 교체하세요.
          &lt;/p&gt;

          &lt;h3&gt;1) 필요한 권한(connect, resolve) 부여&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;BEGIN
  -- 예시: APPUSER 스키마가 api.example.com (443)로 나가야 하는 경우
  DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
    host =&amp;gt; 'api.example.com',
    lower_port =&amp;gt; 443,
    upper_port =&amp;gt; 443,
    ace =&amp;gt; xs$ace_type(
      privilege_list =&amp;gt; xs$name_list('connect','resolve'),
      principal_name =&amp;gt; 'APPUSER',
      principal_type =&amp;gt; xs_acl.ptype_db
    )
  );
END;
/
COMMIT;&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;주의&lt;/strong&gt;&lt;br&gt;
            Oracle 버전/패치 레벨에 따라 ACL 관리 API가 다르게 쓰이는 환경이 있습니다.&lt;br&gt;
            위 예시는 12c 이후에서 흔히 쓰는 ACE 기반 방식이며, 기존 ACL 파일 기반(&lt;code&gt;CREATE_ACL&lt;/code&gt;/&lt;code&gt;ASSIGN_ACL&lt;/code&gt;) 환경이라면 절차가 달라질 수 있습니다.
          &lt;/div&gt;

          &lt;h3&gt;2) 적용 확인(간단 테스트)&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;-- UTL_HTTP 예시(업무에 맞는 테스트로 대체)
DECLARE
  l_req  UTL_HTTP.req;
  l_resp UTL_HTTP.resp;
  l_line VARCHAR2(32767);
BEGIN
  l_req := UTL_HTTP.begin_request('https://api.example.com/health');
  l_resp := UTL_HTTP.get_response(l_req);
  UTL_HTTP.read_line(l_resp, l_line, TRUE);
  UTL_HTTP.end_response(l_resp);
END;
/
&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;HTTPS 호출이 계속 실패한다면&lt;/strong&gt;&lt;br&gt;
            ACL이 아니라 지갑(Wallet) 인증서, TLS 정책, 프록시 설정 문제일 수 있습니다.&lt;br&gt;
            이 경우 ORA-24256이 아닌 다른 SSL/TLS 관련 오류가 함께 보이는지 로그를 확인하세요.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;재발 방지&lt;/h2&gt;

          &lt;ul&gt;
            &lt;li&gt;&lt;strong&gt;ACL 표준&lt;/strong&gt; 수립: 서비스별(메일/API/내부연동) 허용 호스트/포트/스키마를 문서화&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;최소 권한&lt;/strong&gt; 유지: 필요한 스키마만, 필요한 호스트/포트만 열기&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;변경관리&lt;/strong&gt; 적용: 신규 연동 추가 시 “ACL 변경 → 테스트 → 승인” 절차를 릴리즈 프로세스에 포함&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;점검 쿼리 상시화&lt;/strong&gt;: &lt;code&gt;DBA_NETWORK_ACLS&lt;/code&gt;, &lt;code&gt;DBA_NETWORK_ACL_PRIVILEGES&lt;/code&gt; 결과를 정기 점검&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;운영 로그 확보&lt;/strong&gt;: 실패 시점의 스키마/호스트/포트/패키지 호출 경로가 남도록 로깅 강화&lt;/li&gt;
          &lt;/ul&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;실제 사용 시&lt;/strong&gt;&lt;br&gt;
            “급해서 전체 허용”을 한 번 열어버리면, 나중에 닫기가 매우 어렵습니다.&lt;br&gt;
            처음부터 업무 단위로 ACL을 쪼개고, 변경 기록을 남기는 방식이 장기적으로 운영 비용을 줄입니다.
          &lt;/div&gt;
        &lt;/section&gt;

      &lt;/article&gt;
    &lt;/div&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;ORA-24256 해결: 네트워크 ACL 설정 오류 점검&quot;,
              &quot;item&quot;: &quot;https://example.com/post/ora-24256-acl&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;TechArticle&quot;,
          &quot;headline&quot;: &quot;ORA-24256 해결: 네트워크 ACL 설정 오류 점검&quot;,
          &quot;description&quot;: &quot;ORA-24256 오류는 주로 Oracle 네트워크 ACL(Access Control List) 구성 문제로 발생한다. 증상 확인부터 1차 점검, 심화 분석, 복구, 재발 방지까지 운영 환경에서 바로 적용 가능한 절차를 정리한다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/post/ora-24256-acl&quot;
          },
          &quot;keywords&quot;: [
            &quot;ORA-24256&quot;,
            &quot;Oracle ACL&quot;,
            &quot;DBMS_NETWORK_ACL_ADMIN&quot;,
            &quot;네트워크 권한&quot;,
            &quot;UTL_HTTP&quot;,
            &quot;UTL_SMTP&quot;,
            &quot;UTL_TCP&quot;,
            &quot;메일 발송 오류&quot;,
            &quot;HTTPS 호출&quot;
          ]
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>지식 공유/DBMS</category>
      <category>19C</category>
      <category>dbms_network_acl_admin</category>
      <category>HTTPS 호출</category>
      <category>ORA-24256</category>
      <category>Oracle ACL</category>
      <category>UTL_HTTP</category>
      <category>utl_smtp</category>
      <category>UTL_TCP</category>
      <category>네트워크 권한</category>
      <category>메일 발송 오류</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/548</guid>
      <comments>https://togethergrow.tistory.com/entry/ORA-24256-%ED%95%B4%EA%B2%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-ACL-%EC%84%A4%EC%A0%95-%EC%98%A4%EB%A5%98-%EC%A0%90%EA%B2%80#entry548comment</comments>
      <pubDate>Thu, 4 Jun 2026 16:33:46 +0900</pubDate>
    </item>
    <item>
      <title>개인정보 유출 &amp;lsquo;가능성&amp;rsquo;도 72시간 내 통지&amp;hellip;CPO&amp;middot;ISMS-P 의무 확대</title>
      <link>https://togethergrow.tistory.com/entry/%EA%B0%9C%EC%9D%B8%EC%A0%95%EB%B3%B4-%EC%9C%A0%EC%B6%9C-%E2%80%98%EA%B0%80%EB%8A%A5%EC%84%B1%E2%80%99%EB%8F%84-72%EC%8B%9C%EA%B0%84-%EB%82%B4-%ED%86%B5%EC%A7%80%E2%80%A6CPO%C2%B7ISMS-P-%EC%9D%98%EB%AC%B4-%ED%99%95%EB%8C%80</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;개인정보 유출 ‘가능성’도 72시간 내 통지…CPO·ISMS-P 의무 확대&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;개인정보 보호법 시행령 개정안 입법예고로 유출 가능성 단계부터 72시간 내 통지가 요구되고, 대규모 개인정보처리자의 CPO 이사회 의결·신고 의무와 통신사·본인확인기관·초대형 플랫폼의 ISMS-P 의무가 구체화된다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;개인정보 보호법 시행령,72시간 통지,개인정보 유출 가능성,CPO 이사회 의결,CPO 신고,ISMS-P 의무화,개인정보보호위원회,불법 접근,불법 유통,과태료 기준&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;개인정보 유출 ‘가능성’도 72시간 내 통지…CPO·ISMS-P 의무 확대&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;유출 확인 전이라도 72시간 내 통지, CPO 독립성 강화(이사회 의결·신고), ISMS-P 의무 대상 구체화까지 핵심 변화 정리.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/post/pipc-72h-notice-cpo-isms-p&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;개인정보 유출 ‘가능성’도 72시간 내 통지…CPO·ISMS-P 의무 확대&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;침해 정황 단계부터 통지·신고 체계가 빨라진다. 대규모 처리자 CPO 절차와 ISMS-P 인증 의무 확대 포인트.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .article-wrap{line-height:1.7; word-break:keep-all;}
    .article-wrap .content-inner{max-width:980px; margin:0 auto; padding:0 10px;}
    .article-wrap h1{font-size:1.9rem; margin:0 0 14px;}
    .article-wrap h2{font-size:1.35rem; margin:26px 0 10px;}
    .article-wrap h3{font-size:1.1rem; margin:18px 0 10px;}
    .article-wrap p{margin:10px 0;}
    .article-wrap ul{margin:10px 0 10px 18px;}
    .article-wrap li{margin:6px 0;}
    .article-wrap .note{
      border:1px solid rgba(0,0,0,0.12);
      border-radius:14px;
      padding:12px 14px;
      margin:12px 0;
    }
    .article-wrap .note strong{display:inline-block; margin-bottom:6px;}
    .article-wrap .grid{
      display:grid;
      grid-template-columns:1fr;
      gap:10px;
      margin:10px 0;
    }
    .article-wrap .card{
      border:1px solid rgba(0,0,0,0.12);
      border-radius:14px;
      padding:12px 14px;
    }
    .article-wrap .card .k{font-weight:700; margin-bottom:6px;}
    .article-wrap .pill{
      display:inline-block;
      border:1px solid rgba(0,0,0,0.12);
      border-radius:999px;
      padding:4px 10px;
      margin:4px 6px 0 0;
      font-size:0.92rem;
      white-space:nowrap;
    }
    .article-wrap .divider{height:1px; background:rgba(0,0,0,0.08); margin:18px 0;}
    .article-wrap table{width:100%; border-collapse:collapse; margin:12px 0; overflow:hidden; border-radius:14px; border:1px solid rgba(0,0,0,0.12);}
    .article-wrap th,.article-wrap td{border-top:1px solid rgba(0,0,0,0.12); padding:10px; vertical-align:top; text-align:left;}
    .article-wrap th{font-weight:700; background:rgba(0,0,0,0.03);}
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;div class=&quot;content-inner&quot;&gt;
      &lt;article&gt;
        &lt;header&gt;
          &lt;h1&gt;개인정보 유출 ‘가능성’도 72시간 내 통지…CPO·ISMS-P 의무 확대&lt;/h1&gt;
          &lt;p&gt;
            개인정보 보호 체계가 “유출이 확인된 뒤 대응”에서 “유출 가능성이 보이면 즉시 대응”으로 한 단계 더 앞당겨지는 흐름이다.
            개인정보 보호법 개정에 맞춰 시행령 개정안이 입법예고되면서,
            &lt;strong&gt;72시간 내 통지&lt;/strong&gt;, &lt;strong&gt;CPO 독립성 강화&lt;/strong&gt;, &lt;strong&gt;ISMS-P 인증 의무 확대&lt;/strong&gt;가 구체적인 요건과 절차로 정리됐다.
          &lt;/p&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;실무 기준으로 보면&lt;/strong&gt;&lt;br&gt;
            “72시간”은 사실상 시간표가 정해진 대응 훈련을 요구합니다.&lt;br&gt;
            탐지 → 내부 판단 → 법정 통지까지의 지연 구간이 어디인지 먼저 드러내고, 조직이 그 구간을 줄일 수 있어야 합니다.
          &lt;/div&gt;
        &lt;/header&gt;

        &lt;section&gt;
          &lt;h2&gt;핵심 변화 3가지&lt;/h2&gt;

          &lt;div&gt;
            &lt;span class=&quot;pill&quot;&gt;유출 ‘가능성’도 72시간 통지&lt;/span&gt;
            &lt;span class=&quot;pill&quot;&gt;CPO 이사회 의결·신고&lt;/span&gt;
            &lt;span class=&quot;pill&quot;&gt;ISMS-P 의무 대상 구체화&lt;/span&gt;
          &lt;/div&gt;

          &lt;ul&gt;
            &lt;li&gt;&lt;strong&gt;유출 가능성 단계&lt;/strong&gt;에서도 일정 요건을 충족하면 정보주체에게 &lt;strong&gt;72시간 이내 통지&lt;/strong&gt;&lt;/li&gt;
            &lt;li&gt;대규모 개인정보처리자는 &lt;strong&gt;CPO 지정·변경·해제&lt;/strong&gt; 시 &lt;strong&gt;이사회 의결&lt;/strong&gt; 및 &lt;strong&gt;개인정보위 신고&lt;/strong&gt;&lt;/li&gt;
            &lt;li&gt;이동통신사·본인확인기관·초대형 플랫폼 등 &lt;strong&gt;ISMS-P 인증 의무&lt;/strong&gt;가 더 명확해지고 범위가 확대&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;1) “유출 확인 전”이라도 72시간 내 통지&lt;/h2&gt;

          &lt;p&gt;
            이번 개정 흐름의 중심은 통지 기준이 더 앞단으로 이동했다는 점이다.
            단순히 분실·도난·유출이 “확인”된 경우뿐 아니라,
            침해 정황이 뚜렷하거나 불법 유통 징후를 인지한 경우에는 정보주체가 선제 조치를 할 수 있도록
            &lt;strong&gt;72시간 내 통지&lt;/strong&gt;가 요구된다.
          &lt;/p&gt;

          &lt;div class=&quot;grid&quot;&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;통지 트리거(요지)&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                개인정보처리시스템에 대한 &lt;strong&gt;불법적 접근&lt;/strong&gt;을 알게 된 경우&lt;br&gt;
                개인정보가 &lt;strong&gt;불법적으로 거래·유통&lt;/strong&gt;되고 있음을 알게 된 경우&lt;br&gt;
                (또는 유출 등 가능성을 인지한 경우로 연결되는 기준이 정비되는 흐름)
              &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;대상 범위 확장(요지)&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                분실·도난·유출뿐 아니라 &lt;strong&gt;위조·변조·훼손&lt;/strong&gt; 같은 ‘침해 결과’도 통지·신고 판단에 포함되는 방향
              &lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;현장에서 가장 어려운 지점&lt;/strong&gt;&lt;br&gt;
            “가능성” 판단입니다.&lt;br&gt;
            알람이 떴다는 이유만으로 곧바로 통지하는 것도 리스크이고, 내부 검토가 길어져 72시간을 넘겨도 리스크입니다.&lt;br&gt;
            그래서 사전에 ‘가능성 판단 기준’과 ‘결정권자 라인’을 문서화하는 게 핵심입니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;2) 대규모 개인정보처리자 CPO, 이사회 의결·신고 의무&lt;/h2&gt;

          &lt;p&gt;
            개인정보 보호책임자(CPO)의 권한과 독립성을 강화하기 위해,
            일정 규모 이상의 개인정보처리자는 &lt;strong&gt;CPO 지정·변경·해제&lt;/strong&gt;를 할 때
            &lt;strong&gt;이사회 의결&lt;/strong&gt;을 거치고 &lt;strong&gt;개인정보보호위원회에 신고&lt;/strong&gt;해야 하는 절차가 구체화된다.
          &lt;/p&gt;

          &lt;h3&gt;대상 기준(요지)&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;연 매출액 또는 수입이 &lt;strong&gt;1,800억 원 이상&lt;/strong&gt;이면서&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;민감정보·고유식별정보 5만 명 이상&lt;/strong&gt; 처리 또는 &lt;strong&gt;개인정보 100만 명 이상&lt;/strong&gt; 처리&lt;/li&gt;
            &lt;li&gt;그 외 일정 규모 대학(재학생 수 기준), 상급종합병원, 공공시스템운영기관 등도 대상에 포함되는 흐름&lt;/li&gt;
          &lt;/ul&gt;

          &lt;h3&gt;신고 절차(요지)&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;CPO 지정·변경·해제 사유 발생일로부터 &lt;strong&gt;1개월 이내 신고&lt;/strong&gt;&lt;/li&gt;
            &lt;li&gt;부득이한 사유가 있으면 &lt;strong&gt;1개월 범위에서 기한 연장&lt;/strong&gt; 가능&lt;/li&gt;
          &lt;/ul&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;관리자 입장에서&lt;/strong&gt;&lt;br&gt;
            이사회 의결·신고는 “서류 업무”가 아니라 책임 구조를 바꾸는 장치입니다.&lt;br&gt;
            CPO가 단순 명목상 담당이 아니라, 실제로 리스크를 중지·조정할 권한을 갖도록 내부 규정과 위임 체계를 같이 손봐야 합니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;3) ISMS-P 의무 대상 구체화와 인증 기한&lt;/h2&gt;

          &lt;p&gt;
            사회적 파급력이 큰 개인정보처리자에 대해 &lt;strong&gt;ISMS-P 인증 의무&lt;/strong&gt;가 확대되는 방향도 명확해졌다.
            특히 통신·본인확인·초대형 플랫폼처럼 다수 이용자 정보를 상시 처리하는 영역이 포함되면서,
            “대규모 처리 = 인증 의무”라는 시그널이 강화되는 분위기다.
          &lt;/p&gt;

          &lt;table&gt;
            &lt;thead&gt;
              &lt;tr&gt;
                &lt;th&gt;구분&lt;/th&gt;
                &lt;th&gt;의무 대상(요지)&lt;/th&gt;
              &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
              &lt;tr&gt;
                &lt;td&gt;공공&lt;/td&gt;
                &lt;td&gt;
                  공공시스템운영기관 중 개인정보위가 고시하는 기관 등
                &lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;통신·본인확인&lt;/td&gt;
                &lt;td&gt;
                  이동통신사업자, 본인확인기관 등
                &lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;민간(초대형 플랫폼 등)&lt;/td&gt;
                &lt;td&gt;
                  전년도 매출액 &lt;strong&gt;1조 원 이상&lt;/strong&gt; + 정보통신서비스 부문 전년도 매출액 &lt;strong&gt;100억 원 이상&lt;/strong&gt;&lt;br&gt;
                  전년도 말 기준 직전 3개월 동안 개인정보가 저장·관리되는 국내 정보주체 수 &lt;strong&gt;일일 평균 3,000만 명 이상&lt;/strong&gt;
                &lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;인증 기한&lt;/td&gt;
                &lt;td&gt;
                  해당 대상은 &lt;strong&gt;2028년 12월 31일까지&lt;/strong&gt; ISMS-P 인증을 받아야 하는 흐름
                &lt;/td&gt;
              &lt;/tr&gt;
            &lt;/tbody&gt;
          &lt;/table&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;실무 포인트&lt;/strong&gt;&lt;br&gt;
            ISMS-P는 단순 체크리스트가 아니라 “운영 증빙”이 핵심입니다.&lt;br&gt;
            정책·절차가 존재하는지보다, 실제로 접근통제·로그·위험평가·개선활동이 반복되고 있는지를 보여줘야 합니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;과태료 기준 정비: 경고도 ‘이력’이 된다&lt;/h2&gt;

          &lt;p&gt;
            과태료 부과 기준도 정비되는 흐름이다.
            경미한 위반으로 과태료를 면제하고 경고 처분을 했더라도,
            이후 동일 위반이 재발하면 해당 경고가 위반 이력으로 산정되어
            다음 단계 기준으로 과태료가 부과될 수 있다.
          &lt;/p&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;조직이 지금 점검할 체크리스트&lt;/h2&gt;

          &lt;p&gt;
            시행 전까지 기업과 기관이 준비해야 할 항목은 크게 “72시간 타임라인”과 “책임 구조”로 나뉜다.
            아래는 현장에서 바로 적용하기 쉬운 점검 항목이다.
          &lt;/p&gt;

          &lt;div class=&quot;grid&quot;&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;72시간 내 통지 프로세스&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                침해 정황 인지 시각을 기준으로 타임라인 시작(누가, 어떤 이벤트를 ‘인지’로 볼지 정의)&lt;br&gt;
                법정 통지 템플릿·채널(문자/이메일/앱 공지 등) 사전 준비&lt;br&gt;
                야간/주말 대응 체계(대체 결재 라인, 비상 연락망) 확보
              &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;가능성 판단 기준&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                불법 접근 징후(계정 탈취, 비정상 인증, 권한 상승, 대량 조회/반출) 기준화&lt;br&gt;
                불법 유통 모니터링(다크웹·텔레그램·마켓) 탐지 후 ‘사실 확인’ 절차 단축&lt;br&gt;
                “통지한다/보류한다” 결정권자와 근거 기록(사후 감사 대비)
              &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;CPO 독립성·이사회 의결 대응&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                CPO 직무범위·중지권·보고 라인 명문화&lt;br&gt;
                지정/변경/해제 시 이사회 안건 템플릿과 일정 확보&lt;br&gt;
                신고 기한(1개월) 내 제출을 위한 HR·법무·보안 협업 루틴 마련
              &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;ISMS-P 준비&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                범위(시스템/조직/서비스) 확정과 자산 목록 정리&lt;br&gt;
                접근통제·로그·취약점 관리·사고대응·개인정보 영향평가 등 운영 증빙 축적&lt;br&gt;
                인증 일정 역산(심사 대응, 개선 조치, 재심사 가능성 포함)
              &lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;실제 사용 시&lt;/strong&gt;&lt;br&gt;
            사고는 “기술적 탐지”보다 “조직의 의사결정 지연”에서 72시간을 잃는 경우가 많습니다.&lt;br&gt;
            그래서 통지 요건과 판단 기준을 기술 문서가 아니라, 결재 라인과 함께 운영 문서로 고정하는 게 효과적입니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;정리&lt;/h2&gt;

          &lt;p&gt;
            이번 시행령 개정 흐름은 개인정보 보호를 “사후 보고”가 아니라 “사전 예방·조기 통지”로 옮겨놓는다.
            유출 가능성 단계의 72시간 통지, CPO 이사회 의결·신고로 대표되는 책임 구조 강화,
            그리고 ISMS-P 의무 대상 확대는 서로 연결된 변화다.
            결국 조직이 해야 할 일은 단순히 문서를 늘리는 것이 아니라,
            침해 정황을 빠르게 판단하고 즉시 안내할 수 있는 ‘운영 속도’를 갖추는 것이다.
          &lt;/p&gt;
        &lt;/section&gt;
      &lt;/article&gt;
    &lt;/div&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;개인정보 유출 ‘가능성’도 72시간 내 통지…CPO·ISMS-P 의무 확대&quot;,
              &quot;item&quot;: &quot;https://example.com/post/pipc-72h-notice-cpo-isms-p&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;BlogPosting&quot;,
          &quot;headline&quot;: &quot;개인정보 유출 ‘가능성’도 72시간 내 통지…CPO·ISMS-P 의무 확대&quot;,
          &quot;description&quot;: &quot;개인정보 보호법 시행령 개정안 입법예고로 유출 가능성 단계부터 72시간 내 통지가 요구되고, 대규모 개인정보처리자의 CPO 이사회 의결·신고 의무와 통신사·본인확인기관·초대형 플랫폼의 ISMS-P 의무가 구체화된다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/post/pipc-72h-notice-cpo-isms-p&quot;
          },
          &quot;keywords&quot;: [
            &quot;개인정보 보호법 시행령&quot;,
            &quot;72시간 통지&quot;,
            &quot;개인정보 유출 가능성&quot;,
            &quot;CPO 이사회 의결&quot;,
            &quot;CPO 신고&quot;,
            &quot;ISMS-P 의무화&quot;,
            &quot;개인정보보호위원회&quot;,
            &quot;불법 접근&quot;,
            &quot;불법 유통&quot;,
            &quot;과태료 기준&quot;
          ]
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>IT 소식 뉴스/IT 소식</category>
      <category>72시간 통지</category>
      <category>CPO 신고</category>
      <category>CPO 이사회 의결</category>
      <category>ISMS-P 의무화</category>
      <category>개인정보 보호법 시행령</category>
      <category>개인정보 유출 가능성</category>
      <category>개인정보보호위원회</category>
      <category>과태료 기준</category>
      <category>불법 유통</category>
      <category>불법 접근</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/547</guid>
      <comments>https://togethergrow.tistory.com/entry/%EA%B0%9C%EC%9D%B8%EC%A0%95%EB%B3%B4-%EC%9C%A0%EC%B6%9C-%E2%80%98%EA%B0%80%EB%8A%A5%EC%84%B1%E2%80%99%EB%8F%84-72%EC%8B%9C%EA%B0%84-%EB%82%B4-%ED%86%B5%EC%A7%80%E2%80%A6CPO%C2%B7ISMS-P-%EC%9D%98%EB%AC%B4-%ED%99%95%EB%8C%80#entry547comment</comments>
      <pubDate>Thu, 4 Jun 2026 09:34:15 +0900</pubDate>
    </item>
    <item>
      <title>폰투온 베를린 2026 둘째 날, AI&amp;middot;클라우드부터 익스체인지까지 연쇄 제로데이</title>
      <link>https://togethergrow.tistory.com/entry/%ED%8F%B0%ED%88%AC%EC%98%A8-%EB%B2%A0%EB%A5%BC%EB%A6%B0-2026-%EB%91%98%EC%A7%B8-%EB%82%A0-AI%C2%B7%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C%EB%B6%80%ED%84%B0-%EC%9D%B5%EC%8A%A4%EC%B2%B4%EC%9D%B8%EC%A7%80%EA%B9%8C%EC%A7%80-%EC%97%B0%EC%87%84-%EC%A0%9C%EB%A1%9C%EB%8D%B0%EC%9D%B4</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;폰투온 베를린 2026 둘째 날, AI·클라우드부터 익스체인지까지 연쇄 제로데이&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;Pwn2Own Berlin 2026 둘째 날에는 익스체인지·윈도우 11·레드햇 리눅스·엔비디아 컨테이너·AI 코딩 에이전트 등에서 15개 신규 제로데이가 공개됐다. 한국 팀 ‘아웃 오브 바운스’는 AI 분야 연속 성공으로 2위권 경쟁을 이어갔다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;Pwn2Own Berlin 2026,ZDI,제로데이,Microsoft Exchange,Windows 11,NVIDIA Container Toolkit,Red Hat Enterprise Linux,AI 코딩 에이전트,Cursor,OpenAI Codex&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;폰투온 베를린 2026 둘째 날, AI·클라우드부터 익스체인지까지 연쇄 제로데이&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;익스체인지 SYSTEM RCE, 윈도우 11 권한 상승, 엔비디아 컨테이너 툴킷 UAF, AI 코딩 에이전트 해킹까지…둘째 날만 15개 신규 제로데이 공개.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/post/pwn2own-berlin-2026-day2&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;폰투온 베를린 2026 둘째 날, AI·클라우드부터 익스체인지까지 연쇄 제로데이&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;AI 도구가 공격 표적의 중심으로 이동한 하루. 익스체인지·윈도우 11·엔비디아 컨테이너·Cursor·Codex까지 연쇄 성공.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .article-wrap{line-height:1.7; word-break:keep-all;}
    .article-wrap .content-inner{max-width:980px; margin:0 auto; padding:0 10px;}
    .article-wrap h1{font-size:1.9rem; margin:0 0 14px;}
    .article-wrap h2{font-size:1.35rem; margin:26px 0 10px;}
    .article-wrap h3{font-size:1.1rem; margin:18px 0 10px;}
    .article-wrap p{margin:10px 0;}
    .article-wrap ul{margin:10px 0 10px 18px;}
    .article-wrap li{margin:6px 0;}
    .article-wrap .note{
      border:1px solid rgba(0,0,0,0.12);
      border-radius:14px;
      padding:12px 14px;
      margin:12px 0;
    }
    .article-wrap .note strong{display:inline-block; margin-bottom:6px;}
    .article-wrap .grid{
      display:grid;
      grid-template-columns:1fr;
      gap:10px;
      margin:10px 0;
    }
    .article-wrap .card{
      border:1px solid rgba(0,0,0,0.12);
      border-radius:14px;
      padding:12px 14px;
    }
    .article-wrap .card .k{font-weight:700; margin-bottom:6px;}
    .article-wrap .pill{
      display:inline-block;
      border:1px solid rgba(0,0,0,0.12);
      border-radius:999px;
      padding:4px 10px;
      margin:4px 6px 0 0;
      font-size:0.92rem;
      white-space:nowrap;
    }
    .article-wrap .divider{height:1px; background:rgba(0,0,0,0.08); margin:18px 0;}
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;div class=&quot;content-inner&quot;&gt;
      &lt;article&gt;
        &lt;header&gt;
          &lt;h1&gt;폰투온 베를린 2026 둘째 날, AI·클라우드부터 익스체인지까지 연쇄 제로데이&lt;/h1&gt;
          &lt;p&gt;
            독일 베를린에서 열린 &lt;strong&gt;Pwn2Own Berlin 2026&lt;/strong&gt; 둘째 날은 “공격 표면이 어디까지 넓어졌는가”를 그대로 보여준 하루였다.
            마이크로소프트 익스체인지와 윈도우 11, 레드햇 엔터프라이즈 리눅스 워크스테이션, 엔비디아 컨테이너 환경, AI 코딩 에이전트까지
            다양한 대상에서 연달아 공격이 성공하며 대회 열기가 다시 크게 달아올랐다.
          &lt;/p&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;실무 기준으로 보면&lt;/strong&gt;&lt;br&gt;
            이번 둘째 날은 ‘단일 제품 취약점’보다, 기업 운영 환경에서 실제로 자주 겹치는 영역(메일·OS·컨테이너·개발도구)이 동시에 흔들렸다는 점이 더 중요합니다.&lt;br&gt;
            보안은 개별 솔루션이 아니라 “연쇄 경로”를 끊는 관점으로 재정렬할 필요가 있습니다.
          &lt;/div&gt;
        &lt;/header&gt;

        &lt;section&gt;
          &lt;h2&gt;둘째 날 핵심 숫자&lt;/h2&gt;

          &lt;div&gt;
            &lt;span class=&quot;pill&quot;&gt;신규 제로데이 15개&lt;/span&gt;
            &lt;span class=&quot;pill&quot;&gt;당일 상금 총 385,750달러&lt;/span&gt;
            &lt;span class=&quot;pill&quot;&gt;누적 39개(이틀 합산)&lt;/span&gt;
            &lt;span class=&quot;pill&quot;&gt;이틀 누적 908,750달러&lt;/span&gt;
          &lt;/div&gt;

          &lt;p&gt;
            둘째 날에는 총 &lt;strong&gt;15개의 신규 제로데이&lt;/strong&gt;가 확인됐고, 당일 지급된 상금은 &lt;strong&gt;385,750달러&lt;/strong&gt;로 집계됐다.
            이틀 합산 기준으로는 &lt;strong&gt;39개 취약점&lt;/strong&gt;, &lt;strong&gt;908,750달러&lt;/strong&gt;가 누적된 셈이다.
          &lt;/p&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;최대 화제: 익스체인지 SYSTEM 권한 RCE 체인&lt;/h2&gt;

          &lt;p&gt;
            둘째 날 가장 주목받은 장면은 &lt;strong&gt;마이크로소프트 익스체인지&lt;/strong&gt;를 대상으로 한 원격 코드 실행(RCE) 시연이다.
            다중 취약점을 연계한 체인 공격으로 &lt;strong&gt;SYSTEM 권한&lt;/strong&gt;까지 도달하는 시나리오가 성공하며,
            “기업 핵심 인프라의 고전적 표적”이 여전히 가장 큰 파급력을 가진다는 사실을 다시 확인시켰다.
          &lt;/p&gt;

          &lt;div class=&quot;grid&quot;&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;왜 익스체인지가 민감한가&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                메일 서버는 계정·권한·문서 흐름의 중심에 있습니다.&lt;br&gt;
                공격자가 시스템 권한을 확보하면, 내부 확산과 정보 접근의 폭이 급격히 넓어질 수 있습니다.
              &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;운영 측면에서의 경고&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                패치 이전의 탐지·차단은 “시그니처 하나”로 해결되기 어렵습니다.&lt;br&gt;
                접근 제어, 관리면(관리자 경로) 보호, 격리된 운영, 로그 기반 조기 탐지가 함께 돌아가야 합니다.
              &lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;윈도우 11: 권한 상승은 계속 ‘현실’&lt;/h2&gt;

          &lt;p&gt;
            윈도우 11에서는 둘째 날에도 &lt;strong&gt;로컬 권한 상승&lt;/strong&gt; 제로데이가 추가로 공개됐다.
            이런 유형은 외부 침투 이후 내부에서 권한을 끌어올리는 단계에 자주 사용되는 만큼,
            기업 환경에서는 “초기 침투 차단”과 함께 “권한 상승 억제(권한 최소화·격리·탐지)”가 같이 요구된다.
          &lt;/p&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;관리자 입장에서&lt;/strong&gt;&lt;br&gt;
            권한 상승 취약점은 ‘침투 자체’보다 “침투 후 피해 규모”를 좌우합니다.&lt;br&gt;
            로컬 관리자 권한 남용, 과도한 권한 부여, 취약한 드라이버·에이전트 구성이 함께 있으면 피해가 커집니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;레드햇 리눅스·엔비디아 컨테이너: 클라우드 네이티브의 취약점 접점&lt;/h2&gt;

          &lt;p&gt;
            리눅스 워크스테이션 환경에서도 권한 상승 성공이 이어졌고,
            &lt;strong&gt;NVIDIA Container Toolkit&lt;/strong&gt; 역시 취약점 기반 공격이 재현되며 컨테이너 생태계의 긴장감을 높였다.
            컨테이너는 “호스트-컨테이너 경계”가 핵심인데, 이 경계가 흔들리면 멀티테넌트 운영 환경에서 리스크가 커진다.
          &lt;/p&gt;

          &lt;div class=&quot;grid&quot;&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;컨테이너 운영에서 자주 놓치는 부분&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                런타임·툴킷·드라이버까지 포함한 “전체 체인”이 공격 표면입니다.&lt;br&gt;
                이미지 스캔만으로는 부족하고, 런타임 설정·권한 모델·호스트 하드닝이 필수입니다.
              &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;즉시 점검 체크&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                GPU 워크로드 노드의 분리 운영, 최소 권한, 불필요한 디바이스 노출 제거,&lt;br&gt;
                런타임/툴킷 버전 관리와 롤백 전략이 갖춰져 있는지 확인이 필요합니다.
              &lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;AI 코딩 에이전트가 ‘주요 표적’으로 올라선 이유&lt;/h2&gt;

          &lt;p&gt;
            올해 대회에서 가장 큰 변화 중 하나는 &lt;strong&gt;AI 카테고리의 확장&lt;/strong&gt;이다.
            Cursor, OpenAI Codex, Claude Code 등 생성형 AI 기반 개발 도구가 공격 표적에 포함되며,
            “개발 편의 기능”이 곧 “공격 경로”가 될 수 있다는 경고가 현실로 다가왔다.
          &lt;/p&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;핵심 위험 포인트&lt;/strong&gt;&lt;br&gt;
            AI 코딩 도구는 외부 도구·프로토콜·플러그인·레포지토리 등과 연결되는 경우가 많습니다.&lt;br&gt;
            이 연결 지점이 느슨하면, 코드 생성/수정 과정이 공급망 리스크로 이어질 수 있습니다.
          &lt;/div&gt;

          &lt;h3&gt;조직이 준비해야 할 것&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;AI 개발 도구의 권한 범위를 분리(레포지토리 쓰기 권한, 배포 권한, 비밀키 접근 최소화)&lt;/li&gt;
            &lt;li&gt;생성 결과물에 대한 리뷰·정책(금지 API, 민감정보 유출 패턴, 의존성 변경 감시) 강화&lt;/li&gt;
            &lt;li&gt;에이전트가 호출하는 외부 도구 목록을 통제(허용 목록, 네트워크 이그레스 제한)&lt;/li&gt;
            &lt;li&gt;업무망/개발망 분리와 토큰·키 보관 체계 점검&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;한국 팀 ‘아웃 오브 바운스’의 존재감&lt;/h2&gt;

          &lt;p&gt;
            한국 연구진이 포함된 팀 &lt;strong&gt;아웃 오브 바운스(Out Of Bounds)&lt;/strong&gt;는 AI 관련 타깃에서 연속 성공을 기록하며
            둘째 날 기준으로 상위권 경쟁을 이어갔다. 특히 AI 도구 영역이 대회 중심으로 떠오른 상황에서,
            한국 팀이 해당 분야에서 점수를 쌓았다는 점은 의미가 크다.
          &lt;/p&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;p&gt;
            전체적으로 둘째 날은 “AI 도구의 보편화”가 “공격 표면의 대중화”로 직결될 수 있음을 보여줬다.
            메일 서버·OS·컨테이너·개발도구는 서로 분리된 영역처럼 보이지만,
            실제 기업 환경에서는 한 번 연결되면 연쇄적으로 영향을 주는 구성 요소다.
          &lt;/p&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;정리&lt;/h2&gt;

          &lt;p&gt;
            Pwn2Own Berlin 2026 둘째 날은 제로데이 공개 규모 자체도 컸지만,
            표적이 “전통 엔터프라이즈”와 “AI 개발 도구”를 동시에 관통했다는 점에서 상징성이 크다.
            앞으로의 대응은 단순히 제품별 패치만이 아니라,
            개발·운영·클라우드 경계 전반에서 권한과 연결 지점을 재정리하는 방향으로 가야 한다.
          &lt;/p&gt;
        &lt;/section&gt;
      &lt;/article&gt;
    &lt;/div&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;폰투온 베를린 2026 둘째 날, AI·클라우드부터 익스체인지까지 연쇄 제로데이&quot;,
              &quot;item&quot;: &quot;https://example.com/post/pwn2own-berlin-2026-day2&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;BlogPosting&quot;,
          &quot;headline&quot;: &quot;폰투온 베를린 2026 둘째 날, AI·클라우드부터 익스체인지까지 연쇄 제로데이&quot;,
          &quot;description&quot;: &quot;Pwn2Own Berlin 2026 둘째 날에는 익스체인지·윈도우 11·레드햇 리눅스·엔비디아 컨테이너·AI 코딩 에이전트 등에서 15개 신규 제로데이가 공개됐다. 한국 팀 ‘아웃 오브 바운스’는 AI 분야 연속 성공으로 2위권 경쟁을 이어갔다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/post/pwn2own-berlin-2026-day2&quot;
          },
          &quot;keywords&quot;: [
            &quot;Pwn2Own Berlin 2026&quot;,
            &quot;ZDI&quot;,
            &quot;제로데이&quot;,
            &quot;Microsoft Exchange&quot;,
            &quot;Windows 11&quot;,
            &quot;NVIDIA Container Toolkit&quot;,
            &quot;Red Hat Enterprise Linux&quot;,
            &quot;AI 코딩 에이전트&quot;,
            &quot;Cursor&quot;,
            &quot;OpenAI Codex&quot;
          ]
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>IT 소식 뉴스/IT 소식</category>
      <category>AI 코딩 에이전트</category>
      <category>Cursor</category>
      <category>Microsoft Exchange</category>
      <category>NVIDIA Container Toolkit</category>
      <category>openai codex</category>
      <category>Pwn2Own Berlin 2026</category>
      <category>Red Hat Enterprise Linux</category>
      <category>Windows 11</category>
      <category>ZDI</category>
      <category>제로데이</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/546</guid>
      <comments>https://togethergrow.tistory.com/entry/%ED%8F%B0%ED%88%AC%EC%98%A8-%EB%B2%A0%EB%A5%BC%EB%A6%B0-2026-%EB%91%98%EC%A7%B8-%EB%82%A0-AI%C2%B7%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C%EB%B6%80%ED%84%B0-%EC%9D%B5%EC%8A%A4%EC%B2%B4%EC%9D%B8%EC%A7%80%EA%B9%8C%EC%A7%80-%EC%97%B0%EC%87%84-%EC%A0%9C%EB%A1%9C%EB%8D%B0%EC%9D%B4#entry546comment</comments>
      <pubDate>Thu, 4 Jun 2026 09:30:11 +0900</pubDate>
    </item>
    <item>
      <title>한국디지털인증협회, 염흥열 신임 회장 취임과 국제표준 행보</title>
      <link>https://togethergrow.tistory.com/entry/%ED%95%9C%EA%B5%AD%EB%94%94%EC%A7%80%ED%84%B8%EC%9D%B8%EC%A6%9D%ED%98%91%ED%9A%8C-%EC%97%BC%ED%9D%A5%EC%97%B4-%EC%8B%A0%EC%9E%84-%ED%9A%8C%EC%9E%A5-%EC%B7%A8%EC%9E%84%EA%B3%BC-%EA%B5%AD%EC%A0%9C%ED%91%9C%EC%A4%80-%ED%96%89%EB%B3%B4</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;한국디지털인증협회, 염흥열 신임 회장 취임과 국제표준 행보&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;한국디지털인증협회가 염흥열 순천향대 명예교수의 신임 회장 취임을 공식화했다. ITU·ISO 등 국제표준 협력 강화와 국내 디지털 신원·인증 기술의 글로벌 표준화가 핵심 과제로 제시된다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;한국디지털인증협회,염흥열,디지털 신원,디지털 인증,국제표준,ITU-T SG17,ISO IEC 27701,TSAG,에이전틱AI,분산형 신원&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;한국디지털인증협회, 염흥열 신임 회장 취임과 국제표준 행보&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;ITU·ISO 협력 강화, 국내 디지털 신원·인증 기술의 글로벌 표준화를 내건 염흥열 회장 취임 소식과 의미를 정리.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/post/kdca-yeom-heungyeol-chair&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;한국디지털인증협회, 염흥열 신임 회장 취임과 국제표준 행보&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;에이전틱AI 시대의 디지털 신뢰 인프라를 겨냥한 국제표준 전략: ITU·ISO 협력과 산업 지원 계획.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .article-wrap{line-height:1.7; word-break:keep-all;}
    .article-wrap .content-inner{max-width:980px; margin:0 auto; padding:0 10px;}
    .article-wrap h1{font-size:1.9rem; margin:0 0 14px;}
    .article-wrap h2{font-size:1.35rem; margin:26px 0 10px;}
    .article-wrap h3{font-size:1.1rem; margin:18px 0 10px;}
    .article-wrap p{margin:10px 0;}
    .article-wrap ul{margin:10px 0 10px 18px;}
    .article-wrap li{margin:6px 0;}
    .article-wrap .note{
      border:1px solid rgba(0,0,0,0.12);
      border-radius:14px;
      padding:12px 14px;
      margin:12px 0;
    }
    .article-wrap .note strong{display:inline-block; margin-bottom:6px;}
    .article-wrap .grid{
      display:grid;
      grid-template-columns:1fr;
      gap:10px;
      margin:10px 0;
    }
    .article-wrap .card{
      border:1px solid rgba(0,0,0,0.12);
      border-radius:14px;
      padding:12px 14px;
    }
    .article-wrap .card .k{font-weight:700; margin-bottom:6px;}
    .article-wrap .divider{height:1px; background:rgba(0,0,0,0.08); margin:18px 0;}
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;div class=&quot;content-inner&quot;&gt;
      &lt;article&gt;
        &lt;header&gt;
          &lt;h1&gt;한국디지털인증협회, 염흥열 신임 회장 취임과 국제표준 행보&lt;/h1&gt;
          &lt;p&gt;
            한국디지털인증협회가 &lt;strong&gt;염흥열 순천향대학교 정보보호학과 명예교수&lt;/strong&gt;의 신임 회장 취임을 공식 발표했다.
            협회는 디지털 신원 및 인증 기술이 AI 기반 디지털 경제의 핵심 인프라로 부상하는 흐름 속에서,
            국제표준화 기구와의 협력을 강화해 국내 기술의 글로벌 확산을 지원하겠다는 방향을 제시했다.
          &lt;/p&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;실무 기준으로 보면&lt;/strong&gt;&lt;br&gt;
            ‘인증 기술이 좋다’는 사실만으로는 시장이 열리지 않습니다.&lt;br&gt;
            국제표준과 상호인정, 운영 정책(거버넌스)까지 맞물릴 때 기업의 해외 진출이 실제로 빨라집니다.
          &lt;/div&gt;
        &lt;/header&gt;

        &lt;section&gt;
          &lt;h2&gt;취임 메시지의 핵심&lt;/h2&gt;

          &lt;p&gt;
            염흥열 회장은 취임식에서 국내 디지털 신원·인증 기술과 인프라를
            &lt;strong&gt;국제 표준으로 공식화&lt;/strong&gt;해야 할 시점이라고 강조했다.
            특히 에이전틱AI 일상화로 디지털 경제가 국경을 넘나드는 환경에서,
            ITU·ISO 등 국제기구와의 협력 강화가 중요하다는 메시지를 내놨다.
          &lt;/p&gt;

          &lt;div class=&quot;grid&quot;&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;키워드 1: 국제표준&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                국내 기술을 ‘국내용 베스트 프랙티스’에 머물게 하지 않고,&lt;br&gt;
                글로벌 생태계에서 통용되는 표준으로 정착시키는 데 역량 집중.
              &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;키워드 2: 디지털 신뢰 인프라&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                디지털 인증은 국가 간 신뢰를 구성하는 기반 요소로,&lt;br&gt;
                AI 시대의 디지털 경제에서 더 넓은 파급 효과를 가질 수 있음.
              &lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;염흥열 회장의 국제 표준 이력&lt;/h2&gt;

          &lt;p&gt;
            이번 인선이 주목받는 이유는 ‘표준화 경험’이 협회 의제와 정면으로 맞닿아 있기 때문이다.
            염 회장은 ITU-T 정보보호연구반(SG17) 의장을 8년간 역임했고,
            2016년 국제 의장 선출 이후 2022년 재선으로 두 번의 임기를 수행했다.
            현재는 ITU-T TSAG 부의장으로 활동 중인 것으로 알려졌다.
          &lt;/p&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;대표 성과로 언급된 내용&lt;/strong&gt;&lt;br&gt;
            개인정보보호관리체계 표준(ISO/IEC 27701) 등을 포함해 50건 이상의 정보보호 국제 표준 채택을 이끈 이력이 소개됐다.&lt;br&gt;
            또한 분산형 신원 검증 시스템(DIVS) 관련 국제 표준 부속서 제정 성과도 언급됐다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;협회가 추진할 방향&lt;/h2&gt;

          &lt;p&gt;
            협회는 향후 ITU, ISO 등 국제표준화 기구 내에서 한국의 의견 반영을 강화하고,
            회원사의 기술 경쟁력과 글로벌 진출을 지원하는 역할에 초점을 두겠다는 계획을 밝혔다.
          &lt;/p&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;h3&gt;예상되는 실행 과제&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;
              국제표준 활동의 “연속성” 확보&lt;br&gt;
              표준화는 단발성 성과보다 장기 참여와 컨센서스 구축이 더 중요하다.
            &lt;/li&gt;
            &lt;li&gt;
              산업계 요구를 표준 의제로 연결&lt;br&gt;
              회원사의 제품/서비스 로드맵이 표준 방향과 정합성을 갖도록 지원이 필요하다.
            &lt;/li&gt;
            &lt;li&gt;
              상호운용성과 인증 프레임 정리&lt;br&gt;
              디지털 신원/인증은 기술 스택만이 아니라 운영 정책·책임 구조가 함께 작동해야 한다.
            &lt;/li&gt;
            &lt;li&gt;
              글로벌 진출을 위한 실증·레퍼런스 확대&lt;br&gt;
              해외 파트너십과 실증 사례가 누적될수록 시장 수용성이 높아진다.
            &lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;왜 지금 ‘디지털 인증’인가&lt;/h2&gt;

          &lt;p&gt;
            AI 기반 서비스가 늘수록 “누가 요청했고(신원)”, “무엇을 허용했는지(권한)”, “어떤 경로로 증명했는지(인증·검증)”가
            디지털 경제의 신뢰 비용을 좌우한다. 특히 에이전틱AI처럼 자동화된 행위 주체가 늘어나는 환경에서는,
            인증 체계의 신뢰성과 표준화 수준이 곧 시장 경쟁력으로 연결되기 쉽다.
          &lt;/p&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;관리자 입장에서&lt;/strong&gt;&lt;br&gt;
            인증은 ‘보안 기능’에 그치지 않고, 서비스 확장(국가/산업 간 연동)과 규제 대응, 비용 절감까지 영향을 줍니다.&lt;br&gt;
            그래서 국제표준과 상호운용성은 기술팀뿐 아니라 사업·정책 관점에서도 중요합니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;정리&lt;/h2&gt;

          &lt;p&gt;
            한국디지털인증협회의 신임 회장 취임 소식은, 디지털 신원·인증 기술을
            국제표준의 장으로 끌어올리겠다는 의지를 분명히 드러낸다.
            향후 관전 포인트는 “표준화 성과” 자체뿐 아니라,
            회원사 제품 경쟁력과 글로벌 진출이라는 실질적 결과로 얼마나 빠르게 연결되느냐에 있다.
          &lt;/p&gt;
        &lt;/section&gt;
      &lt;/article&gt;
    &lt;/div&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;한국디지털인증협회, 염흥열 신임 회장 취임과 국제표준 행보&quot;,
              &quot;item&quot;: &quot;https://example.com/post/kdca-yeom-heungyeol-chair&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;BlogPosting&quot;,
          &quot;headline&quot;: &quot;한국디지털인증협회, 염흥열 신임 회장 취임과 국제표준 행보&quot;,
          &quot;description&quot;: &quot;한국디지털인증협회가 염흥열 순천향대 명예교수의 신임 회장 취임을 공식화했다. ITU·ISO 등 국제표준 협력 강화와 국내 디지털 신원·인증 기술의 글로벌 표준화가 핵심 과제로 제시된다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/post/kdca-yeom-heungyeol-chair&quot;
          },
          &quot;keywords&quot;: [
            &quot;한국디지털인증협회&quot;,
            &quot;염흥열&quot;,
            &quot;디지털 신원&quot;,
            &quot;디지털 인증&quot;,
            &quot;국제표준&quot;,
            &quot;ITU-T SG17&quot;,
            &quot;ISO/IEC 27701&quot;,
            &quot;TSAG&quot;,
            &quot;에이전틱AI&quot;,
            &quot;분산형 신원&quot;
          ]
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>IT 소식 뉴스/IT 소식</category>
      <category>ISO IEC 27701</category>
      <category>ITU-T SG17</category>
      <category>TSAG</category>
      <category>국제표준</category>
      <category>디지털 신원</category>
      <category>디지털 인증</category>
      <category>분산형 신원</category>
      <category>에이전틱ai</category>
      <category>염흥열</category>
      <category>한국디지털인증협회</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/545</guid>
      <comments>https://togethergrow.tistory.com/entry/%ED%95%9C%EA%B5%AD%EB%94%94%EC%A7%80%ED%84%B8%EC%9D%B8%EC%A6%9D%ED%98%91%ED%9A%8C-%EC%97%BC%ED%9D%A5%EC%97%B4-%EC%8B%A0%EC%9E%84-%ED%9A%8C%EC%9E%A5-%EC%B7%A8%EC%9E%84%EA%B3%BC-%EA%B5%AD%EC%A0%9C%ED%91%9C%EC%A4%80-%ED%96%89%EB%B3%B4#entry545comment</comments>
      <pubDate>Thu, 4 Jun 2026 09:23:59 +0900</pubDate>
    </item>
    <item>
      <title>금융보안원, 디지털자산 보안전문인력 양성 과정 신설&amp;hellip;11주 실무형 교육 운영</title>
      <link>https://togethergrow.tistory.com/entry/%EA%B8%88%EC%9C%B5%EB%B3%B4%EC%95%88%EC%9B%90-%EB%94%94%EC%A7%80%ED%84%B8%EC%9E%90%EC%82%B0-%EB%B3%B4%EC%95%88%EC%A0%84%EB%AC%B8%EC%9D%B8%EB%A0%A5-%EC%96%91%EC%84%B1-%EA%B3%BC%EC%A0%95-%EC%8B%A0%EC%84%A4%E2%80%A611%EC%A3%BC-%EC%8B%A4%EB%AC%B4%ED%98%95-%EA%B5%90%EC%9C%A1-%EC%9A%B4%EC%98%81</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;[첨부] 2026년도 금융보안원 디지털자산 전문인력 양성과정 입교식.png&quot; data-origin-width=&quot;1503&quot; data-origin-height=&quot;945&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAM2qS/dJMcahR8f4q/kkiaABdviM9ENwJVGd7X21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAM2qS/dJMcahR8f4q/kkiaABdviM9ENwJVGd7X21/img.png&quot; data-alt=&quot;출처 : 금융보안원&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAM2qS/dJMcahR8f4q/kkiaABdviM9ENwJVGd7X21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAM2qS%2FdJMcahR8f4q%2FkkiaABdviM9ENwJVGd7X21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;금융보안원이 금융회사&amp;middot;가상자산사업자를 대상으로 &amp;lsquo;디지털자산 전문인력 양성 과정&amp;rsquo;을 신설했습니다. 6~8월 11주 동안 이론&amp;middot;실습&amp;middot;프로젝트를 결합해 블록체인 인프라&amp;middot;노드 보안&amp;middot;스마트컨트랙트 보안을 다룹니다.&quot; loading=&quot;lazy&quot; width=&quot;1503&quot; height=&quot;945&quot; data-filename=&quot;[첨부] 2026년도 금융보안원 디지털자산 전문인력 양성과정 입교식.png&quot; data-origin-width=&quot;1503&quot; data-origin-height=&quot;945&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 : 금융보안원&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;금융보안원, 디지털자산 보안전문인력 양성 과정 신설…11주 실무형 교육 운영&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;금융보안원이 금융회사·가상자산사업자를 대상으로 ‘디지털자산 전문인력 양성 과정’을 신설했습니다. 6~8월 11주 동안 이론·실습·프로젝트를 결합해 블록체인 인프라·노드 보안·스마트컨트랙트 보안을 다룹니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;금융보안원,디지털자산,보안전문인력,양성 과정,블록체인 보안,스마트컨트랙트 보안,노드 보안,암호 기술,토큰증권 STO,스테이블코인&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;금융보안원, 디지털자산 보안전문인력 양성 과정 신설…11주 실무형 교육 운영&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;6~8월 11주 과정으로 이론·실습·프로젝트를 결합해 디지털자산 보안 역량을 체계적으로 강화합니다.&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/fsec-digital-asset-security-training&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-image.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;금융보안원, 디지털자산 보안전문인력 양성 과정 신설…11주 실무형 교육 운영&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;블록체인 프로토콜부터 노드 보안 실습·스마트컨트랙트 개발 보안까지, 실무형 프로젝트로 역량을 끌어올립니다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-image.jpg&quot; /&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;post-content&quot; role=&quot;main&quot;&gt;
    &lt;header class=&quot;post-header&quot;&gt;
      &lt;h1&gt;금융보안원, 디지털자산 보안전문인력 양성 과정 신설…11주 실무형 교육 운영&lt;/h1&gt;
      &lt;p class=&quot;lead&quot;&gt;
        토큰증권(STO)과 스테이블코인 등 디지털자산 제도화 논의가 빨라지는 가운데,
        &lt;strong&gt;금융보안원&lt;/strong&gt;이 금융회사와 가상자산사업자를 대상으로 &lt;strong&gt;디지털자산 보안전문인력&lt;/strong&gt; 양성에 본격 착수했습니다.
        6월부터 8월까지 11주 동안 이론·실습·프로젝트를 결합해 운영되는 점이 핵심입니다.
      &lt;/p&gt;
    &lt;/header&gt;

    &lt;section class=&quot;callout neutral&quot; aria-label=&quot;핵심 요약&quot;&gt;
      &lt;strong&gt;핵심 요약&lt;/strong&gt;&lt;br&gt;
      - 대상: 금융회사 및 가상자산사업자 실무자 중심&lt;br&gt;
      - 기간: 6월~8월, 총 11주 운영&lt;br&gt;
      - 방식: 이론 + 실습 + 프로젝트 수행(멘토링 결합)&lt;br&gt;
      - 주제: 블록체인 프로토콜 기초, 차세대 암호 기술, 블록체인 인프라/노드 보안, 스마트컨트랙트 개발 보안
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;왜 ‘디지털자산 보안전문인력’이 지금 필요한가&lt;/h2&gt;
      &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

      &lt;p&gt;
        디지털자산 서비스와 인프라가 금융권에 본격 도입되면, 단순한 IT 보안만으로는 운영 리스크를 충분히 통제하기 어렵습니다.
        블록체인 네트워크, 노드 운영, 스마트컨트랙트 등 구성요소가 늘어나면서 공격 표면도 함께 확장되기 때문입니다.
      &lt;/p&gt;

      &lt;p&gt;
        &lt;em&gt;실무 기준으로 보면&lt;/em&gt; “정책 변화에 맞춘 보안 체계”는 사람(역량)과 절차(거버넌스) 없이는 유지되기 어렵습니다.
        이번 &lt;strong&gt;금융보안원&lt;/strong&gt; 교육 신설은 현업에서 바로 쓰는 &lt;strong&gt;디지털자산 보안전문인력&lt;/strong&gt;을 선제적으로 확보하려는 움직임으로 볼 수 있습니다.
      &lt;/p&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;과정 개요: 6~8월 11주, 이론·실습·프로젝트 결합&lt;/h2&gt;
      &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

      &lt;p&gt;
        교육과정은 총 11주로 운영되며, 이론과 실습을 통해 기반을 다진 뒤 실무형 프로젝트 수행으로 마무리하는 구조입니다.
        학습한 내용을 “실제 업무 형태”로 재구성해보는 과정이 포함되어, 조직 내 디지털자산 보안 역량을 빠르게 정착시키는 데 초점을 둡니다.
      &lt;/p&gt;

      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;h3&gt;이론 파트&lt;/h3&gt;
          &lt;p&gt;
            블록체인 프로토콜 기초와 차세대 암호 기술을 시작으로,&lt;br&gt;
            디지털자산 서비스 이해에 필요한 핵심 개념을 체계적으로 다룹니다.
          &lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;h3&gt;실습 파트&lt;/h3&gt;
          &lt;p&gt;
            블록체인 인프라 아키텍처를 기반으로 노드 보안 실습을 수행하고,&lt;br&gt;
            운영 관점의 보안 통제 포인트를 익히는 흐름입니다.
          &lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;h3&gt;스마트컨트랙트 보안&lt;/h3&gt;
          &lt;p&gt;
            스마트컨트랙트 아키텍처와 고급 개발 보안을 학습하며,&lt;br&gt;
            취약점 예방/리뷰 관점을 강화합니다.
          &lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;h3&gt;프로젝트 + 멘토링&lt;/h3&gt;
          &lt;p&gt;
            내·외부 전문가 멘토링을 받으며 실무형 프로젝트를 수행해,&lt;br&gt;
            현업에서 즉시 활용 가능한 결과물을 만드는 방식입니다.
          &lt;/p&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;커리큘럼 포인트: ‘운영’과 ‘개발’ 보안을 함께 본다&lt;/h2&gt;
      &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

      &lt;p&gt;
        디지털자산 보안은 한쪽(인프라 또는 개발)만으로 완성되기 어렵습니다.
        노드 운영·키 관리·접근통제 같은 운영 보안과, 스마트컨트랙트 취약점·배포 파이프라인·검증 프로세스 같은 개발 보안이
        연결되어야 사고를 줄일 수 있습니다.
      &lt;/p&gt;

      &lt;ul class=&quot;list&quot;&gt;
        &lt;li&gt;&lt;strong&gt;인프라 관점&lt;/strong&gt;: 노드 운영 보안, 네트워크/권한 설계, 로그·관제 포인트 정리&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;개발 관점&lt;/strong&gt;: 스마트컨트랙트 아키텍처 이해, 취약점 유형 학습, 안전한 개발·리뷰 습관&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;프로젝트 관점&lt;/strong&gt;: 실제 업무 시나리오로 위협 모델링 → 보안 요구사항 → 검증까지 연결&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;현업 적용 팁: 교육 이후 조직에서 바로 써먹는 방법&lt;/h2&gt;
      &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

      &lt;p&gt;
        교육 효과를 극대화하려면 “개인 역량 향상”에서 끝내지 않고, 조직 절차로 고정하는 작업이 필요합니다.
        관리자 입장에서 다음 3가지를 같이 추진하면 적용 속도가 빨라집니다.
      &lt;/p&gt;

      &lt;ol class=&quot;steps&quot;&gt;
        &lt;li&gt;
          &lt;strong&gt;표준 체크리스트 만들기&lt;/strong&gt;&lt;br&gt;
          노드 운영·키 관리·스마트컨트랙트 배포/업그레이드 절차를 체크리스트로 정리해 팀 표준으로 둡니다.
        &lt;/li&gt;
        &lt;li&gt;
          &lt;strong&gt;리뷰/검증 게이트를 프로세스에 삽입&lt;/strong&gt;&lt;br&gt;
          코드 리뷰, 정적 분석, 테스트넷 검증 등 “멈추고 확인하는 지점”을 배포 흐름에 포함시킵니다.
        &lt;/li&gt;
        &lt;li&gt;
          &lt;strong&gt;사고 대응 시나리오를 사전에 합의&lt;/strong&gt;&lt;br&gt;
          키 유출·컨트랙트 이상행위·노드 장애 같은 상황별 대응 R&amp;R과 의사결정 기준을 정해둡니다.
        &lt;/li&gt;
      &lt;/ol&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;마무리: ‘제도화’ 구간에서 보안 역량이 경쟁력이 된다&lt;/h2&gt;
      &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

      &lt;p&gt;
        디지털자산 관련 제도화 논의가 진행될수록, 서비스 도입 속도와 함께 “사고 없이 운영할 수 있는 능력”이 경쟁력으로 이어집니다.
        &lt;strong&gt;금융보안원&lt;/strong&gt;의 이번 과정은 실무형 &lt;strong&gt;디지털자산 보안전문인력&lt;/strong&gt;을 미리 확보하고,
        금융권의 디지털자산 보안 체계를 안정적으로 강화하는 시도라는 점에서 의미가 큽니다.
      &lt;/p&gt;

      &lt;div class=&quot;callout warning&quot;&gt;
        &lt;strong&gt;한 줄 정리&lt;/strong&gt;&lt;br&gt;
        이론만이 아니라 실습·프로젝트까지 묶인 11주 과정은, 조직이 디지털자산 보안을 “실행 가능한 역량”으로 바꾸는 데 도움이 됩니다.
      &lt;/div&gt;
    &lt;/section&gt;
  &lt;/main&gt;

  &lt;script type=&quot;application/ld+json&quot;&gt;
  {
    &quot;@context&quot;: &quot;https://schema.org&quot;,
    &quot;@graph&quot;: [
      {
        &quot;@type&quot;: &quot;BreadcrumbList&quot;,
        &quot;itemListElement&quot;: [
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 1,
            &quot;name&quot;: &quot;홈&quot;,
            &quot;item&quot;: &quot;https://example.com/&quot;
          },
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 2,
            &quot;name&quot;: &quot;보안&quot;,
            &quot;item&quot;: &quot;https://example.com/category/security&quot;
          },
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 3,
            &quot;name&quot;: &quot;금융보안원, 디지털자산 보안전문인력 양성 과정 신설…11주 실무형 교육 운영&quot;,
            &quot;item&quot;: &quot;https://example.com/fsec-digital-asset-security-training&quot;
          }
        ]
      },
      {
        &quot;@type&quot;: &quot;BlogPosting&quot;,
        &quot;headline&quot;: &quot;금융보안원, 디지털자산 보안전문인력 양성 과정 신설…11주 실무형 교육 운영&quot;,
        &quot;description&quot;: &quot;금융보안원이 금융회사·가상자산사업자를 대상으로 ‘디지털자산 전문인력 양성 과정’을 신설했습니다. 6~8월 11주 동안 이론·실습·프로젝트를 결합해 블록체인 인프라·노드 보안·스마트컨트랙트 보안을 다룹니다.&quot;,
        &quot;inLanguage&quot;: &quot;ko-KR&quot;,
        &quot;datePublished&quot;: &quot;2026-06-02&quot;,
        &quot;dateModified&quot;: &quot;2026-06-02&quot;,
        &quot;author&quot;: {
          &quot;@type&quot;: &quot;Person&quot;,
          &quot;name&quot;: &quot;운영자&quot;
        },
        &quot;publisher&quot;: {
          &quot;@type&quot;: &quot;Organization&quot;,
          &quot;name&quot;: &quot;블로그&quot;,
          &quot;logo&quot;: {
            &quot;@type&quot;: &quot;ImageObject&quot;,
            &quot;url&quot;: &quot;https://example.com/logo.png&quot;
          }
        },
        &quot;mainEntityOfPage&quot;: {
          &quot;@type&quot;: &quot;WebPage&quot;,
          &quot;@id&quot;: &quot;https://example.com/fsec-digital-asset-security-training&quot;
        },
        &quot;image&quot;: [
          &quot;https://example.com/og-image.jpg&quot;
        ],
        &quot;about&quot;: [
          &quot;Financial Security&quot;,
          &quot;Digital Assets&quot;,
          &quot;Blockchain Security&quot;,
          &quot;Smart Contract Security&quot;,
          &quot;Training Program&quot;
        ],
        &quot;keywords&quot;: [
          &quot;금융보안원&quot;,
          &quot;디지털자산&quot;,
          &quot;보안전문인력&quot;,
          &quot;양성 과정&quot;,
          &quot;블록체인 보안&quot;,
          &quot;스마트컨트랙트 보안&quot;,
          &quot;노드 보안&quot;,
          &quot;암호 기술&quot;,
          &quot;토큰증권 STO&quot;,
          &quot;스테이블코인&quot;
        ]
      }
    ]
  }
  &lt;/script&gt;

  &lt;style&gt;
    .post-content{
      max-width: 860px;
      margin: 0 auto;
      padding: 0 16px;
      line-height: 1.7;
    }
    .post-header h1{
      margin: 0 0 10px;
      font-size: 1.8rem;
      letter-spacing: -0.2px;
    }
    .lead{
      margin: 0 0 18px;
      font-size: 1.05rem;
    }
    .spacer{ height: 10px; }
    h2{
      margin: 26px 0 0;
      font-size: 1.35rem;
      letter-spacing: -0.2px;
    }
    h3{
      margin: 0 0 8px;
      font-size: 1.05rem;
    }
    p{ margin: 10px 0; }

    .list{
      margin: 10px 0 0 18px;
      padding: 0;
    }
    .list li{ margin: 8px 0; }

    .steps{
      margin: 10px 0 0 18px;
      padding: 0;
    }
    .steps li{ margin: 12px 0; }

    .callout{
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 12px;
      padding: 12px 14px;
      margin: 14px 0;
    }
    .callout.neutral{ border-color: rgba(0,0,0,0.12); }
    .callout.warning{ border-color: rgba(255,140,0,0.35); }

    .grid{
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 12px;
      margin-top: 12px;
    }
    .card{
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 12px;
      padding: 12px 14px;
    }

    @media (max-width: 720px){
      .grid{ grid-template-columns: 1fr; }
      .post-header h1{ font-size: 1.55rem; }
    }
  &lt;/style&gt;

  &lt;!--
  [관리자 입력용 태그 10개]
  금융보안원, 디지털자산, 보안전문인력, 디지털자산 교육, 블록체인 보안, 스마트컨트랙트 보안, 노드 보안, 토큰증권 STO, 스테이블코인, 금융권 보안
  --&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>IT 소식 뉴스/IT 소식</category>
      <category>금융보안원</category>
      <category>노드 보안</category>
      <category>디지털자산</category>
      <category>보안전문인력</category>
      <category>블록체인 보안</category>
      <category>스마트컨트랙트 보안</category>
      <category>스테이블코인</category>
      <category>암호 기술</category>
      <category>양성 과정</category>
      <category>토큰증권 STO</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/544</guid>
      <comments>https://togethergrow.tistory.com/entry/%EA%B8%88%EC%9C%B5%EB%B3%B4%EC%95%88%EC%9B%90-%EB%94%94%EC%A7%80%ED%84%B8%EC%9E%90%EC%82%B0-%EB%B3%B4%EC%95%88%EC%A0%84%EB%AC%B8%EC%9D%B8%EB%A0%A5-%EC%96%91%EC%84%B1-%EA%B3%BC%EC%A0%95-%EC%8B%A0%EC%84%A4%E2%80%A611%EC%A3%BC-%EC%8B%A4%EB%AC%B4%ED%98%95-%EA%B5%90%EC%9C%A1-%EC%9A%B4%EC%98%81#entry544comment</comments>
      <pubDate>Tue, 2 Jun 2026 17:13:29 +0900</pubDate>
    </item>
    <item>
      <title>WP 맵스 프로 취약점(CVE-2026-8732) 악용</title>
      <link>https://togethergrow.tistory.com/entry/WP-%EB%A7%B5%EC%8A%A4-%ED%94%84%EB%A1%9C-%EC%B7%A8%EC%95%BD%EC%A0%90CVE-2026-8732-%EC%95%85%EC%9A%A9</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;601&quot; data-origin-height=&quot;649&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cS8BTt/dJMb990WtiX/BKWEF0IUDE9kk7ZkKrfXD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cS8BTt/dJMb990WtiX/BKWEF0IUDE9kk7ZkKrfXD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cS8BTt/dJMb990WtiX/BKWEF0IUDE9kk7ZkKrfXD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcS8BTt%2FdJMb990WtiX%2FBKWEF0IUDE9kk7ZkKrfXD1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;WP 맵스 프로(WP Maps Pro)에서 인증 없이 관리자 계정 생성이 가능한 CVE-2026-8732 악용 시도가 급증하고 있습니다. 국내 사이트 운영자 관점에서 즉시 점검&amp;middot;업데이트&amp;middot;사후 대응까지 한 번에 정리합니다.&quot; loading=&quot;lazy&quot; width=&quot;601&quot; height=&quot;649&quot; data-origin-width=&quot;601&quot; data-origin-height=&quot;649&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;WP 맵스 프로 취약점(CVE-2026-8732) 악용 확산: 관리자 권한 탈취 대응 체크리스트&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;WP 맵스 프로(WP Maps Pro)에서 인증 없이 관리자 계정 생성이 가능한 CVE-2026-8732 악용 시도가 급증하고 있습니다. 국내 사이트 운영자 관점에서 즉시 점검·업데이트·사후 대응까지 한 번에 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;워드프레스,WP 맵스 프로,CVE-2026-8732,플러그인 취약점,권한 상승,관리자 계정 탈취,보안 업데이트,워드펜스,디파이언트,NVD,웹사이트 보안&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;WP 맵스 프로 취약점(CVE-2026-8732) 악용 확산: 관리자 권한 탈취 대응 체크리스트&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;인증 없이 관리자 계정 생성이 가능한 취약점 악용이 확산 중입니다. 즉시 점검·업데이트·사후 대응까지 운영자용 체크리스트로 정리합니다.&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/wp-maps-pro-cve-2026-8732&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-image.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;WP 맵스 프로 취약점(CVE-2026-8732) 악용 확산: 관리자 권한 탈취 대응 체크리스트&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;WP 맵스 프로 취약점 악용 시도가 급증 중입니다. 관리자 권한 탈취를 막기 위한 즉시 대응 포인트를 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-image.jpg&quot; /&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;post-content&quot; role=&quot;main&quot;&gt;
    &lt;header class=&quot;post-header&quot;&gt;
      &lt;h1&gt;WP 맵스 프로 취약점(CVE-2026-8732) 악용 확산: 관리자 권한 탈취 대응 체크리스트&lt;/h1&gt;
      &lt;p class=&quot;lead&quot;&gt;
        전 세계 워드프레스 사이트를 겨냥한 신규 공격이 확산되며, 지도 플러그인 &lt;strong&gt;WP 맵스 프로(WP Maps Pro)&lt;/strong&gt; 취약점이
        &lt;strong&gt;실제 공격에 악용&lt;/strong&gt;되는 정황이 보고되고 있습니다. 국내 사이트도 예외가 아니므로, 운영자 관점에서 “지금 당장” 해야 할 조치를 정리합니다.
      &lt;/p&gt;
    &lt;/header&gt;

    &lt;section class=&quot;callout warning&quot; aria-label=&quot;핵심 요약&quot;&gt;
      &lt;strong&gt;핵심 요약&lt;/strong&gt;&lt;br&gt;
      - 취약점: &lt;strong&gt;CVE-2026-8732&lt;/strong&gt; (인증 없이 관리자 권한 획득/계정 생성 가능으로 평가)&lt;br&gt;
      - 표적: WP 맵스 프로 사용 워드프레스 사이트(매장/지점 지도 기능 활용 사이트 포함)&lt;br&gt;
      - 위험: 관리자 계정 생성 → 사이트 장악 → 악성 플러그인/웹셸/피싱 페이지/스팸 페이지 등 2차 피해 가능&lt;br&gt;
      - 조치: &lt;strong&gt;WP 맵스 프로 6.1.1 이상으로 즉시 업데이트&lt;/strong&gt; + 관리자 계정/로그/무결성 점검
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;무슨 일이 벌어지고 있나&lt;/h2&gt;
      &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

      &lt;p&gt;
        이번 이슈는 지도 서비스 플러그인 &lt;strong&gt;WP 맵스 프로&lt;/strong&gt;의 치명적 취약점이 공개된 뒤, 이를 노린 자동화 스캐닝/공격 시도가
        빠르게 늘어나며 운영자 계정 탈취로 이어질 수 있다는 점이 핵심입니다.
      &lt;/p&gt;

      &lt;p&gt;
        공격 흐름은 단순합니다. 취약한 버전이 확인되면 공격 요청을 보내 &lt;strong&gt;관리자 권한 계정을 생성&lt;/strong&gt;하거나 권한을 올린 뒤,
        사이트에 악성 구성요소를 설치해 지속 접근(백도어)을 확보합니다.
        &lt;em&gt;운영 환경에서는&lt;/em&gt; “계정 하나가 새로 생겼다”는 사실만으로도 이미 사고로 간주해야 합니다.
      &lt;/p&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;원인: 고객 지원용 ‘임시 접근’ 기능이 공격 통로가 된 이유&lt;/h2&gt;
      &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

      &lt;p&gt;
        취약점의 근본 원인은 플러그인 내부의 고객 지원 목적 기능(일명 ‘임시 접근’)이 인증되지 않은 경로로 호출될 수 있었던 점입니다.
        접근을 제한하기 위한 토큰(Nonce) 검증이 의도대로 방어막이 되지 못했고, 결과적으로 외부에서 정상 요청처럼 위장한 호출이 가능해졌습니다.
      &lt;/p&gt;

      &lt;div class=&quot;callout neutral&quot;&gt;
        &lt;strong&gt;운영자 입장에서 중요한 포인트&lt;/strong&gt;&lt;br&gt;
        - “지원/진단 편의 기능”은 종종 공격 표면이 됩니다.&lt;br&gt;
        - 플러그인 업데이트로 끝내지 말고, &lt;strong&gt;기능이 켜져 있었는지&lt;/strong&gt;와 &lt;strong&gt;관리자 계정 변화&lt;/strong&gt;를 반드시 확인해야 합니다.
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;영향 범위: 관리자 권한 탈취 이후 가능한 2차 피해&lt;/h2&gt;
      &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

      &lt;p&gt;
        관리자 권한을 획득한 공격자는 사이트의 거의 모든 것을 바꿀 수 있습니다. 특히 아래 유형의 2차 피해가 자주 발생합니다.
      &lt;/p&gt;

      &lt;ul class=&quot;list&quot;&gt;
        &lt;li&gt;&lt;strong&gt;악성 플러그인 설치&lt;/strong&gt; 또는 테마/코어 파일 변조로 지속적인 백도어 확보&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;웹셸 업로드&lt;/strong&gt; 및 서버 내부 확장 이동(환경에 따라)&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;회원/고객 데이터 탈취&lt;/strong&gt;, 관리자 이메일 변경, 결제/주문 흐름 변조&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;피싱 페이지 삽입&lt;/strong&gt;, 검색엔진 스팸(SEO 스팸) 페이지 자동 생성&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;리다이렉트/악성 스크립트 삽입&lt;/strong&gt;으로 방문자 감염 유도&lt;/li&gt;
      &lt;/ul&gt;

      &lt;div class=&quot;callout danger&quot;&gt;
        &lt;strong&gt;주의&lt;/strong&gt;&lt;br&gt;
        “플러그인 업데이트를 했으니 끝”이 아닙니다.&lt;br&gt;
        이미 관리자 계정이 생성되었거나 파일이 변조되었다면, 업데이트 이후에도 공격자가 계속 접속할 수 있습니다.
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;즉시 대응 1: 취약 버전 여부 확인과 업데이트&lt;/h2&gt;
      &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

      &lt;p&gt;
        &lt;strong&gt;WP 맵스 프로 6.1.0 이하&lt;/strong&gt;를 사용 중이라면, &lt;strong&gt;6.1.1 이상&lt;/strong&gt;으로 즉시 업데이트를 권장합니다.
        업데이트 전후로 아래 체크를 같이 수행하는 것이 안전합니다.
      &lt;/p&gt;

      &lt;ol class=&quot;steps&quot;&gt;
        &lt;li&gt;
          &lt;strong&gt;플러그인 버전 확인&lt;/strong&gt;&lt;br&gt;
          워드프레스 관리자 → 플러그인 → 설치된 플러그인에서 WP Maps Pro 버전을 확인합니다.
        &lt;/li&gt;
        &lt;li&gt;
          &lt;strong&gt;업데이트 적용&lt;/strong&gt;&lt;br&gt;
          가능한 경우 즉시 6.1.1 이상으로 업데이트합니다. 자동 업데이트 정책을 사용한다면 적용/실패 로그도 함께 확인합니다.
        &lt;/li&gt;
        &lt;li&gt;
          &lt;strong&gt;캐시/OPcache 영향 최소화&lt;/strong&gt;&lt;br&gt;
          서버 캐시/페이지 캐시/OPcache 환경에서는 업데이트 직후 구버전 파일이 남아 보이는 경우가 있어, 캐시 무효화 후 재확인합니다.
        &lt;/li&gt;
      &lt;/ol&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;즉시 대응 2: 관리자 계정 생성 흔적 점검&lt;/h2&gt;
      &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

      &lt;p&gt;
        취약점 악용 시나리오에서 가장 흔한 결과는 &lt;strong&gt;알 수 없는 관리자 계정이 추가&lt;/strong&gt;되는 것입니다.
        실무 기준으로 보면, 아래 항목을 최소 범위로 즉시 점검해야 합니다.
      &lt;/p&gt;

      &lt;ul class=&quot;checklist&quot;&gt;
        &lt;li&gt;&lt;strong&gt;사용자 목록&lt;/strong&gt;: 최근 생성된 사용자(특히 관리자 권한) 존재 여부&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;관리자 이메일/프로필&lt;/strong&gt;: 알 수 없는 변경(이메일/표시 이름/권한)&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;비밀번호 재설정 기록&lt;/strong&gt;: 대량 비밀번호 재설정 또는 수상한 시간대 활동&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;로그인 실패/성공 로그&lt;/strong&gt;: 비정상 IP/국가/시간대&lt;/li&gt;
      &lt;/ul&gt;

      &lt;div class=&quot;callout neutral&quot;&gt;
        &lt;strong&gt;권장 조치&lt;/strong&gt;&lt;br&gt;
        - 의심 계정이 있다면 &lt;strong&gt;즉시 권한 회수 또는 삭제&lt;/strong&gt;하고, 관련 세션을 강제 만료하세요.&lt;br&gt;
        - 관리자/편집자/플러그인 설치 권한 보유 계정은 &lt;strong&gt;전원 비밀번호 변경&lt;/strong&gt; 및 &lt;strong&gt;2FA 적용&lt;/strong&gt;을 권장합니다.
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;사후 대응: 이미 침해가 의심될 때 해야 할 것&lt;/h2&gt;
      &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

      &lt;p&gt;
        아래 항목 중 하나라도 해당하면 “업데이트 + 계정 점검”만으로는 부족할 수 있습니다.
      &lt;/p&gt;

      &lt;ul class=&quot;list&quot;&gt;
        &lt;li&gt;관리자 계정이 이미 생성/변경되었거나, 알 수 없는 플러그인/테마가 추가됨&lt;/li&gt;
        &lt;li&gt;사이트가 외부로 리다이렉트되거나, 검색 결과에 스팸 페이지가 급증함&lt;/li&gt;
        &lt;li&gt;서버에서 수상한 파일(난수 파일명, 업로드 디렉터리의 PHP 등)이 발견됨&lt;/li&gt;
      &lt;/ul&gt;

      &lt;ol class=&quot;steps&quot;&gt;
        &lt;li&gt;
          &lt;strong&gt;즉시 격리&lt;/strong&gt;&lt;br&gt;
          점검 기간 동안 임시로 유지보수 모드 또는 접근 제한(WAF/접속 차단)을 적용합니다.
        &lt;/li&gt;
        &lt;li&gt;
          &lt;strong&gt;무결성 점검&lt;/strong&gt;&lt;br&gt;
          워드프레스 코어 파일을 재배포(정상 파일로 덮어쓰기)하고, 테마/플러그인 디렉터리의 비정상 파일을 확인합니다.
        &lt;/li&gt;
        &lt;li&gt;
          &lt;strong&gt;비밀정보 회수&lt;/strong&gt;&lt;br&gt;
          WP 관리자 계정, DB 계정, FTP/SFTP, 호스팅 패널, API 키(지도 API 포함)를 전부 교체합니다.
        &lt;/li&gt;
        &lt;li&gt;
          &lt;strong&gt;로그 보존&lt;/strong&gt;&lt;br&gt;
          웹서버/워드프레스/보안 플러그인 로그를 백업해 향후 분석과 신고(필요 시)에 대비합니다.
        &lt;/li&gt;
      &lt;/ol&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;재발 방지: 운영 정책으로 막는 방법&lt;/h2&gt;
      &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

      &lt;p&gt;
        플러그인 취약점은 반복됩니다. 다음 정책을 잡아두면 비슷한 이슈에서 피해 확률을 크게 낮출 수 있습니다.
      &lt;/p&gt;

      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;h3&gt;플러그인 관리 원칙&lt;/h3&gt;
          &lt;p&gt;
            사용하지 않는 플러그인은 비활성화가 아니라 &lt;strong&gt;삭제&lt;/strong&gt;합니다.&lt;br&gt;
            상용 플러그인은 업데이트 공지/변경 로그를 정기적으로 확인합니다.
          &lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;h3&gt;권한 최소화&lt;/h3&gt;
          &lt;p&gt;
            관리자 계정은 최소 인원만 유지합니다.&lt;br&gt;
            작업 계정은 역할을 분리하고, 필요 시에만 권한을 올립니다.
          &lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;h3&gt;2FA + 로그인 가시성&lt;/h3&gt;
          &lt;p&gt;
            관리자 계정은 &lt;strong&gt;2FA&lt;/strong&gt;를 기본 적용합니다.&lt;br&gt;
            로그인/사용자 생성 로그를 남기는 보안 플러그인을 운영합니다.
          &lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;h3&gt;WAF/차단 정책&lt;/h3&gt;
          &lt;p&gt;
            알려진 공격 패턴을 차단하는 WAF를 활용합니다.&lt;br&gt;
            의심 IP/국가/비정상 요청을 단계적으로 차단합니다.
          &lt;/p&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;공식 확인 포인트(운영자가 직접 체크할 곳)&lt;/h2&gt;
      &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

      &lt;p&gt;
        아래 페이지에서 취약점/탐지/업데이트 관련 공지를 확인할 수 있습니다. 운영 정책상 외부 링크는 최소만 유지하고, 필요 시에만 열어보는 방식을 권장합니다.
      &lt;/p&gt;

      &lt;table class=&quot;ref-table&quot; role=&quot;table&quot; aria-label=&quot;확인 포인트 링크&quot;&gt;
        &lt;thead&gt;
          &lt;tr&gt;
            &lt;th&gt;구분&lt;/th&gt;
            &lt;th&gt;확인 링크&lt;/th&gt;
            &lt;th&gt;체크 포인트&lt;/th&gt;
          &lt;/tr&gt;
        &lt;/thead&gt;
        &lt;tbody&gt;
          &lt;tr&gt;
            &lt;td&gt;취약점 등록&lt;/td&gt;
            &lt;td&gt;
              &lt;a href=&quot;https://nvd.nist.gov/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;nvd.nist.gov&lt;/a&gt;&lt;br&gt;
            &lt;/td&gt;
            &lt;td&gt;CVE 번호로 검색해 영향/등급/참조 업데이트 확인&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;탐지/대응 가이드&lt;/td&gt;
            &lt;td&gt;
              &lt;a href=&quot;https://www.wordfence.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;wordfence.com&lt;/a&gt;&lt;br&gt;
            &lt;/td&gt;
            &lt;td&gt;공격 트래픽/차단 규칙/권장 조치 확인&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;플러그인 업데이트&lt;/td&gt;
            &lt;td&gt;
              &lt;a href=&quot;https://codecanyon.net/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;codecanyon.net&lt;/a&gt;&lt;br&gt;
            &lt;/td&gt;
            &lt;td&gt;구매/배포 경로 기준 최신 버전 및 변경 로그 확인&lt;/td&gt;
          &lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;
    &lt;/section&gt;

    &lt;footer class=&quot;post-footer&quot;&gt;
      &lt;div class=&quot;callout neutral&quot;&gt;
        &lt;strong&gt;마지막 한 줄&lt;/strong&gt;&lt;br&gt;
        “지도 플러그인”은 눈에 띄지 않는 구성요소지만, 한 번 뚫리면 관리자 권한으로 직결될 수 있습니다.&lt;br&gt;
        오늘 안에 &lt;strong&gt;업데이트 + 관리자 계정 점검&lt;/strong&gt;까지 마무리하는 것을 권장합니다.
      &lt;/div&gt;
    &lt;/footer&gt;
  &lt;/main&gt;

  &lt;script type=&quot;application/ld+json&quot;&gt;
  {
    &quot;@context&quot;: &quot;https://schema.org&quot;,
    &quot;@graph&quot;: [
      {
        &quot;@type&quot;: &quot;BreadcrumbList&quot;,
        &quot;itemListElement&quot;: [
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 1,
            &quot;name&quot;: &quot;홈&quot;,
            &quot;item&quot;: &quot;https://example.com/&quot;
          },
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 2,
            &quot;name&quot;: &quot;보안&quot;,
            &quot;item&quot;: &quot;https://example.com/category/security&quot;
          },
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 3,
            &quot;name&quot;: &quot;WP 맵스 프로 취약점(CVE-2026-8732) 악용 확산: 관리자 권한 탈취 대응 체크리스트&quot;,
            &quot;item&quot;: &quot;https://example.com/wp-maps-pro-cve-2026-8732&quot;
          }
        ]
      },
      {
        &quot;@type&quot;: &quot;BlogPosting&quot;,
        &quot;headline&quot;: &quot;WP 맵스 프로 취약점(CVE-2026-8732) 악용 확산: 관리자 권한 탈취 대응 체크리스트&quot;,
        &quot;description&quot;: &quot;WP 맵스 프로(WP Maps Pro)에서 인증 없이 관리자 계정 생성이 가능한 CVE-2026-8732 악용 시도가 급증하고 있습니다. 국내 사이트 운영자 관점에서 즉시 점검·업데이트·사후 대응까지 정리합니다.&quot;,
        &quot;inLanguage&quot;: &quot;ko-KR&quot;,
        &quot;datePublished&quot;: &quot;2026-06-02&quot;,
        &quot;dateModified&quot;: &quot;2026-06-02&quot;,
        &quot;author&quot;: {
          &quot;@type&quot;: &quot;Person&quot;,
          &quot;name&quot;: &quot;운영자&quot;
        },
        &quot;publisher&quot;: {
          &quot;@type&quot;: &quot;Organization&quot;,
          &quot;name&quot;: &quot;블로그&quot;,
          &quot;logo&quot;: {
            &quot;@type&quot;: &quot;ImageObject&quot;,
            &quot;url&quot;: &quot;https://example.com/logo.png&quot;
          }
        },
        &quot;mainEntityOfPage&quot;: {
          &quot;@type&quot;: &quot;WebPage&quot;,
          &quot;@id&quot;: &quot;https://example.com/wp-maps-pro-cve-2026-8732&quot;
        },
        &quot;image&quot;: [
          &quot;https://example.com/og-image.jpg&quot;
        ],
        &quot;about&quot;: [
          &quot;WordPress&quot;,
          &quot;WP Maps Pro&quot;,
          &quot;CVE-2026-8732&quot;,
          &quot;Privilege Escalation&quot;,
          &quot;Website Security&quot;
        ],
        &quot;keywords&quot;: [
          &quot;워드프레스&quot;,
          &quot;WP 맵스 프로&quot;,
          &quot;CVE-2026-8732&quot;,
          &quot;플러그인 취약점&quot;,
          &quot;권한 상승&quot;,
          &quot;관리자 계정 탈취&quot;,
          &quot;보안 업데이트&quot;,
          &quot;워드펜스&quot;,
          &quot;NVD&quot;,
          &quot;웹사이트 보안&quot;
        ]
      }
    ]
  }
  &lt;/script&gt;

  &lt;style&gt;
    .post-content{
      max-width: 860px;
      margin: 0 auto;
      padding: 0 16px;
      line-height: 1.7;
    }
    .post-header h1{
      margin: 0 0 10px;
      font-size: 1.8rem;
      letter-spacing: -0.2px;
    }
    .lead{
      margin: 0 0 18px;
      font-size: 1.05rem;
    }
    .spacer{ height: 10px; }
    h2{
      margin: 26px 0 0;
      font-size: 1.35rem;
      letter-spacing: -0.2px;
    }
    h3{
      margin: 0 0 8px;
      font-size: 1.05rem;
    }
    p{ margin: 10px 0; }
    .list{
      margin: 10px 0 0 18px;
      padding: 0;
    }
    .list li{ margin: 8px 0; }
    .steps{
      margin: 10px 0 0 18px;
      padding: 0;
    }
    .steps li{ margin: 12px 0; }
    .checklist{
      margin: 10px 0 0 18px;
      padding: 0;
    }
    .checklist li{ margin: 8px 0; }
    .callout{
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 12px;
      padding: 12px 14px;
      margin: 14px 0;
    }
    .callout.warning{ border-color: rgba(255,140,0,0.35); }
    .callout.danger{ border-color: rgba(220,20,60,0.35); }
    .callout.neutral{ border-color: rgba(0,0,0,0.12); }

    .grid{
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 12px;
      margin-top: 12px;
    }
    .card{
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 12px;
      padding: 12px 14px;
    }
    .ref-table{
      width: 100%;
      border-collapse: collapse;
      margin-top: 10px;
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 12px;
      overflow: hidden;
    }
    .ref-table th,
    .ref-table td{
      border-bottom: 1px solid rgba(0,0,0,0.08);
      padding: 10px 12px;
      vertical-align: top;
      text-align: left;
    }
    .ref-table thead th{
      background: rgba(0,0,0,0.03);
      font-weight: 700;
    }
    .ref-table tr:last-child td{ border-bottom: 0; }

    .post-footer{ margin: 22px 0 34px; }

    @media (max-width: 720px){
      .grid{ grid-template-columns: 1fr; }
      .post-header h1{ font-size: 1.55rem; }
    }
  &lt;/style&gt;

  &lt;!--
  [관리자 입력용 태그 10개]
  워드프레스, WP 맵스 프로, CVE-2026-8732, 플러그인 보안, 권한 상승, 관리자 계정 탈취, 보안 업데이트, 워드펜스, NVD, 웹사이트 보안
  --&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>IT 소식 뉴스/IT 소식</category>
      <category>CVE-2026-8732</category>
      <category>NVD</category>
      <category>WP 맵스 프로</category>
      <category>관리자 계정 탈취</category>
      <category>권한 상승</category>
      <category>디파이언트</category>
      <category>보안 업데이트</category>
      <category>워드펜스</category>
      <category>워드프레스</category>
      <category>플러그인 취약점</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/543</guid>
      <comments>https://togethergrow.tistory.com/entry/WP-%EB%A7%B5%EC%8A%A4-%ED%94%84%EB%A1%9C-%EC%B7%A8%EC%95%BD%EC%A0%90CVE-2026-8732-%EC%95%85%EC%9A%A9#entry543comment</comments>
      <pubDate>Tue, 2 Jun 2026 17:10:27 +0900</pubDate>
    </item>
    <item>
      <title>엔비디아 N1&amp;middot;N1X, 노트북 SoC 시장에 던지는 승부수</title>
      <link>https://togethergrow.tistory.com/entry/%EC%97%94%EB%B9%84%EB%94%94%EC%95%84-N1%C2%B7N1X-%EB%85%B8%ED%8A%B8%EB%B6%81-SoC-%EC%8B%9C%EC%9E%A5%EC%97%90-%EB%8D%98%EC%A7%80%EB%8A%94-%EC%8A%B9%EB%B6%80%EC%88%98</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;엔비디아 N1·N1X, 노트북 SoC 시장에 던지는 승부수&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;엔비디아가 N1·N1X로 윈도우 노트북 SoC 시장 진입을 예고하며 AMD·퀄컴과 경쟁 구도를 만든다. AI 성능 기대와 함께 x86 에뮬레이션·호환성은 핵심 관전 포인트로 꼽힌다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;엔비디아 N1X,엔비디아 N1,노트북 SoC,Arm 윈도우,퀄컴 스냅드래곤 X,x86 에뮬레이션,윈도우 Prism,블랙웰 GPU,배터리 수명,RMAN&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;엔비디아 N1·N1X, 노트북 SoC 시장에 던지는 승부수&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;AI 성능과 배터리 효율을 앞세운 엔비디아 N1·N1X 루머 정리와 경쟁 구도, x86 에뮬레이션 관전 포인트.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/post/nvidia-n1x-laptop-soc&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;엔비디아 N1·N1X, 노트북 SoC 시장에 던지는 승부수&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;N1·N1X가 윈도우 노트북 시장에서 AMD·퀄컴·애플과 어떻게 맞붙을지, 그리고 x86 에뮬레이션이 왜 변수인지.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .article-wrap{line-height:1.7; word-break:keep-all;}
    .article-wrap .content-inner{max-width:980px; margin:0 auto; padding:0 10px;}
    .article-wrap h1{font-size:1.9rem; margin:0 0 14px;}
    .article-wrap h2{font-size:1.35rem; margin:26px 0 10px;}
    .article-wrap h3{font-size:1.1rem; margin:18px 0 10px;}
    .article-wrap p{margin:10px 0;}
    .article-wrap ul{margin:10px 0 10px 18px;}
    .article-wrap li{margin:6px 0;}
    .article-wrap .note{
      border:1px solid rgba(0,0,0,0.12);
      border-radius:14px;
      padding:12px 14px;
      margin:12px 0;
    }
    .article-wrap .note strong{display:inline-block; margin-bottom:6px;}
    .article-wrap .pill{
      display:inline-block;
      border:1px solid rgba(0,0,0,0.12);
      border-radius:999px;
      padding:4px 10px;
      margin:4px 6px 0 0;
      font-size:0.92rem;
      white-space:nowrap;
    }
    .article-wrap .grid{
      display:grid;
      grid-template-columns:1fr;
      gap:10px;
      margin:10px 0;
    }
    .article-wrap .card{
      border:1px solid rgba(0,0,0,0.12);
      border-radius:14px;
      padding:12px 14px;
    }
    .article-wrap .card .k{font-weight:700; margin-bottom:6px;}
    .article-wrap .divider{height:1px; background:rgba(0,0,0,0.08); margin:18px 0;}
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;div class=&quot;content-inner&quot;&gt;
      &lt;article&gt;
        &lt;header&gt;
          &lt;h1&gt;엔비디아 N1·N1X, 노트북 SoC 시장에 던지는 승부수&lt;/h1&gt;
          &lt;p&gt;
            AI·GPU 강자인 엔비디아가 윈도우 노트북을 겨냥한 SoC로 &lt;strong&gt;N1&lt;/strong&gt;과 &lt;strong&gt;N1X&lt;/strong&gt;를 준비 중이라는 이야기가 이어지고 있습니다.
            핵심은 “AI 성능 + 배터리 효율 + 통합 설계”로 요약되지만, 동시에 &lt;strong&gt;x86 에뮬레이션&lt;/strong&gt;과 호환성은 넘어야 할 큰 과제로 지목됩니다.
          &lt;/p&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;한 줄 관전 포인트&lt;/strong&gt;&lt;br&gt;
            N1X가 성능을 끌어올리더라도, 윈도우 생태계에서의 앱·게임 호환성과 최적화가 승부를 가를 가능성이 큽니다.
          &lt;/div&gt;
        &lt;/header&gt;

        &lt;section&gt;
          &lt;h2&gt;핵심 요약&lt;/h2&gt;

          &lt;p&gt;
            이번 이슈를 빠르게 정리하면 아래처럼 정리됩니다.
          &lt;/p&gt;

          &lt;div&gt;
            &lt;span class=&quot;pill&quot;&gt;노트북 SoC 시장 진입&lt;/span&gt;
            &lt;span class=&quot;pill&quot;&gt;N1(하위) / N1X(상위)&lt;/span&gt;
            &lt;span class=&quot;pill&quot;&gt;AI 최적화 중심&lt;/span&gt;
            &lt;span class=&quot;pill&quot;&gt;통합 메모리/아키텍처&lt;/span&gt;
            &lt;span class=&quot;pill&quot;&gt;x86 에뮬레이션 변수&lt;/span&gt;
          &lt;/div&gt;

          &lt;ul&gt;
            &lt;li&gt;엔비디아가 N1·N1X로 윈도우 노트북 SoC 시장을 본격적으로 노린다는 관측&lt;/li&gt;
            &lt;li&gt;AI 성능·전력 효율·통합 설계를 앞세워 AMD·퀄컴·애플과 경쟁 구도 형성&lt;/li&gt;
            &lt;li&gt;Arm 기반일 경우, x86 앱/게임 구동을 위한 에뮬레이션 품질이 체감 성능에 큰 영향&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;N1·N1X는 무엇으로 보나&lt;/h2&gt;

          &lt;p&gt;
            알려진 흐름을 종합하면 N1·N1X는 “윈도우 노트북용 SoC(시스템온칩)”로 거론됩니다.
            CPU와 GPU, 메모리 접근 구조를 한 덩어리로 묶어 효율을 끌어올리는 방향성이며,
            엔비디아가 강점을 가진 GPU·AI 스택을 노트북에 직접 이식하려는 의도가 읽힙니다.
          &lt;/p&gt;

          &lt;div class=&quot;grid&quot;&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;N1X(상위) 포지션&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                AI 성능과 배터리 수명, 그리고 “가능하다면” 게이밍까지 고려한 상위 모델로 거론됩니다.&lt;br&gt;
                성능 기대치가 높아질수록, 실제 제품에서의 발열/전력/소프트웨어 최적화가 더 중요해집니다.
              &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;N1(하위) 포지션&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                더 넓은 가격대와 보급형/대중형 노트북까지 확장 가능한 라인업으로 거론됩니다.&lt;br&gt;
                이 경우 “충분히 좋은 성능 + 긴 배터리 + 합리적인 가격”이 설득 포인트가 됩니다.
              &lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;실무 기준으로 보면&lt;/strong&gt;&lt;br&gt;
            하드웨어 스펙 자체보다도 OEM(노트북 제조사)들이 실제로 어떤 폼팩터/전력 프로파일로 제품을 만들고,&lt;br&gt;
            드라이버·펌웨어·윈도우 최적화까지 묶어서 “완성도”를 얼마나 끌어올리는지가 최종 체감에 더 크게 작용합니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;왜 지금 노트북 칩 시장이 뜨거운가&lt;/h2&gt;

          &lt;p&gt;
            노트북 시장은 단순히 “빠른 CPU”만으로 승부가 나지 않습니다.
            배터리 수명, 발열, 성능 유지(지속 성능), AI 앱 가속, 그리고 가격까지 한 번에 맞춰야 합니다.
            이 환경에서 퀄컴은 스냅드래곤 X 계열로 Arm 기반 윈도우 노트북을 밀고 있고,
            AMD·인텔도 저전력과 성능을 동시에 잡는 경쟁을 이어가고 있습니다.
          &lt;/p&gt;

          &lt;ul&gt;
            &lt;li&gt;AI 기능이 OS/앱 전반으로 확산되며 NPU/AI 가속이 마케팅의 중심이 되는 흐름&lt;/li&gt;
            &lt;li&gt;초경량·울트라포터블 시장에서 전력 효율과 배터리 수명이 구매 결정에 더 큰 비중&lt;/li&gt;
            &lt;li&gt;가격 부담이 커질수록 “가성비 좋은 신세대 플랫폼”에 대한 수요 확대&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;가장 큰 변수: x86 에뮬레이션과 게임 호환성&lt;/h2&gt;

          &lt;p&gt;
            N1X가 고성능 GPU 수준을 지향한다고 해도, Arm 기반 윈도우의 현실적인 장벽은 여전히 &lt;strong&gt;x86 에뮬레이션&lt;/strong&gt;입니다.
            생산성 앱은 비교적 정리되는 추세가 있지만, 게임은 타이틀별 편차가 크고 드라이버·런타임·에뮬레이션 레이어가 복합적으로 작용합니다.
          &lt;/p&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;체감 포인트&lt;/strong&gt;&lt;br&gt;
            같은 스펙이라도 게임/앱에 따라 프레임이 급격히 흔들리거나, 특정 기능이 제한되는 경우가 생길 수 있습니다.&lt;br&gt;
            “돌아가느냐”보다 “쾌적하게 유지되느냐”가 실제 구매 만족도를 좌우합니다.
          &lt;/div&gt;

          &lt;ul&gt;
            &lt;li&gt;게임은 x86 기반 타이틀 비중이 높아, 에뮬레이션 품질이 곧 체감 성능&lt;/li&gt;
            &lt;li&gt;일부 에뮬레이션/최적화는 특정 플랫폼에 더 유리하게 설계되는 경우가 있어 편차 가능&lt;/li&gt;
            &lt;li&gt;초기 세대 제품은 ‘성능’보다 ‘호환성·안정성’에서 평가가 갈릴 수 있음&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;소비자 관점에서 체크할 것&lt;/h2&gt;

          &lt;p&gt;
            N1·N1X 기반 노트북이 실제로 등장한다면, 구매자 입장에서 확인해야 할 포인트는 분명합니다.
            “숫자 스펙”보다 “내가 쓰는 앱/게임이 제대로 돌아가는가”가 먼저입니다.
          &lt;/p&gt;

          &lt;div class=&quot;grid&quot;&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;AI 활용이 중심이라면&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                로컬 AI 기능, 영상 편집·인코딩, 생산성 앱의 AI 가속이 중요합니다.&lt;br&gt;
                이 경우 N1X가 강점을 보일 여지가 큽니다.
              &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;게임이 중심이라면&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                에뮬레이션 환경에서 타이틀 호환성과 드라이버 성숙도가 더 중요합니다.&lt;br&gt;
                초기 제품은 “신중한 검증 후 구매”가 안전합니다.
              &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;가격/배터리가 중심이라면&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;
                보급형~중급형에서의 전성비(성능/전력)와 배터리 시간이 핵심입니다.&lt;br&gt;
                N1 라인업이 시장을 넓히는 역할을 할 수 있습니다.
              &lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;마무리&lt;/h2&gt;

          &lt;p&gt;
            엔비디아 N1·N1X는 “노트북 SoC 시장에 AI 기업이 본격적으로 뛰어드는 신호”로 읽힙니다.
            경쟁이 치열해질수록 소비자 선택지는 넓어지고, 제조사들도 더 공격적으로 최적화를 밀어붙일 수 있습니다.
            다만 x86 에뮬레이션과 호환성이라는 변수는 단기간에 사라지기 어렵기 때문에,
            첫 세대 제품일수록 실제 사용 시나리오 기준으로 평가가 갈릴 가능성이 큽니다.
          &lt;/p&gt;
        &lt;/section&gt;
      &lt;/article&gt;
    &lt;/div&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;엔비디아 N1·N1X, 노트북 SoC 시장에 던지는 승부수&quot;,
              &quot;item&quot;: &quot;https://example.com/post/nvidia-n1x-laptop-soc&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;BlogPosting&quot;,
          &quot;headline&quot;: &quot;엔비디아 N1·N1X, 노트북 SoC 시장에 던지는 승부수&quot;,
          &quot;description&quot;: &quot;엔비디아가 N1·N1X로 윈도우 노트북 SoC 시장 진입을 예고하며 AMD·퀄컴과 경쟁 구도를 만든다. AI 성능 기대와 함께 x86 에뮬레이션·호환성은 핵심 관전 포인트로 꼽힌다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/post/nvidia-n1x-laptop-soc&quot;
          },
          &quot;keywords&quot;: [
            &quot;엔비디아 N1X&quot;,
            &quot;엔비디아 N1&quot;,
            &quot;노트북 SoC&quot;,
            &quot;Arm 윈도우&quot;,
            &quot;퀄컴 스냅드래곤 X&quot;,
            &quot;x86 에뮬레이션&quot;,
            &quot;윈도우 Prism&quot;,
            &quot;배터리 수명&quot;,
            &quot;블랙웰 GPU&quot;
          ]
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>IT 소식 뉴스/IT 소식</category>
      <category>Arm 윈도우</category>
      <category>RMAN</category>
      <category>x86 에뮬레이션</category>
      <category>노트북 SoC</category>
      <category>배터리 수명</category>
      <category>블랙웰 gpu</category>
      <category>엔비디아 N1</category>
      <category>엔비디아 N1X</category>
      <category>윈도우 Prism</category>
      <category>퀄컴 스냅드래곤 X</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/542</guid>
      <comments>https://togethergrow.tistory.com/entry/%EC%97%94%EB%B9%84%EB%94%94%EC%95%84-N1%C2%B7N1X-%EB%85%B8%ED%8A%B8%EB%B6%81-SoC-%EC%8B%9C%EC%9E%A5%EC%97%90-%EB%8D%98%EC%A7%80%EB%8A%94-%EC%8A%B9%EB%B6%80%EC%88%98#entry542comment</comments>
      <pubDate>Mon, 1 Jun 2026 10:52:35 +0900</pubDate>
    </item>
    <item>
      <title>RMAN 백업 시 ORA-17500 ODM NFS I/O error 해결</title>
      <link>https://togethergrow.tistory.com/entry/RMAN-%EB%B0%B1%EC%97%85-%EC%8B%9C-ORA-17500-ODM-NFS-IO-error-%ED%95%B4%EA%B2%B0</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;RMAN 백업 시 ORA-17500 ODM NFS I/O error 해결&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;Oracle 19c에서 /orabackup(NFS)로 RMAN 백업 수행 중 ORA-17500: ODM err::NFS I/O error로 실패할 때, DB 재기동 없이 우회 적용하는 이벤트 설정과 로컬 링크 디스크 구성 방법을 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;ORA-17500,ODM error,NFS I/O error,Oracle 19c,RMAN 백업,/orabackup,10298 이벤트,DB 재기동,심볼릭 링크,아카이브로그 백업&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;RMAN 백업 시 ORA-17500 ODM NFS I/O error 해결&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;Oracle 19c에서 NFS 기반 /orabackup으로 RMAN 백업 중 ORA-17500(NFS I/O error) 발생 시, 이벤트(10298) 우회와 로컬 링크 디스크로 복구하는 절차.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/post/oracle19c-rman-ora17500&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;RMAN 백업 시 ORA-17500 ODM NFS I/O error 해결&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;DB 재기동 없이 NFS 설정 우회(10298 이벤트) + 백업 경로 로컬 링크(/rman_backup)로 전환하는 실무 절차.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .article-wrap{line-height:1.7; word-break:keep-all;}
    .article-wrap .content-inner{max-width:980px; margin:0 auto; padding:0 8px;}
    .article-wrap h1{font-size:1.9rem; margin:0 0 14px;}
    .article-wrap h2{font-size:1.35rem; margin:26px 0 10px;}
    .article-wrap h3{font-size:1.1rem; margin:18px 0 10px;}
    .article-wrap p{margin:10px 0;}
    .article-wrap ul{margin:10px 0 10px 18px;}
    .article-wrap li{margin:6px 0;}
    .article-wrap .note{
      border:1px solid rgba(0,0,0,0.12);
      border-radius:14px;
      padding:12px 14px;
      margin:12px 0;
    }
    .article-wrap .note strong{display:inline-block; margin-bottom:6px;}
    .article-wrap pre{
      overflow:auto;
      border:1px solid rgba(0,0,0,0.12);
      border-radius:14px;
      padding:12px 14px;
      margin:12px 0;
    }
    .article-wrap code{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace;}
    .article-wrap .grid{
      display:grid;
      grid-template-columns:1fr;
      gap:10px;
      margin:10px 0;
    }
    .article-wrap .kv{
      border:1px solid rgba(0,0,0,0.12);
      border-radius:14px;
      padding:12px 14px;
    }
    .article-wrap .kv .k{font-weight:700; margin-bottom:6px;}
    .article-wrap .divider{height:1px; background:rgba(0,0,0,0.08); margin:18px 0;}
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;div class=&quot;content-inner&quot;&gt;
      &lt;article&gt;
        &lt;header&gt;
          &lt;h1&gt;RMAN 백업 시 ORA-17500 ODM NFS I/O error 해결&lt;/h1&gt;
          &lt;p&gt;
            NFS 마운트 디스크(&lt;code&gt;/orabackup&lt;/code&gt;)로 RMAN 백업을 수행할 때
            &lt;code&gt;ORA-17500: ODM err::NFS I/O error&lt;/code&gt;와 함께 백업이 Fail 되는 케이스를 기준으로,
            DB 재기동 없이 우회 적용하는 절차를 정리합니다.
          &lt;/p&gt;
        &lt;/header&gt;

        &lt;section&gt;
          &lt;h2&gt;개요&lt;/h2&gt;

          &lt;p&gt;
            Oracle 19c와 NFS 조합에서 특정 설정/동작이 맞지 않아 RMAN 백업 I/O가 실패하는 경우가 있습니다.
            설정을 “정상 해법”으로 수정하려면 DB Restart가 필요할 수 있는데,
            운영 환경에서는 즉시 재기동이 어려운 상황이 흔합니다.
          &lt;/p&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;실무 기준으로 보면&lt;/strong&gt;&lt;br&gt;
            재기동 없이 “백업 성공”을 먼저 확보해야 하는 경우가 많습니다.&lt;br&gt;
            이 문서는 NFS 설정을 우회하는 이벤트 적용 + 백업 경로를 로컬로 인식시키는 링크 구성으로
            단기 복구를 달성하는 방식에 초점을 둡니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;환경&lt;/h2&gt;

          &lt;div class=&quot;grid&quot;&gt;
            &lt;div class=&quot;kv&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;DB 버전&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;Oracle Database 19c&lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;kv&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;백업 대상 경로&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;&lt;code&gt;/orabackup&lt;/code&gt; (NFS Disk)&lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;kv&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;우회 대상 경로&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;&lt;code&gt;/rman_backup&lt;/code&gt; (로컬로 인식되도록 Link Disk 구성)&lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;kv&quot;&gt;
              &lt;div class=&quot;k&quot;&gt;백업 도구&lt;/div&gt;
              &lt;div class=&quot;v&quot;&gt;RMAN (target /)&lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;증상&lt;/h2&gt;

          &lt;ul&gt;
            &lt;li&gt;&lt;code&gt;/orabackup&lt;/code&gt; (NFS Disk)로 RMAN Backup 수행 중 에러 발생&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;ORA-17500: ODM err::NFS I/O error&lt;/code&gt; 메시지와 함께 백업 Fail&lt;/li&gt;
            &lt;li&gt;Oracle 19c와 NFS의 설정 문제로 판단되며, 정식 설정 변경에는 DB Restart가 필요&lt;/li&gt;
          &lt;/ul&gt;

          &lt;pre&gt;&lt;code&gt;-- 예시(증상 요약)
RMAN 백업 수행 중
ORA-17500: ODM err::NFS I/O error
백업 작업 FAIL&lt;/code&gt;&lt;/pre&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;1차 점검&lt;/h2&gt;

          &lt;p&gt;우회 적용 전에 아래를 빠르게 확인합니다.&lt;/p&gt;

          &lt;ul&gt;
            &lt;li&gt;NFS 마운트 상태/지연/끊김 여부(커널 로그/스토리지 이벤트 포함)&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;/orabackup&lt;/code&gt; 권한/소유자/용량/파일 생성 가능 여부&lt;/li&gt;
            &lt;li&gt;백업 파일 생성 시점에만 실패하는지, 특정 채널/동시성에서만 실패하는지&lt;/li&gt;
            &lt;li&gt;동일 서버에서 로컬 디스크로 백업 시 정상인지(원인 분리)&lt;/li&gt;
          &lt;/ul&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;운영 환경에서는&lt;/strong&gt;&lt;br&gt;
            “NFS 자체 장애”인지 “DB/NFS 연동 설정”인지 분리하는 게 우선입니다.&lt;br&gt;
            로컬 경로로 백업이 정상이라면, 우회 방식(로컬 링크 + 이벤트)을 적용할 근거가 강해집니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;심화 분석&lt;/h2&gt;

          &lt;p&gt;
            이번 케이스는 Oracle 19c와 NFS의 특정 동작/설정 충돌로 ODM 레벨에서 I/O 에러가 발생하는 흐름입니다.
            정식 수정은 설정 변경 + DB 재기동이 필요하나,
            단기적으로는 RMAN 수행 전후로 이벤트를 On/Off 하여 NFS 설정 영향을 우회할 수 있습니다.
          &lt;/p&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;h3&gt;우회 전략&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;
              &lt;strong&gt;전략 1:&lt;/strong&gt; RMAN 수행 전 &lt;code&gt;10298&lt;/code&gt; 이벤트를 설정하여 NFS 관련 설정 영향을 무시하도록 유도
            &lt;/li&gt;
            &lt;li&gt;
              &lt;strong&gt;전략 2:&lt;/strong&gt; 백업 경로를 &lt;code&gt;/orabackup&lt;/code&gt; 대신 &lt;code&gt;/rman_backup&lt;/code&gt;으로 변경&lt;br&gt;
              (NFS Disk를 Link로 구성하여 로컬로 인식되도록 설계)
            &lt;/li&gt;
            &lt;li&gt;
              &lt;strong&gt;전략 3:&lt;/strong&gt; 백업 완료 후 이벤트를 원복(Off)하여 운영 영향 최소화
            &lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;복구&lt;/h2&gt;

          &lt;p&gt;아래 절차는 “RMAN 백업 전 → 백업 수행 → 백업 후 원복” 순서로 진행합니다.&lt;/p&gt;

          &lt;h3&gt;1) RMAN 접속&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;oracle&amp;gt; rman target /&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;2) 백업 수행 전 이벤트 설정(우회 적용)&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;RMAN&amp;gt; SQL &quot;ALTER SYSTEM SET EVENTS ''10298 trace name context forever, level 32''&quot;;&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;포인트&lt;/strong&gt;&lt;br&gt;
            이벤트 문자열의 따옴표는 RMAN 프롬프트에서 이스케이프가 필요합니다.&lt;br&gt;
            위 예시처럼 &lt;code&gt;''&lt;/code&gt; 형태로 작성합니다.
          &lt;/div&gt;

          &lt;h3&gt;3) 백업 경로를 /rman_backup으로 변경하여 수행&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;RMAN&amp;gt; RUN {
  ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
  ALLOCATE CHANNEL c2 DEVICE TYPE DISK;

  BACKUP DATABASE FORMAT '/rman_backup/rwis/db_%U.bkp'
  PLUS ARCHIVELOG FORMAT '/rman_backup/rwis/arc_%U.bkp';

  RELEASE CHANNEL c1;
  RELEASE CHANNEL c2;
}&lt;/code&gt;&lt;/pre&gt;

          &lt;p&gt;
            위 구성은 백업 위치를 &lt;code&gt;/rman_backup&lt;/code&gt;으로 고정합니다.
            &lt;code&gt;/rman_backup&lt;/code&gt;은 &lt;code&gt;/orabackup&lt;/code&gt;(NFS Disk)를 Link로 구성해 로컬처럼 인식되도록 준비된 경로라는 전제입니다.
          &lt;/p&gt;

          &lt;h3&gt;4) 백업 수행 후 이벤트 원복(Off)&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;RMAN&amp;gt; SQL &quot;ALTER SYSTEM SET EVENTS ''10298 trace name context off''&quot;;&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;권장&lt;/strong&gt;&lt;br&gt;
            우회 이벤트를 켠 상태로 장시간 운영하지 말고,&lt;br&gt;
            백업 윈도우에만 적용 후 즉시 원복하는 운영 습관이 안전합니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;재발 방지&lt;/h2&gt;

          &lt;ul&gt;
            &lt;li&gt;가능하다면 정식 설정 수정(Oracle 19c ↔ NFS 마운트 옵션/ODM 경로 등) 후 DB Restart로 정상화&lt;/li&gt;
            &lt;li&gt;백업 경로는 일관성 있게 관리하고, 링크 경로(&lt;code&gt;/rman_backup&lt;/code&gt;)의 권한/용량/경로 표준을 문서화&lt;/li&gt;
            &lt;li&gt;백업 스크립트에 이벤트 On/Off 절차를 포함하되, 예외 상황에서도 Off가 보장되도록(실패 시 후처리) 구성&lt;/li&gt;
            &lt;li&gt;채널 수/동시성 변경 시 재현 여부를 확인해 “특정 부하에서만 발생”하는지 지속 관찰&lt;/li&gt;
            &lt;li&gt;백업 성공 이후에도 복구 테스트(restore/validate)를 주기적으로 수행&lt;/li&gt;
          &lt;/ul&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;실제 사용 시&lt;/strong&gt;&lt;br&gt;
            “우회로 백업이 된다”는 사실과 “근본 원인이 해결됐다”는 건 다릅니다.&lt;br&gt;
            운영 일정이 허용하는 시점에 정식 설정 조치 + 재기동으로 마무리하는 것을 권장합니다.
          &lt;/div&gt;
        &lt;/section&gt;

      &lt;/article&gt;
    &lt;/div&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;RMAN 백업 시 ORA-17500 ODM NFS I/O error 해결&quot;,
              &quot;item&quot;: &quot;https://example.com/post/oracle19c-rman-ora17500&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;TechArticle&quot;,
          &quot;headline&quot;: &quot;RMAN 백업 시 ORA-17500 ODM NFS I/O error 해결&quot;,
          &quot;description&quot;: &quot;Oracle 19c에서 /orabackup(NFS)로 RMAN 백업 수행 중 ORA-17500: ODM err::NFS I/O error로 실패할 때, DB 재기동 없이 우회 적용하는 이벤트 설정과 로컬 링크 디스크 구성 방법.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/post/oracle19c-rman-ora17500&quot;
          },
          &quot;keywords&quot;: [
            &quot;ORA-17500&quot;,
            &quot;ODM error&quot;,
            &quot;NFS I/O error&quot;,
            &quot;Oracle 19c&quot;,
            &quot;RMAN 백업&quot;,
            &quot;/orabackup&quot;,
            &quot;10298 이벤트&quot;,
            &quot;/rman_backup&quot;,
            &quot;아카이브로그 백업&quot;
          ]
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>지식 공유/DBMS</category>
      <category>/orabackup</category>
      <category>10298 이벤트</category>
      <category>DB 재기동</category>
      <category>NFS I/O error</category>
      <category>ODM error</category>
      <category>ORA-17500</category>
      <category>oracle 19c</category>
      <category>RMAN 백업</category>
      <category>심볼릭 링크</category>
      <category>아카이브로그 백업</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/541</guid>
      <comments>https://togethergrow.tistory.com/entry/RMAN-%EB%B0%B1%EC%97%85-%EC%8B%9C-ORA-17500-ODM-NFS-IO-error-%ED%95%B4%EA%B2%B0#entry541comment</comments>
      <pubDate>Mon, 1 Jun 2026 09:48:51 +0900</pubDate>
    </item>
    <item>
      <title>지니언스, PQC 기반 양자 보안 게이트웨이 개발 추진</title>
      <link>https://togethergrow.tistory.com/entry/%EC%A7%80%EB%8B%88%EC%96%B8%EC%8A%A4-PQC-%EA%B8%B0%EB%B0%98-%EC%96%91%EC%9E%90-%EB%B3%B4%EC%95%88-%EA%B2%8C%EC%9D%B4%ED%8A%B8%EC%9B%A8%EC%9D%B4-%EA%B0%9C%EB%B0%9C-%EC%B6%94%EC%A7%84</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
  &lt;title&gt;지니언스, PQC 기반 양자 보안 게이트웨이 개발 추진&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;지니언스가 양자내성암호(PQC)와 키 관리 시스템(KMS)을 결합한 ‘양자 보안 게이트웨이’ 핵심 기술을 최종 검증 단계로 끌어올리며, 포스트 퀀텀 시대 보안 전환 수요를 겨냥한 전략을 본격화했다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;지니언스,양자내성암호,PQC,양자보안게이트웨이,키관리시스템,KMS,제로트러스트,ZTNA,포스트퀀텀,사이버보안&quot; /&gt;
  &lt;link rel=&quot;canonical&quot; href=&quot;https://example.com/posts/genians-pqc-quantum-security-gateway&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:locale&quot; content=&quot;ko_KR&quot; /&gt;
  &lt;meta property=&quot;og:site_name&quot; content=&quot;Tistory Blog&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;지니언스, PQC 기반 양자 보안 게이트웨이 개발 추진&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;지니언스가 양자내성암호(PQC)와 KMS를 결합한 ‘양자 보안 게이트웨이’ 개발을 추진하며, 포스트 퀀텀 전환 수요에 대응한다.&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/posts/genians-pqc-quantum-security-gateway&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/assets/og-placeholder.jpg&quot; /&gt;
  &lt;meta property=&quot;og:image:alt&quot; content=&quot;PQC 기반 양자 보안 게이트웨이 개발 소식&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;지니언스, PQC 기반 양자 보안 게이트웨이 개발 추진&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;PQC+KMS 결합 ‘양자 보안 게이트웨이’ 핵심 기술이 최종 검증 단계에 진입했다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/assets/og-placeholder.jpg&quot; /&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;article class=&quot;post&quot; aria-label=&quot;본문&quot;&gt;
      &lt;header class=&quot;post-header&quot;&gt;
        &lt;h1 class=&quot;post-title&quot;&gt;지니언스, 양자 보안 시장 진출…PQC 기반 ‘양자 보안 게이트웨이’ 개발 추진&lt;/h1&gt;
        &lt;p class=&quot;post-subtitle&quot;&gt;연평균 43.4% 성장 전망이 거론되는 양자내성암호(PQC) 시장을 겨냥해, 기존 인프라를 크게 바꾸지 않는 전환형 보안 아키텍처를 준비한다.&lt;/p&gt;
      &lt;/header&gt;

      &lt;section class=&quot;post-section&quot;&gt;
        &lt;h2&gt;핵심 요약&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;callout&quot;&gt;
          지니언스가 &lt;b&gt;양자내성암호(PQC)&lt;/b&gt; 기반의 &lt;b&gt;‘양자 보안 게이트웨이(Quantum Security Gateway)’&lt;/b&gt; 핵심 기술을 개발 중이며, 현재 &lt;b&gt;최종 검증 단계&lt;/b&gt;에 진입했다.&lt;br&gt;
          이 개발은 &lt;b&gt;제로트러스트 3.0&lt;/b&gt; 전략의 일부로, 기존 &lt;b&gt;ZTNA&lt;/b&gt; 체계 위에 PQC를 결합하는 방향으로 설계된다.&lt;br&gt;
          게이트웨이 내부에 &lt;b&gt;고성능 키 관리 시스템(KMS)&lt;/b&gt;을 내장해, 암호 키의 생성·저장·배포·폐기 전 과정을 통제하는 구조를 목표로 한다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot;&gt;
        &lt;h2&gt;왜 지금 ‘포스트 퀀텀’인가&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;
          양자 컴퓨팅은 기존 컴퓨팅 환경에서 장시간이 소요되는 연산을 단축할 수 있는 잠재력을 가진 기술로 평가되며,
          이 흐름 속에서 공개키 암호 체계가 장기적으로 위협받을 수 있다는 우려가 커지고 있다.
          특히 금융·국방·행정·클라우드 등 주요 영역에서 사용하는 암호 체계가 양자 환경에서 취약해질 가능성이 논의되면서,
          기존 체계를 &lt;b&gt;양자내성암호(PQC)&lt;/b&gt;로 전환하려는 움직임이 확대되는 분위기다.
        &lt;/p&gt;
        &lt;p class=&quot;note&quot;&gt;
          실제 사용 시 중요한 포인트는 “이론적으로 안전한 알고리즘” 자체보다, &lt;b&gt;운영 환경에서 키를 어떻게 생성·배포·회수·폐기하는지&lt;/b&gt;까지 포함한 전체 체계의 일관성이다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot;&gt;
        &lt;h2&gt;지니언스 ‘양자 보안 게이트웨이’ 설계 포인트&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;
          지니언스가 추진하는 양자 보안 게이트웨이는 단순히 PQC를 적용하는 수준을 넘어,
          &lt;b&gt;양자내성암호 + 키 관리(KMS)&lt;/b&gt;를 하나의 게이트웨이 구조로 묶어 &lt;b&gt;통합 통제&lt;/b&gt;를 지향한다.
          이 방식은 암호 기술과 보안 아키텍처 설계 역량이 함께 요구되는 접근이다.
        &lt;/p&gt;

        &lt;div class=&quot;grid&quot;&gt;
          &lt;div class=&quot;card&quot;&gt;
            &lt;h3 class=&quot;card-title&quot;&gt;1) ZTNA 체계 위에 PQC 결합&lt;/h3&gt;
            &lt;p class=&quot;card-text&quot;&gt;
              기존 제로트러스트 네트워크 접근(ZTNA) 기반의 정책·접근 제어 흐름을 유지하면서,
              암호 계층을 포스트 퀀텀에 맞춰 재정렬하는 방향이다.
            &lt;/p&gt;
          &lt;/div&gt;
          &lt;div class=&quot;card&quot;&gt;
            &lt;h3 class=&quot;card-title&quot;&gt;2) KMS 내장으로 키 라이프사이클 통제&lt;/h3&gt;
            &lt;p class=&quot;card-text&quot;&gt;
              키 생성부터 저장, 배포, 폐기까지의 전 과정을 시스템적으로 통제해
              “강한 암호”와 “운영 가능한 보안”을 동시에 겨냥한다.
            &lt;/p&gt;
          &lt;/div&gt;
          &lt;div class=&quot;card&quot;&gt;
            &lt;h3 class=&quot;card-title&quot;&gt;3) 전면 교체 대신 ‘전환형’ 도입&lt;/h3&gt;
            &lt;p class=&quot;card-text&quot;&gt;
              보안 인프라를 통째로 갈아엎기보다, 레거시 시스템을 유지한 채
              PQC와 키 관리 체계를 덧붙이는 방식으로 운영 연속성을 확보한다.
            &lt;/p&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot;&gt;
        &lt;h2&gt;시장 관점: 성장률이 의미하는 것&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;
          시장 조사 관점에서 양자내성암호 관련 시장은 높은 성장률이 거론되고 있다.
          기사 내용 기준으로는 2025년부터 연평균 43.4% 성장 전망과 2030년 34억2천만 달러 규모 전망이 언급됐다.
          수치 자체보다 중요한 것은, &lt;b&gt;규제·표준·조달&lt;/b&gt;이 얽히는 산업(금융·공공·국방)에서
          “암호 전환 로드맵”이 실제 예산·사업으로 연결될 가능성이 커지고 있다는 점이다.
        &lt;/p&gt;

        &lt;div class=&quot;callout subtle&quot;&gt;
          관리자 입장에서 보면, 포스트 퀀텀 전환은 “새 제품을 하나 더 도입”하는 문제가 아니라&lt;br&gt;
          &lt;b&gt;암호 민첩성(crypto agility)&lt;/b&gt;과 &lt;b&gt;키 운영 프로세스&lt;/b&gt;를 조직 내 표준으로 만드는 프로젝트에 가깝다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot;&gt;
        &lt;h2&gt;적용 분야와 확장 시나리오&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;
          지니언스는 금융·공공·국방뿐 아니라 자율주행, 인공지능, 클라우드 등
          차세대 산업 영역에서도 양자 보안 수요가 커질 수 있다는 관점에서 사업 기회를 확장하려는 계획을 제시했다.
          핵심은 “PQC 적용”을 단발성 기술 적용으로 끝내지 않고,
          &lt;b&gt;접근 제어(ZTNA) + 키 관리(KMS) + 게이트웨이&lt;/b&gt;를 묶어 포트폴리오로 강화하는 방향이다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot;&gt;
        &lt;h2&gt;정리&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;
          이번 발표 흐름은 지니언스가 제로트러스트 기반 보안 역량에 &lt;b&gt;양자내성암호(PQC)&lt;/b&gt;를 결합해,
          포스트 퀀텀 시대로의 전환 수요를 겨냥한 &lt;b&gt;‘양자 보안 게이트웨이’&lt;/b&gt; 개발을 추진한다는 내용으로 요약된다.
          전면 교체가 아닌 전환형 아키텍처를 지향하고, KMS를 내장해 키 라이프사이클 통제를 강화하려는 점이 특징이다.
        &lt;/p&gt;
      &lt;/section&gt;
    &lt;/article&gt;

    &lt;style&gt;
      .article-wrap{
        max-width: 860px;
        margin: 0 auto;
        padding: 16px 18px;
        line-height: 1.7;
      }
      .article-wrap .post-title{
        font-size: 1.75rem;
        line-height: 1.25;
        margin: 0 0 10px 0;
        letter-spacing: -0.2px;
      }
      .article-wrap .post-subtitle{
        margin: 0 0 18px 0;
        opacity: 0.9;
      }
      .article-wrap .post-section{
        margin: 22px 0 0 0;
        padding: 0;
      }
      .article-wrap h2{
        font-size: 1.25rem;
        margin: 0;
      }
      .article-wrap .spacer{
        height: 10px;
      }
      .article-wrap p{
        margin: 0 0 12px 0;
      }
      .article-wrap .note{
        padding: 12px 14px;
        border: 1px solid rgba(0,0,0,0.12);
        border-radius: 14px;
      }
      .article-wrap .callout{
        padding: 14px 14px;
        border: 1px solid rgba(0,0,0,0.14);
        border-radius: 16px;
      }
      .article-wrap .callout.subtle{
        border-style: dashed;
      }
      .article-wrap .grid{
        display: grid;
        grid-template-columns: 1fr;
        gap: 12px;
        margin-top: 10px;
      }
      @media (min-width: 820px){
        .article-wrap .grid{
          grid-template-columns: 1fr 1fr 1fr;
        }
      }
      .article-wrap .card{
        padding: 14px 14px;
        border: 1px solid rgba(0,0,0,0.12);
        border-radius: 16px;
      }
      .article-wrap .card-title{
        font-size: 1.02rem;
        margin: 0 0 8px 0;
      }
      .article-wrap .card-text{
        margin: 0;
      }
    &lt;/style&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
      {
        &quot;@context&quot;: &quot;https://schema.org&quot;,
        &quot;@graph&quot;: [
          {
            &quot;@type&quot;: &quot;BreadcrumbList&quot;,
            &quot;itemListElement&quot;: [
              {
                &quot;@type&quot;: &quot;ListItem&quot;,
                &quot;position&quot;: 1,
                &quot;name&quot;: &quot;홈&quot;,
                &quot;item&quot;: &quot;https://example.com/&quot;
              },
              {
                &quot;@type&quot;: &quot;ListItem&quot;,
                &quot;position&quot;: 2,
                &quot;name&quot;: &quot;보안&quot;,
                &quot;item&quot;: &quot;https://example.com/category/security&quot;
              },
              {
                &quot;@type&quot;: &quot;ListItem&quot;,
                &quot;position&quot;: 3,
                &quot;name&quot;: &quot;지니언스, PQC 기반 양자 보안 게이트웨이 개발 추진&quot;,
                &quot;item&quot;: &quot;https://example.com/posts/genians-pqc-quantum-security-gateway&quot;
              }
            ]
          },
          {
            &quot;@type&quot;: &quot;BlogPosting&quot;,
            &quot;mainEntityOfPage&quot;: {
              &quot;@type&quot;: &quot;WebPage&quot;,
              &quot;@id&quot;: &quot;https://example.com/posts/genians-pqc-quantum-security-gateway&quot;
            },
            &quot;headline&quot;: &quot;지니언스, 양자 보안 시장 진출…PQC 기반 ‘양자 보안 게이트웨이’ 개발 추진&quot;,
            &quot;description&quot;: &quot;지니언스가 양자내성암호(PQC)와 키 관리 시스템(KMS)을 결합한 ‘양자 보안 게이트웨이’ 핵심 기술을 최종 검증 단계로 끌어올리며, 포스트 퀀텀 시대 보안 전환 수요를 겨냥한 전략을 본격화했다.&quot;,
            &quot;inLanguage&quot;: &quot;ko&quot;,
            &quot;image&quot;: &quot;https://example.com/assets/og-placeholder.jpg&quot;,
            &quot;url&quot;: &quot;https://example.com/posts/genians-pqc-quantum-security-gateway&quot;,
            &quot;about&quot;: [
              &quot;양자내성암호(PQC)&quot;,
              &quot;양자 보안&quot;,
              &quot;키 관리 시스템(KMS)&quot;,
              &quot;제로트러스트&quot;,
              &quot;ZTNA&quot;
            ]
          }
        ]
      }
    &lt;/script&gt;
  &lt;/main&gt;

  &lt;!-- 관리자용 태그(10개): 지니언스, 양자내성암호, PQC, 양자보안, 양자보안게이트웨이, 키관리시스템, KMS, 제로트러스트, ZTNA, 포스트퀀텀 --&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>IT 소식 뉴스/IT 소식</category>
      <category>KMS</category>
      <category>PQC</category>
      <category>ztna</category>
      <category>사이버보안</category>
      <category>양자내성암호</category>
      <category>양자보안게이트웨이</category>
      <category>제로트러스트</category>
      <category>지니언스</category>
      <category>키관리시스템</category>
      <category>포스트퀀텀</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/540</guid>
      <comments>https://togethergrow.tistory.com/entry/%EC%A7%80%EB%8B%88%EC%96%B8%EC%8A%A4-PQC-%EA%B8%B0%EB%B0%98-%EC%96%91%EC%9E%90-%EB%B3%B4%EC%95%88-%EA%B2%8C%EC%9D%B4%ED%8A%B8%EC%9B%A8%EC%9D%B4-%EA%B0%9C%EB%B0%9C-%EC%B6%94%EC%A7%84#entry540comment</comments>
      <pubDate>Sun, 31 May 2026 18:12:46 +0900</pubDate>
    </item>
    <item>
      <title>바이브코딩 - Flutter Project 생성</title>
      <link>https://togethergrow.tistory.com/entry/%EB%B0%94%EC%9D%B4%EB%B8%8C%EC%BD%94%EB%94%A9-Flutter-Project-%EC%83%9D%EC%84%B1</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;폴더 : C:\Users\user\Desktop\flutterproject&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Power shell을 통해 Fultter Project 생성 ( PC 사양에 따라 소요 시간 상이 )&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PJKRU/dJMcadWtTi9/zkrKku2pFFMZt37hZk80P1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PJKRU/dJMcadWtTi9/zkrKku2pFFMZt37hZk80P1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PJKRU/dJMcadWtTi9/zkrKku2pFFMZt37hZk80P1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPJKRU%2FdJMcadWtTi9%2FzkrKku2pFFMZt37hZk80P1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;842&quot; height=&quot;342&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;342&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 정상 동작 시 아래 결과 값 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;All done! &lt;/span&gt;&lt;/span&gt;&lt;span&gt;To run your application, type: &lt;/span&gt;&lt;span&gt; cd hsk_vocabulary &amp;amp;&amp;amp; flutter run&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;2. VSCode로 프로젝트 열기&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;* VSCode 미설치 시 아래와 같이 에러 출력&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;841&quot; data-origin-height=&quot;136&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bf7v8o/dJMcacDkKlK/ZUIjEreoi4fU9IKd7N5DB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bf7v8o/dJMcacDkKlK/ZUIjEreoi4fU9IKd7N5DB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bf7v8o/dJMcacDkKlK/ZUIjEreoi4fU9IKd7N5DB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbf7v8o%2FdJMcacDkKlK%2FZUIjEreoi4fU9IKd7N5DB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;841&quot; height=&quot;136&quot; data-origin-width=&quot;841&quot; data-origin-height=&quot;136&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* VSCode Install URL : &lt;a href=&quot;https://code.visualstudio.com&quot;&gt;https://code.visualstudio.com&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 설치 후 Extensions 메뉴에서 &quot;Flutter&quot;, &quot;Dart&quot; 설치 필요&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1199&quot; data-origin-height=&quot;803&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cttRiR/dJMcada3Q55/6ccdWbIdk5gyH70j7VqYdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cttRiR/dJMcada3Q55/6ccdWbIdk5gyH70j7VqYdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cttRiR/dJMcada3Q55/6ccdWbIdk5gyH70j7VqYdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcttRiR%2FdJMcada3Q55%2F6ccdWbIdk5gyH70j7VqYdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1199&quot; height=&quot;803&quot; data-origin-width=&quot;1199&quot; data-origin-height=&quot;803&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. VSCode에서 Project 정상 확인&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1156&quot; data-origin-height=&quot;794&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HifjW/dJMcagTfgLQ/sbmnHlDces3lLj0N4XY3LK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HifjW/dJMcagTfgLQ/sbmnHlDces3lLj0N4XY3LK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HifjW/dJMcagTfgLQ/sbmnHlDces3lLj0N4XY3LK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHifjW%2FdJMcagTfgLQ%2FsbmnHlDces3lLj0N4XY3LK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1156&quot; height=&quot;794&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1156&quot; data-origin-height=&quot;794&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. VSCode 동작 확인하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* Termianl -&amp;gt; New Terminal 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* flutter run -d windows 명령어 입력&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;798&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uw39W/dJMcafz2jjG/NufPrvRBWIKouiooY7snw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uw39W/dJMcafz2jjG/NufPrvRBWIKouiooY7snw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uw39W/dJMcafz2jjG/NufPrvRBWIKouiooY7snw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fuw39W%2FdJMcafz2jjG%2FNufPrvRBWIKouiooY7snw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1200&quot; height=&quot;798&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;798&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1041&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c8POfs/dJMcaak9tdw/dF5ZGK1GM81o8DoLwW7qRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c8POfs/dJMcaak9tdw/dF5ZGK1GM81o8DoLwW7qRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c8POfs/dJMcaak9tdw/dF5ZGK1GM81o8DoLwW7qRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc8POfs%2FdJMcaak9tdw%2FdF5ZGK1GM81o8DoLwW7qRk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1041&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1041&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>소소한 하루/바이브 코딩</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/539</guid>
      <comments>https://togethergrow.tistory.com/entry/%EB%B0%94%EC%9D%B4%EB%B8%8C%EC%BD%94%EB%94%A9-Flutter-Project-%EC%83%9D%EC%84%B1#entry539comment</comments>
      <pubDate>Sat, 30 May 2026 16:07:24 +0900</pubDate>
    </item>
    <item>
      <title>바이브코딩 - Flutter 설치하기</title>
      <link>https://togethergrow.tistory.com/entry/%EB%B0%94%EC%9D%B4%EB%B8%8C%EC%BD%94%EB%94%A9-Flutter-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;1. Flutter SDK 설치하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;URL : &lt;a href=&quot;https://docs.flutter.dev/install/archive&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://docs.flutter.dev/install/archive&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1905&quot; data-origin-height=&quot;918&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JSg8Y/dJMcahq6ktO/2H1A9hojboeJmC7T4w1d51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JSg8Y/dJMcahq6ktO/2H1A9hojboeJmC7T4w1d51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JSg8Y/dJMcahq6ktO/2H1A9hojboeJmC7T4w1d51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJSg8Y%2FdJMcahq6ktO%2F2H1A9hojboeJmC7T4w1d51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1905&quot; height=&quot;918&quot; data-origin-width=&quot;1905&quot; data-origin-height=&quot;918&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 다운로드 받은 SDK 파일을 사용할 폴더 위치에 압축해제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. Flutter 환경변수 설정하기&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 시스템 속성 &amp;rarr; 환경변수&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;475&quot; data-origin-height=&quot;529&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wjhhf/dJMcaijcLsR/BXoXJekzDlYWTnXWi51U2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wjhhf/dJMcaijcLsR/BXoXJekzDlYWTnXWi51U2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wjhhf/dJMcaijcLsR/BXoXJekzDlYWTnXWi51U2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwjhhf%2FdJMcaijcLsR%2FBXoXJekzDlYWTnXWi51U2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;475&quot; height=&quot;529&quot; data-origin-width=&quot;475&quot; data-origin-height=&quot;529&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 환경변수 PATH 편집에서 &quot;새로 만들기&quot;를 통해 Flutte\bin 경로 입력&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;524&quot; data-origin-height=&quot;496&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b37dPn/dJMcah5H7Xl/SSVzU665s9vwmHEUDE3ZC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b37dPn/dJMcah5H7Xl/SSVzU665s9vwmHEUDE3ZC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b37dPn/dJMcah5H7Xl/SSVzU665s9vwmHEUDE3ZC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb37dPn%2FdJMcah5H7Xl%2FSSVzU665s9vwmHEUDE3ZC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;524&quot; height=&quot;496&quot; data-origin-width=&quot;524&quot; data-origin-height=&quot;496&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. CMD 명령어를 통해 Flutter 상태 확인하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* CMD 프롬포트 실행 후 &quot;flutter docter&quot; 명령어 입력&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;976&quot; data-origin-height=&quot;508&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5VTMo/dJMcagyUmKy/pjpkQ6iD3EEhrui6zqH4rK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5VTMo/dJMcagyUmKy/pjpkQ6iD3EEhrui6zqH4rK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5VTMo/dJMcagyUmKy/pjpkQ6iD3EEhrui6zqH4rK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5VTMo%2FdJMcagyUmKy%2FpjpkQ6iD3EEhrui6zqH4rK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;976&quot; height=&quot;508&quot; data-origin-width=&quot;976&quot; data-origin-height=&quot;508&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. Android Studio 설치하기&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* flutter docter 명령어 결과 값 확인 후 빠진 항목 설치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;URL : &lt;a href=&quot;https://developer.android.com/studio?hl=ko#get-android-studio&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://developer.android.com/studio?hl=ko#get-android-studio&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1908&quot; data-origin-height=&quot;491&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d107JZ/dJMcadPFYuX/KYRRNX5BomZIb2D3EObV0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d107JZ/dJMcadPFYuX/KYRRNX5BomZIb2D3EObV0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d107JZ/dJMcadPFYuX/KYRRNX5BomZIb2D3EObV0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd107JZ%2FdJMcadPFYuX%2FKYRRNX5BomZIb2D3EObV0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1908&quot; height=&quot;491&quot; data-origin-width=&quot;1908&quot; data-origin-height=&quot;491&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. Android Studio 설치 후 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 설치 후 &quot;More Actions&quot;에서 &quot;SDK Manager&quot; 선택&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;641&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sGNZG/dJMcafUlzzX/z8xcY19MyzQBNMUrkTRMy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sGNZG/dJMcafUlzzX/z8xcY19MyzQBNMUrkTRMy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sGNZG/dJMcafUlzzX/z8xcY19MyzQBNMUrkTRMy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsGNZG%2FdJMcafUlzzX%2Fz8xcY19MyzQBNMUrkTRMy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;786&quot; height=&quot;641&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;641&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* SDK Tools에서 &quot;Android SKD Command-line Tools (latest)&quot; 선택&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;983&quot; data-origin-height=&quot;734&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VJ5YQ/dJMcadWtRSE/YyiKCSRIafHMK1beWiZW1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VJ5YQ/dJMcadWtRSE/YyiKCSRIafHMK1beWiZW1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VJ5YQ/dJMcadWtRSE/YyiKCSRIafHMK1beWiZW1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVJ5YQ%2FdJMcadWtRSE%2FYyiKCSRIafHMK1beWiZW1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;983&quot; height=&quot;734&quot; data-origin-width=&quot;983&quot; data-origin-height=&quot;734&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7. Android Studio Plugins &quot;Flutter&quot; 설치&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;782&quot; data-origin-height=&quot;642&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n4yy9/dJMcaglnhXt/CfRIjSZ5xpdb3UkYNGWv10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n4yy9/dJMcaglnhXt/CfRIjSZ5xpdb3UkYNGWv10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n4yy9/dJMcaglnhXt/CfRIjSZ5xpdb3UkYNGWv10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn4yy9%2FdJMcaglnhXt%2FCfRIjSZ5xpdb3UkYNGWv10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;782&quot; height=&quot;642&quot; data-origin-width=&quot;782&quot; data-origin-height=&quot;642&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* flutter docter 명령어로 변경 내용 확인&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKIOfD/dJMcafUlzBy/XdX08X8zLkWeRl1f7uUsUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKIOfD/dJMcafUlzBy/XdX08X8zLkWeRl1f7uUsUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKIOfD/dJMcafUlzBy/XdX08X8zLkWeRl1f7uUsUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKIOfD%2FdJMcafUlzBy%2FXdX08X8zLkWeRl1f7uUsUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;962&quot; height=&quot;250&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;250&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* Android Licnese 동의하기 : flutter docter --android-licenses 명령어 입력 후 &quot;Y&quot; 입력&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;959&quot; data-origin-height=&quot;101&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biwHhO/dJMcafUlzB6/6rIYRF9FKNuSG0juEoOsbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biwHhO/dJMcafUlzB6/6rIYRF9FKNuSG0juEoOsbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biwHhO/dJMcafUlzB6/6rIYRF9FKNuSG0juEoOsbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiwHhO%2FdJMcafUlzB6%2F6rIYRF9FKNuSG0juEoOsbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;959&quot; height=&quot;101&quot; data-origin-width=&quot;959&quot; data-origin-height=&quot;101&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* Android License 동의 후 flutter docter 확인&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;239&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x6de6/dJMcageC9rj/vOFsRT9GWCXjss4BO3NKGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x6de6/dJMcageC9rj/vOFsRT9GWCXjss4BO3NKGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x6de6/dJMcageC9rj/vOFsRT9GWCXjss4BO3NKGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx6de6%2FdJMcageC9rj%2FvOFsRT9GWCXjss4BO3NKGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;962&quot; height=&quot;239&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;239&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;** Chrome - develop for the web [X] 표시인 경우 Chromd Browser 설치 시 해결&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8. Visual Studio - develop Windows Apps 설치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;URL : &lt;a href=&quot;https://visualstudio.microsoft.com/ko/downloads/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://visualstudio.microsoft.com/ko/downloads/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 설치 시 &quot;C++를 사용한 데스크톱 개발&quot; 선택 후 설치&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1277&quot; data-origin-height=&quot;712&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dh1eun/dJMcaayJOlN/TiOtOd7Oa8LEI1tSQlaSr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dh1eun/dJMcaayJOlN/TiOtOd7Oa8LEI1tSQlaSr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dh1eun/dJMcaayJOlN/TiOtOd7Oa8LEI1tSQlaSr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdh1eun%2FdJMcaayJOlN%2FTiOtOd7Oa8LEI1tSQlaSr0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1277&quot; height=&quot;712&quot; data-origin-width=&quot;1277&quot; data-origin-height=&quot;712&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* flutter docter로 변경 내용 확인하기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;190&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kDl7m/dJMcahR6o46/s3G64M2p38uJvOCUGdHck1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kDl7m/dJMcahR6o46/s3G64M2p38uJvOCUGdHck1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kDl7m/dJMcahR6o46/s3G64M2p38uJvOCUGdHck1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkDl7m%2FdJMcahR6o46%2Fs3G64M2p38uJvOCUGdHck1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;190&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;190&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>소소한 하루/바이브 코딩</category>
      <category>Android</category>
      <category>Android Studio</category>
      <category>Claude</category>
      <category>developer</category>
      <category>Flutter</category>
      <category>vibe coding</category>
      <category>Visual Studio</category>
      <category>개발</category>
      <category>바이브 코딩</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/538</guid>
      <comments>https://togethergrow.tistory.com/entry/%EB%B0%94%EC%9D%B4%EB%B8%8C%EC%BD%94%EB%94%A9-Flutter-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0#entry538comment</comments>
      <pubDate>Sat, 30 May 2026 15:06:57 +0900</pubDate>
    </item>
    <item>
      <title>CVE 점수에 따른 위험도 정리</title>
      <link>https://togethergrow.tistory.com/entry/CVE-%EC%A0%90%EC%88%98%EC%97%90-%EB%94%B0%EB%A5%B8-%EC%9C%84%ED%97%98%EB%8F%84-%EC%A0%95%EB%A6%AC</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;CVE 점수에 따른 위험도 정리&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;CVE의 CVSS 점수(0.0~10.0)를 기준으로 None/Low/Medium/High/Critical 위험도를 정리하고, 운영 환경에서 패치 우선순위와 대응 기준(SLA)까지 한 번에 정리한다. CVSS v3.1과 v4.0의 정성 등급 구간도 함께 정리.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;CVE,CVSS,취약점 점수,위험도,심각도 구간,패치 우선순위,보안 SLA,취약점 관리,CVSS v4.0,CVSS v3.1&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;CVE 점수에 따른 위험도 정리&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;CVSS 점수 구간별 위험도(None~Critical)와 운영 대응 기준(SLA/우선순위)을 정리한다.&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/post/cvss-risk-by-score&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;CVE 점수에 따른 위험도 정리&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;CVSS 점수(0~10) 구간별 위험도와 패치 우선순위를 운영 기준으로 정리.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;main class=&quot;post-content&quot; role=&quot;main&quot;&gt;
    &lt;article class=&quot;post-article&quot; aria-label=&quot;CVSS 점수에 따른 위험도 정리&quot;&gt;
      &lt;header class=&quot;post-header&quot;&gt;
        &lt;h1 class=&quot;post-title&quot;&gt;CVE 점수에 따른 위험도 정리&lt;/h1&gt;
        &lt;p class=&quot;post-subtitle&quot;&gt;
          CVE 자체는 “식별자”이고, 실제 위험도 판단의 출발점은 보통 &lt;strong&gt;CVSS 점수(0.0~10.0)&lt;/strong&gt;다.
          다만 점수만으로 결론을 내리면 운영에서는 자주 엇갈리므로, 점수 구간 + 노출 환경 + 악용 징후를 함께 묶어 우선순위를 만드는 게 핵심이다.
        &lt;/p&gt;
      &lt;/header&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;overview&quot;&gt;
        &lt;h2&gt;CVSS 점수와 위험도는 어떻게 연결되는가&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;
          CVSS(Common Vulnerability Scoring System)는 취약점의 기술적 특성을 점수로 환산해 “비교 가능한 기준”을 제공한다.
          CVSS v3.1과 v4.0 모두 점수(0.0~10.0)를 &lt;strong&gt;None/Low/Medium/High/Critical&lt;/strong&gt; 정성 등급으로 매핑할 수 있으며,
          매핑 구간은 동일하게 정의되어 있다.
        &lt;/p&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;실무 기준으로 보면&lt;/strong&gt;&lt;br&gt;
          CVSS는 “정렬 기준”이지 “우리 환경의 최종 위험도”가 아니다.&lt;br&gt;
          동일한 7.5(High)라도 인터넷 노출 + 인증우회 + PoC 공개면 즉시 대응이고,&lt;br&gt;
          내부망 + 접근 제한 + 보상통제 존재면 계획 패치로 처리될 수 있다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;score-table&quot;&gt;
        &lt;h2&gt;CVSS 점수 구간별 위험도&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;div class=&quot;table-wrap&quot; role=&quot;region&quot; aria-label=&quot;CVSS 점수 구간별 위험도 표&quot; tabindex=&quot;0&quot;&gt;
          &lt;table class=&quot;tbl&quot;&gt;
            &lt;thead&gt;
              &lt;tr&gt;
                &lt;th&gt;정성 등급&lt;/th&gt;
                &lt;th&gt;점수 구간&lt;/th&gt;
                &lt;th&gt;의미(요약)&lt;/th&gt;
                &lt;th&gt;운영 권장 대응(기본)&lt;/th&gt;
              &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
              &lt;tr&gt;
                &lt;td&gt;None&lt;/td&gt;
                &lt;td&gt;0.0&lt;/td&gt;
                &lt;td&gt;영향 없음(정보성/오탐 포함 가능)&lt;/td&gt;
                &lt;td&gt;기록/모니터링, 예외 승인 기준만 정리&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;Low&lt;/td&gt;
                &lt;td&gt;0.1 ~ 3.9&lt;/td&gt;
                &lt;td&gt;영향이 제한적(조건이 까다롭거나 피해 범위가 작음)&lt;/td&gt;
                &lt;td&gt;정기 패치 창에 반영(다만 노출면이 크면 우선순위 상향)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;Medium&lt;/td&gt;
                &lt;td&gt;4.0 ~ 6.9&lt;/td&gt;
                &lt;td&gt;영향이 현실적(운영 환경에서 자주 누적되는 구간)&lt;/td&gt;
                &lt;td&gt;계획 패치 + 완화책(설정/권한/필터) 병행&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;High&lt;/td&gt;
                &lt;td&gt;7.0 ~ 8.9&lt;/td&gt;
                &lt;td&gt;빠른 대응 필요(원격/권한상승/광범위 영향 가능)&lt;/td&gt;
                &lt;td&gt;우선 패치 대상, 노출 서비스는 단기 완화 즉시 적용&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;Critical&lt;/td&gt;
                &lt;td&gt;9.0 ~ 10.0&lt;/td&gt;
                &lt;td&gt;최상위 위험(체인 공격/대규모 확산 가능)&lt;/td&gt;
                &lt;td&gt;긴급 대응(핫픽스/차단/우회), 변경관리 예외 프로세스 가동&lt;/td&gt;
              &lt;/tr&gt;
            &lt;/tbody&gt;
          &lt;/table&gt;
        &lt;/div&gt;

        &lt;p class=&quot;note&quot;&gt;
          위 구간은 CVSS v3.1과 v4.0의 정성 등급 매핑 기준으로 널리 사용된다.
          (정의: FIRST CVSS v3.1 / v4.0 스펙)
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;how-to-use&quot;&gt;
        &lt;h2&gt;운영에서 “점수만” 쓰면 실패하는 지점&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;1) 노출면(Exposure) 보정: 인터넷 노출이면 한 단계 올려 본다&lt;/h3&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;&lt;strong&gt;인터넷 노출 서비스&lt;/strong&gt;(웹/게이트웨이/VPN/프록시/메일)는 동일 점수라도 우선순위를 상향&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;관리자 콘솔&lt;/strong&gt;, &lt;strong&gt;인증/세션&lt;/strong&gt;, &lt;strong&gt;파일 업로드/파서&lt;/strong&gt;는 체감 위험이 더 큼&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;2) 악용 신호(Threat) 보정: PoC/익스플로잇 유통이면 즉시 대응&lt;/h3&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;PoC 공개, 익스플로잇 모듈(프레임워크) 포함, 대량 스캔 징후가 있으면 점수와 무관하게 긴급도 상승&lt;/li&gt;
          &lt;li&gt;반대로, 조건이 까다롭고 재현이 어려운 취약점은 완화 후 계획 패치로 관리 가능&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;3) 자산 중요도(Impact) 보정: “어디에 깔렸는가”가 결론을 바꾼다&lt;/h3&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;동일 취약점이라도 &lt;strong&gt;인증 서버/결제/데이터베이스/키 관리&lt;/strong&gt;에 있으면 즉시 대응&lt;/li&gt;
          &lt;li&gt;개발/스테이징/비핵심 배치 환경은 상대적으로 완화 중심으로 운영 가능&lt;/li&gt;
        &lt;/ul&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;정리&lt;/strong&gt;&lt;br&gt;
          “CVSS 점수(Severity)”는 1차 정렬,&lt;br&gt;
          “노출면/악용 신호/자산 중요도(Risk)”가 최종 우선순위를 만든다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;sla&quot;&gt;
        &lt;h2&gt;점수 구간별 권장 대응 SLA 예시&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;p&gt;
          아래는 운영팀에서 바로 쓰기 쉬운 “기본 SLA 템플릿” 예시다.
          조직의 변경관리/가용성 목표에 맞게 숫자만 조정해 쓰면 된다.
        &lt;/p&gt;

        &lt;div class=&quot;table-wrap&quot; role=&quot;region&quot; aria-label=&quot;CVSS 등급별 대응 SLA 예시&quot; tabindex=&quot;0&quot;&gt;
          &lt;table class=&quot;tbl&quot;&gt;
            &lt;thead&gt;
              &lt;tr&gt;
                &lt;th&gt;등급&lt;/th&gt;
                &lt;th&gt;기본 대응 목표&lt;/th&gt;
                &lt;th&gt;즉시 적용 가능한 완화 예&lt;/th&gt;
              &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
              &lt;tr&gt;
                &lt;td&gt;Critical (9.0~10.0)&lt;/td&gt;
                &lt;td&gt;24~72시간 내 완화/패치(가능하면 즉시)&lt;/td&gt;
                &lt;td&gt;서비스 차단/룰 적용, 기능 비활성화, 접근제어(Allowlist), 긴급 패치&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;High (7.0~8.9)&lt;/td&gt;
                &lt;td&gt;7일 내 완화 또는 14일 내 패치&lt;/td&gt;
                &lt;td&gt;구성 변경, 권한 축소, WAF/IPS 룰, 업로드/파서 제한&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;Medium (4.0~6.9)&lt;/td&gt;
                &lt;td&gt;30일 내 패치(또는 다음 정기 창)&lt;/td&gt;
                &lt;td&gt;모니터링 강화, 노출면 축소, 위험 기능 단계적 제한&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;Low (0.1~3.9)&lt;/td&gt;
                &lt;td&gt;정기 패치 창 반영&lt;/td&gt;
                &lt;td&gt;예외 승인 기준 정리, 자산 범위 최소화&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;None (0.0)&lt;/td&gt;
                &lt;td&gt;기록/검토&lt;/td&gt;
                &lt;td&gt;오탐 여부 확인, 대응 제외 사유 문서화&lt;/td&gt;
              &lt;/tr&gt;
            &lt;/tbody&gt;
          &lt;/table&gt;
        &lt;/div&gt;

        &lt;p class=&quot;note&quot;&gt;
          SLA는 “시간”만 정하는 게 아니라, &lt;strong&gt;증빙(완화 내역, 패치 티켓, 영향 자산 목록)&lt;/strong&gt;을 같이 남기는 구조가 운영 품질을 올린다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;operating-tips&quot;&gt;
        &lt;h2&gt;현장에서 흔히 쓰는 운영 팁&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;div class=&quot;checklist&quot;&gt;
          &lt;h4 class=&quot;checklist-title&quot;&gt;바로 적용 가능한 체크리스트&lt;/h4&gt;
          &lt;ul class=&quot;checklist-list&quot;&gt;
            &lt;li&gt;&lt;strong&gt;같은 CVE라도 제품/배포판별 영향이 다름&lt;/strong&gt;: 벤더 백포트 여부를 반드시 확인&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;인터넷 노출 자산은 자동 상향&lt;/strong&gt;: High/Medium 경계에서 사고가 자주 난다&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;패치 불가 환경은 완화부터&lt;/strong&gt;: 설정/권한/접근경로를 줄이는 게 현실적인 첫 수&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;예외(accept) 기준을 문서화&lt;/strong&gt;: “왜 지금 안 하는지”가 남지 않으면 반복된다&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;재점검 날짜를 박아두기&lt;/strong&gt;: 완화만 하고 끝내면 기술부채로 남는다&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/div&gt;

        &lt;p&gt;
          실제 사용 시, 점수 체계는 깔끔하지만 운영은 예외가 많다.
          그래서 “점수 구간표 + 우리 조직 보정 규칙(노출/악용/자산)”을 한 문서로 고정해두면,
          동일 이슈를 두고 팀마다 다른 결론이 나오는 상황을 크게 줄일 수 있다.
        &lt;/p&gt;
      &lt;/section&gt;
    &lt;/article&gt;
  &lt;/main&gt;

  &lt;style&gt;
    .post-content { line-height: 1.7; }
    .post-content .post-article { max-width: 920px; margin: 0 auto; padding: 0 14px; }
    .post-content .post-header { padding: 18px 0 8px; }
    .post-content .post-title { margin: 0 0 10px; font-size: 30px; letter-spacing: -0.2px; }
    .post-content .post-subtitle { margin: 0; font-size: 16px; opacity: 0.92; }

    .post-content .post-section { padding: 18px 0; }
    .post-content h2 { margin: 0; font-size: 22px; letter-spacing: -0.2px; }
    .post-content .spacer { height: 10px; }
    .post-content p { margin: 10px 0; }
    .post-content .subhead { margin: 14px 0 6px; font-size: 18px; letter-spacing: -0.1px; }

    .post-content .list { margin: 10px 0; padding-left: 18px; }
    .post-content .list li { margin: 8px 0; }

    .post-content .note { opacity: 0.9; }

    .post-content .callout {
      margin: 14px 0;
      padding: 12px 14px;
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 12px;
      background: rgba(0,0,0,0.03);
    }

    .post-content .checklist {
      margin: 16px 0;
      padding: 14px 14px 10px;
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 12px;
      background: rgba(0,0,0,0.02);
    }
    .post-content .checklist-title { margin: 0 0 8px; font-size: 16px; }
    .post-content .checklist-list { margin: 0; padding-left: 18px; }
    .post-content .checklist-list li { margin: 8px 0; }

    .post-content .table-wrap {
      overflow: auto;
      border-radius: 12px;
      border: 1px solid rgba(0,0,0,0.12);
      margin: 12px 0;
    }
    .post-content .tbl { width: 100%; border-collapse: collapse; min-width: 760px; }
    .post-content .tbl th, .post-content .tbl td {
      padding: 10px 10px;
      vertical-align: top;
      border-bottom: 1px solid rgba(0,0,0,0.10);
    }
    .post-content .tbl thead th {
      position: sticky;
      top: 0;
      background: rgba(0,0,0,0.03);
      text-align: left;
    }
    .post-content .tbl tbody tr:last-child td { border-bottom: none; }
  &lt;/style&gt;

  &lt;script type=&quot;application/ld+json&quot;&gt;
  {
    &quot;@context&quot;: &quot;https://schema.org&quot;,
    &quot;@graph&quot;: [
      {
        &quot;@type&quot;: &quot;BreadcrumbList&quot;,
        &quot;itemListElement&quot;: [
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 1,
            &quot;name&quot;: &quot;홈&quot;,
            &quot;item&quot;: &quot;https://example.com/&quot;
          },
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 2,
            &quot;name&quot;: &quot;보안 운영&quot;,
            &quot;item&quot;: &quot;https://example.com/category/security-ops&quot;
          },
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 3,
            &quot;name&quot;: &quot;CVE 점수에 따른 위험도 정리&quot;
          }
        ]
      },
      {
        &quot;@type&quot;: &quot;BlogPosting&quot;,
        &quot;headline&quot;: &quot;CVE 점수에 따른 위험도 정리&quot;,
        &quot;description&quot;: &quot;CVE의 CVSS 점수(0.0~10.0)를 기준으로 None/Low/Medium/High/Critical 위험도를 정리하고, 운영 환경에서 패치 우선순위와 대응 기준(SLA)까지 한 번에 정리한다. CVSS v3.1과 v4.0의 정성 등급 구간도 함께 정리.&quot;,
        &quot;inLanguage&quot;: &quot;ko-KR&quot;,
        &quot;mainEntityOfPage&quot;: {
          &quot;@type&quot;: &quot;WebPage&quot;,
          &quot;@id&quot;: &quot;https://example.com/post/cvss-risk-by-score&quot;
        },
        &quot;author&quot;: {
          &quot;@type&quot;: &quot;Person&quot;,
          &quot;name&quot;: &quot;운영자&quot;
        },
        &quot;publisher&quot;: {
          &quot;@type&quot;: &quot;Organization&quot;,
          &quot;name&quot;: &quot;Tistory Blog&quot;,
          &quot;logo&quot;: {
            &quot;@type&quot;: &quot;ImageObject&quot;,
            &quot;url&quot;: &quot;https://example.com/og-placeholder.jpg&quot;
          }
        },
        &quot;image&quot;: [
          &quot;https://example.com/og-placeholder.jpg&quot;
        ],
        &quot;keywords&quot;: [
          &quot;CVE&quot;,
          &quot;CVSS&quot;,
          &quot;취약점 점수&quot;,
          &quot;위험도&quot;,
          &quot;심각도 구간&quot;,
          &quot;패치 우선순위&quot;,
          &quot;보안 SLA&quot;,
          &quot;취약점 관리&quot;,
          &quot;CVSS v4.0&quot;,
          &quot;CVSS v3.1&quot;
        ],
        &quot;articleSection&quot;: &quot;보안 운영&quot;
      }
    ]
  }
  &lt;/script&gt;

  &lt;!--
  관리자 입력용 태그(10개):
  CVE, CVSS, 취약점관리, 위험도평가, 심각도, 보안SLA, 패치우선순위, 보안운영, CVSSv4, CVSSv3
  --&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>IT 소식 뉴스/CVE CODE</category>
      <category>CVE</category>
      <category>CVSS</category>
      <category>CVSS v3.1</category>
      <category>CVSS v4.0</category>
      <category>보안 SLA</category>
      <category>심각도 구간</category>
      <category>위험도</category>
      <category>취약점 관리</category>
      <category>취약점 점수</category>
      <category>패치 우선순위</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/537</guid>
      <comments>https://togethergrow.tistory.com/entry/CVE-%EC%A0%90%EC%88%98%EC%97%90-%EB%94%B0%EB%A5%B8-%EC%9C%84%ED%97%98%EB%8F%84-%EC%A0%95%EB%A6%AC#entry537comment</comments>
      <pubDate>Thu, 28 May 2026 16:45:22 +0900</pubDate>
    </item>
    <item>
      <title>CVE-2026-31431 취약점</title>
      <link>https://togethergrow.tistory.com/entry/CVE-2026-31431-%EC%B7%A8%EC%95%BD%EC%A0%90</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;CVE-2026-31431 취약점 원인과 대응&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;CVE-2026-31431(Copy Fail)은 Linux 커널의 AF_ALG(algif_aead) 경로에서 발생하는 로컬 권한 상승 취약점이다. 영향 버전 확인부터 임시 완화(모듈 비활성화), 패치 커널 적용, 재발 방지 운영 체크까지 단계별로 정리한다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;CVE-2026-31431,Copy Fail,Linux 커널,권한상승,AF_ALG,algif_aead,sshd 보안,패치 커널,모듈 블랙리스트,보안 업데이트&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;CVE-2026-31431 취약점 원인과 대응&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;Linux 커널 AF_ALG(algif_aead) 취약점(Copy Fail) 대응: 영향 버전 확인 → 완화 → 패치 적용 → 재발 방지.&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/post/cve-2026-31431&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;CVE-2026-31431 취약점 원인과 대응&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;Copy Fail(CVE-2026-31431): 영향 버전/완화/패치 적용을 운영 흐름으로 정리.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;main class=&quot;post-content&quot; role=&quot;main&quot;&gt;
    &lt;article class=&quot;post-article&quot; aria-label=&quot;CVE-2026-31431 일반오류형 매뉴얼&quot;&gt;
      &lt;header class=&quot;post-header&quot;&gt;
        &lt;h1 class=&quot;post-title&quot;&gt;CVE-2026-31431 취약점&lt;/h1&gt;
        &lt;p class=&quot;post-subtitle&quot;&gt;
          CVE-2026-31431(일명 &lt;strong&gt;Copy Fail&lt;/strong&gt;)은 Linux 커널의 사용자 공간 암호 API(&lt;strong&gt;AF_ALG&lt;/strong&gt;) 중
          &lt;strong&gt;algif_aead&lt;/strong&gt; 경로에서 발생하는 취약점으로, 로컬(비권한) 사용자가 시스템 파일/프로세스에 영향을 주며
          &lt;strong&gt;권한 상승&lt;/strong&gt;으로 이어질 수 있는 것으로 알려져 있다.
          (공식 레코드/설명: &lt;a href=&quot;https://nvd.nist.gov/vuln/detail/CVE-2026-31431&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;nvd.nist.gov&lt;/a&gt;,
          &lt;a href=&quot;https://www.cve.org/CVERecord?id=CVE-2026-31431&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;cve.org&lt;/a&gt;)
        &lt;/p&gt;
      &lt;/header&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;overview&quot;&gt;
        &lt;h2&gt;개요&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;
          이 취약점은 Linux 커널의 암호 서브시스템에서, AEAD(Authenticated Encryption with Associated Data) 소켓 인터페이스를 처리하는 과정에서
          잘못된 동작(최적화/매핑 처리)이 발생해 보안 경계를 깨뜨리는 유형으로 보고되어 있다.
          CERT-EU는 본 이슈가 &lt;strong&gt;algif_aead&lt;/strong&gt; 모듈(사용자 공간 crypto API, AF_ALG)에서 비롯된 로컬 권한 상승(LPE) 취약점이며,
          2017년경 도입된 변경과 연관된 것으로 설명한다.
          (&lt;a href=&quot;https://cert.europa.eu/publications/security-advisories/2026-005/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;cert.europa.eu&lt;/a&gt;)
        &lt;/p&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;실무 기준으로 보면&lt;/strong&gt;&lt;br&gt;
          이 건은 “외부에서 바로 침투”보다는 &lt;strong&gt;로컬 계정/컨테이너 내부 사용자&lt;/strong&gt;가 foothold를 잡은 뒤&lt;br&gt;
          &lt;strong&gt;root 권한으로 점프&lt;/strong&gt;하는 체인에 붙기 쉽다.&lt;br&gt;
          따라서 서버뿐 아니라 &lt;strong&gt;멀티테넌트, CI 러너, 컨테이너 호스트&lt;/strong&gt;처럼 로컬 실행 권한이 넓은 환경에서 우선순위를 올리는 게 합리적이다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;environment&quot;&gt;
        &lt;h2&gt;환경&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;대상: Linux 커널(배포판 커널 포함)&lt;/li&gt;
          &lt;li&gt;공격 조건: 일반적으로 &lt;strong&gt;로컬에서 코드 실행이 가능한 사용자&lt;/strong&gt;(비권한 계정 포함)&lt;/li&gt;
          &lt;li&gt;관련 구성 요소: &lt;strong&gt;AF_ALG&lt;/strong&gt;(커널 crypto API), &lt;strong&gt;algif_aead&lt;/strong&gt; 모듈&lt;/li&gt;
          &lt;li&gt;위험이 커지는 환경: 다수 사용자/워크로드가 동시에 존재하는 서버, CI/빌드 러너, 컨테이너 밀집 호스트&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;symptoms&quot;&gt;
        &lt;h2&gt;증상&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;
          CVE-2026-31431은 “특정 애플리케이션 에러 코드”로 바로 드러나기보다,
          공격자가 로컬 권한을 올린 뒤에야 흔적이 나타나는 유형이다. 운영 관점에서는 아래 시그널로 의심할 수 있다.
        &lt;/p&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;예상치 못한 &lt;strong&gt;root 권한 획득&lt;/strong&gt; 흔적(특히 setuid 바이너리/권한 변경 관련 이상)&lt;/li&gt;
          &lt;li&gt;보안 에이전트/감사 로그에서 로컬 사용자 행동과 권한 상승 이벤트의 비정상 결합&lt;/li&gt;
          &lt;li&gt;컨테이너/배치 잡에서 비권한 사용자로 시작했는데 호스트/노드에서 권한 관련 경고 발생&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p class=&quot;note&quot;&gt;
          “악용 중(in the wild)” 경고가 언급된 공지들도 있어, 노출 환경에서는 패치 우선순위를 높게 잡는 편이 안전하다.
          (&lt;a href=&quot;https://www.hkcert.org/security-bulletin/linux-kernel-elevation-of-privilege-vulnerability_20260504&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;hkcert.org&lt;/a&gt;,
          &lt;a href=&quot;https://www.microsoft.com/en-us/security/blog/2026/05/01/cve-2026-31431-copy-fail-vulnerability-enables-linux-root-privilege-escalation/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;microsoft.com&lt;/a&gt;)
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;first-check&quot;&gt;
        &lt;h2&gt;1차 점검&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;1) 커널 버전 확인&lt;/h3&gt;
        &lt;pre&gt;&lt;code&gt;uname -r&lt;/code&gt;&lt;/pre&gt;
        &lt;p&gt;
          배포판별 백포트가 많기 때문에, 단순히 메이저 버전만으로 결론 내리기보다는
          &lt;strong&gt;배포판 보안 공지/패치 레벨&lt;/strong&gt;을 기준으로 확인하는 것이 안전하다.
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;2) 영향 범위(버전) 빠른 기준&lt;/h3&gt;
        &lt;p&gt;
          KRCERT 권고에 기재된 영향/해결 버전 표를 기준으로 “현재 커널이 해결 버전 이상인지”를 먼저 대조한다.
          (&lt;a href=&quot;https://www.krcert.or.kr/kr/bbs/view.do?bbsId=B0000133&amp;menuNo=205020&amp;nttId=72039&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;krcert.or.kr&lt;/a&gt;)
        &lt;/p&gt;
        &lt;div class=&quot;table-wrap&quot; role=&quot;region&quot; aria-label=&quot;KRCERT 권고 기반 영향/해결 버전 요약&quot; tabindex=&quot;0&quot;&gt;
          &lt;table class=&quot;tbl&quot;&gt;
            &lt;thead&gt;
              &lt;tr&gt;
                &lt;th&gt;계열&lt;/th&gt;
                &lt;th&gt;영향 버전(미만)&lt;/th&gt;
                &lt;th&gt;해결 버전(이상)&lt;/th&gt;
              &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
              &lt;tr&gt;
                &lt;td&gt;6.19&lt;/td&gt;
                &lt;td&gt;6.19.12 미만&lt;/td&gt;
                &lt;td&gt;6.19.12&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;6.13 ~ 6.18&lt;/td&gt;
                &lt;td&gt;6.18.22 미만&lt;/td&gt;
                &lt;td&gt;6.18.22&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;6.7 ~ 6.12&lt;/td&gt;
                &lt;td&gt;6.12.85 미만&lt;/td&gt;
                &lt;td&gt;6.12.85&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;6.2 ~ 6.6&lt;/td&gt;
                &lt;td&gt;6.6.137 미만&lt;/td&gt;
                &lt;td&gt;6.6.137&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;5.16 ~ 6.1&lt;/td&gt;
                &lt;td&gt;6.1.170 미만&lt;/td&gt;
                &lt;td&gt;6.1.170&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;5.11 ~ 5.15&lt;/td&gt;
                &lt;td&gt;5.15.204 미만&lt;/td&gt;
                &lt;td&gt;5.15.204&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;4.14 ~ 5.10&lt;/td&gt;
                &lt;td&gt;5.10.254 미만&lt;/td&gt;
                &lt;td&gt;5.10.254&lt;/td&gt;
              &lt;/tr&gt;
            &lt;/tbody&gt;
          &lt;/table&gt;
        &lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;3) 관련 모듈 로딩 여부 확인(임시 완화 판단용)&lt;/h3&gt;
        &lt;pre&gt;&lt;code&gt;# 모듈 로딩 여부
lsmod | egrep 'algif_aead|af_alg'

# 모듈 존재 여부(배포판/커널에 따라 경로 다를 수 있음)
modinfo algif_aead 2&amp;gt;/dev/null | head&lt;/code&gt;&lt;/pre&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;주의&lt;/strong&gt;&lt;br&gt;
          일부 커널은 해당 기능이 모듈이 아니라 커널에 내장(built-in)될 수 있다.&lt;br&gt;
          이 경우 “모듈 언로드” 완화가 제한적일 수 있으므로, &lt;strong&gt;패치 커널 적용&lt;/strong&gt;이 사실상 유일한 종결책이 된다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;deep-dive&quot;&gt;
        &lt;h2&gt;심화 분석&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;취약점이 영향을 주는 경로(핵심 요지)&lt;/h3&gt;
        &lt;p&gt;
          NVD/CVE 레코드에는 Linux 커널 crypto 경로에서 “in-place 동작” 관련 변경을 되돌리는 형태의 수정이 언급된다.
          CERT-EU는 사용자 공간 crypto API(AF_ALG)의 &lt;strong&gt;AEAD 소켓 인터페이스&lt;/strong&gt;에서 문제가 발생하며,
          특정 최적화로 인해 의도치 않은 상태가 만들어질 수 있음을 요지로 설명한다.
          (&lt;a href=&quot;https://nvd.nist.gov/vuln/detail/CVE-2026-31431&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;nvd.nist.gov&lt;/a&gt;,
          &lt;a href=&quot;https://cert.europa.eu/publications/security-advisories/2026-005/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;cert.europa.eu&lt;/a&gt;)
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;위험도 판단 기준&lt;/h3&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;&lt;strong&gt;로컬 사용자 범위&lt;/strong&gt;: SSH 계정이 많거나, 서비스 계정에 쉘 권한이 넓은가&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;컨테이너 밀집도&lt;/strong&gt;: 노드에 다수 워크로드가 공존하고, 노출면이 넓은가&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;setuid/특권 바이너리&lt;/strong&gt;: 표준 시스템 바이너리/도구의 setuid 구성 여부&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;패치 난이도&lt;/strong&gt;: 커널 업데이트/재부팅 창 확보 가능 여부&lt;/li&gt;
        &lt;/ul&gt;

        &lt;p class=&quot;note&quot;&gt;
          Red Hat 공지는 이 취약점이 로컬 비권한 공격자가 민감 파일을 손상시키거나 root 권한 상승으로 이어질 수 있음을 언급한다.
          (&lt;a href=&quot;https://access.redhat.com/security/cve/cve-2026-31431&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;access.redhat.com&lt;/a&gt;)
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;recovery&quot;&gt;
        &lt;h2&gt;복구&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;1) 최우선: 패치된 커널로 업데이트&lt;/h3&gt;
        &lt;p&gt;
          가장 확실한 해결은 “해결 버전 이상 커널”로 업데이트하는 것이다.
          배포판 보안 공지(예: KRCERT/벤더 공지)에 따라 해당 커널 패키지를 업데이트하고 재부팅으로 적용한다.
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;2) 임시 완화(가능한 경우): 관련 모듈 비활성화&lt;/h3&gt;
        &lt;p&gt;
          운영상 즉시 재부팅/커널 업데이트가 어려운 경우, 영향 경로가 “모듈 형태”로 로딩되는 환경에서는 임시 완화를 고려할 수 있다.
          다만 이는 환경에 따라 적용 가능/불가능이 갈리므로, 반드시 테스트 후 반영한다.
        &lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;# (가능한 경우) 모듈 언로드 시도
sudo modprobe -r algif_aead 2&amp;gt;/dev/null || true

# 재부팅 후 자동 로딩 방지(블랙리스트)
# /etc/modprobe.d/blacklist-copy-fail.conf
blacklist algif_aead&lt;/code&gt;&lt;/pre&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;운영 포인트&lt;/strong&gt;&lt;br&gt;
          모듈 블랙리스트는 “영향 경로를 좁히는 임시 조치”다.&lt;br&gt;
          서비스가 AF_ALG/커널 crypto API를 의존할 수 있으므로, 적용 전후 기능 영향(특히 VPN/보안 에이전트/특정 앱)을 반드시 확인해야 한다.
        &lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;3) 단기 대응 병행: 로컬 실행 권한 축소&lt;/h3&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;불필요한 SSH 계정/쉘 접근 정리&lt;/li&gt;
          &lt;li&gt;CI 러너/배치 계정 권한 최소화&lt;/li&gt;
          &lt;li&gt;컨테이너 런타임 정책 강화(불필요 capabilities 제거, rootless/격리 강화)&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;prevention&quot;&gt;
        &lt;h2&gt;재발 방지&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;1) 커널 업데이트 운영 표준화&lt;/h3&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;정기 패치 창(월간/격주) + 긴급 패치 창(Critical/High) 분리&lt;/li&gt;
          &lt;li&gt;커널 업데이트 후 재부팅 자동화(롤링/블루그린/노드 드레인)&lt;/li&gt;
          &lt;li&gt;호스트 커널 버전/패치 레벨을 자산 목록에 상시 반영&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;2) “로컬 권한 상승”을 전제로 한 방어선 강화&lt;/h3&gt;
        &lt;p&gt;
          로컬 LPE는 침투 이후 단계에서 자주 쓰이므로, 운영 환경에서는 “최초 침투 차단”뿐 아니라 “권한 상승 차단”도 같이 설계해야 한다.
          예를 들어 세션 격리, 강제 접근통제(SELinux/AppArmor), 최소 권한 원칙을 지속 적용하는 식이다.
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;3) 점검 자동화 체크&lt;/h3&gt;
        &lt;div class=&quot;checklist&quot;&gt;
          &lt;h4 class=&quot;checklist-title&quot;&gt;운영 체크리스트&lt;/h4&gt;
          &lt;ul class=&quot;checklist-list&quot;&gt;
            &lt;li&gt;노드/서버별 &lt;strong&gt;uname -r&lt;/strong&gt; 수집 및 해결 버전 이상 여부 자동 판정&lt;/li&gt;
            &lt;li&gt;컨테이너 호스트에서 커널 패치 적용률 대시보드화&lt;/li&gt;
            &lt;li&gt;보안 공지 수신 후 24~72시간 내 영향도 평가/조치 계획 생성&lt;/li&gt;
            &lt;li&gt;취약점 스캐너 결과와 “커널 백포트” 차이를 운영 절차로 흡수(벤더 공지 기반 판정)&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/div&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;현장 결론&lt;/strong&gt;&lt;br&gt;
          CVE-2026-31431은 “패치 커널 적용”이 가장 깔끔한 종결책이다.&lt;br&gt;
          단기적으로는 모듈 기반 완화(가능 시)와 로컬 실행 권한 축소로 노출면을 줄이고,&lt;br&gt;
          장기적으로는 커널 패치/재부팅 자동화 체계를 갖추는 것이 재발 비용을 크게 낮춘다.
        &lt;/div&gt;
      &lt;/section&gt;
    &lt;/article&gt;
  &lt;/main&gt;

  &lt;style&gt;
    .post-content { line-height: 1.7; }
    .post-content .post-article { max-width: 920px; margin: 0 auto; padding: 0 14px; }
    .post-content .post-header { padding: 18px 0 6px; }
    .post-content .post-title { margin: 0 0 10px; font-size: 28px; letter-spacing: -0.2px; }
    .post-content .post-subtitle { margin: 0 0 10px; font-size: 16px; opacity: 0.92; }

    .post-content .post-section { padding: 18px 0; }
    .post-content h2 { margin: 0; font-size: 22px; letter-spacing: -0.2px; }
    .post-content .spacer { height: 10px; }
    .post-content p { margin: 10px 0; }
    .post-content .subhead { margin: 14px 0 6px; font-size: 18px; letter-spacing: -0.1px; }

    .post-content .callout {
      margin: 14px 0;
      padding: 12px 14px;
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 12px;
      background: rgba(0,0,0,0.03);
    }

    .post-content .note { opacity: 0.9; }

    .post-content pre {
      margin: 12px 0;
      padding: 12px;
      overflow: auto;
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 12px;
      background: rgba(0,0,0,0.02);
    }

    .post-content code {
      font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace;
    }

    .post-content .list { margin: 10px 0; padding-left: 18px; }
    .post-content .list li { margin: 8px 0; }

    .post-content .checklist {
      margin: 16px 0;
      padding: 14px 14px 10px;
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 12px;
      background: rgba(0,0,0,0.02);
    }
    .post-content .checklist-title { margin: 0 0 8px; font-size: 16px; }
    .post-content .checklist-list { margin: 0; padding-left: 18px; }
    .post-content .checklist-list li { margin: 8px 0; }

    .post-content .table-wrap { overflow: auto; border-radius: 12px; border: 1px solid rgba(0,0,0,0.12); margin: 12px 0; }
    .post-content .tbl { width: 100%; border-collapse: collapse; min-width: 720px; }
    .post-content .tbl th, .post-content .tbl td { padding: 10px 10px; vertical-align: top; border-bottom: 1px solid rgba(0,0,0,0.10); }
    .post-content .tbl thead th { position: sticky; top: 0; background: rgba(0,0,0,0.03); text-align: left; }
    .post-content .tbl tbody tr:last-child td { border-bottom: none; }
  &lt;/style&gt;

  &lt;script type=&quot;application/ld+json&quot;&gt;
  {
    &quot;@context&quot;: &quot;https://schema.org&quot;,
    &quot;@graph&quot;: [
      {
        &quot;@type&quot;: &quot;BreadcrumbList&quot;,
        &quot;itemListElement&quot;: [
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 1,
            &quot;name&quot;: &quot;홈&quot;,
            &quot;item&quot;: &quot;https://example.com/&quot;
          },
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 2,
            &quot;name&quot;: &quot;보안 운영&quot;,
            &quot;item&quot;: &quot;https://example.com/category/security-ops&quot;
          },
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 3,
            &quot;name&quot;: &quot;CVE-2026-31431 취약점&quot;
          }
        ]
      },
      {
        &quot;@type&quot;: &quot;TechArticle&quot;,
        &quot;headline&quot;: &quot;CVE-2026-31431 취약점&quot;,
        &quot;description&quot;: &quot;CVE-2026-31431(Copy Fail)은 Linux 커널의 AF_ALG(algif_aead) 경로에서 발생하는 로컬 권한 상승 취약점이다. 영향 버전 확인부터 임시 완화(모듈 비활성화), 패치 커널 적용, 재발 방지 운영 체크까지 단계별로 정리한다.&quot;,
        &quot;inLanguage&quot;: &quot;ko-KR&quot;,
        &quot;mainEntityOfPage&quot;: {
          &quot;@type&quot;: &quot;WebPage&quot;,
          &quot;@id&quot;: &quot;https://example.com/post/cve-2026-31431&quot;
        },
        &quot;author&quot;: {
          &quot;@type&quot;: &quot;Person&quot;,
          &quot;name&quot;: &quot;운영자&quot;
        },
        &quot;publisher&quot;: {
          &quot;@type&quot;: &quot;Organization&quot;,
          &quot;name&quot;: &quot;Tistory Blog&quot;,
          &quot;logo&quot;: {
            &quot;@type&quot;: &quot;ImageObject&quot;,
            &quot;url&quot;: &quot;https://example.com/og-placeholder.jpg&quot;
          }
        },
        &quot;image&quot;: [
          &quot;https://example.com/og-placeholder.jpg&quot;
        ],
        &quot;keywords&quot;: [
          &quot;CVE-2026-31431&quot;,
          &quot;Copy Fail&quot;,
          &quot;Linux 커널&quot;,
          &quot;권한상승&quot;,
          &quot;AF_ALG&quot;,
          &quot;algif_aead&quot;,
          &quot;패치 커널&quot;,
          &quot;모듈 블랙리스트&quot;,
          &quot;보안 업데이트&quot;,
          &quot;취약점 대응&quot;
        ],
        &quot;articleSection&quot;: &quot;보안 운영&quot;
      }
    ]
  }
  &lt;/script&gt;

  &lt;!--
  관리자 입력용 태그(10개):
  CVE-2026-31431, CopyFail, LinuxKernel, 권한상승, AF_ALG, algif_aead, 커널패치, 보안업데이트, 취약점대응, 보안운영
  --&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>IT 소식 뉴스/CVE CODE</category>
      <category>AF_ALG</category>
      <category>algif_aead</category>
      <category>Copy Fail</category>
      <category>CVE-2026-31431</category>
      <category>Linux 커널</category>
      <category>sshd 보안</category>
      <category>권한상승</category>
      <category>모듈 블랙리스트</category>
      <category>보안 업데이트</category>
      <category>패치 커널</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/536</guid>
      <comments>https://togethergrow.tistory.com/entry/CVE-2026-31431-%EC%B7%A8%EC%95%BD%EC%A0%90#entry536comment</comments>
      <pubDate>Thu, 28 May 2026 16:32:30 +0900</pubDate>
    </item>
    <item>
      <title>Mythos 발표 모듈: Anthropic 보고 취약점 대상 모듈 리스트</title>
      <link>https://togethergrow.tistory.com/entry/Mythos-%EB%B0%9C%ED%91%9C-%EB%AA%A8%EB%93%88-Anthropic-%EB%B3%B4%EA%B3%A0-%EC%B7%A8%EC%95%BD%EC%A0%90-%EB%8C%80%EC%83%81-%EB%AA%A8%EB%93%88-%EB%A6%AC%EC%8A%A4%ED%8A%B8</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;Mythos 발표 모듈: Anthropic 보고 취약점 대상 모듈 리스트&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;Anthropic CVD 대시보드(2026-05-22 기준)에 공개된 취약점 대상 모듈 중 요청한 15개(CraftCMS, ImageMagick, nginx, wolfSSL 등)를 CVE 공개 여부와 함께 정리한다. 운영 환경에서 점검·복구·재발 방지까지 단계별로 정리.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;Mythos,Anthropic,CVD,취약점 대상 모듈,오픈소스 보안,CVE,nginx,wolfSSL,Nomad,Temporal&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;Mythos 발표 모듈: Anthropic 보고 취약점 대상 모듈 리스트&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;Anthropic CVD 기준 요청 모듈 15종을 CVE 공개 여부/심각도와 함께 한 번에 정리.&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/post/mythos-anthropic-modules&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;Mythos 발표 모듈: Anthropic 보고 취약점 대상 모듈 리스트&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;CraftCMS, ImageMagick, nginx, wolfSSL 등 15개 모듈 — CVE 공개 여부까지 정리.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;main class=&quot;post-content&quot; role=&quot;main&quot;&gt;
    &lt;article class=&quot;post-article&quot; aria-label=&quot;Mythos/Anthropic 취약점 대상 모듈 리스트 일반오류형&quot;&gt;
      &lt;header class=&quot;post-header&quot;&gt;
        &lt;h1 class=&quot;post-title&quot;&gt;mythos에서 발표한 모듈 / 앤트로픽에서 보고된 취약점 대상 모듈 리스트&lt;/h1&gt;
        &lt;p class=&quot;post-subtitle&quot;&gt;
          아래 목록은 Anthropic CVD 대시보드 스냅샷(기준일: &lt;strong&gt;2026-05-22&lt;/strong&gt;)의 프로젝트 집계 기준으로,
          요청하신 15개 모듈을 “심각도(건수)”와 “CVE 공개 여부”로 정리한 운영용 체크 문서다.
        &lt;/p&gt;
      &lt;/header&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;overview&quot;&gt;
        &lt;h2&gt;개요&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;
          Mythos 기반 CVD 공개는 “발견 → 검증 → 유지보수자 통지 → 공개(창 닫힘)” 흐름으로 진행되며,
          프로젝트별로 공개 식별자(CVE)가 붙은 케이스와, 수정은 되었지만 CVE가 아직 없는 케이스가 함께 존재한다.
        &lt;/p&gt;
        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;실무 기준으로 보면&lt;/strong&gt;&lt;br&gt;
          대응 우선순위는 “우리 서비스에 포함 여부” → “외부 노출/입력 처리 여부” → “CVE 공개로 패치 가능 여부” 순서로 잡는 게 안정적이다.&lt;br&gt;
          CVE가 없는 항목은 ‘안전’이 아니라 ‘추적이 더 필요’한 상태로 보는 게 맞다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;environment&quot;&gt;
        &lt;h2&gt;환경&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;대상: CraftCMS, GitoxideLabs/gitoxide, ImageMagick, MapServer, TryGhost/Ghost, freerdp, jq, junrar, libyang, mastodon, minio, nginx, nomad, temporalio/temporal, wolfSSL&lt;/li&gt;
          &lt;li&gt;운영 관점 분류: 웹/CMS(공격면 큼), 인프라/네트워크(광범위), 암호/TLS(치명도 높음), 파일/미디어 처리(입력 기반), DevOps/오케스트레이션(권한 상승/제어면)&lt;/li&gt;
          &lt;li&gt;목표: 영향도 판별 → 긴급 조치(패치/완화) → 재발 방지(표준화/모니터링/거버넌스)&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;symptoms&quot;&gt;
        &lt;h2&gt;증상&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;
          이 문서는 특정 에러 로그(장애 코드)를 다루기보다, “취약점 대상 모듈이 우리 환경에 포함될 때” 운영 위험이 어떻게 표면화되는지를 다룬다.
          일반적으로 아래 형태로 나타난다.
        &lt;/p&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;SCA/취약점 스캐너에서 CVE가 있는 모듈(예: nginx, wolfSSL, nomad, temporal, jq)이 탐지되어 조치 요청 발생&lt;/li&gt;
          &lt;li&gt;CVE가 없는 모듈은 “취약점은 보고됐는데 도구에 안 잡히는” 공백이 생겨 수동 추적이 필요해짐&lt;/li&gt;
          &lt;li&gt;외부 입력을 처리하는 모듈(ImageMagick, CMS, RDP 등)은 “미패치 + 노출” 조합에서 사고로 연결되기 쉬움&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;first-check&quot;&gt;
        &lt;h2&gt;1차 점검&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;1) 포함 여부 확인(가장 먼저)&lt;/h3&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;&lt;strong&gt;서버 패키지&lt;/strong&gt;: OS 패키지 목록(apt/yum/apk)에서 설치/버전 확인&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;컨테이너&lt;/strong&gt;: 이미지 태그 + SBOM(CycloneDX/SPDX) + 레이어 내 바이너리 확인&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;애플리케이션 의존성&lt;/strong&gt;: composer/npm/go mod/cargo/helm chart 등 잠금 파일 기준으로 확인&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;2) 노출면(Exposure) 우선순위 결정&lt;/h3&gt;
        &lt;div class=&quot;checklist&quot;&gt;
          &lt;h4 class=&quot;checklist-title&quot;&gt;운영팀 우선순위 체크&lt;/h4&gt;
          &lt;ul class=&quot;checklist-list&quot;&gt;
            &lt;li&gt;&lt;strong&gt;인터넷 노출&lt;/strong&gt;: 외부에서 직접 접근 가능한가(80/443, API, 관리자 콘솔, RDP 게이트웨이 등)&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;외부 입력 처리&lt;/strong&gt;: 업로드/파싱/변환(이미지, 압축파일, JSON/YAML, 지도/타일 등)이 있는가&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;권한 영향&lt;/strong&gt;: 인증 우회/권한 상승/원격 코드 실행 가능성이 있는가&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;업데이트 난이도&lt;/strong&gt;: 패치 창/롤백/호환성 부담이 큰가(코어 인프라일수록 계획 필요)&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;deep-dive&quot;&gt;
        &lt;h2&gt;심화 분석&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;요청 모듈 15종 리스트(2026-05-22 스냅샷 기준)&lt;/h3&gt;

        &lt;div class=&quot;table-wrap&quot; role=&quot;region&quot; aria-label=&quot;대상 모듈 표&quot; tabindex=&quot;0&quot;&gt;
          &lt;table class=&quot;tbl&quot;&gt;
            &lt;thead&gt;
              &lt;tr&gt;
                &lt;th&gt;모듈(프로젝트)&lt;/th&gt;
                &lt;th&gt;심각도(공개 건수)&lt;/th&gt;
                &lt;th&gt;CVE 공개 여부&lt;/th&gt;
                &lt;th&gt;운영 메모&lt;/th&gt;
              &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
              &lt;tr&gt;
                &lt;td&gt;CraftCMS&lt;/td&gt;
                &lt;td&gt;High 1&lt;/td&gt;
                &lt;td&gt;미공개(표기된 CVE 없음)&lt;/td&gt;
                &lt;td&gt;퍼블릭 CMS면 우선순위 상향(관리자/템플릿/업로드 계열 대비)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;GitoxideLabs/gitoxide&lt;/td&gt;
                &lt;td&gt;High 1&lt;/td&gt;
                &lt;td&gt;미공개(표기된 CVE 없음)&lt;/td&gt;
                &lt;td&gt;빌드/CI 경로 포함 여부 확인(공급망 관점으로 점검)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;ImageMagick&lt;/td&gt;
                &lt;td&gt;High 1&lt;/td&gt;
                &lt;td&gt;미공개(표기된 CVE 없음)&lt;/td&gt;
                &lt;td&gt;이미지 업로드/변환이 있으면 즉시 완화(포맷 제한/샌드박스/리소스 제한)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;MapServer&lt;/td&gt;
                &lt;td&gt;Medium 1&lt;/td&gt;
                &lt;td&gt;CVE-2026-33721&lt;/td&gt;
                &lt;td&gt;GIS/지도 서비스 노출 여부 확인(요청 파라미터/파일 파싱 경로 점검)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;TryGhost/Ghost&lt;/td&gt;
                &lt;td&gt;Critical 1&lt;/td&gt;
                &lt;td&gt;미공개(표기된 CVE 없음)&lt;/td&gt;
                &lt;td&gt;콘텐츠 API/필터 입력 계열이면 즉시 차단/패치 계획 수립&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;freerdp&lt;/td&gt;
                &lt;td&gt;High 2, Medium 1&lt;/td&gt;
                &lt;td&gt;CVE-2026-44420, CVE-2026-45700&lt;/td&gt;
                &lt;td&gt;원격 데스크톱 경로 포함 시 영향 큼(게이트웨이/클라이언트 번들 여부 확인)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;jq&lt;/td&gt;
                &lt;td&gt;Medium 1&lt;/td&gt;
                &lt;td&gt;CVE-2026-32316&lt;/td&gt;
                &lt;td&gt;운영 스크립트/CI에 흔함(비신뢰 입력 처리 여부 점검)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;junrar&lt;/td&gt;
                &lt;td&gt;Medium 1&lt;/td&gt;
                &lt;td&gt;미공개(표기된 CVE 없음)&lt;/td&gt;
                &lt;td&gt;압축파일 처리 경로 점검(업로드/첨부/배치 처리)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;libyang&lt;/td&gt;
                &lt;td&gt;Medium 1&lt;/td&gt;
                &lt;td&gt;미공개(표기된 CVE 없음)&lt;/td&gt;
                &lt;td&gt;YANG/NETCONF 계열 파싱에 영향(네트워크 장비 연동 경로 확인)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;mastodon&lt;/td&gt;
                &lt;td&gt;High 2&lt;/td&gt;
                &lt;td&gt;CVE-2026-46348, CVE-2026-46349&lt;/td&gt;
                &lt;td&gt;연합(Federation)/서명 검증/JSON-LD 처리면은 노출면 큼&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;minio&lt;/td&gt;
                &lt;td&gt;Medium 1&lt;/td&gt;
                &lt;td&gt;미공개(표기된 CVE 없음)&lt;/td&gt;
                &lt;td&gt;S3 호환 스토리지면 권한/정책/외부 노출 여부가 핵심&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;nginx&lt;/td&gt;
                &lt;td&gt;Critical 1, High 1&lt;/td&gt;
                &lt;td&gt;CVE-2026-27654&lt;/td&gt;
                &lt;td&gt;에지/리버스프록시라 영향 범위가 매우 큼(즉시 버전 매칭)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;nomad&lt;/td&gt;
                &lt;td&gt;Critical 1&lt;/td&gt;
                &lt;td&gt;CVE-2026-7474&lt;/td&gt;
                &lt;td&gt;오케스트레이션/스케줄러는 권한 영향이 크므로 우선순위 상향&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;temporalio/temporal&lt;/td&gt;
                &lt;td&gt;Critical 1&lt;/td&gt;
                &lt;td&gt;CVE-2026-5199&lt;/td&gt;
                &lt;td&gt;워크플로 엔진은 내부 권한/토큰/메타데이터 경로 점검 필요&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;wolfSSL&lt;/td&gt;
                &lt;td&gt;High 7, Medium 2&lt;/td&gt;
                &lt;td&gt;
                  CVE-2026-5446, CVE-2026-5447, CVE-2026-5448,&lt;br&gt;
                  CVE-2026-5466, CVE-2026-5477, CVE-2026-5479,&lt;br&gt;
                  CVE-2026-5500, CVE-2026-5501, CVE-2026-5503
                &lt;/td&gt;
                &lt;td&gt;TLS/암호 라이브러리는 “광범위 영향 + 고난도 확인”이라 SBOM 기반 확인이 중요&lt;/td&gt;
              &lt;/tr&gt;
            &lt;/tbody&gt;
          &lt;/table&gt;
        &lt;/div&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;해석 포인트&lt;/strong&gt;&lt;br&gt;
          CVE가 “없는” 항목은 취약점이 없다는 의미가 아니다.&lt;br&gt;
          대시보드 공개 시점에는 수정이 반영됐더라도, 식별자(CVE/GHSA)가 아직 미발급/미공개일 수 있다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;recovery&quot;&gt;
        &lt;h2&gt;복구&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;1) CVE 공개 항목: 버전 매칭 → 패치가 기본&lt;/h3&gt;
        &lt;p&gt;
          nginx, wolfSSL, nomad, temporal, jq, mastodon, freerdp, MapServer는 CVE가 공개되어 있으므로
          &lt;strong&gt;현재 사용 버전이 영향권인지&lt;/strong&gt;를 먼저 확인하고, 영향권이면 &lt;strong&gt;패치 버전으로 업그레이드&lt;/strong&gt;하는 것이 기본 전략이다.
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;2) CVE 미공개 항목: “패치 커밋/릴리즈” 추적 + 임시 완화&lt;/h3&gt;
        &lt;p&gt;
          CraftCMS, gitoxide, ImageMagick, Ghost, junrar, libyang, minio는 CVE가 표기되지 않은 상태다.
          운영 환경에서는 아래처럼 접근하는 게 안전하다.
        &lt;/p&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;&lt;strong&gt;업스트림 릴리즈 확인&lt;/strong&gt;: 보안 수정이 포함된 버전이 있는지 릴리즈 노트 중심으로 확인&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;노출면 최소화&lt;/strong&gt;: 외부 노출을 줄이고, 관리자 경로/IP 제한, WAF 룰, 인증 강화&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;입력 제한&lt;/strong&gt;: 업로드/파싱 기능이 있다면 포맷/크기/빈도 제한&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;3) 즉시 적용 가능한 완화 예시(운영 실전)&lt;/h3&gt;
        &lt;div class=&quot;checklist&quot;&gt;
          &lt;h4 class=&quot;checklist-title&quot;&gt;빠른 완화 체크&lt;/h4&gt;
          &lt;ul class=&quot;checklist-list&quot;&gt;
            &lt;li&gt;&lt;strong&gt;ImageMagick&lt;/strong&gt;: 변환 대상 포맷 제한 + 리소스 제한(메모리/시간/픽셀) + 변환 프로세스 격리&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;CMS(Ghost/CraftCMS)&lt;/strong&gt;: 관리자 경로 IP 제한 + 2FA/강한 세션 정책 + 업로드 MIME/확장자 제한&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;minio&lt;/strong&gt;: 퍼블릭 버킷/익명 정책 제거 + 외부 노출 최소화 + 관리자 콘솔 접근 통제&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;freerdp&lt;/strong&gt;: 사용 범위 축소(필요 서버만) + 원격 입력 경로 분리 + 업데이트 창 확보&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;prevention&quot;&gt;
        &lt;h2&gt;재발 방지&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;1) SBOM 기반 “포함 여부”를 자동화&lt;/h3&gt;
        &lt;p&gt;
          라이브러리(예: wolfSSL)나 내부 번들(예: freerdp, jq)은 운영자가 “설치 여부를 감으로” 찾기 어렵다.
          빌드/배포 단계에서 SBOM을 생성하고, 배포된 아티팩트 기준으로 추적 가능해야 한다.
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;2) 외부 입력 처리 모듈은 격리(샌드박스) 기본&lt;/h3&gt;
        &lt;p&gt;
          미디어/압축/파서 계열(ImageMagick, junrar, libyang 등)은 “취약점이 나올 수밖에 없는 클래스”다.
          운영 환경에서는 &lt;strong&gt;프로세스 격리&lt;/strong&gt;와 &lt;strong&gt;리소스 제한&lt;/strong&gt;이 기본 체력이다.
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;3) 패치 창 운영(정기 + 긴급) 표준화&lt;/h3&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;&lt;strong&gt;정기 패치&lt;/strong&gt;: 월간/격주 창으로 꾸준히 끌어올리기&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;긴급 패치&lt;/strong&gt;: Critical/High는 별도 프로세스로 빠르게 반영&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;롤백 전략&lt;/strong&gt;: 프록시/암호/오케스트레이션 같은 핵심 컴포넌트는 롤백 시나리오를 문서화&lt;/li&gt;
        &lt;/ul&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;현장 결론&lt;/strong&gt;&lt;br&gt;
          이 리스트의 핵심은 “취약점이 보고된 프로젝트”를 정확히 알고, 우리 환경의 포함 여부를 빠르게 판별해&lt;br&gt;
          CVE 공개 항목은 즉시 패치, 미공개 항목은 추적 + 완화로 공백을 줄이는 것이다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;quick&quot;&gt;
        &lt;h2&gt;한 번에 정리&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;&lt;strong&gt;대상 모듈:&lt;/strong&gt; 요청 15종(웹/CMS, 인프라, 암호, 파서/미디어 처리 포함)&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;CVE 공개(즉시 패치 루트):&lt;/strong&gt; wolfSSL, freerdp, mastodon, nginx, MapServer, jq, nomad, temporal&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;CVE 미공개(추적+완화 루트):&lt;/strong&gt; CraftCMS, gitoxide, ImageMagick, Ghost, junrar, libyang, minio&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;운영 우선순위:&lt;/strong&gt; 외부 노출 + 입력 처리 + 권한 영향(인증 우회/권한 상승) 조합이 최상위&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;재발 방지:&lt;/strong&gt; SBOM 자동화 + 입력 처리 격리 + 패치 창 표준화&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;
    &lt;/article&gt;
  &lt;/main&gt;

  &lt;style&gt;
    .post-content { line-height: 1.7; }
    .post-content .post-article { max-width: 920px; margin: 0 auto; padding: 0 14px; }
    .post-content .post-header { padding: 18px 0 6px; }
    .post-content .post-title { margin: 0 0 10px; font-size: 28px; letter-spacing: -0.2px; }
    .post-content .post-subtitle { margin: 0 0 10px; font-size: 16px; opacity: 0.9; }

    .post-content .post-section { padding: 18px 0; }
    .post-content h2 { margin: 0; font-size: 22px; letter-spacing: -0.2px; }
    .post-content .spacer { height: 10px; }
    .post-content p { margin: 10px 0; }
    .post-content .subhead { margin: 14px 0 6px; font-size: 18px; letter-spacing: -0.1px; }

    .post-content .callout {
      margin: 14px 0;
      padding: 12px 14px;
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 12px;
      background: rgba(0,0,0,0.03);
    }

    .post-content .checklist {
      margin: 16px 0;
      padding: 14px 14px 10px;
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 12px;
      background: rgba(0,0,0,0.02);
    }
    .post-content .checklist-title { margin: 0 0 8px; font-size: 16px; }
    .post-content .checklist-list { margin: 0; padding-left: 18px; }
    .post-content .checklist-list li { margin: 8px 0; }

    .post-content .list { margin: 10px 0; padding-left: 18px; }
    .post-content .list li { margin: 8px 0; }

    .post-content .table-wrap { overflow: auto; border-radius: 12px; border: 1px solid rgba(0,0,0,0.12); }
    .post-content .tbl { width: 100%; border-collapse: collapse; min-width: 820px; }
    .post-content .tbl th, .post-content .tbl td { padding: 10px 10px; vertical-align: top; border-bottom: 1px solid rgba(0,0,0,0.10); }
    .post-content .tbl thead th { position: sticky; top: 0; background: rgba(0,0,0,0.03); text-align: left; }
    .post-content .tbl tbody tr:last-child td { border-bottom: none; }
    .post-content code { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace; }
  &lt;/style&gt;

  &lt;script type=&quot;application/ld+json&quot;&gt;
  {
    &quot;@context&quot;: &quot;https://schema.org&quot;,
    &quot;@graph&quot;: [
      {
        &quot;@type&quot;: &quot;BreadcrumbList&quot;,
        &quot;itemListElement&quot;: [
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 1,
            &quot;name&quot;: &quot;홈&quot;,
            &quot;item&quot;: &quot;https://example.com/&quot;
          },
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 2,
            &quot;name&quot;: &quot;보안 운영&quot;,
            &quot;item&quot;: &quot;https://example.com/category/security-ops&quot;
          },
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 3,
            &quot;name&quot;: &quot;Mythos 발표 모듈: Anthropic 보고 취약점 대상 모듈 리스트&quot;
          }
        ]
      },
      {
        &quot;@type&quot;: &quot;TechArticle&quot;,
        &quot;headline&quot;: &quot;Mythos 발표 모듈: Anthropic 보고 취약점 대상 모듈 리스트&quot;,
        &quot;description&quot;: &quot;Anthropic CVD 대시보드(2026-05-22 기준)에 공개된 취약점 대상 모듈 중 요청한 15개(CraftCMS, ImageMagick, nginx, wolfSSL 등)를 CVE 공개 여부와 함께 정리한다. 운영 환경에서 점검·복구·재발 방지까지 단계별로 정리.&quot;,
        &quot;inLanguage&quot;: &quot;ko-KR&quot;,
        &quot;mainEntityOfPage&quot;: {
          &quot;@type&quot;: &quot;WebPage&quot;,
          &quot;@id&quot;: &quot;https://example.com/post/mythos-anthropic-modules&quot;
        },
        &quot;author&quot;: {
          &quot;@type&quot;: &quot;Person&quot;,
          &quot;name&quot;: &quot;운영자&quot;
        },
        &quot;publisher&quot;: {
          &quot;@type&quot;: &quot;Organization&quot;,
          &quot;name&quot;: &quot;Tistory Blog&quot;,
          &quot;logo&quot;: {
            &quot;@type&quot;: &quot;ImageObject&quot;,
            &quot;url&quot;: &quot;https://example.com/og-placeholder.jpg&quot;
          }
        },
        &quot;image&quot;: [
          &quot;https://example.com/og-placeholder.jpg&quot;
        ],
        &quot;keywords&quot;: [
          &quot;Mythos&quot;,
          &quot;Anthropic&quot;,
          &quot;CVD&quot;,
          &quot;취약점 대상 모듈&quot;,
          &quot;오픈소스 보안&quot;,
          &quot;CVE&quot;,
          &quot;nginx&quot;,
          &quot;wolfSSL&quot;,
          &quot;Nomad&quot;,
          &quot;Temporal&quot;
        ],
        &quot;articleSection&quot;: &quot;보안 운영&quot;
      }
    ]
  }
  &lt;/script&gt;

  &lt;!--
  관리자 입력용 태그(10개):
  Mythos, Anthropic, CVD, 오픈소스보안, 취약점관리, CVE, nginx, wolfSSL, Nomad, Temporal
  --&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>지식 공유/ETC</category>
      <category>Anthropic</category>
      <category>CVD</category>
      <category>CVE</category>
      <category>Mythos</category>
      <category>nginx</category>
      <category>nomad</category>
      <category>temporal</category>
      <category>wolfSSL</category>
      <category>오픈소스 보안</category>
      <category>취약점 대상 모듈</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/535</guid>
      <comments>https://togethergrow.tistory.com/entry/Mythos-%EB%B0%9C%ED%91%9C-%EB%AA%A8%EB%93%88-Anthropic-%EB%B3%B4%EA%B3%A0-%EC%B7%A8%EC%95%BD%EC%A0%90-%EB%8C%80%EC%83%81-%EB%AA%A8%EB%93%88-%EB%A6%AC%EC%8A%A4%ED%8A%B8#entry535comment</comments>
      <pubDate>Thu, 28 May 2026 16:29:33 +0900</pubDate>
    </item>
    <item>
      <title>MSSQL 오류 15023 원인</title>
      <link>https://togethergrow.tistory.com/entry/MSSQL-%EC%98%A4%EB%A5%98-15023-%EC%9B%90%EC%9D%B8</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;MSSQL 오류 15023 원인과 해결&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;SQL Server 오류 15023(로그인/사용자·소유자·권한/Principal 관련 작업 중 충돌) 발생 시, 환경·증상·1차 점검·심화 분석·복구·재발 방지 흐름으로 정리한다. 기존 Principal 중복, orphaned user, 소유자/권한, SID 불일치, 복제/미러링/복원 이후 계정 정리까지 운영 관점에서 정리.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;SQL Server,MSSQL,15023,로그인,사용자,Principal,SID 불일치,orphaned user,권한,소유자,복원 후 계정&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;MSSQL 오류 15023 원인과 해결&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;오류 15023: Principal(로그인/사용자/역할) 작업 중 중복/충돌/SID 불일치로 실패할 때의 점검·복구 절차.&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/post/mssql-error-15023&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;MSSQL 오류 15023 원인과 해결&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;로그인/사용자/Principal 충돌(중복·SID 불일치·소유자/권한)로 발생하는 15023을 운영 절차로 해결.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;main class=&quot;post-content&quot; role=&quot;main&quot;&gt;
    &lt;article class=&quot;post-article&quot; aria-label=&quot;MSSQL error 15023 일반오류형 매뉴얼&quot;&gt;
      &lt;header class=&quot;post-header&quot;&gt;
        &lt;h1 class=&quot;post-title&quot;&gt;mssql error 15023&lt;/h1&gt;
        &lt;p class=&quot;post-subtitle&quot;&gt;
          오류 &lt;strong&gt;15023&lt;/strong&gt;은 SQL Server에서 &lt;strong&gt;로그인/사용자/역할(Principal)&lt;/strong&gt; 관련 작업(생성·매핑·권한·소유자 변경 등)을 수행할 때
          &lt;strong&gt;이미 존재하는 Principal과의 충돌&lt;/strong&gt; 또는 &lt;strong&gt;SID/매핑 불일치&lt;/strong&gt;로 실패하는 상황에서 자주 등장한다.
        &lt;/p&gt;
      &lt;/header&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;overview&quot;&gt;
        &lt;h2&gt;개요&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;
          SQL Server의 보안 객체는 크게 &lt;strong&gt;서버 수준(Login)&lt;/strong&gt;과 &lt;strong&gt;DB 수준(User)&lt;/strong&gt;로 나뉘며,
          이 둘은 내부적으로 &lt;strong&gt;SID&lt;/strong&gt;를 통해 매핑된다.
          백업/복원, 서버 이관, AlwaysOn/복제, 스크립트 배포 과정에서
          “같은 이름이 이미 있는데 SID가 다르다”거나 “DB에는 사용자가 있는데 서버 로그인과 매핑이 끊어졌다(orphaned user)” 같은 상태가 생기면
          Principal 관련 DDL이 15023으로 막히는 경우가 많다.
        &lt;/p&gt;
        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;실무 기준으로 보면&lt;/strong&gt;&lt;br&gt;
          15023은 단일 원인이라기보다 &lt;strong&gt;보안 객체의 정합성(SID/소유권/권한)&lt;/strong&gt;이 깨졌다는 신호다.&lt;br&gt;
          “삭제 후 재생성”으로 끝내기보다, &lt;strong&gt;어느 범위(서버/DB)에서 무엇이 중복 또는 불일치인지&lt;/strong&gt;를 먼저 잡는 게 안전하다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;environment&quot;&gt;
        &lt;h2&gt;환경&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;SQL Server: 온프레미스/클라우드/Managed Instance 등 전반에서 발생 가능&lt;/li&gt;
          &lt;li&gt;트리거 상황: 계정/권한 배포, DB 복원 후 계정 정리, 서버 이관, CI/CD에서 보안 스크립트 실행&lt;/li&gt;
          &lt;li&gt;관련 작업 예: &lt;code&gt;CREATE LOGIN&lt;/code&gt;, &lt;code&gt;CREATE USER&lt;/code&gt;, &lt;code&gt;ALTER AUTHORIZATION&lt;/code&gt;, 역할/권한 부여, 소유자 변경&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;symptoms&quot;&gt;
        &lt;h2&gt;증상&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;
          에러 메시지는 작업 종류에 따라 다르지만, 공통적으로 “Principal이 이미 존재한다/충돌한다/연결할 수 없다”는 흐름으로 나타난다.
          예를 들어 다음과 같은 작업 중 실패한다.
        &lt;/p&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;동일 이름 로그인/사용자 생성 시도&lt;/li&gt;
          &lt;li&gt;복원된 DB 사용자와 서버 로그인 매핑 시도&lt;/li&gt;
          &lt;li&gt;DB 소유자/스키마 소유자 변경(Authorization) 시도&lt;/li&gt;
          &lt;li&gt;권한/역할 부여 스크립트 실행 중 일부 단계에서 중단&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p class=&quot;note&quot;&gt;
          포인트는 “오류 번호”만 보지 말고, &lt;strong&gt;어떤 T-SQL 문에서 터졌는지&lt;/strong&gt;를 함께 보는 것이다.
          같은 15023이라도 원인은 &lt;strong&gt;중복&lt;/strong&gt;일 수도, &lt;strong&gt;SID 불일치&lt;/strong&gt;일 수도, &lt;strong&gt;소유권 문제&lt;/strong&gt;일 수도 있다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;first-check&quot;&gt;
        &lt;h2&gt;1차 점검&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;1) 서버(Login)과 DB(User) 존재 여부 확인&lt;/h3&gt;
        &lt;p&gt;서버 로그인 존재 확인:&lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;SELECT name, type_desc, is_disabled
FROM sys.server_principals
WHERE name = N'대상계정명';&lt;/code&gt;&lt;/pre&gt;

        &lt;p&gt;DB 사용자 존재 확인(대상 DB에서 실행):&lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;SELECT name, type_desc, authentication_type_desc, sid
FROM sys.database_principals
WHERE name = N'대상계정명';&lt;/code&gt;&lt;/pre&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;2) SID 매핑 일치 여부 확인&lt;/h3&gt;
        &lt;p&gt;서버 로그인 SID:&lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;SELECT name, sid
FROM sys.server_principals
WHERE name = N'대상계정명';&lt;/code&gt;&lt;/pre&gt;

        &lt;p&gt;DB 사용자 SID(대상 DB):&lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;SELECT name, sid
FROM sys.database_principals
WHERE name = N'대상계정명';&lt;/code&gt;&lt;/pre&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;해석&lt;/strong&gt;&lt;br&gt;
          서버에 Login은 있는데 DB User의 SID가 다르거나(또는 User만 있고 Login이 없으면),&lt;br&gt;
          흔히 말하는 &lt;strong&gt;orphaned user&lt;/strong&gt; 또는 &lt;strong&gt;이관/복원 후 SID 불일치&lt;/strong&gt; 상태다.
        &lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;3) 소유자(Owner) 충돌 여부(특히 DB Owner/Schema Owner)&lt;/h3&gt;
        &lt;p&gt;DB 소유자 확인:&lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;SELECT name AS database_name, SUSER_SNAME(owner_sid) AS owner
FROM sys.databases
WHERE name = DB_NAME();&lt;/code&gt;&lt;/pre&gt;

        &lt;p&gt;스키마 소유자 확인(대상 DB):&lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;SELECT s.name AS schema_name, dp.name AS owner
FROM sys.schemas s
JOIN sys.database_principals dp ON s.principal_id = dp.principal_id
ORDER BY s.name;&lt;/code&gt;&lt;/pre&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;deep-dive&quot;&gt;
        &lt;h2&gt;심화 분석&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;케이스 A) “이름이 이미 존재” 중복 충돌&lt;/h3&gt;
        &lt;p&gt;
          배포 스크립트가 &lt;code&gt;CREATE LOGIN&lt;/code&gt; 또는 &lt;code&gt;CREATE USER&lt;/code&gt;를 매번 실행하면서,
          이미 존재하는데도 예외 처리를 하지 않으면 15023 계열로 튕길 수 있다.
        &lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;-- 존재 여부 가드(서버)
IF NOT EXISTS (SELECT 1 FROM sys.server_principals WHERE name = N'대상계정명')
BEGIN
  CREATE LOGIN [대상계정명] WITH PASSWORD = '...';
END;&lt;/code&gt;&lt;/pre&gt;
        &lt;pre&gt;&lt;code&gt;-- 존재 여부 가드(DB)
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = N'대상계정명')
BEGIN
  CREATE USER [대상계정명] FOR LOGIN [대상계정명];
END;&lt;/code&gt;&lt;/pre&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;케이스 B) 복원/이관 후 orphaned user(SID 불일치)&lt;/h3&gt;
        &lt;p&gt;
          DB를 다른 서버로 복원하면, DB 내부 사용자는 기존 SID를 유지하지만 새 서버의 로그인 SID와 달라질 수 있다.
          이 상태에서 매핑/권한 작업을 진행하면 실패가 이어진다.
        &lt;/p&gt;
        &lt;p class=&quot;note&quot;&gt;
          최신 환경에서는 orphaned user 자동 진단/복구 패턴을 &lt;strong&gt;ALTER USER ... WITH LOGIN&lt;/strong&gt;로 가져가는 것이 일반적이다.
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;케이스 C) 소유자/권한 구조 충돌&lt;/h3&gt;
        &lt;p&gt;
          특정 스키마/객체의 소유자가 문제 계정으로 설정되어 있는데,
          해당 계정을 삭제/재생성하거나 권한 구조를 바꾸는 과정에서 충돌이 발생할 수 있다.
          특히 &lt;code&gt;ALTER AUTHORIZATION&lt;/code&gt; 단계에서 15023이 뜨면 “소유권 정합성”을 먼저 의심한다.
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;케이스 D) Windows 그룹/도메인 계정, SID 재발급/변경&lt;/h3&gt;
        &lt;p&gt;
          도메인 이관, AD 재구성 등으로 동일 표시명이라도 SID가 달라지는 케이스가 있다.
          이 경우 “같은 이름인데 다른 실체”가 되어 충돌이 반복될 수 있다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;recovery&quot;&gt;
        &lt;h2&gt;복구&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;1) 중복이면: 생성 스크립트에 가드 추가&lt;/h3&gt;
        &lt;p&gt;
          CI/CD나 운영 배포에서 가장 많이 쓰는 방식이다.
          동일 환경에 여러 번 실행해도 안전하게 넘어가도록 만든다.
        &lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;-- 서버: 로그인
IF NOT EXISTS (SELECT 1 FROM sys.server_principals WHERE name = N'대상계정명')
  CREATE LOGIN [대상계정명] WITH PASSWORD = '...';

-- DB: 사용자
USE [대상DB];
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = N'대상계정명')
  CREATE USER [대상계정명] FOR LOGIN [대상계정명];&lt;/code&gt;&lt;/pre&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;2) orphaned user면: 로그인 매핑 복구&lt;/h3&gt;
        &lt;p&gt;
          DB 사용자와 서버 로그인을 다시 연결한다.
          대상 DB에서 실행한다.
        &lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;USE [대상DB];
ALTER USER [대상계정명] WITH LOGIN = [대상계정명];&lt;/code&gt;&lt;/pre&gt;

        &lt;p class=&quot;note&quot;&gt;
          만약 서버에 로그인 자체가 없다면, 먼저 로그인 생성(또는 도메인 계정/그룹 확인)이 선행되어야 한다.
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;3) 소유권 충돌이면: DB/스키마 소유자 정리&lt;/h3&gt;
        &lt;p&gt;
          계정 정리 전에 소유자를 &lt;code&gt;sa&lt;/code&gt; 같은 안정적인 Principal로 옮기면 충돌이 줄어든다.
        &lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;-- DB Owner 변경(대상 DB가 아니라 master에서 실행해도 됨)
ALTER AUTHORIZATION ON DATABASE::[대상DB] TO [sa];&lt;/code&gt;&lt;/pre&gt;
        &lt;pre&gt;&lt;code&gt;-- 특정 스키마 소유자 변경(대상 DB)
USE [대상DB];
ALTER AUTHORIZATION ON SCHEMA::[dbo] TO [dbo];&lt;/code&gt;&lt;/pre&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;4) “삭제 후 재생성”이 필요한 경우의 순서&lt;/h3&gt;
        &lt;p&gt;
          운영에서는 권한/소유권 의존성이 얽혀 있어 순서가 중요하다.
        &lt;/p&gt;
        &lt;ol class=&quot;olist&quot;&gt;
          &lt;li&gt;대상 계정이 소유한 스키마/객체 소유권을 다른 Principal로 이전&lt;/li&gt;
          &lt;li&gt;DB 역할/권한 제거(필요 시)&lt;/li&gt;
          &lt;li&gt;DB USER 삭제&lt;/li&gt;
          &lt;li&gt;SERVER LOGIN 삭제&lt;/li&gt;
          &lt;li&gt;LOGIN 재생성(필요 시 SID 유지 옵션 검토)&lt;/li&gt;
          &lt;li&gt;USER 재생성 및 권한/역할 재부여&lt;/li&gt;
        &lt;/ol&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;운영 팁&lt;/strong&gt;&lt;br&gt;
          단순히 “DROP LOGIN”부터 치면, 소유권/권한 종속 때문에 더 큰 장애로 번질 수 있다.&lt;br&gt;
          먼저 &lt;strong&gt;누가 무엇을 소유/참조하는지&lt;/strong&gt;를 점검한 뒤 순서를 잡는 게 안전하다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;prevention&quot;&gt;
        &lt;h2&gt;재발 방지&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;1) 계정/권한 배포를 멱등성(idempotent) 있게&lt;/h3&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;&lt;code&gt;IF NOT EXISTS&lt;/code&gt; 가드로 “이미 있으면 통과” 구조 만들기&lt;/li&gt;
          &lt;li&gt;역할/권한 부여도 중복 실행에 안전한 패턴으로 구성&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;2) 백업/복원·이관 표준 절차에 orphaned user 점검 포함&lt;/h3&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;복원 후 바로 &lt;code&gt;sys.database_principals&lt;/code&gt; / &lt;code&gt;sys.server_principals&lt;/code&gt; SID 비교&lt;/li&gt;
          &lt;li&gt;필요 계정은 &lt;code&gt;ALTER USER ... WITH LOGIN&lt;/code&gt;로 즉시 재매핑&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;3) DB/스키마 소유자는 특정 개인 계정 대신 안정적인 Principal로&lt;/h3&gt;
        &lt;p&gt;
          개인 계정이 소유자가 되면 퇴사/권한 변경/도메인 이관 때 장애가 반복된다.
          운영 환경에서는 DB Owner와 주요 스키마 Owner를 표준 Principal로 고정하는 것이 사고를 줄인다.
        &lt;/p&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;결론&lt;/strong&gt;&lt;br&gt;
          15023은 “계정 만들기 실패”가 아니라 &lt;strong&gt;보안 객체(Principal) 정합성 문제&lt;/strong&gt;로 보는 게 맞다.&lt;br&gt;
          중복/매핑(SID)/소유권을 분리해서 점검하면 대부분 빠르게 복구된다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;quick&quot;&gt;
        &lt;h2&gt;한 번에 정리&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;&lt;strong&gt;가장 흔한 원인:&lt;/strong&gt; 같은 이름 Principal 중복 또는 복원/이관 후 SID 불일치(orphaned user)&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;즉시 점검:&lt;/strong&gt; &lt;code&gt;sys.server_principals&lt;/code&gt;, &lt;code&gt;sys.database_principals&lt;/code&gt;에서 존재/SID 확인&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;대표 조치:&lt;/strong&gt; 중복 가드(멱등 스크립트), &lt;code&gt;ALTER USER ... WITH LOGIN&lt;/code&gt;, 소유권(&lt;code&gt;ALTER AUTHORIZATION&lt;/code&gt;) 정리&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;재발 방지:&lt;/strong&gt; 배포 스크립트 표준화 + 복원 절차에 SID 점검 포함 + 소유자 고정&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;
    &lt;/article&gt;
  &lt;/main&gt;

  &lt;style&gt;
    .post-content { line-height: 1.7; }
    .post-content .post-article { max-width: 860px; margin: 0 auto; padding: 0 14px; }
    .post-content .post-header { padding: 18px 0 6px; }
    .post-content .post-title { margin: 0 0 10px; font-size: 28px; letter-spacing: -0.2px; }
    .post-content .post-subtitle { margin: 0 0 10px; font-size: 16px; opacity: 0.9; }

    .post-content .post-section { padding: 18px 0; }
    .post-content h2 { margin: 0; font-size: 22px; letter-spacing: -0.2px; }
    .post-content .spacer { height: 10px; }
    .post-content p { margin: 10px 0; }
    .post-content .subhead { margin: 14px 0 6px; font-size: 18px; letter-spacing: -0.1px; }

    .post-content .callout {
      margin: 14px 0;
      padding: 12px 14px;
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 12px;
      background: rgba(0,0,0,0.03);
    }
    .post-content .note { opacity: 0.9; }

    .post-content pre {
      margin: 12px 0;
      padding: 12px;
      overflow: auto;
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 12px;
      background: rgba(0,0,0,0.02);
    }
    .post-content code { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace; }

    .post-content .list { margin: 10px 0; padding-left: 18px; }
    .post-content .list li { margin: 8px 0; }
    .post-content .olist { margin: 10px 0; padding-left: 20px; }
    .post-content .olist li { margin: 8px 0; }
  &lt;/style&gt;

  &lt;script type=&quot;application/ld+json&quot;&gt;
  {
    &quot;@context&quot;: &quot;https://schema.org&quot;,
    &quot;@graph&quot;: [
      {
        &quot;@type&quot;: &quot;BreadcrumbList&quot;,
        &quot;itemListElement&quot;: [
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 1,
            &quot;name&quot;: &quot;홈&quot;,
            &quot;item&quot;: &quot;https://example.com/&quot;
          },
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 2,
            &quot;name&quot;: &quot;DB 운영&quot;,
            &quot;item&quot;: &quot;https://example.com/category/db-ops&quot;
          },
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 3,
            &quot;name&quot;: &quot;mssql error 15023&quot;
          }
        ]
      },
      {
        &quot;@type&quot;: &quot;TechArticle&quot;,
        &quot;headline&quot;: &quot;mssql error 15023&quot;,
        &quot;description&quot;: &quot;SQL Server 오류 15023(로그인/사용자·소유자·권한/Principal 관련 작업 중 충돌) 발생 시, 환경·증상·1차 점검·심화 분석·복구·재발 방지 흐름으로 정리한다. 기존 Principal 중복, orphaned user, 소유자/권한, SID 불일치, 복제/미러링/복원 이후 계정 정리까지 운영 관점에서 정리.&quot;,
        &quot;inLanguage&quot;: &quot;ko-KR&quot;,
        &quot;mainEntityOfPage&quot;: {
          &quot;@type&quot;: &quot;WebPage&quot;,
          &quot;@id&quot;: &quot;https://example.com/post/mssql-error-15023&quot;
        },
        &quot;author&quot;: {
          &quot;@type&quot;: &quot;Person&quot;,
          &quot;name&quot;: &quot;운영자&quot;
        },
        &quot;publisher&quot;: {
          &quot;@type&quot;: &quot;Organization&quot;,
          &quot;name&quot;: &quot;Tistory Blog&quot;,
          &quot;logo&quot;: {
            &quot;@type&quot;: &quot;ImageObject&quot;,
            &quot;url&quot;: &quot;https://example.com/og-placeholder.jpg&quot;
          }
        },
        &quot;image&quot;: [
          &quot;https://example.com/og-placeholder.jpg&quot;
        ],
        &quot;keywords&quot;: [
          &quot;SQL Server&quot;,
          &quot;MSSQL&quot;,
          &quot;15023&quot;,
          &quot;로그인&quot;,
          &quot;사용자&quot;,
          &quot;Principal&quot;,
          &quot;SID 불일치&quot;,
          &quot;orphaned user&quot;,
          &quot;권한&quot;,
          &quot;소유자&quot;
        ],
        &quot;articleSection&quot;: &quot;DB 운영&quot;
      }
    ]
  }
  &lt;/script&gt;

  &lt;!--
  관리자 입력용 태그(10개):
  SQLServer, MSSQL, Error15023, 로그인, DB사용자, Principal, SID불일치, OrphanedUser, 권한관리, DB운영
  --&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>지식 공유/DBMS</category>
      <category>15023</category>
      <category>MSSQL</category>
      <category>orphaned user</category>
      <category>principal</category>
      <category>SID 불일치</category>
      <category>SQL Server</category>
      <category>권한</category>
      <category>로그인</category>
      <category>사용자</category>
      <category>소유자</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/534</guid>
      <comments>https://togethergrow.tistory.com/entry/MSSQL-%EC%98%A4%EB%A5%98-15023-%EC%9B%90%EC%9D%B8#entry534comment</comments>
      <pubDate>Wed, 27 May 2026 11:46:19 +0900</pubDate>
    </item>
    <item>
      <title>PostgreSQL 오류 42704</title>
      <link>https://togethergrow.tistory.com/entry/PostgreSQL-%EC%98%A4%EB%A5%98-42704</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;PostgreSQL 오류 42704 원인과 해결&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;PostgreSQL SQLSTATE 42704(Undefined Object) 오류를 환경·증상·점검·복구·재발 방지 흐름으로 정리한다. 스키마/검색경로(search_path), 대소문자(quoted identifier), 확장/타입/연산자/시퀀스 누락까지 운영 관점에서 빠르게 해결하는 방법.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;PostgreSQL,42704,SQLSTATE,Undefined Object,relation does not exist,search_path,스키마,quoted identifier,확장,타입 누락&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;PostgreSQL 오류 42704 원인과 해결&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;SQLSTATE 42704(Undefined Object): 객체(테이블/컬럼/타입/연산자/확장 등)를 못 찾을 때 발생. 점검→복구→재발 방지까지 정리.&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/post/postgresql-error-42704&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;PostgreSQL 오류 42704 원인과 해결&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;Undefined Object(42704) 오류: 스키마/검색경로/대소문자/확장 누락을 중심으로 해결한다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;main class=&quot;post-content&quot; role=&quot;main&quot;&gt;
    &lt;article class=&quot;post-article&quot; aria-label=&quot;PostgreSQL error 42704 일반오류형 매뉴얼&quot;&gt;
      &lt;header class=&quot;post-header&quot;&gt;
        &lt;h1 class=&quot;post-title&quot;&gt;postgresql error 42704&lt;/h1&gt;
        &lt;p class=&quot;post-subtitle&quot;&gt;
          SQLSTATE &lt;strong&gt;42704&lt;/strong&gt;는 PostgreSQL이 “요청한 객체(Object)를 찾을 수 없다”고 판단할 때 발생한다.
          테이블·뷰·컬럼뿐 아니라 타입/연산자/확장/시퀀스/함수 등 범위가 넓어, &lt;strong&gt;검색 경로와 식별자 규칙&lt;/strong&gt;부터 잡는 게 빠르다.
        &lt;/p&gt;
      &lt;/header&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;overview&quot;&gt;
        &lt;h2&gt;개요&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;
          PostgreSQL에서 &lt;strong&gt;SQLSTATE 42704&lt;/strong&gt;는 일반적으로 &lt;strong&gt;Undefined Object&lt;/strong&gt; 계열로 분류된다.
          흔히 “relation does not exist”, “type does not exist”, “operator does not exist”처럼
          특정 객체를 참조했지만 해당 객체가 현재 세션에서 해석되지 않는 상황에서 발생한다.
        &lt;/p&gt;
        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;실무 기준으로 보면&lt;/strong&gt;&lt;br&gt;
          42704는 “진짜로 객체가 없음”과 “객체는 있는데 내가 못 찾는 상태(search_path/권한/대소문자)”가 섞여 있다.&lt;br&gt;
          그래서 무작정 재생성보다 &lt;strong&gt;현재 세션이 무엇을 어디에서 찾는지&lt;/strong&gt;를 먼저 확인하는 게 정답이다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;environment&quot;&gt;
        &lt;h2&gt;환경&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;PostgreSQL 전 버전 공통적으로 발생 가능&lt;/li&gt;
          &lt;li&gt;발생 지점: 애플리케이션 SQL 실행, 마이그레이션/DDL, 확장 설치, 함수/연산자/타입 사용 시&lt;/li&gt;
          &lt;li&gt;특히 자주: 멀티 스키마(tenant), ORM, 마이그레이션 도구 사용, 대소문자 섞인 식별자&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;symptoms&quot;&gt;
        &lt;h2&gt;증상&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;로그/에러 메시지는 상황에 따라 다양하지만 아래 유형이 대표적이다.&lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;ERROR:  relation &quot;xxx&quot; does not exist
SQLSTATE: 42704&lt;/code&gt;&lt;/pre&gt;
        &lt;pre&gt;&lt;code&gt;ERROR:  type &quot;xxx&quot; does not exist
SQLSTATE: 42704&lt;/code&gt;&lt;/pre&gt;
        &lt;pre&gt;&lt;code&gt;ERROR:  operator does not exist: xxx
SQLSTATE: 42704&lt;/code&gt;&lt;/pre&gt;
        &lt;pre&gt;&lt;code&gt;ERROR:  function xxx(...) does not exist
SQLSTATE: 42704&lt;/code&gt;&lt;/pre&gt;
        &lt;p class=&quot;note&quot;&gt;
          메시지에서 &lt;strong&gt;relation/type/operator/function&lt;/strong&gt; 중 무엇이 “없다”라고 나오는지 확인하면
          점검 방향이 바로 좁혀진다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;first-check&quot;&gt;
        &lt;h2&gt;1차 점검&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;1) 현재 DB/스키마 검색 경로 확인&lt;/h3&gt;
        &lt;pre&gt;&lt;code&gt;SELECT current_database();
SHOW search_path;&lt;/code&gt;&lt;/pre&gt;
        &lt;p&gt;
          객체가 다른 스키마에 있는데 &lt;code&gt;search_path&lt;/code&gt;에 포함되지 않으면 “없는 것”으로 해석될 수 있다.
          특히 운영에서 가장 흔한 원인이 이 케이스다.
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;2) 객체 존재 여부를 카탈로그로 확인&lt;/h3&gt;
        &lt;p&gt;테이블/뷰(=relation) 확인:&lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;SELECT n.nspname AS schema, c.relname AS name, c.relkind
FROM pg_class c
JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname = '대상객체명'
ORDER BY 1;&lt;/code&gt;&lt;/pre&gt;

        &lt;p&gt;타입 확인:&lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;SELECT n.nspname AS schema, t.typname AS type
FROM pg_type t
JOIN pg_namespace n ON n.oid = t.typnamespace
WHERE t.typname = '대상타입명'
ORDER BY 1;&lt;/code&gt;&lt;/pre&gt;

        &lt;p&gt;함수 확인(이름만):&lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;SELECT n.nspname AS schema, p.proname AS func
FROM pg_proc p
JOIN pg_namespace n ON n.oid = p.pronamespace
WHERE p.proname = '대상함수명'
ORDER BY 1;&lt;/code&gt;&lt;/pre&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;3) 대소문자/따옴표(quoted identifier) 이슈 여부&lt;/h3&gt;
        &lt;p&gt;
          PostgreSQL은 따옴표 없이 만든 식별자를 내부적으로 &lt;strong&gt;소문자&lt;/strong&gt;로 접는다.
          반면, 따옴표로 만든 식별자는 대소문자를 그대로 유지한다.
        &lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;-- 예: 이렇게 만들면 실제 이름이 UserTable(대소문자 유지)
CREATE TABLE &quot;UserTable&quot; (id bigint);

-- 이렇게 조회하면 소문자 usertable로 찾기 때문에 못 찾을 수 있음
SELECT * FROM UserTable;  -- 실패 가능

-- 이렇게 해야 동일 객체로 인식
SELECT * FROM &quot;UserTable&quot;;&lt;/code&gt;&lt;/pre&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;4) 권한 문제로 “존재를 못 보는” 케이스도 확인&lt;/h3&gt;
        &lt;pre&gt;&lt;code&gt;-- 테이블 권한 예시
SELECT grantee, privilege_type
FROM information_schema.role_table_grants
WHERE table_name = '대상객체명';&lt;/code&gt;&lt;/pre&gt;
        &lt;p class=&quot;note&quot;&gt;
          보통 권한 문제는 42501(권한 없음)으로 더 자주 나타나지만,
          일부 구성/도구에서는 “없음”처럼 보이게 처리되는 경우도 있어 함께 점검한다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;deep-dive&quot;&gt;
        &lt;h2&gt;심화 분석&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;케이스 A) 스키마 미지정/검색경로 문제&lt;/h3&gt;
        &lt;p&gt;
          객체가 &lt;code&gt;app.orders&lt;/code&gt;에 있는데 &lt;code&gt;public&lt;/code&gt;만 search_path에 있으면,
          &lt;code&gt;SELECT * FROM orders;&lt;/code&gt;는 실패한다.
          이런 경우는 &lt;strong&gt;스키마를 명시&lt;/strong&gt;하는 것이 가장 확실하다.
        &lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;SELECT * FROM app.orders;&lt;/code&gt;&lt;/pre&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;케이스 B) 확장(extension) 미설치로 타입/연산자/함수가 없음&lt;/h3&gt;
        &lt;p&gt;
          예를 들어 &lt;code&gt;uuid_generate_v4()&lt;/code&gt;는 &lt;code&gt;uuid-ossp&lt;/code&gt; 확장이 없으면 “함수 없음”으로 뜬다.
          &lt;code&gt;pg_trgm&lt;/code&gt;가 없으면 특정 연산자/GIN 인덱스 관련 기능을 못 찾는 메시지가 나온다.
        &lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;-- 설치 여부 확인
SELECT extname FROM pg_extension ORDER BY 1;

-- 필요 시(권한 필요) 설치
CREATE EXTENSION IF NOT EXISTS &quot;uuid-ossp&quot;;
CREATE EXTENSION IF NOT EXISTS pg_trgm;&lt;/code&gt;&lt;/pre&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;케이스 C) 타입 캐스팅/연산자 해석 실패&lt;/h3&gt;
        &lt;p&gt;
          “operator does not exist”는 값 타입이 기대와 달라서 연산자 해석이 안 되는 경우가 많다.
          이때는 명시적 캐스팅으로 해결되는 경우가 많다.
        &lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;-- 예시: text와 integer 비교가 섞여 연산자 해석이 실패할 때
SELECT * FROM t WHERE some_text_col = 10::text;
-- 또는
SELECT * FROM t WHERE some_int_col = '10'::integer;&lt;/code&gt;&lt;/pre&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;케이스 D) 시퀀스/컬럼 기본값이 가리키는 객체가 사라짐&lt;/h3&gt;
        &lt;p&gt;
          마이그레이션 중 시퀀스가 삭제/이름 변경되어 기본값이 깨지면 “sequence does not exist” 류로 이어질 수 있다.
          기본값을 확인해 “무엇을 참조하는지”부터 보는 게 빠르다.
        &lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;-- 컬럼 기본값 확인
SELECT column_name, column_default
FROM information_schema.columns
WHERE table_schema = '스키마'
  AND table_name = '테이블명'
  AND column_default IS NOT NULL;&lt;/code&gt;&lt;/pre&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;recovery&quot;&gt;
        &lt;h2&gt;복구&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;1) 스키마 명시로 즉시 복구(가장 안전)&lt;/h3&gt;
        &lt;pre&gt;&lt;code&gt;SELECT * FROM 스키마.테이블;
SELECT 스키마.함수명(...);&lt;/code&gt;&lt;/pre&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;2) search_path를 세션/롤 단위로 정리&lt;/h3&gt;
        &lt;p&gt;
          단기적으로는 세션에서만 고치고, 재발 방지를 위해 롤(계정) 단위로 고정하는 흐름이 일반적이다.
        &lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;-- 세션 단위
SET search_path TO app, public;

-- 롤 단위(권한 필요)
ALTER ROLE app_user SET search_path TO app, public;&lt;/code&gt;&lt;/pre&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;3) quoted identifier 정리(가능하면 “따옴표 식별자”를 줄이기)&lt;/h3&gt;
        &lt;p&gt;
          이미 따옴표로 만든 객체가 많다면, 애플리케이션 SQL에서 정확히 따옴표를 맞추는 게 우선이다.
          장기적으로는 &lt;strong&gt;소문자 스네이크 케이스로 리네이밍&lt;/strong&gt;해 운영 복잡도를 줄이는 편이 낫다.
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;4) 확장 설치/마이그레이션 재적용&lt;/h3&gt;
        &lt;p&gt;
          기능을 사용하기 전제인 확장이 누락되었거나, 마이그레이션이 일부만 적용된 경우라면
          대상 환경(DB/스키마)을 분명히 한 뒤 재적용한다.
        &lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;-- 확장 설치
CREATE EXTENSION IF NOT EXISTS pgcrypto;

-- 마이그레이션 도구 사용 시에는
-- (예: schema_migrations 테이블/버전 상태 확인 후 재실행)&lt;/code&gt;&lt;/pre&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;prevention&quot;&gt;
        &lt;h2&gt;재발 방지&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;1) 스키마 규칙을 표준화&lt;/h3&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;애플리케이션에서 사용하는 기본 스키마를 1개로 고정(예: app)&lt;/li&gt;
          &lt;li&gt;SQL에서 중요한 객체는 스키마를 명시하는 룰 도입(특히 배치/운영 스크립트)&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;2) search_path를 코드가 아니라 계정(ROLE)에 고정&lt;/h3&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;환경마다 다른 search_path가 숨어 있으면, 배포 후 특정 환경에서만 42704가 터진다&lt;/li&gt;
          &lt;li&gt;ROLE에 고정하면 “어느 커넥션이든 동일한 해석”이 된다&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;3) 식별자 정책: 따옴표 없이 소문자 스네이크 케이스&lt;/h3&gt;
        &lt;p&gt;
          객체명에 대문자/특수문자를 섞어 따옴표를 강제하면,
          운영에서 “보이는 이름”과 “찾는 이름”이 달라져 장애가 반복된다.
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;4) 확장/의존성 체크를 배포 파이프라인에 포함&lt;/h3&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;필수 확장 목록을 문서화하고, 배포 시 &lt;code&gt;pg_extension&lt;/code&gt; 검사로 누락을 차단&lt;/li&gt;
          &lt;li&gt;마이그레이션은 “적용됨/미적용됨”을 항상 버전 테이블로 검증&lt;/li&gt;
        &lt;/ul&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;현장 결론&lt;/strong&gt;&lt;br&gt;
          42704는 “없다”가 아니라 “내 세션이 못 찾는다”가 더 흔하다.&lt;br&gt;
          스키마 명시 + search_path 표준화 + 따옴표 식별자 최소화가 재발을 가장 크게 줄인다.
        &lt;/div&gt;
      &lt;/section&gt;
    &lt;/article&gt;
  &lt;/main&gt;

  &lt;style&gt;
    .post-content { line-height: 1.7; }
    .post-content .post-article { max-width: 860px; margin: 0 auto; padding: 0 14px; }
    .post-content .post-header { padding: 18px 0 6px; }
    .post-content .post-title { margin: 0 0 10px; font-size: 28px; letter-spacing: -0.2px; }
    .post-content .post-subtitle { margin: 0 0 10px; font-size: 16px; opacity: 0.9; }

    .post-content .post-section { padding: 18px 0; }
    .post-content h2 { margin: 0; font-size: 22px; letter-spacing: -0.2px; }
    .post-content .spacer { height: 10px; }
    .post-content p { margin: 10px 0; }
    .post-content .subhead { margin: 14px 0 6px; font-size: 18px; letter-spacing: -0.1px; }

    .post-content .callout {
      margin: 14px 0;
      padding: 12px 14px;
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 12px;
      background: rgba(0,0,0,0.03);
    }
    .post-content .note { opacity: 0.9; }

    .post-content pre {
      margin: 12px 0;
      padding: 12px;
      overflow: auto;
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 12px;
      background: rgba(0,0,0,0.02);
    }
    .post-content code { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace; }

    .post-content .list { margin: 10px 0; padding-left: 18px; }
    .post-content .list li { margin: 8px 0; }
  &lt;/style&gt;

  &lt;script type=&quot;application/ld+json&quot;&gt;
  {
    &quot;@context&quot;: &quot;https://schema.org&quot;,
    &quot;@graph&quot;: [
      {
        &quot;@type&quot;: &quot;BreadcrumbList&quot;,
        &quot;itemListElement&quot;: [
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 1,
            &quot;name&quot;: &quot;홈&quot;,
            &quot;item&quot;: &quot;https://example.com/&quot;
          },
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 2,
            &quot;name&quot;: &quot;DB 운영&quot;,
            &quot;item&quot;: &quot;https://example.com/category/db-ops&quot;
          },
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 3,
            &quot;name&quot;: &quot;postgresql error 42704&quot;
          }
        ]
      },
      {
        &quot;@type&quot;: &quot;TechArticle&quot;,
        &quot;headline&quot;: &quot;postgresql error 42704&quot;,
        &quot;description&quot;: &quot;PostgreSQL SQLSTATE 42704(Undefined Object) 오류를 환경·증상·점검·복구·재발 방지 흐름으로 정리한다. 스키마/검색경로(search_path), 대소문자(quoted identifier), 확장/타입/연산자/시퀀스 누락까지 운영 관점에서 빠르게 해결하는 방법.&quot;,
        &quot;inLanguage&quot;: &quot;ko-KR&quot;,
        &quot;mainEntityOfPage&quot;: {
          &quot;@type&quot;: &quot;WebPage&quot;,
          &quot;@id&quot;: &quot;https://example.com/post/postgresql-error-42704&quot;
        },
        &quot;author&quot;: {
          &quot;@type&quot;: &quot;Person&quot;,
          &quot;name&quot;: &quot;운영자&quot;
        },
        &quot;publisher&quot;: {
          &quot;@type&quot;: &quot;Organization&quot;,
          &quot;name&quot;: &quot;Tistory Blog&quot;,
          &quot;logo&quot;: {
            &quot;@type&quot;: &quot;ImageObject&quot;,
            &quot;url&quot;: &quot;https://example.com/og-placeholder.jpg&quot;
          }
        },
        &quot;image&quot;: [
          &quot;https://example.com/og-placeholder.jpg&quot;
        ],
        &quot;keywords&quot;: [
          &quot;PostgreSQL&quot;,
          &quot;42704&quot;,
          &quot;SQLSTATE&quot;,
          &quot;Undefined Object&quot;,
          &quot;relation does not exist&quot;,
          &quot;search_path&quot;,
          &quot;스키마&quot;,
          &quot;quoted identifier&quot;,
          &quot;확장&quot;,
          &quot;타입 누락&quot;
        ],
        &quot;articleSection&quot;: &quot;DB 운영&quot;
      }
    ]
  }
  &lt;/script&gt;

  &lt;!--
  관리자 입력용 태그(10개):
  PostgreSQL, SQLSTATE42704, UndefinedObject, 스키마, search_path, relationDoesNotExist, quotedIdentifier, 확장, 타입오류, DB운영
  --&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>지식 공유/DBMS</category>
      <category>42704</category>
      <category>PostgreSQL</category>
      <category>quoted identifier</category>
      <category>relation does not exist</category>
      <category>search_path</category>
      <category>SQLSTATE</category>
      <category>Undefined Object</category>
      <category>스키마</category>
      <category>타입 누락</category>
      <category>확장</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/533</guid>
      <comments>https://togethergrow.tistory.com/entry/PostgreSQL-%EC%98%A4%EB%A5%98-42704#entry533comment</comments>
      <pubDate>Wed, 27 May 2026 11:44:03 +0900</pubDate>
    </item>
    <item>
      <title>PostgreSQL 오류: canceling statement due to conflict with recovery</title>
      <link>https://togethergrow.tistory.com/entry/PostgreSQL-%EC%98%A4%EB%A5%98-canceling-statement-due-to-conflict-with-recovery</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;PostgreSQL 오류: canceling statement due to conflict with recovery 원인과 해결&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;Hot Standby(리드 리플리카)에서 장시간 쿼리가 WAL 적용과 충돌해 발생하는 PostgreSQL 오류를 정리한다. 증상 확인부터 설정 조정, 쿼리 개선, 재발 방지까지 운영 관점에서 단계별로 정리한다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;PostgreSQL,Hot Standby,Streaming Replication,conflict with recovery,리드 리플리카,wal replay,standby,쿼리 취소,hot_standby_feedback,max_standby_streaming_delay&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;PostgreSQL 오류: canceling statement due to conflict with recovery 원인과 해결&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;리드 리플리카에서 장시간 쿼리가 WAL 적용과 충돌해 취소되는 오류. 설정·쿼리·운영 절차로 해결한다.&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/post/postgresql-conflict-with-recovery&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;PostgreSQL 오류: canceling statement due to conflict with recovery 원인과 해결&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;Hot Standby에서 WAL 적용과 읽기 쿼리가 충돌할 때의 대응법(점검→조치→재발 방지).&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;main class=&quot;post-content&quot; role=&quot;main&quot;&gt;
    &lt;article class=&quot;post-article&quot; aria-label=&quot;PostgreSQL conflict with recovery 일반오류형 매뉴얼&quot;&gt;
      &lt;header class=&quot;post-header&quot;&gt;
        &lt;h1 class=&quot;post-title&quot;&gt;postgresql error canceling statement due to conflict with recovery&lt;/h1&gt;
        &lt;p class=&quot;post-subtitle&quot;&gt;
          리드 리플리카(Hot Standby)에서 “읽기”가 길어질수록, “복구(WAL 적용)”가 우선권을 가져 쿼리가 취소될 수 있다.
        &lt;/p&gt;
      &lt;/header&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;overview&quot;&gt;
        &lt;h2&gt;개요&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;
          이 오류는 주로 &lt;strong&gt;Streaming Replication&lt;/strong&gt; 환경의 &lt;strong&gt;Standby(읽기 전용 리플리카)&lt;/strong&gt;에서 발생한다.
          Standby는 Primary에서 전달된 WAL을 빠르게 적용해야 하는데, 동시에 실행 중인 SELECT가
          WAL 적용 과정(특히 VACUUM/정리로 인해 필요해진 튜플 제거, 페이지 변경)을 방해하면 PostgreSQL이
          &lt;strong&gt;쿼리를 강제로 취소&lt;/strong&gt;해 복구(리플레이)를 진행한다.
        &lt;/p&gt;
        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;실무 기준으로 보면&lt;/strong&gt;&lt;br&gt;
          “쿼리 성능 문제”처럼 보여도, 본질은 &lt;strong&gt;리플리카가 지연되지 않도록 복구가 쿼리를 밀어내는 정책&lt;/strong&gt;이다.&lt;br&gt;
          단기 해결은 설정 조정이지만, 근본 해결은 &lt;strong&gt;장시간 읽기 쿼리/트랜잭션을 줄이는 설계&lt;/strong&gt;다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;environment&quot;&gt;
        &lt;h2&gt;환경&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;PostgreSQL: Hot Standby(Streaming Replication) 구성&lt;/li&gt;
          &lt;li&gt;발생 위치: Standby(읽기 전용) 노드에서 SELECT 수행 중&lt;/li&gt;
          &lt;li&gt;동시 상황: Primary에서 VACUUM, UPDATE/DELETE, DDL, 대량 배치 등 WAL 생성/적용이 활발&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;
          운영 환경에서는 “리드 리플리카를 리포팅/배치 조회에 쓰는 패턴”에서 특히 잘 터진다.
          리포팅 쿼리가 오래 걸리면, 그 사이 Primary의 변경분이 누적되고 Standby는 WAL 적용을 밀어붙이려 하면서 충돌이 생긴다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;symptoms&quot;&gt;
        &lt;h2&gt;증상&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;Standby에서 다음과 같은 메시지가 로그/애플리케이션 에러로 나타난다.&lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;ERROR:  canceling statement due to conflict with recovery
DETAIL: User query might have needed to see row versions that must be removed.&lt;/code&gt;&lt;/pre&gt;

        &lt;p&gt;또는 아래 유형이 함께 보일 수 있다.&lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;ERROR:  canceling statement due to conflict with recovery
DETAIL: Canceling statement due to conflict with recovery.
HINT: In a moment you might be able to reconnect to the database and repeat your command.&lt;/code&gt;&lt;/pre&gt;

        &lt;p class=&quot;note&quot;&gt;
          포인트는 “Standby가 읽기 쿼리를 살리느냐” vs “복구(WAL 적용)를 살리느냐”의 선택에서,
          기본적으로 복구가 우선권을 가져 쿼리가 취소된다는 점이다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;first-check&quot;&gt;
        &lt;h2&gt;1차 점검&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;1) 발생 노드가 Standby인지 확인&lt;/h3&gt;
        &lt;pre&gt;&lt;code&gt;SELECT pg_is_in_recovery();&lt;/code&gt;&lt;/pre&gt;
        &lt;p&gt;
          결과가 &lt;code&gt;true&lt;/code&gt;면 Standby에서 발생한 케이스로 분류해도 된다.
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;2) 리플리케이션 지연 확인&lt;/h3&gt;
        &lt;pre&gt;&lt;code&gt;-- Standby에서 대략적인 리플레이 지연(시간)
SELECT now() - pg_last_xact_replay_timestamp() AS replay_lag;&lt;/code&gt;&lt;/pre&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;3) 장시간 실행 쿼리/트랜잭션 확인&lt;/h3&gt;
        &lt;pre&gt;&lt;code&gt;SELECT pid, usename, state, now() - query_start AS runtime, left(query, 200) AS q
FROM pg_stat_activity
WHERE state &amp;lt;&amp;gt; 'idle'
ORDER BY runtime DESC;&lt;/code&gt;&lt;/pre&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;체크 기준&lt;/strong&gt;&lt;br&gt;
          runtime이 길고(예: 수십 초~수분), 리포팅/집계/대량 스캔 성격이면 충돌 확률이 급증한다.&lt;br&gt;
          특히 “트랜잭션을 열어둔 채 오래 읽는 패턴”은 Standby에서 가장 위험하다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;deep-dive&quot;&gt;
        &lt;h2&gt;심화 분석&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;왜 VACUUM/정리가 Standby의 SELECT를 깨는가&lt;/h3&gt;
        &lt;p&gt;
          Primary에서 UPDATE/DELETE가 반복되면 MVCC 특성상 “죽은 튜플(dead tuples)”이 쌓이고,
          VACUUM이 이를 정리한다. Standby는 WAL을 적용하면서 그 정리 작업을 재현해야 한다.
          그런데 Standby에서 어떤 SELECT가 오래 걸리며 과거 스냅샷을 유지하고 있으면,
          WAL 적용은 “지워야 하는 튜플을 아직 쿼리가 볼 수도 있다”라고 판단한다.
          그 순간 복구를 멈출 수 없으니, PostgreSQL은 해당 SELECT를 &lt;strong&gt;취소&lt;/strong&gt;한다.
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;대표적으로 충돌을 키우는 패턴&lt;/h3&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;Standby에서 장시간 수행되는 대용량 리포트/집계 쿼리&lt;/li&gt;
          &lt;li&gt;커서/페이징을 트랜잭션으로 길게 묶어 스냅샷을 오래 유지&lt;/li&gt;
          &lt;li&gt;ORM이 읽기 트랜잭션을 길게 잡고 연결을 유지하는 구성&lt;/li&gt;
          &lt;li&gt;Primary에서 대량 UPDATE/DELETE, VACUUM aggressive, DDL 작업이 잦음&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;recovery&quot;&gt;
        &lt;h2&gt;복구&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;A) 단기: 쿼리 재시도/타임아웃 정책&lt;/h3&gt;
        &lt;p&gt;
          이 오류는 Standby의 정상 동작 정책으로도 발생할 수 있으므로,
          애플리케이션 레벨에서 &lt;strong&gt;재시도(Backoff 포함)&lt;/strong&gt;를 넣으면 사용자 영향이 줄어든다.
          다만 재시도만으로 해결하려 하면 같은 쿼리가 반복 취소될 수 있다.
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;B) 단기: Standby 지연 허용(쿼리를 더 살리기)&lt;/h3&gt;
        &lt;p&gt;
          Standby에서 “복구가 기다려줄 수 있는 최대 시간”을 늘리는 방식이다.
          대표적으로 아래 파라미터가 연결된다.
        &lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;-- standby가 스트리밍 WAL 적용을 얼마나 기다릴지(예: 30s, 2min 등)
-- postgresql.conf (standby)
max_standby_streaming_delay = '30s'
max_standby_archive_delay   = '30s'&lt;/code&gt;&lt;/pre&gt;
        &lt;p&gt;
          값을 늘리면 SELECT가 덜 취소되는 대신, Standby의 리플레이 지연이 커질 수 있다.
          “리포팅은 되는데 리플리카가 몇 분 늦는” 상태를 허용할 수 있는지부터 결정해야 한다.
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;C) 단기~중기: hot_standby_feedback 사용&lt;/h3&gt;
        &lt;p&gt;
          Standby가 Primary에게 “내가 아직 이 스냅샷을 보고 있으니, 너무 공격적으로 정리(VACUUM)하지 말아달라”는 힌트를 주는 설정이다.
        &lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;-- postgresql.conf (standby)
hot_standby_feedback = on&lt;/code&gt;&lt;/pre&gt;
        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;주의&lt;/strong&gt;&lt;br&gt;
          hot_standby_feedback는 Standby의 SELECT를 살리는 데 도움 되지만,&lt;br&gt;
          Primary에서 VACUUM이 정리를 못해 &lt;strong&gt;테이블/인덱스 bloat(팽창)&lt;/strong&gt;가 커질 수 있다.&lt;br&gt;
          “쿼리 취소 vs bloat 증가”의 트레이드오프를 운영적으로 관리해야 한다.
        &lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;D) 근본: 장시간 읽기 쿼리/트랜잭션 줄이기&lt;/h3&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;&lt;strong&gt;리포팅 쿼리 최적화:&lt;/strong&gt; 필요한 컬럼만, 필터/인덱스 점검, 불필요한 전체 스캔 제거&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;쿼리 분할:&lt;/strong&gt; 날짜/ID 범위로 쪼개 배치 실행(각 실행 시간을 짧게)&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;커서/페이징 개선:&lt;/strong&gt; 긴 트랜잭션 기반 페이징 대신 Keyset pagination 고려&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;연결/트랜잭션 관리:&lt;/strong&gt; read-only 트랜잭션을 오래 붙잡지 않도록 코드/ORM 설정 점검&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;워크로드 분리:&lt;/strong&gt; 무거운 분석은 별도 분석용 리플리카/웨어하우스로 이동&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;prevention&quot;&gt;
        &lt;h2&gt;재발 방지&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;1) 운영 기준선 정하기&lt;/h3&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;Standby 최대 허용 지연(예: 10초/30초/1분)을 숫자로 합의&lt;/li&gt;
          &lt;li&gt;리포팅 쿼리 95퍼센타일 목표 시간(예: 5초/10초)을 합의&lt;/li&gt;
          &lt;li&gt;취소 오류 발생률/시간대(배치 창) 모니터링 기준 설정&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;2) 파라미터 조합의 “의도”를 문서화&lt;/h3&gt;
        &lt;p&gt;
          &lt;code&gt;max_standby_streaming_delay&lt;/code&gt;를 늘리면 쿼리는 살지만 지연이 늘고,
          &lt;code&gt;hot_standby_feedback&lt;/code&gt;를 켜면 쿼리는 살지만 Primary bloat가 늘 수 있다.
          운영 환경에서는 “왜 이 값을 선택했는지”가 사후 점검에서 핵심 근거가 된다.
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;3) 모니터링 포인트&lt;/h3&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;Standby replay lag(지연) 추세&lt;/li&gt;
          &lt;li&gt;오류 로그에서 conflict with recovery 발생 빈도&lt;/li&gt;
          &lt;li&gt;Primary의 bloat 징후(테이블/인덱스 팽창), autovacuum 동작&lt;/li&gt;
          &lt;li&gt;장시간 트랜잭션/쿼리 상위 N&lt;/li&gt;
        &lt;/ul&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;현장 팁&lt;/strong&gt;&lt;br&gt;
          “리포팅 쿼리가 길어지는 시간대”와 “Primary에서 대량 변경이 일어나는 시간대”가 겹치면 거의 확정적으로 터진다.&lt;br&gt;
          배치 창 조정(시간 분리)만으로도 오류 빈도가 확 줄어드는 경우가 많다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;quick-fix&quot;&gt;
        &lt;h2&gt;한 번에 정리&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;ul class=&quot;list&quot;&gt;
          &lt;li&gt;&lt;strong&gt;원인:&lt;/strong&gt; Standby에서 장시간 SELECT가 WAL 적용(복구)과 충돌해 PostgreSQL이 쿼리를 취소&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;즉시 대응:&lt;/strong&gt; 재시도/백오프 + 장시간 쿼리 확인(쿼리/트랜잭션 줄이기)&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;설정 옵션:&lt;/strong&gt; max_standby_*_delay로 지연을 허용하거나, hot_standby_feedback로 쿼리 취소를 줄임&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;주의점:&lt;/strong&gt; 지연 허용은 최신성 저하, feedback은 Primary bloat 증가 가능&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;근본 해결:&lt;/strong&gt; 리포팅 쿼리 최적화·분할·워크로드 분리로 “긴 스냅샷 유지”를 제거&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;
    &lt;/article&gt;
  &lt;/main&gt;

  &lt;style&gt;
    .post-content { line-height: 1.7; }
    .post-content .post-article { max-width: 860px; margin: 0 auto; padding: 0 14px; }
    .post-content .post-header { padding: 18px 0 6px; }
    .post-content .post-title { margin: 0 0 10px; font-size: 28px; letter-spacing: -0.2px; }
    .post-content .post-subtitle { margin: 0 0 10px; font-size: 16px; opacity: 0.9; }

    .post-content .post-section { padding: 18px 0; }
    .post-content h2 { margin: 0; font-size: 22px; letter-spacing: -0.2px; }
    .post-content .spacer { height: 10px; }
    .post-content p { margin: 10px 0; }
    .post-content .subhead { margin: 14px 0 6px; font-size: 18px; letter-spacing: -0.1px; }

    .post-content .callout {
      margin: 14px 0;
      padding: 12px 14px;
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 12px;
      background: rgba(0,0,0,0.03);
    }
    .post-content .note { opacity: 0.9; }

    .post-content pre {
      margin: 12px 0;
      padding: 12px;
      overflow: auto;
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 12px;
      background: rgba(0,0,0,0.02);
    }
    .post-content code { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace; }

    .post-content .list { margin: 10px 0; padding-left: 18px; }
    .post-content .list li { margin: 8px 0; }
  &lt;/style&gt;

  &lt;script type=&quot;application/ld+json&quot;&gt;
  {
    &quot;@context&quot;: &quot;https://schema.org&quot;,
    &quot;@graph&quot;: [
      {
        &quot;@type&quot;: &quot;BreadcrumbList&quot;,
        &quot;itemListElement&quot;: [
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 1,
            &quot;name&quot;: &quot;홈&quot;,
            &quot;item&quot;: &quot;https://example.com/&quot;
          },
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 2,
            &quot;name&quot;: &quot;DB 운영&quot;,
            &quot;item&quot;: &quot;https://example.com/category/db-ops&quot;
          },
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 3,
            &quot;name&quot;: &quot;postgresql error canceling statement due to conflict with recovery&quot;
          }
        ]
      },
      {
        &quot;@type&quot;: &quot;TechArticle&quot;,
        &quot;headline&quot;: &quot;postgresql error canceling statement due to conflict with recovery&quot;,
        &quot;description&quot;: &quot;Hot Standby(리드 리플리카)에서 장시간 쿼리가 WAL 적용과 충돌해 발생하는 PostgreSQL 오류를 정리한다. 증상 확인부터 설정 조정, 쿼리 개선, 재발 방지까지 운영 관점에서 단계별로 정리한다.&quot;,
        &quot;inLanguage&quot;: &quot;ko-KR&quot;,
        &quot;mainEntityOfPage&quot;: {
          &quot;@type&quot;: &quot;WebPage&quot;,
          &quot;@id&quot;: &quot;https://example.com/post/postgresql-conflict-with-recovery&quot;
        },
        &quot;author&quot;: {
          &quot;@type&quot;: &quot;Person&quot;,
          &quot;name&quot;: &quot;운영자&quot;
        },
        &quot;publisher&quot;: {
          &quot;@type&quot;: &quot;Organization&quot;,
          &quot;name&quot;: &quot;Tistory Blog&quot;,
          &quot;logo&quot;: {
            &quot;@type&quot;: &quot;ImageObject&quot;,
            &quot;url&quot;: &quot;https://example.com/og-placeholder.jpg&quot;
          }
        },
        &quot;image&quot;: [
          &quot;https://example.com/og-placeholder.jpg&quot;
        ],
        &quot;keywords&quot;: [
          &quot;PostgreSQL&quot;,
          &quot;Hot Standby&quot;,
          &quot;Streaming Replication&quot;,
          &quot;conflict with recovery&quot;,
          &quot;리드 리플리카&quot;,
          &quot;wal replay&quot;,
          &quot;standby&quot;,
          &quot;쿼리 취소&quot;,
          &quot;hot_standby_feedback&quot;,
          &quot;max_standby_streaming_delay&quot;
        ],
        &quot;articleSection&quot;: &quot;DB 운영&quot;
      }
    ]
  }
  &lt;/script&gt;

  &lt;!--
  관리자 입력용 태그(10개):
  PostgreSQL, HotStandby, StreamingReplication, 리드리플리카, conflictWithRecovery, WAL, hot_standby_feedback, max_standby_streaming_delay, 쿼리튜닝, DB운영
  --&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>지식 공유/DBMS</category>
      <category>conflict with recovery</category>
      <category>Hot Standby</category>
      <category>hot_standby_feedback</category>
      <category>max_standby_streaming_delay</category>
      <category>PostgreSQL</category>
      <category>standby</category>
      <category>streaming replication</category>
      <category>wal replay</category>
      <category>리드 리플리카</category>
      <category>쿼리 취소</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/532</guid>
      <comments>https://togethergrow.tistory.com/entry/PostgreSQL-%EC%98%A4%EB%A5%98-canceling-statement-due-to-conflict-with-recovery#entry532comment</comments>
      <pubDate>Wed, 27 May 2026 11:43:05 +0900</pubDate>
    </item>
    <item>
      <title>[이혁중 CISO 보안칼럼] N2SF 금융권 적용, &amp;lsquo;데이터 정의&amp;rsquo;의 딜레마부터 풀어야</title>
      <link>https://togethergrow.tistory.com/entry/%EC%9D%B4%ED%98%81%EC%A4%91-CISO-%EB%B3%B4%EC%95%88%EC%B9%BC%EB%9F%BC-N2SF-%EA%B8%88%EC%9C%B5%EA%B6%8C-%EC%A0%81%EC%9A%A9-%E2%80%98%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A0%95%EC%9D%98%E2%80%99%EC%9D%98-%EB%94%9C%EB%A0%88%EB%A7%88%EB%B6%80%ED%84%B0-%ED%92%80%EC%96%B4%EC%95%BC</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;[이혁중 CISO 보안칼럼] N2SF 금융권 적용, ‘데이터 정의’의 딜레마부터 풀어야&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;망분리 완화와 SaaS 도입이 현실이 되는 시점, 금융권 N2SF의 성패는 기술보다 ‘데이터 정의’와 책임 구조에 달려 있다. ‘결합 용이성’과 결과론적 제재가 만드는 분류 딜레마를 실무 관점에서 정리한다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;N2SF,국가사이버안보프레임워크,금융권 보안,망분리 완화,데이터 분류,결합 용이성,개인정보보호법,CISO,CPO,SaaS 보안&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;[이혁중 CISO 보안칼럼] N2SF 금융권 적용, ‘데이터 정의’의 딜레마부터 풀어야&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;망분리 완화와 SaaS 도입이 현실이 되는 시점, 금융권 N2SF의 성패는 기술보다 ‘데이터 정의’와 책임 구조에 달려 있다.&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/post/n2sf-finance-data-definition&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;[이혁중 CISO 보안칼럼] N2SF 금융권 적용, ‘데이터 정의’의 딜레마부터 풀어야&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;‘결합 용이성’과 결과론적 제재가 만드는 분류 딜레마. N2SF의 실전 착륙 조건을 정리한다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;main class=&quot;post-content&quot; role=&quot;main&quot;&gt;
    &lt;article class=&quot;post-article&quot; aria-label=&quot;N2SF 금융권 데이터 정의 딜레마 칼럼&quot;&gt;
      &lt;header class=&quot;post-header&quot;&gt;
        &lt;p class=&quot;kicker&quot;&gt;이혁중 CISO 보안칼럼&lt;/p&gt;
        &lt;h1 class=&quot;post-title&quot;&gt;N2SF의 성공적 금융권 착륙, ‘데이터 정의’의 딜레마부터 풀어야&lt;/h1&gt;
        &lt;p class=&quot;post-subtitle&quot;&gt;
          망분리 완화와 SaaS 도입의 신호탄이 울렸지만, 보안 현장에는 “분류할수록 위험해지는” 역설이 먼저 도착했다.
        &lt;/p&gt;
      &lt;/header&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;intro&quot;&gt;
        &lt;h2&gt;프레임워크는 도입보다 ‘정의’에서 무너진다&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;
          국가사이버안보프레임워크(N2SF, National Cyber Security Framework)는 ‘네트워크 차단 중심’에서 ‘데이터 중요도 중심’으로 보안 통제의 축을 옮기는 접근을 제시한다.
          획일적인 망분리 대신 데이터 등급에 따라 접근통제·암호화·감사·연동 범위를 유연하게 설계하겠다는 방향은 분명 진일보했다.
        &lt;/p&gt;
        &lt;p&gt;
          다만 금융권은 시스템 규모·규제 환경·사고 파급력이 동시에 극단값을 갖는 산업이다.
          프레임워크 자체의 완성도와 별개로, “무엇이 개인정보인가” “무엇이 외부 연동 가능한 데이터인가” 같은 법적 정의가 불명확한 상태에서는 N2SF가 오히려 현장 리스크를 확대하는 촉매가 될 수 있다.
        &lt;/p&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;실무 기준으로 보면&lt;/strong&gt;&lt;br&gt;
          데이터 분류는 ‘기술의 문제’가 아니라 ‘사후 판단의 문제’가 된다.&lt;br&gt;
          사후 판단이 가혹할수록, 분류는 보수적으로 굳어지고 N2SF의 유연성은 사라진다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;history&quot;&gt;
        &lt;h2&gt;금융권 망분리의 역사와 패러다임 변화&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;
          금융권의 물리적 망분리는 대형 보안사고를 계기로 “침투 경로를 원천 차단한다”는 목표로 강화되어 왔다.
          내부 업무망과 외부 인터넷망을 단절시키는 정책은 운영 불편과 우회 사용 같은 부작용에도 불구하고, 장기간 금융 생태계의 기본 방어선을 형성해 온 것도 사실이다.
        &lt;/p&gt;
        &lt;p&gt;
          그러나 생산성 도구의 중심이 SaaS와 클라우드로 이동하고, 생성형 AI가 업무 프로세스에 결합되는 속도가 빨라지면서 “망분리가 혁신을 막는다”는 압력도 커졌다.
          그 결과가 망분리 완화 흐름이며, N2SF는 그 변화의 논리를 ‘데이터 중심’으로 정교화한 프레임워크다.
        &lt;/p&gt;
        &lt;p&gt;
          핵심은 간단하다. 데이터 분류(중요도·등급)가 선행되어야만, 어디까지를 외부 SaaS로 연동할지와 어떤 통제를 얹을지(접근통제, 키관리, DLP, 로그, 승인흐름)를 설계할 수 있다.
          문제는 금융권에서 그 “분류”가 생각보다 쉽게 성립하지 않는다는 점이다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;data-definition&quot;&gt;
        &lt;h2&gt;‘결합 용이성’의 덫: 금융권 정보는 왜 모두 개인정보가 되는가&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;
          N2SF가 금융권에서 제대로 작동하기 어려운 첫 번째 장벽은 개인정보의 폭넓은 해석이다.
          개인정보는 이름·주민번호 같은 고유식별정보만을 뜻하지 않는다. “다른 정보와 쉽게 결합하여 특정 개인을 알아볼 수 있는 정보”라는 기준이 실무에서는 거대한 블랙홀로 작용한다.
        &lt;/p&gt;
        &lt;p&gt;
          특히 금융 데이터는 거래·행동·패턴·신용·가맹점 이용 내역 등 조합 가능한 속성이 많다.
          단독으로는 식별성이 낮아 보여도, 외부 데이터(공개 정보, 제휴 데이터, 디바이스 정보 등)와 결합되는 순간 식별 가능성이 급격히 상승한다.
          결국 보수적으로 접근하면 “대부분의 데이터가 개인정보로 수렴”하는 결론이 나온다.
        &lt;/p&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;핵심 딜레마&lt;/strong&gt;&lt;br&gt;
          N2SF는 ‘Open/Low’ 등급 데이터가 있어야 유연한 연동이 가능한데,&lt;br&gt;
          금융권은 결합 용이성 때문에 ‘진짜로 안심할 수 있는 Open 데이터’를 정의하기가 가장 어렵다.
        &lt;/div&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;데이터 분류가 늦는 게 아니라, 분류의 ‘정답’이 없다&lt;/h3&gt;
        &lt;p&gt;
          데이터 분류 체계는 보통 “업무 기밀/내부/공개” 같은 계층으로 출발하지만,
          금융권에서는 분류 결과가 기술 설계가 아니라 책임과 처벌의 기준으로 역전되는 순간이 잦다.
          그때부터 분류는 ‘리스크를 줄이는 도구’가 아니라 ‘내가 책임질 범위를 표시하는 행위’가 된다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;accountability&quot;&gt;
        &lt;h2&gt;책임만 있고 권한은 없는 CISO·CPO들: 과감한 분류가 불가능한 구조&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;
          두 번째 장벽은 책임의 비대칭성이다.
          N2SF 취지대로 데이터를 분류하고 외부 클라우드·SaaS를 활용하던 중, 만에 하나 유출이나 오남용 사고가 발생하면 최종 책임은 누가 지는가?
          정책적 메시지는 “자율 보안”이지만, 사고 이후의 현실은 종종 “결과론적 처벌”로 수렴한다.
        &lt;/p&gt;
        &lt;p&gt;
          이런 환경에서 CISO나 CPO가 “이 데이터는 중요도가 낮으니 외부 연동해도 된다”라고 승인하기는 쉽지 않다.
          사후 감사나 수사 과정에서 ‘결합 용이성’이 다시 등장해 개인정보 유출로 재규정되는 순간,
          실무자와 책임자는 제도적·인사적 리스크를 동시에 떠안게 된다.
          결국 현장의 선택지는 방어적으로 굳는다. 모든 데이터를 상위 등급으로 분류하고, 외부 연동을 최소화하는 쪽으로.
        &lt;/p&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;운영 환경에서는&lt;/strong&gt;&lt;br&gt;
          “자율성”은 권한과 면책 설계가 함께 있을 때만 의미가 있다.&lt;br&gt;
          권한 없이 책임만 강화되면, 자율성은 ‘리스크 전가’로 읽힌다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section class=&quot;post-section&quot; id=&quot;what-to-fix&quot;&gt;
        &lt;h2&gt;결론: 법적·시간적·인력적 토양이 먼저 다져져야 한다&lt;/h2&gt;
        &lt;div class=&quot;spacer&quot; aria-hidden=&quot;true&quot;&gt;&lt;/div&gt;
        &lt;p&gt;
          N2SF와 망분리 완화는 금융 IT 경쟁력과 보안의 균형을 다시 그리는 큰 전환이다.
          그러나 씨앗(프레임워크)만 뿌리고 토양(정의·책임·자원)이 준비되지 않으면,
          혁신의 열매보다 현장의 혼란과 보안 공백이 먼저 나타날 수 있다.
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;1) 법적 모호성 제거: ‘결합 용이성’의 예측 가능성&lt;/h3&gt;
        &lt;p&gt;
          금융 데이터에 한해서라도 ‘결합 용이성’ 판단 기준이 구체적이고 예측 가능하게 정리되어야 한다.
          어떤 조건에서 개인정보로 보는지, 어떤 조치(가명처리, 집계, 노이즈, 접근통제, 키분리 등)를 취하면
          어느 정도의 외부 연동이 허용되는지 “사후가 아닌 사전” 기준이 필요하다.
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;2) 책임 소명 제도: 정당한 실사의 인정&lt;/h3&gt;
        &lt;p&gt;
          고의나 중과실이 없고, 국가 가이드라인과 내부 프로세스에 따라 분류·통제를 충실히 수행했다면
          제재 감경 또는 면책이 가능한 ‘정당한 실사(due diligence)’ 틀이 현실적으로 작동해야 한다.
          그래야만 CISO·CPO가 과감한 데이터 분류를 제도 안에서 결정할 수 있다.
        &lt;/p&gt;

        &lt;h3 class=&quot;subhead&quot;&gt;3) 시간·인력 현실화: 분류는 “프로젝트”가 아니라 “체계”&lt;/h3&gt;
        &lt;p&gt;
          방대한 금융 시스템에서 수천만 건의 데이터 속성을 식별·분류·매핑하는 일은 단기간에 끝날 작업이 아니다.
          충분한 컨설팅·시뮬레이션·점진적 적용을 위한 유예 기간과,
          데이터 거버넌스·보안 아키텍처·개인정보 법해석을 아우르는 전문 인력 육성이 함께 가야 한다.
        &lt;/p&gt;

        &lt;div class=&quot;checklist&quot;&gt;
          &lt;h4 class=&quot;checklist-title&quot;&gt;현장에서 바로 쓰는 적용 체크포인트&lt;/h4&gt;
          &lt;ul class=&quot;checklist-list&quot;&gt;
            &lt;li&gt;&lt;strong&gt;분류 기준 문서화:&lt;/strong&gt; 등급 정의, 예외 조건, 승인 권한, 로그·감사 요건을 한 문서로 고정&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;결합 위험 평가:&lt;/strong&gt; “외부 데이터와 결합 가능성”을 기술·업무 관점에서 항목화(정성 → 정량)&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;연동 경계 설계:&lt;/strong&gt; SaaS 연동은 데이터 흐름(수집-가공-저장-전송-파기) 단위로 쪼개어 통제&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;키/식별자 분리:&lt;/strong&gt; 가명처리만이 답이 아니라, 재식별 열쇠를 분리·감사 가능한 구조로 설계&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;사후 대응 미리 합의:&lt;/strong&gt; 사고 시 평가 기준과 소명 자료(근거 로그, 승인 이력, 통제 증빙) 템플릿화&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/div&gt;

        &lt;p&gt;
          실제 사용 시, 필자가 보안 현장에서 가장 어렵게 느꼈던 작업 중 하나는 “자산 분석에서 자산 중요도 분류”였다.
          N2SF는 보안 시스템 교체가 아니라 금융 비즈니스 체질을 바꾸는 대수술에 가깝다.
          수술의 성공은 도구의 날카로움보다, 환자의 기초 체력과 수술실의 환경에 달려 있다.
          현장의 고민과 한계를 제도와 책임 구조가 먼저 받아줄 때, N2SF는 금융 혁신의 날개가 될 수 있다.
        &lt;/p&gt;
      &lt;/section&gt;
    &lt;/article&gt;
  &lt;/main&gt;

  &lt;style&gt;
    .post-content { line-height: 1.7; }
    .post-content .post-article { max-width: 860px; margin: 0 auto; padding: 0 14px; }
    .post-content .post-header { padding: 18px 0 6px; }
    .post-content .kicker { margin: 0 0 6px; font-size: 14px; opacity: 0.8; }
    .post-content .post-title { margin: 0 0 10px; font-size: 30px; letter-spacing: -0.2px; }
    .post-content .post-subtitle { margin: 0 0 10px; font-size: 16px; opacity: 0.9; }

    .post-content .post-section { padding: 18px 0; }
    .post-content h2 { margin: 0; font-size: 22px; letter-spacing: -0.2px; }
    .post-content .spacer { height: 10px; }
    .post-content p { margin: 10px 0; }
    .post-content .subhead { margin: 14px 0 6px; font-size: 18px; letter-spacing: -0.1px; }

    .post-content .callout {
      margin: 14px 0;
      padding: 12px 14px;
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 12px;
      background: rgba(0,0,0,0.03);
    }
    .post-content .checklist {
      margin: 16px 0;
      padding: 14px 14px 10px;
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 12px;
      background: rgba(0,0,0,0.02);
    }
    .post-content .checklist-title { margin: 0 0 8px; font-size: 16px; }
    .post-content .checklist-list { margin: 0; padding-left: 18px; }
    .post-content .checklist-list li { margin: 8px 0; }

    .post-content a { text-underline-offset: 3px; }
  &lt;/style&gt;

  &lt;script type=&quot;application/ld+json&quot;&gt;
  {
    &quot;@context&quot;: &quot;https://schema.org&quot;,
    &quot;@graph&quot;: [
      {
        &quot;@type&quot;: &quot;BreadcrumbList&quot;,
        &quot;itemListElement&quot;: [
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 1,
            &quot;name&quot;: &quot;홈&quot;,
            &quot;item&quot;: &quot;https://example.com/&quot;
          },
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 2,
            &quot;name&quot;: &quot;보안 칼럼&quot;,
            &quot;item&quot;: &quot;https://example.com/category/security-column&quot;
          },
          {
            &quot;@type&quot;: &quot;ListItem&quot;,
            &quot;position&quot;: 3,
            &quot;name&quot;: &quot;N2SF 금융권 적용, ‘데이터 정의’의 딜레마부터 풀어야&quot;
          }
        ]
      },
      {
        &quot;@type&quot;: &quot;BlogPosting&quot;,
        &quot;headline&quot;: &quot;[이혁중 CISO 보안칼럼] N2SF의 성공적 금융권 착륙, ‘데이터 정의’의 딜레마부터 풀어야&quot;,
        &quot;description&quot;: &quot;망분리 완화와 SaaS 도입이 현실이 되는 시점, 금융권 N2SF의 성패는 기술보다 ‘데이터 정의’와 책임 구조에 달려 있다. ‘결합 용이성’과 결과론적 제재가 만드는 분류 딜레마를 실무 관점에서 정리한다.&quot;,
        &quot;inLanguage&quot;: &quot;ko-KR&quot;,
        &quot;mainEntityOfPage&quot;: {
          &quot;@type&quot;: &quot;WebPage&quot;,
          &quot;@id&quot;: &quot;https://example.com/post/n2sf-finance-data-definition&quot;
        },
        &quot;author&quot;: {
          &quot;@type&quot;: &quot;Person&quot;,
          &quot;name&quot;: &quot;이혁중&quot;
        },
        &quot;publisher&quot;: {
          &quot;@type&quot;: &quot;Organization&quot;,
          &quot;name&quot;: &quot;Tistory Blog&quot;,
          &quot;logo&quot;: {
            &quot;@type&quot;: &quot;ImageObject&quot;,
            &quot;url&quot;: &quot;https://example.com/og-placeholder.jpg&quot;
          }
        },
        &quot;image&quot;: [
          &quot;https://example.com/og-placeholder.jpg&quot;
        ],
        &quot;articleSection&quot;: &quot;보안 칼럼&quot;,
        &quot;keywords&quot;: [
          &quot;N2SF&quot;,
          &quot;국가사이버안보프레임워크&quot;,
          &quot;금융권 보안&quot;,
          &quot;망분리 완화&quot;,
          &quot;데이터 분류&quot;,
          &quot;결합 용이성&quot;,
          &quot;개인정보보호법&quot;,
          &quot;CISO&quot;,
          &quot;CPO&quot;,
          &quot;SaaS 보안&quot;
        ]
      }
    ]
  }
  &lt;/script&gt;

  &lt;!--
  관리자 입력용 태그(10개):
  N2SF, 국가사이버안보프레임워크, 금융권보안, 망분리완화, 데이터분류, 결합용이성, 개인정보보호법, CISO, CPO, SaaS보안
  --&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>IT 소식 뉴스/IT 소식</category>
      <category>ciso</category>
      <category>cpo</category>
      <category>N2SF</category>
      <category>saas 보안</category>
      <category>개인정보보호법</category>
      <category>결합 용이성</category>
      <category>국가사이버안보프레임워크</category>
      <category>금융권 보안</category>
      <category>데이터 분류</category>
      <category>망분리 완화</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/531</guid>
      <comments>https://togethergrow.tistory.com/entry/%EC%9D%B4%ED%98%81%EC%A4%91-CISO-%EB%B3%B4%EC%95%88%EC%B9%BC%EB%9F%BC-N2SF-%EA%B8%88%EC%9C%B5%EA%B6%8C-%EC%A0%81%EC%9A%A9-%E2%80%98%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A0%95%EC%9D%98%E2%80%99%EC%9D%98-%EB%94%9C%EB%A0%88%EB%A7%88%EB%B6%80%ED%84%B0-%ED%92%80%EC%96%B4%EC%95%BC#entry531comment</comments>
      <pubDate>Wed, 27 May 2026 10:52:56 +0900</pubDate>
    </item>
    <item>
      <title>충주 다이브 페스티벌 2026 종합운동장 일원에서 즐기는 K-한류 축제</title>
      <link>https://togethergrow.tistory.com/entry/%EC%B6%A9%EC%A3%BC-%EB%8B%A4%EC%9D%B4%EB%B8%8C-%ED%8E%98%EC%8A%A4%ED%8B%B0%EB%B2%8C-2026-%EC%A2%85%ED%95%A9%EC%9A%B4%EB%8F%99%EC%9E%A5-%EC%9D%BC%EC%9B%90%EC%97%90%EC%84%9C-%EC%A6%90%EA%B8%B0%EB%8A%94-K-%ED%95%9C%EB%A5%98-%EC%B6%95%EC%A0%9C</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;de4298a3-cec3-49c4-b19a-78915289c894_10.jpg&quot; data-origin-width=&quot;443&quot; data-origin-height=&quot;627&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qtX6X/dJMcabxydwb/OKKBGCyUVmKKhbKVaeU1H0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qtX6X/dJMcabxydwb/OKKBGCyUVmKKhbKVaeU1H0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qtX6X/dJMcabxydwb/OKKBGCyUVmKKhbKVaeU1H0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqtX6X%2FdJMcabxydwb%2FOKKBGCyUVmKKhbKVaeU1H0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;모여라 충주로, 빠져라 다이브! 충주 다이브 페스티벌이 2026년 6월 11일부터 14일까지 충주 종합운동장 일원에서 열립니다. 에어쇼&amp;middot;K-POP 콘서트&amp;middot;드론쇼&amp;middot;가족 영화제&amp;middot;키즈존까지 무료로 즐겨보세요.&quot; loading=&quot;lazy&quot; width=&quot;443&quot; height=&quot;627&quot; data-filename=&quot;de4298a3-cec3-49c4-b19a-78915289c894_10.jpg&quot; data-origin-width=&quot;443&quot; data-origin-height=&quot;627&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta http-equiv=&quot;x-ua-compatible&quot; content=&quot;ie=edge&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;충주 다이브 페스티벌 2026 종합운동장 일원에서 즐기는 K-한류 축제&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;모여라 충주로, 빠져라 다이브! 충주 다이브 페스티벌이 2026년 6월 11일부터 14일까지 충주 종합운동장 일원에서 열립니다. 에어쇼·K-POP 콘서트·드론쇼·가족 영화제·키즈존까지 무료로 즐겨보세요.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;충주 다이브 페스티벌,충주축제,충주여행,종합운동장,블랙이글스 에어쇼,DIVE 슈퍼 콘서트,K-POP 콘서트,드론 라이트 쇼,키즈존,반값여행&quot; /&gt;
  &lt;link rel=&quot;canonical&quot; href=&quot;https://example.com/events/chungju-dive-festival-2026&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:locale&quot; content=&quot;ko_KR&quot; /&gt;
  &lt;meta property=&quot;og:site_name&quot; content=&quot;Tistory Blog&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;충주 다이브 페스티벌 2026 종합운동장 일원에서 즐기는 K-한류 축제&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;2026.06.11~06.14 충주 종합운동장 일원. 에어쇼·K-POP·힙합·드론쇼·키즈존까지 무료로 몰입!&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/events/chungju-dive-festival-2026&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-image-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;충주 다이브 페스티벌 2026&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;모여라 충주로, 빠져라 다이브! 충주 대표 대규모 축제.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-image-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .article-wrap{
      max-width: 920px;
      margin: 0 auto;
      padding: 18px 14px;
      line-height: 1.7;
    }
    .article-wrap h1{
      margin: 8px 0 10px;
      font-size: 1.95rem;
      letter-spacing: -0.02em;
    }
    .article-wrap .meta{
      margin: 0 0 16px;
      font-size: 0.98rem;
      opacity: 0.85;
    }
    .article-wrap h2{
      margin: 26px 0 10px;
      font-size: 1.35rem;
      letter-spacing: -0.01em;
    }
    .article-wrap h3{
      margin: 18px 0 8px;
      font-size: 1.12rem;
    }
    .article-wrap p{ margin: 10px 0; }
    .article-wrap ul{ margin: 10px 0 10px 18px; }
    .article-wrap li{ margin: 6px 0; }

    .article-wrap .hero{
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 18px;
      padding: 16px 16px;
      margin: 12px 0 14px;
    }
    .article-wrap .hero .tagline{
      font-size: 1.1rem;
      margin: 0 0 6px;
      letter-spacing: -0.01em;
    }
    .article-wrap .badges{
      margin: 10px 0 0;
    }
    .article-wrap .badge{
      display: inline-block;
      padding: 2px 10px;
      border-radius: 999px;
      border: 1px solid rgba(0,0,0,0.14);
      font-size: 0.88rem;
      margin-right: 6px;
      margin-bottom: 6px;
      white-space: nowrap;
      opacity: 0.9;
    }

    .article-wrap .grid{
      display: grid;
      grid-template-columns: 1fr;
      gap: 10px;
      margin: 10px 0;
    }
    @media (min-width: 920px){
      .article-wrap .grid{ grid-template-columns: 1fr 1fr; }
    }

    .article-wrap .card{
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 14px;
      padding: 14px 14px;
    }
    .article-wrap .card strong{
      display: inline-block;
      margin-bottom: 6px;
    }

    .article-wrap table{
      width: 100%;
      border-collapse: collapse;
      margin: 12px 0;
      font-size: 0.98rem;
    }
    .article-wrap th, .article-wrap td{
      border: 1px solid rgba(0,0,0,0.12);
      padding: 10px 10px;
      vertical-align: top;
    }
    .article-wrap th{
      text-align: left;
      background: rgba(0,0,0,0.04);
      width: 26%;
      white-space: nowrap;
    }

    .article-wrap .callout{
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 14px;
      padding: 14px 14px;
      margin: 14px 0;
    }
    .article-wrap .divider{
      height: 1px;
      background: rgba(0,0,0,0.12);
      margin: 18px 0;
    }
    .article-wrap .mini{
      font-size: 0.95rem;
      opacity: 0.88;
    }
    .article-wrap a{
      text-decoration: underline;
      text-underline-offset: 2px;
    }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;header&gt;
      &lt;h1&gt;충주 다이브 페스티벌 2026 종합운동장 일원에서 즐기는 K-한류 축제&lt;/h1&gt;
      &lt;p class=&quot;meta&quot;&gt;기간: 2026.06.11(목) ~ 2026.06.14(일) · 장소: 충청북도 충주시 대림로 85(호암동) · 요금: 무료&lt;/p&gt;

      &lt;div class=&quot;hero&quot;&gt;
        &lt;p class=&quot;tagline&quot;&gt;&lt;strong&gt;모여라 충주로, 빠져라 다이브&lt;/strong&gt; — 충주 대표 대규모 축제, &lt;strong&gt;충주 다이브 페스티벌&lt;/strong&gt;&lt;/p&gt;
        &lt;p class=&quot;mini&quot;&gt;
          충주 종합운동장 일원에서 펼쳐지는 이번 행사는, 전국 각지의 문화 콘텐츠와 충주만의 지역 자원을 결합해
          관람형을 넘어 &lt;strong&gt;직접 참여하고 몰입하는 축제 경험&lt;/strong&gt;에 초점을 맞췄습니다.
          또한 문화체육관광부 주관 &lt;strong&gt;한류 종합행사(MyK FESTA) 연계 지자체 행사&lt;/strong&gt;로 선정되어
          K-한류 콘텐츠를 함께 즐길 수 있도록 구성되었습니다.
        &lt;/p&gt;
        &lt;div class=&quot;badges&quot;&gt;
          &lt;span class=&quot;badge&quot;&gt;에어쇼&lt;/span&gt;
          &lt;span class=&quot;badge&quot;&gt;K-POP 콘서트&lt;/span&gt;
          &lt;span class=&quot;badge&quot;&gt;힙합 콘서트&lt;/span&gt;
          &lt;span class=&quot;badge&quot;&gt;드론 라이트 쇼&lt;/span&gt;
          &lt;span class=&quot;badge&quot;&gt;키즈존·물놀이&lt;/span&gt;
          &lt;span class=&quot;badge&quot;&gt;반값여행 환급&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/header&gt;

    &lt;section&gt;
      &lt;h2&gt;축제 한눈에 보기&lt;/h2&gt;

      &lt;table&gt;
        &lt;tbody&gt;
          &lt;tr&gt;
            &lt;th&gt;행사명&lt;/th&gt;
            &lt;td&gt;충주 다이브 페스티벌&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;th&gt;기간&lt;/th&gt;
            &lt;td&gt;2026.06.11 ~ 2026.06.14&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;th&gt;장소&lt;/th&gt;
            &lt;td&gt;충청북도 충주시 대림로 85 (호암동) · 충주 종합운동장 일원&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;th&gt;요금&lt;/th&gt;
            &lt;td&gt;무료&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;th&gt;주최/주관&lt;/th&gt;
            &lt;td&gt;충주시 / 충주문화관광재단&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;th&gt;문의&lt;/th&gt;
            &lt;td&gt;043-723-1358, 1390&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;th&gt;공식 홈페이지&lt;/th&gt;
            &lt;td&gt;
              &lt;a href=&quot;http://www.cjdive.kr/2026/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;cjdive.kr&lt;/a&gt;&lt;br&gt;
            &lt;/td&gt;
          &lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;운영 환경에서는 시간표/출연진/현장 동선이 변동될 수 있습니다.&lt;/strong&gt;&lt;br&gt;
        공연·쇼 프로그램은 당일 공지에 따라 진행될 수 있으니, 방문 전/당일 공식 홈페이지 공지를 확인하면 훨씬 편합니다.
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;메인 프로그램&lt;/h2&gt;

      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;블랙이글스 에어쇼&lt;/strong&gt;&lt;br&gt;
          대한민국 공군 특수비행팀이 펼치는 역동적인 개막 축하 비행&lt;br&gt;
          &lt;span class=&quot;mini&quot;&gt;6/11 식전행사로 안내&lt;/span&gt;
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;DIVE 슈퍼 콘서트 (K-POP)&lt;/strong&gt;&lt;br&gt;
          StayC, 오마이걸 등 아이돌 출연 대규모 한류 공연&lt;br&gt;
          &lt;span class=&quot;mini&quot;&gt;MyK FESTA 연계 프로그램&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;K-HIPHOP 콘서트&lt;/strong&gt;&lt;br&gt;
          현시점 핫한 힙합 아티스트들이 총출동하는 야간 무대
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;멀티미디어 드론 라이트 쇼&lt;/strong&gt;&lt;br&gt;
          수백 대의 드론이 충주의 밤하늘을 빛으로 수놓는 미디어 아트 공연
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;개·폐막식 공식행사&lt;/strong&gt;&lt;br&gt;
        축제의 시작과 끝을 알리는 화합의 장, 그리고 화려한 불꽃 쇼로 분위기를 끌어올립니다.
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;부대 프로그램&lt;/h2&gt;

      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;AI 가족 영화제&lt;/strong&gt;&lt;br&gt;
          보조경기장 잔디광장에서 AI 기술과 영화가 결합된 야간 특화 시네마&lt;br&gt;
          &lt;span class=&quot;mini&quot;&gt;22:00 ~ 24:00&lt;/span&gt;
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;해외 초청 공연&lt;/strong&gt;&lt;br&gt;
          우간다·몽골·베트남 등 해외 자매도시 공연단의 이국적인 퍼포먼스
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;DIVE 마스터피스&lt;/strong&gt;&lt;br&gt;
          축제장 내에서 만나는 발레·클래식 특별 공연
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;가흥예술창고 기획전시&lt;/strong&gt;&lt;br&gt;
          지역 예술가들의 설치미술·회화 작품 전시
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;card&quot;&gt;
        &lt;strong&gt;스트릿 버스킹&lt;/strong&gt;&lt;br&gt;
        축제장 곳곳에서 관객과 실시간으로 호흡하는 거리 공연(스트릿댄스/거리예술 등)
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;참여·체험 프로그램&lt;/h2&gt;

      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;K-페스타 테마 거리&lt;/strong&gt;&lt;br&gt;
          K-패션(전통의상) · K-뷰티(메이크업) · K-보이스(성우 더빙) 체험형 한류 스트리트
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;키즈존 &amp;amp; 어린이 물놀이장&lt;/strong&gt;&lt;br&gt;
          초대형 에어바운스 · 범퍼카 · 트램폴린 · 수중에어바운스&lt;br&gt;
          &lt;span class=&quot;mini&quot;&gt;다이브열차 운영 등 가족형 콘텐츠&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;card&quot;&gt;
        &lt;strong&gt;먹거리 부스 &amp;amp; 플리마켓&lt;/strong&gt;&lt;br&gt;
        다양한 먹거리, 치맥존, 플리마켓 운영으로 쉬는 시간까지 꽉 채워집니다.
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;혜택·교통·편의시설&lt;/h2&gt;

      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;충주여행 반값 세일&lt;/strong&gt;&lt;br&gt;
          축제장 및 지정 관광지 방문 시 여행경비의 50%를 지역상품권으로 환급&lt;br&gt;
          &lt;span class=&quot;mini&quot;&gt;최대 20만 원 한도&lt;/span&gt;
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;교통 및 인프라&lt;/strong&gt;&lt;br&gt;
          2,400면 주차 공간(전기차 충전소 포함)&lt;br&gt;
          시내·서충주 노선 셔틀버스 상시 운행
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;충주 로컬 바이브 투어&lt;/strong&gt;&lt;br&gt;
        하루 동안 충주의 낮과 밤을 모두 경험할 수 있는 투어 프로그램이 운영됩니다.&lt;br&gt;
        &lt;span class=&quot;mini&quot;&gt;참여 방식/세부 코스는 공식 안내를 확인해 주세요.&lt;/span&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;이렇게 즐기면 더 재밌습니다&lt;/h2&gt;

      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;공연·쇼 중심 추천 루트&lt;/strong&gt;&lt;br&gt;
          메인 무대(콘서트) → 드론 라이트 쇼 → 야간 영화제&lt;br&gt;
          &lt;span class=&quot;mini&quot;&gt;야간 일정이 길어질 수 있어, 이동/귀가 동선을 미리 잡아두면 편합니다.&lt;/span&gt;
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;가족·체험 중심 추천 루트&lt;/strong&gt;&lt;br&gt;
          K-테마 거리 체험 → 키즈존/물놀이 → 먹거리·플리마켓 → 버스킹&lt;br&gt;
          &lt;span class=&quot;mini&quot;&gt;아이 동반이라면 한낮 체험을 먼저 배치하는 편이 안정적입니다.&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;관리자 입장에서&lt;/strong&gt; 행사장은 ‘볼거리’보다 ‘대기·이동’이 만족도를 좌우하는 경우가 많습니다.&lt;br&gt;
        첫 번째로 하고 싶은 프로그램 1개를 정해 먼저 완료하고, 이후에 자유롭게 즐기는 방식이 가장 실패가 적습니다.
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;참여 안내 &amp;amp; 문의&lt;/h2&gt;

      &lt;h3&gt;입장&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;요금: 무료&lt;/li&gt;
        &lt;li&gt;부스/체험 일부는 현장 운영 방식에 따라 변동될 수 있습니다.&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;문의&lt;/h3&gt;
      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;전화&lt;/strong&gt;&lt;br&gt;
        043-723-1358, 1390&lt;br&gt;&lt;br&gt;
        &lt;strong&gt;공식 홈페이지&lt;/strong&gt;&lt;br&gt;
        &lt;a href=&quot;http://www.cjdive.kr/2026/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;cjdive.kr&lt;/a&gt;&lt;br&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;축제·행사&quot;,
              &quot;item&quot;: &quot;https://example.com/events&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;충주 다이브 페스티벌 2026&quot;,
              &quot;item&quot;: &quot;https://example.com/events/chungju-dive-festival-2026&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;Event&quot;,
          &quot;name&quot;: &quot;충주 다이브 페스티벌 2026&quot;,
          &quot;description&quot;: &quot;충주시를 대표하는 대규모 축제로, 충주 종합운동장 일원에서 개최된다. 한류 종합행사(MyK FESTA) 연계 지자체 행사로 선정되어 K-한류 대외 홍보를 목적으로 진행되며, 블랙이글스 에어쇼, K-POP 슈퍼 콘서트, K-HIPHOP 콘서트, 멀티미디어 드론 라이트 쇼, AI 가족 영화제, 해외 초청 공연, 전시, 버스킹, K-테마 거리 체험, 키즈존 및 물놀이장, 먹거리 부스와 플리마켓 등 몰입형 프로그램을 제공한다.&quot;,
          &quot;eventAttendanceMode&quot;: &quot;https://schema.org/OfflineEventAttendanceMode&quot;,
          &quot;eventStatus&quot;: &quot;https://schema.org/EventScheduled&quot;,
          &quot;startDate&quot;: &quot;2026-06-11&quot;,
          &quot;endDate&quot;: &quot;2026-06-14&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;location&quot;: {
            &quot;@type&quot;: &quot;Place&quot;,
            &quot;name&quot;: &quot;충주 종합운동장 일원&quot;,
            &quot;address&quot;: {
              &quot;@type&quot;: &quot;PostalAddress&quot;,
              &quot;streetAddress&quot;: &quot;대림로 85&quot;,
              &quot;addressLocality&quot;: &quot;충주시&quot;,
              &quot;addressRegion&quot;: &quot;충청북도&quot;,
              &quot;addressCountry&quot;: &quot;KR&quot;
            }
          },
          &quot;organizer&quot;: [
            { &quot;@type&quot;: &quot;Organization&quot;, &quot;name&quot;: &quot;충주시&quot; },
            { &quot;@type&quot;: &quot;Organization&quot;, &quot;name&quot;: &quot;충주문화관광재단&quot; }
          ],
          &quot;offers&quot;: {
            &quot;@type&quot;: &quot;Offer&quot;,
            &quot;price&quot;: &quot;0&quot;,
            &quot;priceCurrency&quot;: &quot;KRW&quot;,
            &quot;availability&quot;: &quot;https://schema.org/InStock&quot;,
            &quot;url&quot;: &quot;http://www.cjdive.kr/2026/&quot;,
            &quot;description&quot;: &quot;무료&quot;
          },
          &quot;image&quot;: [
            &quot;https://example.com/og-image-placeholder.jpg&quot;
          ]
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>일상 정보/전국 소식</category>
      <category>DIVE 슈퍼 콘서트</category>
      <category>K-POP 콘서트</category>
      <category>드론 라이트 쇼</category>
      <category>반값여행</category>
      <category>블랙이글스 에어쇼</category>
      <category>종합운동장</category>
      <category>충주 다이브 페스티벌</category>
      <category>충주여행</category>
      <category>충주축제</category>
      <category>키즈존</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/530</guid>
      <comments>https://togethergrow.tistory.com/entry/%EC%B6%A9%EC%A3%BC-%EB%8B%A4%EC%9D%B4%EB%B8%8C-%ED%8E%98%EC%8A%A4%ED%8B%B0%EB%B2%8C-2026-%EC%A2%85%ED%95%A9%EC%9A%B4%EB%8F%99%EC%9E%A5-%EC%9D%BC%EC%9B%90%EC%97%90%EC%84%9C-%EC%A6%90%EA%B8%B0%EB%8A%94-K-%ED%95%9C%EB%A5%98-%EC%B6%95%EC%A0%9C#entry530comment</comments>
      <pubDate>Wed, 27 May 2026 10:23:52 +0900</pubDate>
    </item>
    <item>
      <title>고창갯벌축제 2026 만돌갯벌에서 즐기는 생태체험</title>
      <link>https://togethergrow.tistory.com/entry/%EA%B3%A0%EC%B0%BD%EA%B0%AF%EB%B2%8C%EC%B6%95%EC%A0%9C-2026-%EB%A7%8C%EB%8F%8C%EA%B0%AF%EB%B2%8C%EC%97%90%EC%84%9C-%EC%A6%90%EA%B8%B0%EB%8A%94-%EC%83%9D%ED%83%9C%EC%B2%B4%ED%97%98</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;e61bb6ad-c6b2-415f-950b-d557a98178b7_11.jpg&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;627&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LEdf8/dJMcadWqXEU/mSrpkCh9TCKlvuN6QqXk40/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LEdf8/dJMcadWqXEU/mSrpkCh9TCKlvuN6QqXk40/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LEdf8/dJMcadWqXEU/mSrpkCh9TCKlvuN6QqXk40/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLEdf8%2FdJMcadWqXEU%2FmSrpkCh9TCKlvuN6QqXk40%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;유네스코 세계자연유산 고창갯벌(만돌갯벌)을 배경으로 조개잡기체험, 갯벌 건강걷기, 풍천장어 체험과 공연까지 즐기는 고창갯벌축제가 2026년 6월 5일부터 7일까지 열립니다.&quot; loading=&quot;lazy&quot; width=&quot;444&quot; height=&quot;627&quot; data-filename=&quot;e61bb6ad-c6b2-415f-950b-d557a98178b7_11.jpg&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;627&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta http-equiv=&quot;x-ua-compatible&quot; content=&quot;ie=edge&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;고창갯벌축제 2026 만돌갯벌에서 즐기는 생태체험&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;유네스코 세계자연유산 고창갯벌(만돌갯벌)을 배경으로 조개잡기체험, 갯벌 건강걷기, 풍천장어 체험과 공연까지 즐기는 고창갯벌축제가 2026년 6월 5일부터 7일까지 열립니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;고창갯벌축제,고창갯벌,만돌갯벌,유네스코 세계자연유산,갯벌체험,조개잡기체험,풍천장어,바지락,고창 축제,전북특별자치도&quot; /&gt;
  &lt;link rel=&quot;canonical&quot; href=&quot;https://example.com/events/gochang-tidalflat-festival-2026&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:locale&quot; content=&quot;ko_KR&quot; /&gt;
  &lt;meta property=&quot;og:site_name&quot; content=&quot;Tistory Blog&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;고창갯벌축제 2026 만돌갯벌에서 즐기는 생태체험&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;2026.06.05~06.07 고창 만돌갯벌에서 조개잡기, 건강걷기, 풍천장어 체험과 공연·먹거리까지 한 번에 즐겨보세요.&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/events/gochang-tidalflat-festival-2026&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-image-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;고창갯벌축제 2026 만돌갯벌에서 즐기는 생태체험&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;유네스코 세계자연유산 고창갯벌에서 참여형 생태체험과 문화공연을 즐기는 주말.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-image-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .article-wrap{
      max-width: 900px;
      margin: 0 auto;
      padding: 18px 14px;
      line-height: 1.7;
    }
    .article-wrap h1{
      margin: 8px 0 10px;
      font-size: 1.95rem;
      letter-spacing: -0.02em;
    }
    .article-wrap .meta{
      margin: 0 0 16px;
      font-size: 0.98rem;
      opacity: 0.85;
    }
    .article-wrap h2{
      margin: 26px 0 10px;
      font-size: 1.35rem;
      letter-spacing: -0.01em;
    }
    .article-wrap h3{
      margin: 18px 0 8px;
      font-size: 1.12rem;
    }
    .article-wrap p{ margin: 10px 0; }
    .article-wrap ul{ margin: 10px 0 10px 18px; }
    .article-wrap li{ margin: 6px 0; }

    .article-wrap .hero{
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 18px;
      padding: 16px 16px;
      margin: 12px 0 14px;
    }
    .article-wrap .hero .title{
      font-size: 1.08rem;
      margin: 0 0 6px;
      letter-spacing: -0.01em;
    }
    .article-wrap .badges{
      margin: 10px 0 0;
    }
    .article-wrap .badge{
      display: inline-block;
      padding: 2px 10px;
      border-radius: 999px;
      border: 1px solid rgba(0,0,0,0.14);
      font-size: 0.88rem;
      margin-right: 6px;
      margin-bottom: 6px;
      white-space: nowrap;
      opacity: 0.9;
    }

    .article-wrap .grid{
      display: grid;
      grid-template-columns: 1fr;
      gap: 10px;
      margin: 10px 0;
    }
    @media (min-width: 900px){
      .article-wrap .grid{ grid-template-columns: 1fr 1fr; }
    }

    .article-wrap .card{
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 14px;
      padding: 14px 14px;
    }
    .article-wrap .card strong{
      display: inline-block;
      margin-bottom: 6px;
    }

    .article-wrap table{
      width: 100%;
      border-collapse: collapse;
      margin: 12px 0;
      font-size: 0.98rem;
    }
    .article-wrap th, .article-wrap td{
      border: 1px solid rgba(0,0,0,0.12);
      padding: 10px 10px;
      vertical-align: top;
    }
    .article-wrap th{
      text-align: left;
      background: rgba(0,0,0,0.04);
      width: 26%;
      white-space: nowrap;
    }

    .article-wrap .callout{
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 14px;
      padding: 14px 14px;
      margin: 14px 0;
    }
    .article-wrap .divider{
      height: 1px;
      background: rgba(0,0,0,0.12);
      margin: 18px 0;
    }
    .article-wrap .mini{
      font-size: 0.95rem;
      opacity: 0.88;
    }
    .article-wrap a{
      text-decoration: underline;
      text-underline-offset: 2px;
    }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;header&gt;
      &lt;h1&gt;고창갯벌축제 2026 만돌갯벌에서 즐기는 생태체험&lt;/h1&gt;
      &lt;p class=&quot;meta&quot;&gt;기간: 2026.06.05(금) ~ 2026.06.07(일) · 장소: 고창 갯벌체험학습장(전북특별자치도 고창군 애향갯벌로 320) · 입장료: 무료(일부 체험/부스 유료)&lt;/p&gt;

      &lt;div class=&quot;hero&quot;&gt;
        &lt;p class=&quot;title&quot;&gt;&lt;strong&gt;유네스코 세계자연유산 고창갯벌&lt;/strong&gt;을 배경으로, 발로 직접 밟고 느끼는 참여형 생태체험과 문화공연이 함께 열립니다.&lt;/p&gt;
        &lt;p class=&quot;mini&quot;&gt;
          특히 아름다운 풍광을 자랑하는 &lt;strong&gt;만돌갯벌&lt;/strong&gt;에서 조개잡기, 건강걷기, 이색 체험(맨손 풍천장어잡기)과 먹거리 할인행사까지 하루 종일 즐길 수 있도록 구성되어 있어요.
        &lt;/p&gt;
        &lt;div class=&quot;badges&quot;&gt;
          &lt;span class=&quot;badge&quot;&gt;참여형 생태체험&lt;/span&gt;
          &lt;span class=&quot;badge&quot;&gt;문화공연 프로그램&lt;/span&gt;
          &lt;span class=&quot;badge&quot;&gt;풍천장어·수산물 행사&lt;/span&gt;
          &lt;span class=&quot;badge&quot;&gt;가족·연인·친구 추천&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/header&gt;

    &lt;section&gt;
      &lt;h2&gt;축제 한눈에 보기&lt;/h2&gt;

      &lt;table&gt;
        &lt;tbody&gt;
          &lt;tr&gt;
            &lt;th&gt;행사명&lt;/th&gt;
            &lt;td&gt;고창갯벌축제&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;th&gt;기간&lt;/th&gt;
            &lt;td&gt;2026.06.05 ~ 2026.06.07&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;th&gt;장소&lt;/th&gt;
            &lt;td&gt;전북특별자치도 고창군 애향갯벌로 320 갯벌체험학습장&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;th&gt;요금&lt;/th&gt;
            &lt;td&gt;
              입장료 무료&lt;br&gt;
              체험·농수산물 판매부스·먹거리부스 등 일부 유료
            &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;th&gt;주최/주관&lt;/th&gt;
            &lt;td&gt;고창군, 고창군수산업협동조합 / 고창갯벌축제위원회&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;th&gt;문의&lt;/th&gt;
            &lt;td&gt;063-560-2632&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;th&gt;공식 안내&lt;/th&gt;
            &lt;td&gt;
              &lt;a href=&quot;https://www.gochang.go.kr/tour/index.gochang?menuCd=DOM_000000402001006005&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;gochang.go.kr&lt;/a&gt;&lt;br&gt;
            &lt;/td&gt;
          &lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;운영 환경에서는 “날씨/물때/현장 상황”에 따라 체험 운영이 달라질 수 있습니다.&lt;/strong&gt;&lt;br&gt;
        방문 전날 또는 당일, 공식 안내와 현장 공지를 확인하면 동선이 훨씬 깔끔해집니다.&lt;br&gt;
        특히 조개잡기체험은 &lt;strong&gt;물때&lt;/strong&gt;에 맞춰 시간이 정해져 있으니 체크가 필수입니다.
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;프로그램 구성&lt;/h2&gt;

      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;생태 체험&lt;/strong&gt;&lt;br&gt;
          1) 조개잡기체험(동죽·바지락 등)&lt;br&gt;
          2) 갯벌 건강걷기(쉐니어 걷기)&lt;br&gt;
          3) 갯벌멍~ 때리go(힐링 뇌휴식 챌린지)
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;이색 체험 &amp;amp; 현장 이벤트&lt;/strong&gt;&lt;br&gt;
          4) 맨손 풍천장어잡기(1인 1미)&lt;br&gt;
          5) 명랑운동회(풀장 게임)&lt;br&gt;
          6) 풍천장어 무료시식(선착순)
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;참여형 경연·공모&lt;/strong&gt;&lt;br&gt;
          7) 갯벌 K-POP 댄스 경연대회(상금 수여)&lt;br&gt;
          8) 갯벌 AI 영상 및 주제곡 공모전
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;먹거리 &amp;amp; 지역 특산&lt;/strong&gt;&lt;br&gt;
          9) 수산물 및 농산물 판매 운영&lt;br&gt;
          명품 풍천장어·신선한 바지락 등 할인행사 및 먹거리 부스
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;체험 시간표 핵심 정리&lt;/h2&gt;

      &lt;h3&gt;조개잡기체험(물때 연동)&lt;/h3&gt;
      &lt;table&gt;
        &lt;tbody&gt;
          &lt;tr&gt;
            &lt;th&gt;6/5(금)&lt;/th&gt;
            &lt;td&gt;09:00 ~ 13:30&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;th&gt;6/6(토)&lt;/th&gt;
            &lt;td&gt;10:00 ~ 14:00&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;th&gt;6/7(일)&lt;/th&gt;
            &lt;td&gt;11:00 ~ 15:00&lt;/td&gt;
          &lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;

      &lt;h3&gt;갯벌 건강걷기(선착순 100명)&lt;/h3&gt;
      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;운영일: 6/6(토)&lt;/strong&gt;&lt;br&gt;
        시간: 11:00 ~ 12:00&lt;br&gt;
        내용: 고창갯벌에서 볼 수 있는 모래퇴적체 &lt;strong&gt;쉐니어&lt;/strong&gt; 걷기
      &lt;/div&gt;

      &lt;h3&gt;맨손 풍천장어잡기(쿠폰 환급형)&lt;/h3&gt;
      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;참가 방식 요약&lt;/strong&gt;&lt;br&gt;
        - 시작 30분 전 현장 발급(선착순)&lt;br&gt;
        - 1인 참가비 5,000원&lt;br&gt;
        - 행사장 쿠폰으로 환급&lt;br&gt;
        - 풀장에서 장어를 맨손으로 잡고, 잡은 장어는 손질된 장어로 교환(1인 1미)
      &lt;/div&gt;

      &lt;h3&gt;힐링/참여 이벤트&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;갯벌멍~ 때리go&lt;/strong&gt;: 갯벌 멍때리기 대회(선착순 20명)&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;명랑운동회&lt;/strong&gt;: 풀장에서 진행되는 게임 프로그램&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;풍천장어 무료시식&lt;/strong&gt;: 선착순 진행&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;K-POP 댄스 경연&lt;/strong&gt;: 우승자 상금 수여&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;AI 영상 및 주제곡 공모전&lt;/strong&gt;: 참가/접수 방식은 현장 및 공식 안내 확인 권장&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;이렇게 즐기면 만족도가 올라갑니다&lt;/h2&gt;

      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;가족 방문 추천 루트&lt;/strong&gt;&lt;br&gt;
          조개잡기체험 → 먹거리/특산물 부스 → 명랑운동회 → 무료시식/공연&lt;br&gt;
          &lt;span class=&quot;mini&quot;&gt;아이 동반이라면 체험 시간에 맞춰 먼저 움직이는 편이 좋아요.&lt;/span&gt;
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;연인·친구 추천 루트&lt;/strong&gt;&lt;br&gt;
          갯벌 건강걷기(6/6) → 갯벌멍 대회 → 포토 스팟 산책 → 지역 먹거리&lt;br&gt;
          &lt;span class=&quot;mini&quot;&gt;만돌갯벌 풍광이 좋아서 “걷기+힐링” 코스로 잘 맞습니다.&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;준비물 체크&lt;/strong&gt;&lt;br&gt;
        장화 또는 갯벌용 신발, 여벌 옷, 수건, 모자/자외선 차단, 물, 간단한 방수팩(휴대폰)&lt;br&gt;
        갯벌 체험 후 이동이 많다면 차량 내부 정리용 봉투/매트도 도움이 됩니다.
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;참여 안내&lt;/h2&gt;

      &lt;h3&gt;입장 및 결제&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;입장료: 무료&lt;/li&gt;
        &lt;li&gt;유료 항목: 일부 체험, 농수산물/먹거리 부스 등&lt;/li&gt;
        &lt;li&gt;맨손 풍천장어잡기: 참가비 5,000원(쿠폰 환급)&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;현장 팁&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;체험형 프로그램은 &lt;strong&gt;선착순&lt;/strong&gt;이 많아, 시작 시간보다 여유 있게 도착하는 편이 좋습니다.&lt;/li&gt;
        &lt;li&gt;조개잡기체험은 시간 창이 정해져 있으니 &lt;strong&gt;해당 시간대 우선&lt;/strong&gt;으로 동선을 잡아보세요.&lt;/li&gt;
        &lt;li&gt;운영 환경에서는 현장 혼잡도에 따라 대기시간이 달라질 수 있어, 1순위 프로그램을 먼저 찍는 방식이 안전합니다.&lt;/li&gt;
      &lt;/ul&gt;

      &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;문의&lt;/strong&gt;&lt;br&gt;
        전화: 063-560-2632&lt;br&gt;
        공식 안내: &lt;a href=&quot;https://www.gochang.go.kr/tour/index.gochang?menuCd=DOM_000000402001006005&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;gochang.go.kr&lt;/a&gt;&lt;br&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;축제·행사&quot;,
              &quot;item&quot;: &quot;https://example.com/events&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;고창갯벌축제 2026&quot;,
              &quot;item&quot;: &quot;https://example.com/events/gochang-tidalflat-festival-2026&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;Event&quot;,
          &quot;name&quot;: &quot;고창갯벌축제 2026&quot;,
          &quot;description&quot;: &quot;유네스코 세계자연유산으로 지정된 고창갯벌(만돌갯벌)을 배경으로 조개잡기체험, 갯벌 건강걷기, 맨손 풍천장어잡기, 문화공연, 수산물·농산물 판매 등 참여형 생태 체험 프로그램이 운영되는 축제.&quot;,
          &quot;eventAttendanceMode&quot;: &quot;https://schema.org/OfflineEventAttendanceMode&quot;,
          &quot;eventStatus&quot;: &quot;https://schema.org/EventScheduled&quot;,
          &quot;startDate&quot;: &quot;2026-06-05&quot;,
          &quot;endDate&quot;: &quot;2026-06-07&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;location&quot;: {
            &quot;@type&quot;: &quot;Place&quot;,
            &quot;name&quot;: &quot;고창 갯벌체험학습장&quot;,
            &quot;address&quot;: {
              &quot;@type&quot;: &quot;PostalAddress&quot;,
              &quot;streetAddress&quot;: &quot;애향갯벌로 320&quot;,
              &quot;addressLocality&quot;: &quot;고창군&quot;,
              &quot;addressRegion&quot;: &quot;전북특별자치도&quot;,
              &quot;addressCountry&quot;: &quot;KR&quot;
            }
          },
          &quot;organizer&quot;: [
            { &quot;@type&quot;: &quot;Organization&quot;, &quot;name&quot;: &quot;고창군&quot; },
            { &quot;@type&quot;: &quot;Organization&quot;, &quot;name&quot;: &quot;고창군수산업협동조합&quot; },
            { &quot;@type&quot;: &quot;Organization&quot;, &quot;name&quot;: &quot;고창갯벌축제위원회&quot; }
          ],
          &quot;offers&quot;: {
            &quot;@type&quot;: &quot;Offer&quot;,
            &quot;price&quot;: &quot;0&quot;,
            &quot;priceCurrency&quot;: &quot;KRW&quot;,
            &quot;availability&quot;: &quot;https://schema.org/InStock&quot;,
            &quot;url&quot;: &quot;https://www.gochang.go.kr/tour/index.gochang?menuCd=DOM_000000402001006005&quot;,
            &quot;description&quot;: &quot;입장료 무료(일부 체험·부스 유료)&quot;
          },
          &quot;image&quot;: [
            &quot;https://example.com/og-image-placeholder.jpg&quot;
          ]
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>일상 정보/전국 소식</category>
      <category>갯벌체험</category>
      <category>고창 축제</category>
      <category>고창갯벌</category>
      <category>고창갯벌축제</category>
      <category>만돌갯벌</category>
      <category>바지락</category>
      <category>유네스코 세계자연유산</category>
      <category>전북특별자치도</category>
      <category>조개잡기체험</category>
      <category>풍천장어</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/529</guid>
      <comments>https://togethergrow.tistory.com/entry/%EA%B3%A0%EC%B0%BD%EA%B0%AF%EB%B2%8C%EC%B6%95%EC%A0%9C-2026-%EB%A7%8C%EB%8F%8C%EA%B0%AF%EB%B2%8C%EC%97%90%EC%84%9C-%EC%A6%90%EA%B8%B0%EB%8A%94-%EC%83%9D%ED%83%9C%EC%B2%B4%ED%97%98#entry529comment</comments>
      <pubDate>Wed, 27 May 2026 10:21:41 +0900</pubDate>
    </item>
    <item>
      <title>SI 프로젝트 포지션 한눈에 이해하기</title>
      <link>https://togethergrow.tistory.com/entry/SI-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%ED%8F%AC%EC%A7%80%EC%85%98-%ED%95%9C%EB%88%88%EC%97%90-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta http-equiv=&quot;x-ua-compatible&quot; content=&quot;ie=edge&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;SI 프로젝트 포지션 한눈에 이해하기&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;SI 프로젝트에서 자주 등장하는 PM·PL·AA·TA·DA·QA·BA·개발자 역할을 ‘무엇을 책임지고, 무엇을 산출하며, 누구와 일하는지’ 기준으로 이해하기 쉽게 정리했습니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;SI 프로젝트,PM 역할,PL 역할,AA,TA,DA,QA,BA,개발자,프로젝트 조직,역할 정리&quot; /&gt;
  &lt;link rel=&quot;canonical&quot; href=&quot;https://example.com/si-project-positions&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:locale&quot; content=&quot;ko_KR&quot; /&gt;
  &lt;meta property=&quot;og:site_name&quot; content=&quot;Tistory Blog&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;SI 프로젝트 포지션 한눈에 이해하기&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;PM·PL·AA·TA·DA·QA·BA·개발자 역할을 책임·산출물·협업 대상 기준으로 간단명료하게 정리했습니다.&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/si-project-positions&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-image-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;SI 프로젝트 포지션 한눈에 이해하기&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;헷갈리는 프로젝트 역할을 한 번에 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-image-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .article-wrap{
      max-width: 880px;
      margin: 0 auto;
      padding: 18px 14px;
      line-height: 1.7;
    }
    .article-wrap h1{
      margin: 8px 0 10px;
      font-size: 1.9rem;
      letter-spacing: -0.02em;
    }
    .article-wrap .meta{
      margin: 0 0 18px;
      font-size: 0.95rem;
      opacity: 0.82;
    }
    .article-wrap h2{
      margin: 26px 0 10px;
      font-size: 1.35rem;
      letter-spacing: -0.01em;
    }
    .article-wrap h3{
      margin: 18px 0 8px;
      font-size: 1.12rem;
    }
    .article-wrap p{ margin: 10px 0; }
    .article-wrap ul{ margin: 10px 0 10px 18px; }
    .article-wrap li{ margin: 6px 0; }
    .article-wrap table{
      width: 100%;
      border-collapse: collapse;
      margin: 12px 0;
      font-size: 0.98rem;
    }
    .article-wrap th, .article-wrap td{
      border: 1px solid rgba(0,0,0,0.12);
      padding: 10px 10px;
      vertical-align: top;
    }
    .article-wrap th{
      text-align: left;
      background: rgba(0,0,0,0.04);
      width: 26%;
      white-space: nowrap;
    }
    .article-wrap .callout{
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 14px;
      padding: 14px 14px;
      margin: 14px 0;
    }
    .article-wrap .callout strong{
      display: inline-block;
      margin-bottom: 6px;
    }
    .article-wrap .grid{
      display: grid;
      grid-template-columns: 1fr;
      gap: 10px;
      margin: 10px 0;
    }
    @media (min-width: 860px){
      .article-wrap .grid{ grid-template-columns: 1fr 1fr; }
    }
    .article-wrap .badge{
      display: inline-block;
      padding: 2px 10px;
      border-radius: 999px;
      border: 1px solid rgba(0,0,0,0.14);
      font-size: 0.88rem;
      margin-right: 6px;
      margin-bottom: 6px;
      white-space: nowrap;
      opacity: 0.9;
    }
    .article-wrap .divider{
      height: 1px;
      background: rgba(0,0,0,0.12);
      margin: 18px 0;
    }
    .article-wrap .mini{
      font-size: 0.95rem;
      opacity: 0.88;
    }
    .article-wrap .kpi{
      margin: 8px 0 0;
      padding-left: 0;
      list-style: none;
    }
    .article-wrap .kpi li{
      margin: 6px 0;
    }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;header&gt;
      &lt;h1&gt;SI 프로젝트 포지션 한눈에 이해하기&lt;/h1&gt;
      &lt;p class=&quot;meta&quot;&gt;기준: 무엇을 책임지는지(Responsibility) · 무엇을 남기는지(산출물) · 누구와 일하는지(협업)&lt;/p&gt;
    &lt;/header&gt;

    &lt;section&gt;
      &lt;h2&gt;먼저 한 줄로 정리하면&lt;/h2&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;구조를 이렇게 보면 헷갈림이 줄어듭니다.&lt;/strong&gt;&lt;br&gt;
        &lt;span class=&quot;badge&quot;&gt;PM&lt;/span&gt; 전체 일정/범위/인력/이슈를 “관리”하고 대외 창구가 된다&lt;br&gt;
        &lt;span class=&quot;badge&quot;&gt;PL&lt;/span&gt; 개발팀을 “리딩”하며 요구를 구체화하고 개발이 되게 만든다&lt;br&gt;
        &lt;span class=&quot;badge&quot;&gt;AA/TA/DA&lt;/span&gt; 시스템이 굴러가게 하는 “구조/기술/데이터 설계”를 책임진다&lt;br&gt;
        &lt;span class=&quot;badge&quot;&gt;QA&lt;/span&gt; 산출물/코드 품질을 “기준대로” 보증한다&lt;br&gt;
        &lt;span class=&quot;badge&quot;&gt;BA&lt;/span&gt; 비즈니스 관점에서 프로세스를 “설계”해 요구의 방향을 잡는다&lt;br&gt;
        &lt;span class=&quot;badge&quot;&gt;Developer&lt;/span&gt; 실제 기능을 “구현”한다
      &lt;/div&gt;

      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;실무 기준으로 보면&lt;/strong&gt;&lt;br&gt;
          PM은 “프로젝트가 사고 없이 굴러가게” 만들고,&lt;br&gt;
          PL은 “개발이 제대로 나가게” 만들고,&lt;br&gt;
          AA/TA/DA는 “기술적으로 망하지 않게” 받쳐줍니다.
        &lt;/div&gt;
        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;자주 나오는 오해&lt;/strong&gt;&lt;br&gt;
          TA가 “설치만 하는 사람”으로만 잡히면 운영 이슈가 뒤늦게 터집니다.&lt;br&gt;
          DA가 “ERD만 그리는 사람”으로만 잡히면 마이그레이션/품질이 막판에 흔들립니다.
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;포지션별 역할을 쉽게 가공한 설명&lt;/h2&gt;

      &lt;table&gt;
        &lt;tbody&gt;
          &lt;tr&gt;
            &lt;th&gt;PM&lt;br&gt;&lt;span class=&quot;mini&quot;&gt;(Project Manager)&lt;/span&gt;&lt;/th&gt;
            &lt;td&gt;
              &lt;strong&gt;프로젝트 ‘전체 운영’ 책임자&lt;/strong&gt;&lt;br&gt;
              현업/외부팀과의 공식 창구로서 이슈를 모으고, 우선순위를 정하고, 최종 조율합니다.&lt;br&gt;&lt;br&gt;
              &lt;span class=&quot;badge&quot;&gt;주요 책임&lt;/span&gt; 범위·일정·비용·인력·리스크 관리&lt;br&gt;
              &lt;span class=&quot;badge&quot;&gt;현장 업무&lt;/span&gt; WBS 관리, 투입/TO 조정, 휴가/공수 관리, 주간보고/회의 운영, 의사결정 에스컬레이션
            &lt;/td&gt;
          &lt;/tr&gt;

          &lt;tr&gt;
            &lt;th&gt;PL&lt;br&gt;&lt;span class=&quot;mini&quot;&gt;(Project Leader)&lt;/span&gt;&lt;/th&gt;
            &lt;td&gt;
              &lt;strong&gt;개발팀이 ‘실제로 개발이 되게’ 만드는 리더&lt;/strong&gt;&lt;br&gt;
              PM을 보좌하면서, 요구사항을 개발 가능한 수준으로 구체화하고 화면/기능 흐름을 정리합니다.&lt;br&gt;
              개발자에게 작업 방향과 기준을 주고 일정이 흐트러지지 않게 관리합니다.&lt;br&gt;&lt;br&gt;
              &lt;span class=&quot;badge&quot;&gt;주요 책임&lt;/span&gt; 개발 리딩, 요구 분석 구체화, 개발 일정/리스크 관리&lt;br&gt;
              &lt;span class=&quot;badge&quot;&gt;현장 업무&lt;/span&gt; 화면설계, 기능 정의, 개발 우선순위/작업 분배, 기술 이슈 1차 해결(고급기술 포함)
            &lt;/td&gt;
          &lt;/tr&gt;

          &lt;tr&gt;
            &lt;th&gt;AA&lt;br&gt;&lt;span class=&quot;mini&quot;&gt;(Application Architect)&lt;/span&gt;&lt;/th&gt;
            &lt;td&gt;
              &lt;strong&gt;개발이 ‘같은 규칙으로’ 만들어지게 하는 설계자&lt;/strong&gt;&lt;br&gt;
              공통 로직, 개발 표준, 프레임워크 구조를 잡아 “팀 전체가 동일한 방식으로 개발”하도록 만듭니다.&lt;br&gt;&lt;br&gt;
              &lt;span class=&quot;badge&quot;&gt;주요 책임&lt;/span&gt; 공통모듈/프레임워크, 개발 표준, 코드 구조 원칙&lt;br&gt;
              &lt;span class=&quot;badge&quot;&gt;현장 업무&lt;/span&gt; 공통 라이브러리, 예외/응답 규칙, 로깅/트랜잭션 정책, 코드리뷰 가이드
            &lt;/td&gt;
          &lt;/tr&gt;

          &lt;tr&gt;
            &lt;th&gt;TA&lt;br&gt;&lt;span class=&quot;mini&quot;&gt;(Technical Architect)&lt;/span&gt;&lt;/th&gt;
            &lt;td&gt;
              &lt;strong&gt;시스템이 ‘실제로 돌아가게’ 만드는 인프라/플랫폼 설계자&lt;/strong&gt;&lt;br&gt;
              OS·WEB·WAS·DB 설치뿐 아니라, 네트워크/보안 경계, 계정/권한, 배포 방식, 운영 관점까지 포함해 기반을 책임집니다.&lt;br&gt;&lt;br&gt;
              &lt;span class=&quot;badge&quot;&gt;주요 책임&lt;/span&gt; 인프라 구성, 미들웨어 설치/구성, 네트워크/보안/성능 기반&lt;br&gt;
              &lt;span class=&quot;badge&quot;&gt;현장 업무&lt;/span&gt; 환경 구축(DEV/STG/PRD), 배포 구조, 모니터링/로그, 백업/복구, 성능 튜닝 협업
            &lt;/td&gt;
          &lt;/tr&gt;

          &lt;tr&gt;
            &lt;th&gt;DA&lt;br&gt;&lt;span class=&quot;mini&quot;&gt;(Data Architect)&lt;/span&gt;&lt;/th&gt;
            &lt;td&gt;
              &lt;strong&gt;데이터가 ‘깨끗하고 일관되게’ 쌓이도록 설계하는 담당&lt;/strong&gt;&lt;br&gt;
              데이터 표준과 구조(모델), 품질 규칙을 정의하고, 이관/마이그레이션까지 책임집니다.&lt;br&gt;&lt;br&gt;
              &lt;span class=&quot;badge&quot;&gt;주요 책임&lt;/span&gt; 데이터 표준/모델/품질, 마이그레이션, DB 설계&lt;br&gt;
              &lt;span class=&quot;badge&quot;&gt;현장 업무&lt;/span&gt; ERD/정규화, 코드/용어 표준, 인덱스/쿼리 설계, 이관 검증(건수/정합성)
            &lt;/td&gt;
          &lt;/tr&gt;

          &lt;tr&gt;
            &lt;th&gt;QA&lt;br&gt;&lt;span class=&quot;mini&quot;&gt;(Quality Assurance)&lt;/span&gt;&lt;/th&gt;
            &lt;td&gt;
              &lt;strong&gt;산출물과 결과물이 ‘기준에 맞는지’ 확인하는 품질 보증&lt;/strong&gt;&lt;br&gt;
              문서(산출물)와 소스코드가 표준과 요구사항에 맞는지 점검하고, 결함이 줄어들게 프로세스를 관리합니다.&lt;br&gt;&lt;br&gt;
              &lt;span class=&quot;badge&quot;&gt;주요 책임&lt;/span&gt; 품질 기준/체크리스트, 리뷰/점검, 결함 관리&lt;br&gt;
              &lt;span class=&quot;badge&quot;&gt;현장 업무&lt;/span&gt; 산출물 검수, 코드 품질 점검, 테스트 결과 확인, 지표(결함/진척) 관리
            &lt;/td&gt;
          &lt;/tr&gt;

          &lt;tr&gt;
            &lt;th&gt;BA&lt;br&gt;&lt;span class=&quot;mini&quot;&gt;(Business Architect)&lt;/span&gt;&lt;/th&gt;
            &lt;td&gt;
              &lt;strong&gt;기술이 아니라 ‘업무(비즈니스) 흐름’으로 설계하는 역할&lt;/strong&gt;&lt;br&gt;
              현업 관점에서 프로세스와 규칙을 정리해 “무엇을 왜 바꾸는지”를 설계합니다.&lt;br&gt;&lt;br&gt;
              &lt;span class=&quot;badge&quot;&gt;주요 책임&lt;/span&gt; 업무 프로세스 설계, 요구 정합성, 정책/규칙 정의&lt;br&gt;
              &lt;span class=&quot;badge&quot;&gt;현장 업무&lt;/span&gt; As-Is/To-Be, 업무 규칙 정리, 사용자 시나리오, 변경 영향도 분석
            &lt;/td&gt;
          &lt;/tr&gt;

          &lt;tr&gt;
            &lt;th&gt;Developer&lt;br&gt;&lt;span class=&quot;mini&quot;&gt;(개발자)&lt;/span&gt;&lt;/th&gt;
            &lt;td&gt;
              &lt;strong&gt;정의된 요구를 ‘실제 코드’로 구현하는 실행자&lt;/strong&gt;&lt;br&gt;
              프로그램 정의가 완료되는 시점부터 본격 투입되며, 설계/가이드에 따라 기능을 개발하고 결함을 수정합니다.&lt;br&gt;&lt;br&gt;
              &lt;span class=&quot;badge&quot;&gt;주요 책임&lt;/span&gt; 기능 구현, 단위 테스트, 버그 수정, 기술 부채 최소화&lt;br&gt;
              &lt;span class=&quot;badge&quot;&gt;현장 업무&lt;/span&gt; 화면/API 구현, 테스트, 코드리뷰 반영, 배포 대응, 운영 이슈 지원
            &lt;/td&gt;
          &lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;프로젝트에서 실제로 “누가 무엇을 잡는지” 예시&lt;/h2&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;같은 이슈라도 담당이 이렇게 나뉩니다.&lt;/strong&gt;&lt;br&gt;
        “요구가 바뀌었어요” → PM(범위/일정 조정) + BA(업무 영향) + PL(개발 반영 계획)&lt;br&gt;
        “공통 로그인/권한이 애매해요” → AA(공통 구조) + TA(보안/인증 연계) + PL(화면/요구 구체화)&lt;br&gt;
        “오픈 전 성능이 불안해요” → TA(환경/미들웨어/모니터링) + DA(쿼리/인덱스) + PL/개발자(코드 병목)&lt;br&gt;
        “산출물이 기준과 달라요” → QA(기준/검수) + PM(조치 일정) + 해당 작성자(수정)
      &lt;/div&gt;

      &lt;p&gt;
        핵심은 “역할이 겹치는 지점”에서 충돌이 나기 쉽다는 점입니다.
        그래서 초반에 책임 경계를 간단히 합의해두면 후반 커뮤니케이션 비용이 크게 줄어듭니다.
      &lt;/p&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;요약&lt;/h2&gt;

      &lt;ul class=&quot;kpi&quot;&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;PM&lt;/span&gt; 프로젝트 전체 관리 + 대외 커뮤니케이션&lt;/li&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;PL&lt;/span&gt; 개발 리딩 + 요구 구체화 + 개발 일정 관리&lt;/li&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;AA&lt;/span&gt; 공통 구조/표준/프레임워크로 개발 일관성 확보&lt;/li&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;TA&lt;/span&gt; 인프라/플랫폼 기반 구축 + 운영 가능성까지 확보&lt;/li&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;DA&lt;/span&gt; 데이터 표준/모델/품질 + 이관까지 책임&lt;/li&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;QA&lt;/span&gt; 산출물/코드 품질 기준 수립 및 보증&lt;/li&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;BA&lt;/span&gt; 비즈니스 프로세스 설계 + 정책/규칙 정리&lt;/li&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;Developer&lt;/span&gt; 실제 구현 및 테스트/수정&lt;/li&gt;
      &lt;/ul&gt;

      &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;
      &lt;p class=&quot;mini&quot;&gt;
        운영 환경에서는 역할 정의가 문서보다 “업무 흐름에서 실제로 작동하는지”가 중요합니다.
        역할을 정리할 때는 책임(최종 결정권)과 실행(실무 처리)을 분리해 두면 훨씬 깔끔해집니다.
      &lt;/p&gt;
    &lt;/section&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;SI 프로젝트 포지션 한눈에 이해하기&quot;,
              &quot;item&quot;: &quot;https://example.com/si-project-positions&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;BlogPosting&quot;,
          &quot;headline&quot;: &quot;SI 프로젝트 포지션 한눈에 이해하기&quot;,
          &quot;description&quot;: &quot;SI 프로젝트에서 자주 등장하는 PM·PL·AA·TA·DA·QA·BA·개발자 역할을 ‘무엇을 책임지고, 무엇을 산출하며, 누구와 일하는지’ 기준으로 이해하기 쉽게 정리했습니다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/si-project-positions&quot;
          },
          &quot;image&quot;: [
            &quot;https://example.com/og-image-placeholder.jpg&quot;
          ],
          &quot;author&quot;: {
            &quot;@type&quot;: &quot;Person&quot;,
            &quot;name&quot;: &quot;관리자&quot;
          },
          &quot;publisher&quot;: {
            &quot;@type&quot;: &quot;Organization&quot;,
            &quot;name&quot;: &quot;Tistory Blog&quot;,
            &quot;logo&quot;: {
              &quot;@type&quot;: &quot;ImageObject&quot;,
              &quot;url&quot;: &quot;https://example.com/og-image-placeholder.jpg&quot;
            }
          }
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>지식 공유/ETC</category>
      <category>aa</category>
      <category>BA</category>
      <category>DA</category>
      <category>PL 역할</category>
      <category>PM 역할</category>
      <category>QA</category>
      <category>SI 프로젝트</category>
      <category>Ta</category>
      <category>개발자</category>
      <category>프로젝트 조직</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/528</guid>
      <comments>https://togethergrow.tistory.com/entry/SI-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%ED%8F%AC%EC%A7%80%EC%85%98-%ED%95%9C%EB%88%88%EC%97%90-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0#entry528comment</comments>
      <pubDate>Wed, 27 May 2026 10:19:16 +0900</pubDate>
    </item>
    <item>
      <title>SI 프로젝트에서 TA 역할과 사전 준비 체크리스트</title>
      <link>https://togethergrow.tistory.com/entry/SI-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%97%90%EC%84%9C-TA-%EC%97%AD%ED%95%A0%EA%B3%BC-%EC%82%AC%EC%A0%84-%EC%A4%80%EB%B9%84-%EC%B2%B4%ED%81%AC%EB%A6%AC%EC%8A%A4%ED%8A%B8</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta http-equiv=&quot;x-ua-compatible&quot; content=&quot;ie=edge&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;SI 프로젝트에서 TA 역할과 사전 준비 체크리스트&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;SI 프로젝트에서 TA(Technical Architect)가 수행하는 핵심 역할을 단계별로 정리하고, 착수 전 반드시 준비해야 할 산출물·의사결정·환경·리스크 점검 항목을 실무 관점으로 정리했습니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;SI 프로젝트,TA 역할,Technical Architect,아키텍처 설계,비기능 요구사항,NFR,기술 표준,기술 검토,리스크 관리,산출물 템플릿,착수 준비&quot; /&gt;
  &lt;link rel=&quot;canonical&quot; href=&quot;https://example.com/si-ta-role-prep&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:locale&quot; content=&quot;ko_KR&quot; /&gt;
  &lt;meta property=&quot;og:site_name&quot; content=&quot;Tistory Blog&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;SI 프로젝트에서 TA 역할과 사전 준비 체크리스트&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;TA의 역할을 단계별로 정리하고, 착수 전 준비해야 할 표준·산출물·환경·리스크 체크리스트를 실무 기준으로 정리했습니다.&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/si-ta-role-prep&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-image-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;SI 프로젝트에서 TA 역할과 사전 준비 체크리스트&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;TA의 단계별 역할과 착수 전 사전준비 항목을 한 번에 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-image-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .article-wrap{
      max-width: 860px;
      margin: 0 auto;
      padding: 18px 14px;
      line-height: 1.7;
    }
    .article-wrap h1{
      margin: 8px 0 10px;
      font-size: 1.9rem;
      letter-spacing: -0.02em;
    }
    .article-wrap .meta{
      margin: 0 0 18px;
      font-size: 0.95rem;
      opacity: 0.8;
    }
    .article-wrap h2{
      margin: 26px 0 10px;
      font-size: 1.35rem;
      letter-spacing: -0.01em;
    }
    .article-wrap h3{
      margin: 18px 0 8px;
      font-size: 1.12rem;
    }
    .article-wrap p{ margin: 10px 0; }
    .article-wrap ul{ margin: 10px 0 10px 18px; }
    .article-wrap li{ margin: 6px 0; }
    .article-wrap .callout{
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 14px;
      padding: 14px 14px;
      margin: 14px 0;
    }
    .article-wrap .callout strong{
      display: inline-block;
      margin-bottom: 6px;
    }
    .article-wrap .grid{
      display: grid;
      grid-template-columns: 1fr;
      gap: 10px;
    }
    @media (min-width: 820px){
      .article-wrap .grid{
        grid-template-columns: 1fr 1fr;
      }
    }
    .article-wrap table{
      width: 100%;
      border-collapse: collapse;
      margin: 12px 0;
      font-size: 0.98rem;
    }
    .article-wrap th, .article-wrap td{
      border: 1px solid rgba(0,0,0,0.12);
      padding: 10px 10px;
      vertical-align: top;
    }
    .article-wrap th{
      text-align: left;
      background: rgba(0,0,0,0.04);
      width: 30%;
    }
    .article-wrap code{
      padding: 2px 6px;
      border-radius: 8px;
      background: rgba(0,0,0,0.06);
    }
    .article-wrap pre{
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 14px;
      padding: 12px 12px;
      overflow: auto;
      margin: 12px 0;
      background: rgba(0,0,0,0.03);
    }
    .article-wrap .divider{
      height: 1px;
      background: rgba(0,0,0,0.12);
      margin: 18px 0;
    }
    .article-wrap .checklist li{
      margin: 7px 0;
    }
    .article-wrap .badge{
      display: inline-block;
      padding: 2px 10px;
      border-radius: 999px;
      border: 1px solid rgba(0,0,0,0.14);
      font-size: 0.88rem;
      margin-right: 6px;
      margin-bottom: 6px;
      white-space: nowrap;
    }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;header&gt;
      &lt;h1&gt;SI 프로젝트에서 TA 역할과 사전 준비 체크리스트&lt;/h1&gt;
      &lt;p class=&quot;meta&quot;&gt;대상: SI 수행조직(개발/인프라/보안/운영) · 범위: 착수~오픈/전환 · 관점: 기술 의사결정과 품질·리스크 관리&lt;/p&gt;
    &lt;/header&gt;

    &lt;section&gt;
      &lt;h2&gt;TA는 무엇을 책임지는가&lt;/h2&gt;

      &lt;p&gt;
        SI 프로젝트에서 TA(Technical Architect)는 “기술이 일정·비용·품질 목표를 만족하도록 설계와 실행을 연결”하는 역할을 맡습니다.
        단순히 아키텍처 다이어그램을 그리는 사람이 아니라, 요구사항(특히 비기능)과 제약조건을 기술 표준과 구현 방식으로 번역하고,
        개발·인프라·보안·운영이 같은 방향으로 움직이도록 의사결정 체계를 운영합니다.
      &lt;/p&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;실무 기준으로 보면 TA의 핵심 책임은 3가지로 정리됩니다.&lt;/strong&gt;&lt;br&gt;
        1) 기술 선택과 구조를 결정하고(Decision),&lt;br&gt;
        2) 그 결정이 구현에서 지켜지도록 가드레일을 만들며(Guardrail),&lt;br&gt;
        3) 리스크를 조기 발견해 일정/품질로 번지기 전에 차단하는 것(Risk Control)입니다.
      &lt;/div&gt;

      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;TA가 “결정”하는 것&lt;/strong&gt;&lt;br&gt;
          플랫폼/프레임워크/버전 정책&lt;br&gt;
          통합 방식(API, 메시징, 파일 등)&lt;br&gt;
          데이터 흐름/트랜잭션 전략&lt;br&gt;
          배포/릴리즈 전략(Blue/Green, Canary 등)&lt;br&gt;
          표준(코딩, 로깅, 예외, 보안, 성능)
        &lt;/div&gt;
        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;TA가 “보장”하는 것&lt;/strong&gt;&lt;br&gt;
          비기능 요구사항(NFR) 충족 여부&lt;br&gt;
          개발-운영 인수 조건과 품질 기준&lt;br&gt;
          설계와 구현 간 일관성&lt;br&gt;
          장애/보안 사고에 대한 대응 가능성&lt;br&gt;
          기술부채의 통제(예외 승인/기한 관리)
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;단계별 TA 역할 정리&lt;/h2&gt;

      &lt;h3&gt;1) 제안/사전 진단(Pre-Sales 또는 착수 전)&lt;/h3&gt;

      &lt;ul&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;요구 정리&lt;/span&gt; 고객의 목표/KPI, 범위(Scope), 제약(예산·기간·벤더)을 기술 관점으로 재정리&lt;/li&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;리스크 스캔&lt;/span&gt; 핵심 연계, 데이터 이관, 보안/규제, 성능 목표, 조직 역량(인력/운영) 리스크 식별&lt;/li&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;가정 명시&lt;/span&gt; “되는 조건”을 문서화(예: 외부 시스템 접근 권한, 테스트 데이터 제공, 인프라 제공 일정 등)&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;2) 착수/요구사항(Init &amp;amp; Requirement)&lt;/h3&gt;

      &lt;ul&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;NFR 확정&lt;/span&gt; 성능/가용성/보안/확장성/관측성/운영성 요구를 측정 가능한 형태로 합의&lt;/li&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;의사결정 체계&lt;/span&gt; ADR(Architecture Decision Record), 기술위원회(또는 아키텍처 리뷰 보드) 운영 룰 정의&lt;/li&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;표준·가드레일&lt;/span&gt; 코드/브랜치/릴리즈/로깅/예외/보안 체크 규칙을 “팀이 바로 쓰게” 제공&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;3) 설계(Architecture &amp;amp; Detailed Design)&lt;/h3&gt;

      &lt;ul&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;상위 아키텍처&lt;/span&gt; 논리/물리 아키텍처, 배치, 네트워크 경계, 보안 영역, DR/백업 개념 정리&lt;/li&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;통합 설계&lt;/span&gt; API 계약(스키마/버전), 인증/인가, 타임아웃/재시도, 멱등성, 장애 격리 전략&lt;/li&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;데이터 전략&lt;/span&gt; 모델링 원칙, 정합성/동시성, 배치/실시간, 이관/동기화 전략&lt;/li&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;운영 설계&lt;/span&gt; 모니터링 지표, 알람, 로그/트레이싱, 런북(장애대응 시나리오)까지 포함&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;4) 구현/테스트(Build &amp;amp; Test)&lt;/h3&gt;

      &lt;ul&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;리뷰/코칭&lt;/span&gt; 핵심 모듈의 설계-코드 정합성 리뷰, 성능/보안 위험 코드 조기 제거&lt;/li&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;품질 게이트&lt;/span&gt; 정적분석, SAST/DAST, 취약점 스캔, 성능 기준(응답/처리량) 통과 조건 운영&lt;/li&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;통합 테스트&lt;/span&gt; 외부 연계/대용량/장애 주입(가능 시) 테스트 시나리오 정의 및 결과 판단&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;5) 전환/오픈(Cut-over &amp;amp; Go-live)&lt;/h3&gt;

      &lt;ul&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;전환 리허설&lt;/span&gt; 이관 리허설, 롤백/보정 계획, 커트오버 타임라인, 책임자/연락 체계 확정&lt;/li&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;운영 인수&lt;/span&gt; 운영문서/런북/권한/모니터링 대시보드/알람 룰/백업·복구 테스트 결과 인계&lt;/li&gt;
        &lt;li&gt;&lt;span class=&quot;badge&quot;&gt;안정화&lt;/span&gt; 오픈 이후 병목(쿼리/캐시/커넥션/스레드 등) 추적, 핫픽스 정책 관리&lt;/li&gt;
      &lt;/ul&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;TA가 프로젝트 후반에 바빠지는 이유&lt;/strong&gt;&lt;br&gt;
        많은 팀이 설계는 일찍 끝내지만, NFR의 “검증”은 뒤로 밀립니다.&lt;br&gt;
        TA는 설계서 작성보다, 오픈 직전의 성능/장애/보안 이슈가 “프로젝트 목표를 깨는지” 판단하는 역할이 더 큽니다.&lt;br&gt;
        그래서 착수 단계에서부터 NFR을 숫자와 테스트 방법으로 고정해두는 것이 중요합니다.
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;TA가 관리해야 하는 주요 산출물&lt;/h2&gt;

      &lt;table&gt;
        &lt;tbody&gt;
          &lt;tr&gt;
            &lt;th&gt;의사결정 기록&lt;/th&gt;
            &lt;td&gt;
              ADR(결정 배경, 대안, 선택, 영향, 롤백)&lt;br&gt;
              기술 표준/금지 목록(버전/라이브러리/구성 원칙)&lt;br&gt;
              예외 승인(기간/조건/담당/상환 계획)
            &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;th&gt;아키텍처 설계&lt;/th&gt;
            &lt;td&gt;
              논리/물리 아키텍처, 배치/네트워크 경계&lt;br&gt;
              통합 아키텍처(API/메시지/파일), 인증/인가 흐름&lt;br&gt;
              데이터 흐름(읽기/쓰기, 동기/비동기, 캐시)
            &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;th&gt;NFR 정의/검증&lt;/th&gt;
            &lt;td&gt;
              성능 목표(응답/처리량/동시사용자), 자원 제한(커넥션/스레드)&lt;br&gt;
              가용성/DR(RTO/RPO), 백업/복구 절차와 테스트 결과&lt;br&gt;
              보안(암호화, 접근통제, 감사로그, 취약점 조치 기준)
            &lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;th&gt;운영 인수 패키지&lt;/th&gt;
            &lt;td&gt;
              모니터링 지표/알람 룰/대시보드, 로그 규약, 트레이싱(해당 시)&lt;br&gt;
              런북(장애 시나리오별 조치), 배포/롤백 절차, 권한 목록&lt;br&gt;
              운영 점검 체크리스트(일/주/월)
            &lt;/td&gt;
          &lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;TA 사전 준비 상세 체크리스트&lt;/h2&gt;

      &lt;p&gt;
        아래는 “착수 전에 준비하면 후반 이슈를 줄이는” 항목들입니다.
        프로젝트마다 다르지만, 최소한 이 체크리스트로 빈칸을 없애두면 일정/품질 리스크가 크게 줄어듭니다.
      &lt;/p&gt;

      &lt;h3&gt;1) 목표·범위·제약을 기술 언어로 고정&lt;/h3&gt;
      &lt;ul class=&quot;checklist&quot;&gt;
        &lt;li&gt;서비스 목표(KPI)와 장애 허용치(업무 중단 허용 시간, 데이터 손실 허용 범위)를 문장+수치로 정리&lt;/li&gt;
        &lt;li&gt;필수 연계 목록(시스템/담당/프로토콜/인증/테스트 가능 여부) 확보&lt;/li&gt;
        &lt;li&gt;기술 제약(표준 프레임워크, 특정 벤더, 온프레미스/클라우드, 네트워크 구간) 확정&lt;/li&gt;
        &lt;li&gt;성능 가정(피크 트래픽, 동시 사용자, 배치 규모, 데이터 증가율) 수치화&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;2) NFR 템플릿을 먼저 배포&lt;/h3&gt;
      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;NFR 합의는 “요구사항 목록”이 아니라 “검증 가능한 계약”입니다.&lt;/strong&gt;&lt;br&gt;
        예: “빠르게”가 아니라 “피크 2,000 동시 사용자에서 p95 1.5초 이하”처럼 정의합니다.&lt;br&gt;
        테스트 방법(툴/시나리오/데이터/통과 기준/재시험 조건)까지 한 세트로 잠급니다.
      &lt;/div&gt;
      &lt;ul class=&quot;checklist&quot;&gt;
        &lt;li&gt;성능: p50/p95/p99 기준, 처리량(TPS), 자원 사용률(상한), DB 커넥션/스레드 정책&lt;/li&gt;
        &lt;li&gt;가용성: 배포 중 다운타임 허용치, 무중단 여부, 장애 조치 절차, DR(RTO/RPO)&lt;/li&gt;
        &lt;li&gt;보안: 인증/인가 정책, 암호화 범위(전송/저장), 감사로그, 취약점 조치 SLA&lt;/li&gt;
        &lt;li&gt;관측성: 로그 레벨/구조, 추적 ID, 주요 메트릭, 알람 임계치, 런북 연결&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;3) 기술 표준(가드레일) 세트를 준비&lt;/h3&gt;
      &lt;ul class=&quot;checklist&quot;&gt;
        &lt;li&gt;코드 표준: 예외 처리, 에러 코드 체계, 공통 응답 포맷, 국제화/시간대 정책&lt;/li&gt;
        &lt;li&gt;로깅 표준: 필수 필드(요청ID/사용자/거래키), 민감정보 마스킹 규칙, 보관 정책&lt;/li&gt;
        &lt;li&gt;API 표준: 버저닝, 스키마 호환성, 타임아웃/재시도, 멱등성 키, 페이지네이션&lt;/li&gt;
        &lt;li&gt;배포 표준: 브랜치 전략, 릴리즈 노트, 롤백 조건, DB 변경(마이그레이션) 절차&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;4) 기술 의사결정 운영(ADR/리뷰 보드) 준비&lt;/h3&gt;
      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;ADR 최소 항목&lt;/strong&gt;&lt;br&gt;
          배경/문제 정의&lt;br&gt;
          고려한 대안 2~3개&lt;br&gt;
          선택한 옵션과 이유&lt;br&gt;
          영향(비용/일정/리스크)&lt;br&gt;
          롤백/대체 계획
        &lt;/div&gt;
        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;리뷰 운영 룰&lt;/strong&gt;&lt;br&gt;
          무엇을 언제 리뷰할지(상위/상세/핵심 모듈)&lt;br&gt;
          승인/반려 기준(성능/보안/NFR)&lt;br&gt;
          예외 승인 프로세스(기한/상환 계획)&lt;br&gt;
          회의체/의사결정자 명확화
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;h3&gt;5) 환경·접근·테스트 데이터 사전 확보&lt;/h3&gt;
      &lt;ul class=&quot;checklist&quot;&gt;
        &lt;li&gt;개발/스테이징/성능/운영 환경 구분과 네트워크 경계(접근 가능 구간) 확정&lt;/li&gt;
        &lt;li&gt;계정/권한: DB, 메시징, CI/CD, 모니터링, 레지스트리, 보안 장비 접근 권한 확보&lt;/li&gt;
        &lt;li&gt;테스트 데이터: 익명화 기준, 데이터 규모(성능 테스트용), 샘플링 정책 합의&lt;/li&gt;
        &lt;li&gt;외부 연계 테스트 가능 여부: 방화벽, 인증서, 샌드박스 제공 일정&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;6) 성능/장애/보안 “검증 계획”을 착수 전에 만든다&lt;/h3&gt;
      &lt;ul class=&quot;checklist&quot;&gt;
        &lt;li&gt;성능 테스트 시나리오(업무 흐름 기준)와 합격 기준을 사전에 합의&lt;/li&gt;
        &lt;li&gt;장애 대응 시나리오: DB 장애, 외부 API 지연/장애, 메시지 적체, 디스크 풀 등 “자주 터지는 것” 우선&lt;/li&gt;
        &lt;li&gt;보안 점검: 취약점 진단 범위/일정, 조치 우선순위(High/Medium/Low)와 예외 정책&lt;/li&gt;
        &lt;li&gt;릴리즈 전 “Go/No-Go” 체크리스트(통과 조건) 확정&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;7) 오픈/전환 사전 리허설 준비&lt;/h3&gt;
      &lt;ul class=&quot;checklist&quot;&gt;
        &lt;li&gt;커트오버 타임라인(분 단위)과 담당자/연락망, 의사결정자(최종 승인권) 지정&lt;/li&gt;
        &lt;li&gt;롤백/복구 계획: 되돌리는 기준, 데이터 보정 방식, 예상 소요 시간&lt;/li&gt;
        &lt;li&gt;운영 인수 조건: 런북/모니터링/권한/백업·복구 테스트 결과가 없으면 인수 불가로 명시&lt;/li&gt;
      &lt;/ul&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;TA 사전 준비의 실전 포인트&lt;/strong&gt;&lt;br&gt;
        운영 환경에서는 “설계가 맞다”보다 “문제 발생 시 10분 안에 감지하고 30분 안에 복구 가능한가”가 더 중요합니다.&lt;br&gt;
        그래서 TA는 관측성(로그/메트릭/알람)과 런북을 설계 범위에 포함시키고, 인수 조건으로 걸어두는 편이 안전합니다.
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;현장에서 자주 생기는 함정과 예방 팁&lt;/h2&gt;

      &lt;h3&gt;NFR이 문장으로만 존재한다&lt;/h3&gt;
      &lt;p&gt;
        “빠르게/안정적으로/보안 준수”처럼 정성 표현만 남으면, 후반에 누구도 통과 여부를 판단하지 못합니다.
        TA가 초기에 숫자·시나리오·측정 방식을 고정해야 합니다.
      &lt;/p&gt;

      &lt;h3&gt;연계는 ‘개발 가능’만 확인하고 ‘운영 가능’을 놓친다&lt;/h3&gt;
      &lt;p&gt;
        인증서 갱신, 방화벽 변경 절차, 타임아웃/재시도 정책, 장애 시 대체 경로 같은 운영 관점 이슈가 나중에 폭발합니다.
        통합 설계 단계에서 운영 시나리오까지 포함해 리뷰하세요.
      &lt;/p&gt;

      &lt;h3&gt;표준은 있는데 팀이 사용하지 않는다&lt;/h3&gt;
      &lt;p&gt;
        표준은 문서가 아니라 “개발 흐름에 박혀있는 장치”여야 합니다.
        예: PR 템플릿, 린트/정적분석, CI 품질 게이트, 공통 라이브러리로 강제되는 규칙.
      &lt;/p&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;요약&lt;/h2&gt;

      &lt;ul&gt;
        &lt;li&gt;TA는 기술 결정자이면서, 결정이 구현에서 지켜지도록 가드레일을 운영하는 역할입니다.&lt;/li&gt;
        &lt;li&gt;착수 전에 NFR을 “검증 가능한 계약”으로 고정하고, 의사결정/표준/환경/검증 계획을 먼저 준비해야 합니다.&lt;/li&gt;
        &lt;li&gt;오픈 직전 리스크를 줄이려면 관측성·런북·인수 조건을 아키텍처 범위에 포함시키는 것이 실무적으로 가장 효과적입니다.&lt;/li&gt;
      &lt;/ul&gt;

      &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

      &lt;p&gt;
        프로젝트에 맞춰 체크리스트를 더 촘촘히 만들고 싶다면,
        “업무 도메인(예: 금융/제조/공공)”, “구성(온프레미스/클라우드/혼합)”, “주요 연계 방식(API/ESB/메시지)”을 기준으로 항목을 확장하면 됩니다.
      &lt;/p&gt;
    &lt;/section&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;SI 프로젝트에서 TA 역할과 사전 준비 체크리스트&quot;,
              &quot;item&quot;: &quot;https://example.com/si-ta-role-prep&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;BlogPosting&quot;,
          &quot;headline&quot;: &quot;SI 프로젝트에서 TA 역할과 사전 준비 체크리스트&quot;,
          &quot;description&quot;: &quot;SI 프로젝트에서 TA(Technical Architect)가 수행하는 핵심 역할을 단계별로 정리하고, 착수 전 반드시 준비해야 할 산출물·의사결정·환경·리스크 점검 항목을 실무 관점으로 정리했습니다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/si-ta-role-prep&quot;
          },
          &quot;image&quot;: [
            &quot;https://example.com/og-image-placeholder.jpg&quot;
          ],
          &quot;author&quot;: {
            &quot;@type&quot;: &quot;Person&quot;,
            &quot;name&quot;: &quot;관리자&quot;
          },
          &quot;publisher&quot;: {
            &quot;@type&quot;: &quot;Organization&quot;,
            &quot;name&quot;: &quot;Tistory Blog&quot;,
            &quot;logo&quot;: {
              &quot;@type&quot;: &quot;ImageObject&quot;,
              &quot;url&quot;: &quot;https://example.com/og-image-placeholder.jpg&quot;
            }
          }
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>지식 공유/ETC</category>
      <category>NFR</category>
      <category>SI 프로젝트</category>
      <category>TA 역할</category>
      <category>Technical Architect</category>
      <category>기술 검토</category>
      <category>기술 표준</category>
      <category>리스크 관리</category>
      <category>비기능 요구사항</category>
      <category>산출물 템플릿</category>
      <category>아키텍처 설계</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/527</guid>
      <comments>https://togethergrow.tistory.com/entry/SI-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%97%90%EC%84%9C-TA-%EC%97%AD%ED%95%A0%EA%B3%BC-%EC%82%AC%EC%A0%84-%EC%A4%80%EB%B9%84-%EC%B2%B4%ED%81%AC%EB%A6%AC%EC%8A%A4%ED%8A%B8#entry527comment</comments>
      <pubDate>Wed, 27 May 2026 10:12:59 +0900</pubDate>
    </item>
    <item>
      <title>OS 보안 취약점 대응: 패스워드 복합도&amp;middot;deny 설정과 PAM 안전 작업 순서</title>
      <link>https://togethergrow.tistory.com/entry/OS-%EB%B3%B4%EC%95%88-%EC%B7%A8%EC%95%BD%EC%A0%90-%EB%8C%80%EC%9D%91-%ED%8C%A8%EC%8A%A4%EC%9B%8C%EB%93%9C-%EB%B3%B5%ED%95%A9%EB%8F%84%C2%B7deny-%EC%84%A4%EC%A0%95%EA%B3%BC-PAM-%EC%95%88%EC%A0%84-%EC%9E%91%EC%97%85-%EC%88%9C%EC%84%9C</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko-KR&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;OS 보안 취약점 대응: 패스워드 복잡도·deny 설정과 /etc/pam.d 안전 적용 순서&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;Linux에서 패스워드 복잡도(복합도)와 로그인 실패 누적(deny) 정책을 설정할 때 /etc/security와 /etc/pam.d를 안전하게 수정하는 순서, 테스트 방법, 접속 불능을 피하기 위한 루트 CLI 확보 등 주의점을 정리했습니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;PAM 설정,pam.d,system-auth,패스워드 복잡도,pam_cracklib,deny 설정,pam_tally2,SSH 접속 불가,CentOS 보안,RockyOS 보안,계정 잠금,보안 하드닝&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;OS 보안 취약점 대응: 패스워드 복잡도·deny 설정과 /etc/pam.d 안전 적용 순서&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;PAM을 잘못 수정해 접속 불능이 되는 사고를 피하기 위한 안전 작업 순서와 복잡도/deny 설정 예시를 포함합니다.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/replace-with-your-og-image.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;OS 보안 취약점 대응: 패스워드 복잡도·deny 설정과 /etc/pam.d 안전 적용 순서&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;PAM 수정으로 접속 불능을 피하기 위한 안전 작업 순서와 복잡도/deny 설정 예시를 포함합니다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/replace-with-your-og-image.jpg&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;style&gt;
    .post-content { line-height: 1.7; }
    .post-content .wrap { max-width: 920px; margin: 0 auto; }
    .post-content h1 { font-size: 1.9rem; margin: 0 0 0.8rem; }
    .post-content h2 { font-size: 1.35rem; margin: 1.6rem 0 0.6rem; }
    .post-content h3 { font-size: 1.12rem; margin: 1.0rem 0 0.4rem; }
    .post-content p { margin: 0.6rem 0; }
    .post-content ul { margin: 0.4rem 0 0.95rem 1.2rem; }
    .post-content li { margin: 0.25rem 0; }
    .post-content .note {
      border: 1px solid rgba(0,0,0,0.08);
      border-radius: 14px;
      padding: 0.9rem 1rem;
      margin: 0.9rem 0;
    }
    .post-content .warn {
      border: 1px solid rgba(0,0,0,0.14);
      border-radius: 14px;
      padding: 0.9rem 1rem;
      margin: 0.9rem 0;
    }
    .post-content .warn strong { display: inline-block; margin-bottom: 0.25rem; }
    .post-content code {
      font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, monospace;
      font-size: 0.95em;
    }
    .post-content pre {
      overflow: auto;
      border: 1px solid rgba(0,0,0,0.10);
      border-radius: 14px;
      padding: 0.8rem 0.9rem;
      margin: 0.8rem 0;
      line-height: 1.55;
    }
    .post-content table {
      width: 100%;
      border-collapse: collapse;
      margin: 0.8rem 0 1rem;
      font-size: 0.98rem;
    }
    .post-content th, .post-content td {
      border: 1px solid rgba(0,0,0,0.12);
      padding: 0.55rem 0.6rem;
      vertical-align: top;
    }
    .post-content th { text-align: left; }
    .post-content .mini { opacity: 0.9; font-size: 0.98rem; }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;post-content&quot;&gt;
    &lt;div class=&quot;wrap&quot;&gt;
      &lt;article&gt;
        &lt;header&gt;
          &lt;h1&gt;OS 보안 취약점 : 계정 패스워드 복잡도 설정 및 deny 설정 (PAM 안전 작업 순서)&lt;/h1&gt;
          &lt;p&gt;
            Linux에서 &lt;strong&gt;패스워드 복잡도(복합도)&lt;/strong&gt;와 &lt;strong&gt;로그인 실패 누적(deny)&lt;/strong&gt; 정책은 보통 PAM을 통해 적용합니다.
            문제는 &lt;code&gt;/etc/pam.d&lt;/code&gt;를 잘못 수정하면 &lt;strong&gt;바로 SSH 접속 불능&lt;/strong&gt;이 될 수 있다는 점입니다.
          &lt;/p&gt;

          &lt;div class=&quot;warn&quot;&gt;
            &lt;strong&gt;운영 환경에서는&lt;/strong&gt;&lt;br&gt;
            PAM 변경은 “설정 작업”이 아니라 “접속 경로를 유지해야 하는 변경 작업”입니다.&lt;br&gt;
            작업 전에 반드시 &lt;strong&gt;CLI root 권한(복구용 세션)을 미리 켜놓고&lt;/strong&gt;, 되돌리기(rollback)까지 준비한 뒤 진행하세요.
          &lt;/div&gt;
        &lt;/header&gt;

        &lt;section&gt;
          &lt;h2&gt;개요&lt;/h2&gt;

          &lt;p&gt;이번 문서에서 다루는 범위는 아래와 같습니다.&lt;/p&gt;
          &lt;ul&gt;
            &lt;li&gt;&lt;strong&gt;패스워드 복잡도(복합도)&lt;/strong&gt;: 영문 대/소문자, 숫자, 특수문자 조합/길이 기준을 강제&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;deny(계정 잠금)&lt;/strong&gt;: 로그인 실패 누적 시 잠금(예: 5회 실패 시 60초 잠금)&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;PAM 안전 작업 순서&lt;/strong&gt;: pam.d 수정으로 접속 불능을 피하기 위한 절차/테스트&lt;/li&gt;
          &lt;/ul&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;중요한 구분&lt;/strong&gt;&lt;br&gt;
            복잡도 정책은 주로 &lt;strong&gt;password&lt;/strong&gt; 스택에서 동작하고,&lt;br&gt;
            deny(실패 누적 잠금)는 주로 &lt;strong&gt;auth&lt;/strong&gt; 스택에서 동작합니다.&lt;br&gt;
            같은 파일을 수정하더라도 “라인의 위치(순서)”가 결과를 바꿉니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;환경&lt;/h2&gt;

          &lt;table aria-label=&quot;사전 점검 항목&quot;&gt;
            &lt;thead&gt;
              &lt;tr&gt;
                &lt;th&gt;항목&lt;/th&gt;
                &lt;th&gt;확인 포인트&lt;/th&gt;
              &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
              &lt;tr&gt;
                &lt;td&gt;접속 경로&lt;/td&gt;
                &lt;td&gt;SSH 외에 콘솔(가상 콘솔/ILO/IPMI/VM 콘솔) 접근이 가능한가&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;대상 파일&lt;/td&gt;
                &lt;td&gt;&lt;code&gt;/etc/pam.d/system-auth&lt;/code&gt; (배포판/버전에 따라 auto-generated일 수 있음)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;복잡도 모듈&lt;/td&gt;
                &lt;td&gt;&lt;code&gt;pam_pwquality&lt;/code&gt; 또는 &lt;code&gt;pam_cracklib&lt;/code&gt; 사용 여부(환경에 따라 다름)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;deny 모듈&lt;/td&gt;
                &lt;td&gt;&lt;code&gt;pam_faillock&lt;/code&gt; (신규) 또는 &lt;code&gt;pam_tally2&lt;/code&gt; (구형) 사용 여부&lt;/td&gt;
              &lt;/tr&gt;
            &lt;/tbody&gt;
          &lt;/table&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;증상&lt;/h2&gt;

          &lt;ul&gt;
            &lt;li&gt;pam.d 수정 직후 SSH가 끊기거나 재접속이 되지 않음&lt;/li&gt;
            &lt;li&gt;sudo 인증이 막혀 root 권한을 다시 얻지 못함&lt;/li&gt;
            &lt;li&gt;deny 정책이 과도해 정상 사용자도 반복적으로 잠김&lt;/li&gt;
          &lt;/ul&gt;

          &lt;div class=&quot;warn&quot;&gt;
            &lt;strong&gt;가장 흔한 장애 시나리오&lt;/strong&gt;&lt;br&gt;
            “원격 SSH 한 세션만 열린 상태”에서 &lt;code&gt;/etc/pam.d/system-auth&lt;/code&gt; 저장 → 다음 인증부터 막힘 → 복구 경로 없음
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;1차 점검: 작업 전 필수 안전 장치&lt;/h2&gt;

          &lt;h3&gt;1) 복구용 root 세션을 먼저 확보&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;&lt;strong&gt;최소 2개 세션&lt;/strong&gt;: 작업 세션 + 복구 세션(가능하면 다른 접속 경로)&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;root 권한을 미리 확보&lt;/strong&gt;: &lt;code&gt;sudo -i&lt;/code&gt; 또는 root 로그인 세션을 열어둠&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;복구 세션은 절대 닫지 않기&lt;/strong&gt;: 변경 검증이 끝날 때까지 유지&lt;/li&gt;
          &lt;/ul&gt;

          &lt;h3&gt;2) 변경 전 백업(rollback) 준비&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;# 핵심 PAM 파일 전체 백업(권장)
cp -a /etc/pam.d /root/pam.d.backup.$(date +%F_%H%M%S)

# 변경 전 해당 파일만 별도 백업(추가 안전)
cp -a /etc/pam.d/system-auth /root/system-auth.backup.$(date +%F_%H%M%S)&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;3) “auto-generated” 경고 확인&lt;/h3&gt;
          &lt;p class=&quot;mini&quot;&gt;
            &lt;code&gt;system-auth&lt;/code&gt; 상단에 “auto-generated / 다음 실행 시 변경이 파괴됨” 같은 문구가 있으면,
            추후 도구(authconfig 등) 실행으로 설정이 덮일 수 있습니다.&lt;br&gt;
            실무 기준으로 보면, 이런 환경에서는 “직접 수정”을 하더라도 &lt;strong&gt;표준 운영 절차(재적용/형상관리)&lt;/strong&gt;까지 같이 설계해야 합니다.
          &lt;/p&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;심화 분석: PAM 수정 시 반드시 지켜야 하는 순서 원칙&lt;/h2&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;원칙 3가지&lt;/strong&gt;&lt;br&gt;
            1) 변경은 &lt;strong&gt;한 번에 하나씩&lt;/strong&gt;(복잡도 → deny 순 추천)&lt;br&gt;
            2) 저장 후 즉시 &lt;strong&gt;새 SSH 세션으로 테스트&lt;/strong&gt;(현재 세션은 “성공했던 과거”라 착시가 생김)&lt;br&gt;
            3) 실패 시 즉시 원복할 수 있게 &lt;strong&gt;복구 루트 세션을 유지&lt;/strong&gt;
          &lt;/div&gt;

          &lt;p&gt;
            PAM 라인 한 줄이 “인증 성공/실패”를 결정합니다. 특히 &lt;code&gt;required&lt;/code&gt;, &lt;code&gt;requisite&lt;/code&gt;, &lt;code&gt;sufficient&lt;/code&gt; 조합과
            라인의 순서가 바뀌면, 동일 모듈이라도 결과가 달라질 수 있습니다.
          &lt;/p&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;복구: 안전 적용 절차(권장 순서)&lt;/h2&gt;

          &lt;h3&gt;Step 1) 복잡도 정책을 먼저 정리&lt;/h3&gt;
          &lt;p&gt;
            요구사항(정책)은 아래처럼 정리할 수 있습니다.
          &lt;/p&gt;
          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;패스워드 복잡도 설정(요구사항)&lt;/strong&gt;&lt;br&gt;
            다양한 문자를 조합하여 패스워드 복잡도를 올려야 한다.&lt;br&gt;
            영문 대소문자, 숫자, 특수 문자 중 &lt;strong&gt;2종류 이상&lt;/strong&gt;을 조합하여 &lt;strong&gt;최소 10자리 이상&lt;/strong&gt;&lt;br&gt;
            &lt;strong&gt;3종류 이상&lt;/strong&gt;을 조합하면 &lt;strong&gt;최소 8자리 이상&lt;/strong&gt;
          &lt;/div&gt;

          &lt;p&gt;
            위 요구사항을 구현하기 위해 &lt;code&gt;/etc/pam.d/system-auth&lt;/code&gt;의 &lt;strong&gt;password 스택&lt;/strong&gt;에 복잡도 모듈을 적용합니다.
            아래 예시는 &lt;code&gt;pam_cracklib&lt;/code&gt; 기반이며, 환경에 따라 &lt;code&gt;pam_pwquality&lt;/code&gt;를 사용하는 경우도 있습니다.
          &lt;/p&gt;

          &lt;div class=&quot;warn&quot;&gt;
            &lt;strong&gt;주의&lt;/strong&gt;&lt;br&gt;
            &lt;code&gt;/etc/pam.d/system-auth&lt;/code&gt;는 로그인/SSH/sudo 등 광범위하게 영향을 줄 수 있습니다.&lt;br&gt;
            수정 전에 반드시 &lt;strong&gt;root CLI를 미리 켜놓고&lt;/strong&gt; 진행하세요.
          &lt;/div&gt;

          &lt;h3&gt;Step 2) system-auth 예시(추가 라인 포함)&lt;/h3&gt;
          &lt;p class=&quot;mini&quot;&gt;
            아래는 사용자가 제시한 구성 예시입니다. “추가” 대상은 &lt;strong&gt;password 스택의 cracklib 라인&lt;/strong&gt;이며,
            deny 예시는 &lt;strong&gt;auth 스택의 pam_tally2&lt;/strong&gt; 라인입니다.&lt;br&gt;
            (실제 적용 전, 환경이 pam_tally2/pam_cracklib를 지원하는지 반드시 확인하세요.)
          &lt;/p&gt;

          &lt;pre&gt;&lt;code&gt;# /etc/pam.d/system-auth (예시)
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_tally2.so deny=5 unlock_time=60 no_magic_root reset
auth        required      pam_env.so
auth        required      pam_faildelay.so delay=2000000
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid &amp;gt;= 1000 quiet_success
auth        required      pam_deny.so


account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid &amp;lt; 1000 quiet
account     required      pam_permit.so


#password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    requisite     /usr/lib64/security/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so


session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session    optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;Step 3) 복잡도 옵션 의미(요약)&lt;/h3&gt;
          &lt;p&gt;패스워드 복잡도에 사용되는 옵션은 아래와 같습니다.&lt;/p&gt;
          &lt;ul&gt;
            &lt;li&gt;&lt;code&gt;retry=5&lt;/code&gt; : 패스워드 입력 실패 시 재시도 가능 횟수&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;difok=10&lt;/code&gt; : 기존 패스워드와 비교하는 정도(기본값 10, 약 50% 수준으로 이해하는 경우가 많음)&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;minlen=5&lt;/code&gt; : 패스워드의 최소 길이&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;dcredit=-1&lt;/code&gt; : 숫자를 최소 1자 이상 사용&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;ucredit=-1&lt;/code&gt; : 영어 대문자를 최소 1자 이상 사용&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;lcredit=-1&lt;/code&gt; : 영어 소문자를 최소 1자 이상 사용&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;ocredit=-1&lt;/code&gt; : 숫자/영어 대·소문자를 제외한 기타 문자(특수문자)를 1자 이상 사용&lt;/li&gt;
          &lt;/ul&gt;
          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;참고&lt;/strong&gt;&lt;br&gt;
            &lt;code&gt;-1&lt;/code&gt;의 의미는 “해당 종류 문자를 &lt;strong&gt;반드시 1개 이상 포함&lt;/strong&gt;해야 한다”는 뜻입니다.
          &lt;/div&gt;

          &lt;h3&gt;Step 4) deny(계정 잠금) 적용은 마지막에&lt;/h3&gt;
          &lt;p&gt;
            deny는 잘못 적용하면 정상 사용자도 쉽게 잠깁니다. 적용 전 “잠금 해제 절차”를 먼저 정하세요.
          &lt;/p&gt;
          &lt;ul&gt;
            &lt;li&gt;잠금 기준: &lt;strong&gt;deny=5&lt;/strong&gt; 같은 실패 횟수&lt;/li&gt;
            &lt;li&gt;해제 정책: &lt;strong&gt;unlock_time=60&lt;/strong&gt; 같은 자동 해제 시간(또는 관리자 해제)&lt;/li&gt;
            &lt;li&gt;root 포함 여부: 운영 정책에 따라 매우 신중(포함 시 장애 위험 증가)&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;재발 방지: 작업 중 테스트 시나리오(필수)&lt;/h2&gt;

          &lt;div class=&quot;warn&quot;&gt;
            &lt;strong&gt;테스트는 “현재 세션”이 아니라 “새 세션”으로&lt;/strong&gt;&lt;br&gt;
            변경 저장 후, 반드시 새 터미널/새 SSH 연결로 테스트해야 합니다.&lt;br&gt;
            현재 세션은 이미 인증을 통과한 상태라, 변경이 실패해도 당장은 멀쩡해 보일 수 있습니다.
          &lt;/div&gt;

          &lt;table aria-label=&quot;권장 테스트 순서&quot;&gt;
            &lt;thead&gt;
              &lt;tr&gt;
                &lt;th&gt;순서&lt;/th&gt;
                &lt;th&gt;테스트 항목&lt;/th&gt;
                &lt;th&gt;성공 기준&lt;/th&gt;
              &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
              &lt;tr&gt;
                &lt;td&gt;1&lt;/td&gt;
                &lt;td&gt;일반 계정으로 새 SSH 로그인&lt;/td&gt;
                &lt;td&gt;정상 로그인/세션 생성&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;2&lt;/td&gt;
                &lt;td&gt;sudo 인증&lt;/td&gt;
                &lt;td&gt;sudo 패스워드 입력 후 root 권한 획득&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;3&lt;/td&gt;
                &lt;td&gt;비밀번호 변경 테스트&lt;/td&gt;
                &lt;td&gt;단순 비밀번호 거부, 정책에 맞는 비밀번호만 허용&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;4&lt;/td&gt;
                &lt;td&gt;의도적 로그인 실패 누적&lt;/td&gt;
                &lt;td&gt;정책대로 잠금/해제가 동작(과도 잠금 없는지 확인)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;5&lt;/td&gt;
                &lt;td&gt;복구 세션 유지 상태에서 원복 리허설&lt;/td&gt;
                &lt;td&gt;백업 파일로 즉시 복원 가능&lt;/td&gt;
              &lt;/tr&gt;
            &lt;/tbody&gt;
          &lt;/table&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;복구 절차: 접속이 막혔을 때(간단 원칙)&lt;/h2&gt;

          &lt;p&gt;
            PAM 변경 후 접속이 막히면, 결국 &lt;strong&gt;열어둔 root 복구 세션(또는 콘솔)&lt;/strong&gt;로 들어가 원복하는 방식이 가장 빠릅니다.
          &lt;/p&gt;
          &lt;pre&gt;&lt;code&gt;# 예시: 백업해둔 pam.d로 즉시 원복
# (환경에 따라 파일 단위로 복원하는 게 더 안전할 수 있음)
cp -a /root/pam.d.backup.YYYY-MM-DD_HHMMSS/* /etc/pam.d/

# 혹은 system-auth만 원복
cp -a /root/system-auth.backup.YYYY-MM-DD_HHMMSS /etc/pam.d/system-auth&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;실무 팁&lt;/strong&gt;&lt;br&gt;
            “접속 불능 사고”는 대부분 복구 경로 부재에서 커집니다.&lt;br&gt;
            관리자 입장에서 PAM 변경은 &lt;strong&gt;복구 세션 확보 → 백업 → 작은 변경 → 새 세션 테스트&lt;/strong&gt;만 지켜도 사고 확률이 크게 줄어듭니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;마무리&lt;/h2&gt;
          &lt;p&gt;
            패스워드 복잡도와 deny 정책은 보안 수준을 높이는 데 효과적이지만,
            PAM 파일은 시스템 전체 인증에 영향을 주기 때문에 “올바른 정책”보다 “안전한 적용 순서”가 먼저입니다.
            변경 전 루트 CLI를 미리 켜놓고, 백업과 새 세션 테스트를 단계별로 수행하면 접속 불능 리스크를 현실적으로 관리할 수 있습니다.
          &lt;/p&gt;
        &lt;/section&gt;
      &lt;/article&gt;
    &lt;/div&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;OS 보안 취약점 대응: 패스워드 복잡도·deny 설정과 /etc/pam.d 안전 적용 순서&quot;,
              &quot;item&quot;: &quot;https://example.com/os-password-policy-pam-safe-steps&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;TechArticle&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/os-password-policy-pam-safe-steps&quot;
          },
          &quot;headline&quot;: &quot;OS 보안 취약점 대응: 패스워드 복잡도·deny 설정과 /etc/pam.d 안전 적용 순서&quot;,
          &quot;description&quot;: &quot;Linux에서 패스워드 복잡도(복합도)와 로그인 실패 누적(deny) 정책을 설정할 때 /etc/security와 /etc/pam.d를 안전하게 수정하는 순서, 테스트 방법, 접속 불능을 피하기 위한 루트 CLI 확보 등 주의점을 정리했습니다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;datePublished&quot;: &quot;2026-05-27&quot;,
          &quot;dateModified&quot;: &quot;2026-05-27&quot;,
          &quot;image&quot;: &quot;https://example.com/replace-with-your-og-image.jpg&quot;
        }
      ]
    }
    &lt;/script&gt;

    &lt;!--
      TAGS (관리자 입력용 10개):
      PAM 설정,pam.d,system-auth,패스워드 복잡도,pam_cracklib,deny 설정,pam_tally2,계정 잠금,Linux 보안,SSH 접속 불가
    --&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>지식 공유/Server</category>
      <category>/etc/security</category>
      <category>CentOS</category>
      <category>deny 설정</category>
      <category>faillock</category>
      <category>PAM 설정</category>
      <category>pam.d</category>
      <category>pwquality</category>
      <category>RockyOS</category>
      <category>SSH 접속 불가</category>
      <category>패스워드 복합도</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/526</guid>
      <comments>https://togethergrow.tistory.com/entry/OS-%EB%B3%B4%EC%95%88-%EC%B7%A8%EC%95%BD%EC%A0%90-%EB%8C%80%EC%9D%91-%ED%8C%A8%EC%8A%A4%EC%9B%8C%EB%93%9C-%EB%B3%B5%ED%95%A9%EB%8F%84%C2%B7deny-%EC%84%A4%EC%A0%95%EA%B3%BC-PAM-%EC%95%88%EC%A0%84-%EC%9E%91%EC%97%85-%EC%88%9C%EC%84%9C#entry526comment</comments>
      <pubDate>Wed, 27 May 2026 09:35:54 +0900</pubDate>
    </item>
    <item>
      <title>CentOS&amp;middot;RockyOS&amp;middot;Windows 기본 암호화 알고리즘과 현재 기준 안전 목록</title>
      <link>https://togethergrow.tistory.com/entry/CentOS%C2%B7RockyOS%C2%B7Windows-%EA%B8%B0%EB%B3%B8-%EC%95%94%ED%98%B8%ED%99%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EA%B3%BC-%ED%98%84%EC%9E%AC-%EA%B8%B0%EC%A4%80-%EC%95%88%EC%A0%84-%EB%AA%A9%EB%A1%9D</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko-KR&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;CentOS·RockyOS·Windows 기본 암호화 알고리즘과 현재 기준 안전 목록&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;CentOS/RockyOS/Windows에서 기본으로 쓰이는 암호화(해시·TLS·SSH·디스크) 알고리즘을 구분해 정리하고, 2026년 기준으로 권장/비권장 알고리즘을 한 번에 확인할 수 있게 정리했습니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;암호화 알고리즘,비밀번호 해시,yescrypt,SHA-512 crypt,Kerberos AES,TLS 1.3,AES-GCM,ChaCha20-Poly1305,OpenSSH,crypto policy&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;CentOS·RockyOS·Windows 기본 암호화 알고리즘과 현재 기준 안전 목록&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;OS별 기본 암호화(해시·TLS·SSH·디스크) 알고리즘을 구분해 정리하고, 2026년 기준 권장 목록을 제공합니다.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/replace-with-your-og-image.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;CentOS·RockyOS·Windows 기본 암호화 알고리즘과 현재 기준 안전 목록&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;OS별 기본 암호화(해시·TLS·SSH·디스크) 알고리즘을 구분해 정리하고, 2026년 기준 권장 목록을 제공합니다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/replace-with-your-og-image.jpg&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;style&gt;
    .post-content { line-height: 1.7; }
    .post-content .wrap { max-width: 860px; margin: 0 auto; }
    .post-content h1 { font-size: 1.9rem; margin: 0 0 0.8rem; }
    .post-content h2 { font-size: 1.35rem; margin: 1.6rem 0 0.6rem; }
    .post-content h3 { font-size: 1.1rem; margin: 1.0rem 0 0.4rem; }
    .post-content p { margin: 0.6rem 0; }
    .post-content ul { margin: 0.4rem 0 0.8rem 1.2rem; }
    .post-content li { margin: 0.25rem 0; }
    .post-content .note {
      border: 1px solid rgba(0,0,0,0.08);
      border-radius: 14px;
      padding: 0.9rem 1rem;
      margin: 0.9rem 0;
    }
    .post-content .note strong { display: inline-block; margin-bottom: 0.2rem; }
    .post-content .grid {
      display: grid;
      grid-template-columns: 1fr;
      gap: 0.8rem;
      margin: 0.8rem 0;
    }
    @media (min-width: 860px) {
      .post-content .grid { grid-template-columns: 1fr 1fr; }
    }
    .post-content .card {
      border: 1px solid rgba(0,0,0,0.08);
      border-radius: 16px;
      padding: 0.9rem 1rem;
    }
    .post-content table {
      width: 100%;
      border-collapse: collapse;
      margin: 0.8rem 0 1rem;
      font-size: 0.98rem;
    }
    .post-content th, .post-content td {
      border: 1px solid rgba(0,0,0,0.12);
      padding: 0.55rem 0.6rem;
      vertical-align: top;
    }
    .post-content th { text-align: left; }
    .post-content code {
      font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, monospace;
      font-size: 0.95em;
    }
    .post-content pre {
      overflow: auto;
      border: 1px solid rgba(0,0,0,0.10);
      border-radius: 14px;
      padding: 0.8rem 0.9rem;
      margin: 0.8rem 0;
      line-height: 1.55;
    }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;post-content&quot;&gt;
    &lt;div class=&quot;wrap&quot;&gt;
      &lt;article&gt;
        &lt;header&gt;
          &lt;h1&gt;CentOS·RockyOS·Windows 기본 암호화 알고리즘 소개 (현재 기준 목록 포함)&lt;/h1&gt;
          &lt;p&gt;
            운영체제에서 “기본 암호화 알고리즘”이라고 할 때는 한 가지가 아니라,
            &lt;strong&gt;① 비밀번호 저장(해시)&lt;/strong&gt;, &lt;strong&gt;② 통신(TLS/SSH)&lt;/strong&gt;, &lt;strong&gt;③ 디스크 암호화&lt;/strong&gt;, &lt;strong&gt;④ 인증 프로토콜&lt;/strong&gt;처럼
            영역별로 나뉘어 동작합니다.
          &lt;/p&gt;
          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;먼저 정리(중요)&lt;/strong&gt;&lt;br&gt;
            비밀번호는 “암호화(encryption)”가 아니라 보통 &lt;strong&gt;해시(hash)&lt;/strong&gt;로 저장합니다.&lt;br&gt;
            통신(TLS/SSH)과 디스크는 &lt;strong&gt;대칭키 암호(AES/ChaCha20)&lt;/strong&gt;가 중심입니다.&lt;br&gt;
            실제 사용 시에는 “OS 기본값”보다 &lt;strong&gt;조직 정책(보안 정책/호환성 요구)&lt;/strong&gt;이 최종 결정을 좌우합니다.
          &lt;/div&gt;
        &lt;/header&gt;

        &lt;section&gt;
          &lt;h2&gt;OS별 기본 사용 경향 한눈에 보기&lt;/h2&gt;

          &lt;table aria-label=&quot;OS별 기본 암호화 알고리즘 요약&quot;&gt;
            &lt;thead&gt;
              &lt;tr&gt;
                &lt;th&gt;구분&lt;/th&gt;
                &lt;th&gt;비밀번호 저장(로컬 계정)&lt;/th&gt;
                &lt;th&gt;통신(TLS/SSH) 기본 경향&lt;/th&gt;
                &lt;th&gt;인증(도메인/SSO 등)&lt;/th&gt;
              &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
              &lt;tr&gt;
                &lt;td&gt;&lt;strong&gt;CentOS (예: 7 계열)&lt;/strong&gt;&lt;/td&gt;
                &lt;td&gt;
                  일반적으로 &lt;strong&gt;SHA-512 crypt&lt;/strong&gt; 계열이 널리 사용/권장되는 구성&lt;br&gt;
                  &lt;span style=&quot;opacity:0.85;&quot;&gt;(구성에 따라 PAM/login.defs로 결정)&lt;/span&gt;
                &lt;/td&gt;
                &lt;td&gt;
                  OpenSSL/OpenSSH 기반&lt;br&gt;
                  레거시 호환을 위해 약한 구성도 남아있을 수 있어 점검 필요
                &lt;/td&gt;
                &lt;td&gt;
                  로컬은 PAM, 기업 환경은 AD/LDAP/IPA 연동이 일반적
                &lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;&lt;strong&gt;RockyOS (예: 8/9 계열)&lt;/strong&gt;&lt;/td&gt;
                &lt;td&gt;
                  RHEL 계열 정책을 따르며, 로컬 해시는 &lt;strong&gt;SHA-512 crypt 또는 yescrypt&lt;/strong&gt;를 조직 기준으로 선택하는 흐름
                &lt;/td&gt;
                &lt;td&gt;
                  &lt;strong&gt;시스템 전역 암호 정책(crypto policy)&lt;/strong&gt;로 TLS/SSH의 약한 알고리즘을 기본 거부하는 구조
                &lt;/td&gt;
                &lt;td&gt;
                  SSSD/AD 연동, Kerberos 기반 구성이 흔함
                &lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;&lt;strong&gt;Windows (Server/11)&lt;/strong&gt;&lt;/td&gt;
                &lt;td&gt;
                  로컬/AD 계정의 “NT 해시”는 전통적으로 &lt;strong&gt;MD4 기반&lt;/strong&gt; 구조(저장 형식)&lt;br&gt;
                  &lt;span style=&quot;opacity:0.85;&quot;&gt;※ 저장 형식과 “네트워크 인증 방식”은 다름&lt;/span&gt;
                &lt;/td&gt;
                &lt;td&gt;
                  Schannel(TLS) 기반&lt;br&gt;
                  최신 구성은 TLS 1.2/1.3 + 강한 스위트 사용이 일반적
                &lt;/td&gt;
                &lt;td&gt;
                  기본 권장: &lt;strong&gt;Kerberos&lt;/strong&gt;(AES 등)&lt;br&gt;
                  레거시: NTLM/NTLMv2는 축소/제한 흐름
                &lt;/td&gt;
              &lt;/tr&gt;
            &lt;/tbody&gt;
          &lt;/table&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;실무 기준으로 보면&lt;/strong&gt;&lt;br&gt;
            “OS 이름별 알고리즘”을 외우는 것보다, 운영 환경에서는 아래 3가지를 분리해서 점검하는 게 더 정확합니다.&lt;br&gt;
            1) 로컬 비밀번호 해시(계정 DB)  2) 통신(TLS/SSH)  3) 도메인 인증(Kerberos/NTLM)
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;1) Linux 계열 (CentOS, RockyOS) 기본 암호화 구성 포인트&lt;/h2&gt;

          &lt;div class=&quot;grid&quot;&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;h3&gt;로컬 비밀번호 해시( /etc/shadow )&lt;/h3&gt;
              &lt;p&gt;
                Linux의 로컬 계정 비밀번호는 보통 &lt;code&gt;/etc/shadow&lt;/code&gt;에 “해시”로 저장되며,
                어떤 해시를 쓰는지는 배포판/버전과 PAM 설정(또는 도구 설정)에 따라 달라집니다.
              &lt;/p&gt;
              &lt;ul&gt;
                &lt;li&gt;&lt;strong&gt;SHA-512 crypt&lt;/strong&gt;: CentOS 7 같은 구형 계열에서 흔한 구성(설정으로 강제하는 사례가 많음)&lt;/li&gt;
                &lt;li&gt;&lt;strong&gt;yescrypt&lt;/strong&gt;: 최신 배포판에서 기본/권장으로 확산된 비용 기반 해시&lt;/li&gt;
                &lt;li&gt;&lt;strong&gt;bcrypt&lt;/strong&gt;: 일부 환경에서 선택(비용 기반), 시스템/도구 호환성 확인 필요&lt;/li&gt;
              &lt;/ul&gt;
              &lt;p&gt;
                참고로 &lt;code&gt;ENCRYPT_METHOD&lt;/code&gt; 같은 설정은 도구(shadow-utils)와 PAM 구성에 영향을 받습니다.
                (배포판마다 “어디가 최종 결정권”인지가 다를 수 있어, 운영 표준에서는 &lt;strong&gt;PAM/authselect 기준&lt;/strong&gt;으로 맞추는 편이 안전합니다.)
              &lt;/p&gt;
            &lt;/div&gt;

            &lt;div class=&quot;card&quot;&gt;
              &lt;h3&gt;TLS/SSH: “전역 암호 정책(crypto policy)”&lt;/h3&gt;
              &lt;p&gt;
                RHEL 8/9 계열(RockyOS 포함)은 &lt;strong&gt;시스템 전역 암호 정책&lt;/strong&gt;으로
                TLS/SSH 같은 핵심 통신 스택이 약한 알고리즘을 기본적으로 거부하도록 관리하는 방식이 널리 쓰입니다.
              &lt;/p&gt;
              &lt;ul&gt;
                &lt;li&gt;&lt;strong&gt;DEFAULT&lt;/strong&gt;: 일반 운영에 무난한 기본값&lt;/li&gt;
                &lt;li&gt;&lt;strong&gt;LEGACY&lt;/strong&gt;: 구형 장비/서버 호환을 위해 일부 약한 구성을 허용&lt;/li&gt;
                &lt;li&gt;&lt;strong&gt;FUTURE&lt;/strong&gt;: 더 강한 기준(호환성 비용 증가)&lt;/li&gt;
                &lt;li&gt;&lt;strong&gt;FIPS&lt;/strong&gt;: 규정 준수 환경&lt;/li&gt;
              &lt;/ul&gt;
              &lt;p&gt;
                “구성 파일을 바꿨는데 반영이 안 된다”는 이 정책 계층 때문인 경우가 많습니다.
              &lt;/p&gt;
            &lt;/div&gt;
          &lt;/div&gt;

          &lt;h3&gt;디스크 암호화(LUKS)&lt;/h3&gt;
          &lt;p&gt;
            Linux 디스크 암호화는 보통 LUKS(LUKS2 포함)를 사용하며, 실무에서는 &lt;strong&gt;AES-XTS&lt;/strong&gt; 구성이 가장 흔합니다.
            여기서 핵심은 알고리즘 이름보다도 &lt;strong&gt;키 길이/파라미터/키 관리&lt;/strong&gt;(TPM 연동, 패스프레이즈 품질, 복구키 정책)입니다.
          &lt;/p&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;2) Windows 기본 암호화/인증 포인트&lt;/h2&gt;

          &lt;h3&gt;로컬/AD 비밀번호 저장 형식 vs 네트워크 인증은 다르다&lt;/h3&gt;
          &lt;p&gt;
            Windows는 계정 비밀번호를 그대로 저장하지 않고 “해시” 형태로 저장합니다.
            다만 역사적 이유로 &lt;strong&gt;NT 해시가 MD4 기반&lt;/strong&gt;이라는 점이 자주 언급되는데,
            이건 “저장 형식”의 이야기이고, 실제 인증은 Kerberos/NTLM 같은 프로토콜 계층에서 별도 보안이 적용됩니다.
          &lt;/p&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;strong&gt;운영 팁&lt;/strong&gt;&lt;br&gt;
            가능하면 &lt;strong&gt;Kerberos 중심&lt;/strong&gt;으로(도메인/SSO) 설계하고,&lt;br&gt;
            NTLM은 “어쩔 수 없는 호환성” 범위로만 제한하는 흐름이 일반적입니다.
          &lt;/div&gt;

          &lt;h3&gt;Kerberos: AES 권장(현대 표준)&lt;/h3&gt;
          &lt;p&gt;
            AD 환경에서 Kerberos는 현대적인 선택이며, 정책으로 &lt;strong&gt;AES 계열 사용을 강제&lt;/strong&gt;하는 하드닝 가이드가 꾸준히 제시됩니다.
            반대로 레거시 암호(RC4 등)는 점진적으로 줄이는 방향이 권장됩니다.
          &lt;/p&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;현재 기준 알고리즘 목록(2026년 기준: “많이 쓰이고 표준적으로 안전한 축”)&lt;/h2&gt;

          &lt;h3&gt;① 비밀번호 저장(해시/키 유도)&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;&lt;strong&gt;yescrypt&lt;/strong&gt; (권장): 비용 기반 해시(크래킹 비용 상승)&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;bcrypt&lt;/strong&gt; (권장): 널리 검증된 비용 기반 해시&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;SHA-512 crypt&lt;/strong&gt; (조건부): 구형 표준으로 여전히 쓰이지만, 비용 기반(yescrypt/bcrypt) 대비 보수적 평가&lt;/li&gt;
          &lt;/ul&gt;

          &lt;h3&gt;② TLS(HTTPS 등)&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;&lt;strong&gt;TLS 1.3&lt;/strong&gt; (권장), &lt;strong&gt;TLS 1.2&lt;/strong&gt; (필요 시 병행)&lt;/li&gt;
            &lt;li&gt;&lt;strong&gt;AES-GCM&lt;/strong&gt; (권장), &lt;strong&gt;ChaCha20-Poly1305&lt;/strong&gt; (권장: 모바일/저전력에서도 강점)&lt;/li&gt;
            &lt;li&gt;서명: &lt;strong&gt;ECDSA&lt;/strong&gt; 또는 &lt;strong&gt;RSA 3072+&lt;/strong&gt; (환경에 맞게)&lt;/li&gt;
          &lt;/ul&gt;

          &lt;h3&gt;③ SSH&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;키 교환/호스트키: &lt;strong&gt;ed25519&lt;/strong&gt;, &lt;strong&gt;ecdsa&lt;/strong&gt;, (필요 시) &lt;strong&gt;rsa 3072+&lt;/strong&gt;&lt;/li&gt;
            &lt;li&gt;대칭키/AEAD: &lt;strong&gt;chacha20-poly1305@openssh.com&lt;/strong&gt;, &lt;strong&gt;aes256-gcm@openssh.com&lt;/strong&gt;&lt;/li&gt;
            &lt;li&gt;MAC: &lt;strong&gt;hmac-sha2-256/512&lt;/strong&gt; 계열&lt;/li&gt;
          &lt;/ul&gt;

          &lt;h3&gt;④ 디스크 암호화&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;&lt;strong&gt;AES-XTS&lt;/strong&gt; (일반적 권장)&lt;/li&gt;
            &lt;li&gt;키 관리: TPM/보안부팅 연계, 복구키/회수 정책(운영 정책이 실제 보안 수준을 좌우)&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;현재 기준 “안전한 알고리즘”만 골라 말하면&lt;/h2&gt;

          &lt;div class=&quot;grid&quot;&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;h3&gt;바로 선택해도 되는 권장 조합&lt;/h3&gt;
              &lt;ul&gt;
                &lt;li&gt;&lt;strong&gt;비밀번호 해시&lt;/strong&gt;: yescrypt (가능하면) / bcrypt&lt;/li&gt;
                &lt;li&gt;&lt;strong&gt;TLS&lt;/strong&gt;: TLS 1.3 + (AES-GCM 또는 ChaCha20-Poly1305)&lt;/li&gt;
                &lt;li&gt;&lt;strong&gt;SSH&lt;/strong&gt;: ed25519 + chacha20-poly1305 또는 aes-gcm&lt;/li&gt;
                &lt;li&gt;&lt;strong&gt;디스크&lt;/strong&gt;: LUKS2 + AES-XTS&lt;/li&gt;
                &lt;li&gt;&lt;strong&gt;Windows 도메인 인증&lt;/strong&gt;: Kerberos(AES) 우선&lt;/li&gt;
              &lt;/ul&gt;
            &lt;/div&gt;
            &lt;div class=&quot;card&quot;&gt;
              &lt;h3&gt;피하거나(가능하면) 최소화할 것&lt;/h3&gt;
              &lt;ul&gt;
                &lt;li&gt;&lt;strong&gt;DES/3DES&lt;/strong&gt;, &lt;strong&gt;RC4&lt;/strong&gt; (레거시 호환 외에는 지양)&lt;/li&gt;
                &lt;li&gt;&lt;strong&gt;MD5&lt;/strong&gt; (비밀번호 저장/무결성에 사용 지양)&lt;/li&gt;
                &lt;li&gt;&lt;strong&gt;SHA-1&lt;/strong&gt; (서명/인증서/핵심 보안용도 지양)&lt;/li&gt;
                &lt;li&gt;&lt;strong&gt;NTLMv1/LM&lt;/strong&gt; (가능하면 사용 금지 수준)&lt;/li&gt;
              &lt;/ul&gt;
              &lt;p style=&quot;margin-top:0.6rem; opacity:0.9;&quot;&gt;
                단, “완전 금지”는 조직의 호환성 범위(구형 장비/OS/라이브러리)에 따라 단계적으로 진행하는 게 현실적입니다.
              &lt;/p&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;운영 체크 포인트(짧게)&lt;/h2&gt;

          &lt;ul&gt;
            &lt;li&gt;
              Linux(RockyOS 포함): 통신은 &lt;strong&gt;crypto policy&lt;/strong&gt;의 영향을 크게 받으니,
              “OpenSSH 설정만 바꿨는데 왜 약한 알고리즘이 남지?” 같은 이슈를 여기서 먼저 의심합니다.
            &lt;/li&gt;
            &lt;li&gt;
              로컬 비밀번호 해시는 “알고리즘 이름”만큼 &lt;strong&gt;비용 파라미터(라운드/코스트)&lt;/strong&gt;가 중요합니다.
            &lt;/li&gt;
            &lt;li&gt;
              Windows: 저장 형식 논쟁보다, 현실 보안은 &lt;strong&gt;Kerberos 우선 + NTLM 최소화&lt;/strong&gt;가 핵심입니다.
            &lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;마무리&lt;/h2&gt;
          &lt;p&gt;
            OS별 기본값은 “대략의 방향”을 이해하는 데 유용하지만,
            실제 보안 수준은 결국 &lt;strong&gt;정책(crypto policy/도메인 정책)&lt;/strong&gt;과 &lt;strong&gt;운영 설정&lt;/strong&gt;에서 결정됩니다.
            필요한 범위(레거시 호환 포함)를 먼저 확정하고,
            그 안에서 yescrypt/AES-GCM/TLS 1.3/Kerberos(AES) 같은 표준 안전 조합을 중심으로 맞추는 게 가장 효율적입니다.
          &lt;/p&gt;
        &lt;/section&gt;
      &lt;/article&gt;
    &lt;/div&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;CentOS·RockyOS·Windows 기본 암호화 알고리즘과 현재 기준 안전 목록&quot;,
              &quot;item&quot;: &quot;https://example.com/centos-rocky-windows-crypto-algorithms&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;BlogPosting&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/centos-rocky-windows-crypto-algorithms&quot;
          },
          &quot;headline&quot;: &quot;CentOS·RockyOS·Windows 기본 암호화 알고리즘과 현재 기준 안전 목록&quot;,
          &quot;description&quot;: &quot;CentOS/RockyOS/Windows에서 기본으로 쓰이는 암호화(해시·TLS·SSH·디스크) 알고리즘을 구분해 정리하고, 2026년 기준으로 권장/비권장 알고리즘을 한 번에 확인할 수 있게 정리했습니다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;datePublished&quot;: &quot;2026-05-27&quot;,
          &quot;dateModified&quot;: &quot;2026-05-27&quot;,
          &quot;image&quot;: &quot;https://example.com/replace-with-your-og-image.jpg&quot;,
          &quot;publisher&quot;: {
            &quot;@type&quot;: &quot;Organization&quot;,
            &quot;name&quot;: &quot;Tistory Blog&quot;
          }
        }
      ]
    }
    &lt;/script&gt;

    &lt;!--
      TAGS (관리자 입력용 10개):
      암호화 알고리즘,비밀번호 해시,yescrypt,SHA-512,Rocky Linux,CentOS,Windows 보안,Kerberos,TLS 1.3,OpenSSH
    --&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>지식 공유/ETC</category>
      <category>AES-GCM</category>
      <category>ChaCha20-Poly1305</category>
      <category>crypto policy</category>
      <category>Kerberos AES</category>
      <category>openssh</category>
      <category>SHA-512 crypt</category>
      <category>tls 1.3</category>
      <category>yescrypt</category>
      <category>비밀번호 해시</category>
      <category>암호화 알고리즘</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/525</guid>
      <comments>https://togethergrow.tistory.com/entry/CentOS%C2%B7RockyOS%C2%B7Windows-%EA%B8%B0%EB%B3%B8-%EC%95%94%ED%98%B8%ED%99%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EA%B3%BC-%ED%98%84%EC%9E%AC-%EA%B8%B0%EC%A4%80-%EC%95%88%EC%A0%84-%EB%AA%A9%EB%A1%9D#entry525comment</comments>
      <pubDate>Wed, 27 May 2026 09:32:24 +0900</pubDate>
    </item>
    <item>
      <title>CVE-2026-8153</title>
      <link>https://togethergrow.tistory.com/entry/CVE-2026-8153</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;CVE-2026-8153 대응 절차: 영향 확인부터 복구까지&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;CVE-2026-8153 취약점 공지를 받았지만 제품/버전 영향이 불명확할 때, 운영 환경에서 바로 적용 가능한 점검·분석·완화·복구·재발 방지 절차를 단계별로 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;CVE-2026-8153,CVE 대응,취약점 점검,패치 관리,영향 범위 분석,완화 조치,침해 대응,자산 식별,버전 확인,운영 보안&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;CVE-2026-8153 대응 절차: 영향 확인부터 복구까지&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;CVE-2026-8153 대응을 점검→분석→완화→복구→재발 방지 순서로 운영 기준에서 정리.&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://yourblog.example/security/cve-2026-8153&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://yourblog.example/static/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;CVE-2026-8153 대응 절차: 영향 확인부터 복구까지&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;CVE-2026-8153 공지 수신 시 영향 확인과 패치/완화 적용을 위한 체크리스트.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://yourblog.example/static/og-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .article-wrap{max-width:860px;margin:0 auto;padding:20px 16px;line-height:1.7}
    .article-wrap h1{font-size:1.9rem;letter-spacing:-0.02em;margin:0 0 12px}
    .article-wrap .lead{opacity:.9;margin:0 0 18px}
    .article-wrap section{padding:18px 0;border-top:1px solid rgba(0,0,0,.08)}
    .article-wrap section:first-of-type{border-top:0}
    .article-wrap h2{font-size:1.35rem;margin:0 0 10px}
    .article-wrap h3{font-size:1.05rem;margin:14px 0 8px}
    .article-wrap .callout{border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px 12px;margin:12px 0}
    .article-wrap .callout strong{display:inline-block;margin-bottom:6px}
    .article-wrap ul{margin:8px 0 0 20px}
    .article-wrap li{margin:6px 0}
    .article-wrap code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}
    .article-wrap pre{overflow:auto;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px;margin:10px 0}
    .article-wrap pre code{display:block;white-space:pre}
    .article-wrap .mini{opacity:.85;font-size:.95rem}
    .article-wrap .hr-gap{height:10px}
    .article-wrap .badge{display:inline-block;border:1px solid rgba(0,0,0,.16);border-radius:999px;padding:2px 10px;font-size:.92rem;opacity:.9}
    .article-wrap .grid{display:grid;grid-template-columns:1fr;gap:10px}
    .article-wrap .kpi{border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px}
    .article-wrap .kpi .t{font-size:.95rem;opacity:.85;margin:0 0 6px}
    .article-wrap .kpi .v{font-size:1.05rem;margin:0}
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;header&gt;
      &lt;h1&gt;CVE-2026-8153 대응 절차(일반오류형)&lt;/h1&gt;
      &lt;p class=&quot;lead&quot;&gt;
        &lt;span class=&quot;badge&quot;&gt;CVE-2026-8153&lt;/span&gt;처럼 “CVE 번호만 전달되고 제품/버전 정보가 뒤늦게 확정되는” 상황에서는,
        단말을 무작정 패치하기보다 &lt;b&gt;영향 범위 확정 → 즉시 완화 → 공식 패치 적용 → 사후 점검&lt;/b&gt; 순으로 움직이는 것이 안정적입니다.
      &lt;/p&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;핵심 요약&lt;/strong&gt;&lt;br&gt;
        - 1차 목표: 우리 자산 중 “해당 CVE가 적용될 수 있는 제품/버전”이 무엇인지 확정&lt;br&gt;
        - 2차 목표: 패치 전이라도 위험을 낮추는 완화(기능 비활성/접근 통제/권한 축소) 적용&lt;br&gt;
        - 3차 목표: 패치/업데이트로 근본 해결 후, 재발 방지(자산·버전 수집 자동화)로 운영 비용 절감&lt;br&gt;
      &lt;/div&gt;
    &lt;/header&gt;

    &lt;section id=&quot;overview&quot;&gt;
      &lt;h2&gt;개요&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;
      &lt;p&gt;
        CVE는 “취약점 식별자”일 뿐이고, 실제 대응은 &lt;b&gt;영향 제품(벤더/컴포넌트)과 취약 버전 범위&lt;/b&gt;가 확정되어야 시작됩니다.
        운영 환경에서는 CVE-2026-8153이 어떤 제품에 매핑되는지 확인하기 전까지도,
        “공격 표면을 줄이는 조치”는 선제적으로 적용할 수 있습니다.
      &lt;/p&gt;

      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;kpi&quot;&gt;
          &lt;p class=&quot;t&quot;&gt;지금 필요한 것&lt;/p&gt;
          &lt;p class=&quot;v&quot;&gt;&lt;b&gt;제품/버전 매핑&lt;/b&gt; + &lt;b&gt;우리 자산 목록&lt;/b&gt; + &lt;b&gt;패치/완화 계획&lt;/b&gt;&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;kpi&quot;&gt;
          &lt;p class=&quot;t&quot;&gt;피해야 할 것&lt;/p&gt;
          &lt;p class=&quot;v&quot;&gt;근거 없이 전체 서버 재설치/대규모 변경부터 시작하는 방식&lt;/p&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;실무 기준으로 보면&lt;/strong&gt;&lt;br&gt;
        CVE 번호만 받은 상태에서 가장 빠른 길은 “자산 기반 분류”입니다.&lt;br&gt;
        인터넷 노출, 원격 접속, 다중 사용자, CI/CD 빌드 서버 같은 구간은 우선순위를 올려 선제 완화를 적용합니다.&lt;br&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section id=&quot;environment&quot;&gt;
      &lt;h2&gt;환경&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;
      &lt;p&gt;
        아래 항목은 특정 OS/벤더에 종속되지 않는 공통 체크리스트입니다.
        CVE-2026-8153이 어떤 제품에 해당하든, 수집 항목이 갖춰져 있으면 대응 속도가 크게 빨라집니다.
      &lt;/p&gt;

      &lt;h3&gt;필수 수집(티켓/보고서에 그대로 붙이기)&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;자산 식별: 호스트명, IP, 역할(웹/DB/배치/관리), 중요도&lt;/li&gt;
        &lt;li&gt;설치 소프트웨어 목록(주요 런타임/서버/에이전트), 버전&lt;/li&gt;
        &lt;li&gt;외부 노출 여부(포트/URL), 인증 방식&lt;/li&gt;
        &lt;li&gt;패치 경로(자동 업데이트/중앙 배포 도구/수동), 유지보수 창(다운타임 가능 시간)&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;기본 명령 예시(환경에 맞게 선택)&lt;/h3&gt;
      &lt;pre&gt;&lt;code&gt;# Linux(배포판별 상이)
uname -a
cat /etc/os-release 2&gt;/dev/null || true
ps -ef | head
ss -lntp 2&gt;/dev/null | head || netstat -lntp 2&gt;/dev/null | head

# Windows(관리자 PowerShell)
systeminfo | Select-String &quot;OS Name&quot;,&quot;OS Version&quot;
Get-Process | Select-Object -First 10
Get-NetTCPConnection -State Listen | Select-Object -First 10&lt;/code&gt;&lt;/pre&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;포인트&lt;/strong&gt;&lt;br&gt;
        CVE-2026-8153이 특정 서비스(예: 웹/에이전트/라이브러리)와 연관된 경우가 많기 때문에,&lt;br&gt;
        “리스닝 포트/실행 프로세스/설치 버전” 3종 세트만 확보해도 영향 범위를 빠르게 좁힐 수 있습니다.&lt;br&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section id=&quot;symptoms&quot;&gt;
      &lt;h2&gt;증상&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;
      &lt;p class=&quot;mini&quot;&gt;
        CVE 유형(원격 코드 실행/권한 상승/정보 노출/서비스 거부 등)에 따라 증상은 달라집니다.
        다만 공격 악용이 가능한 취약점은 “명확한 장애” 없이도 조용히 진행될 수 있어,
        증상 기반 탐지보다는 &lt;b&gt;노출 여부와 패치 상태&lt;/b&gt;를 먼저 확정하는 것이 안전합니다.
      &lt;/p&gt;

      &lt;h3&gt;공통 의심 신호(참고)&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;최근 특정 프로세스가 반복 재시작/비정상 종료(서비스 거부 계열에서 흔함)&lt;/li&gt;
        &lt;li&gt;새로운 관리자 권한/계정 생성, 권한 그룹 변경(권한 상승 계열에서 흔함)&lt;/li&gt;
        &lt;li&gt;외부에서 비정상 트래픽 급증, 동일 경로로 반복 요청&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;로그 확보(최소)&lt;/h3&gt;
      &lt;pre&gt;&lt;code&gt;# 공통
# - 애플리케이션 로그
# - OS 보안/감사 로그
# - 웹/프록시/WAF 로그(외부 노출 시)

# Linux 예시(환경에 따라 파일 경로 상이)
journalctl -n 200 --no-pager 2&gt;/dev/null || true
tail -n 200 /var/log/syslog 2&gt;/dev/null || true
tail -n 200 /var/log/messages 2&gt;/dev/null || true&lt;/code&gt;&lt;/pre&gt;
    &lt;/section&gt;

    &lt;section id=&quot;first-check&quot;&gt;
      &lt;h2&gt;1차 점검&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;

      &lt;h3&gt;1) CVE-2026-8153의 “영향 제품/버전” 확정&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;보안 공지(벤더 권고/배포판 공지/패치 노트)에서 제품/컴포넌트, 취약 버전 범위를 확정&lt;/li&gt;
        &lt;li&gt;조직 자산의 설치 버전과 매칭하여 영향 여부를 분류(영향/비영향/확인 필요)&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;2) 영향 자산 우선순위 지정&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;인터넷 노출(공개 서비스, VPN, 게이트웨이) &amp;gt; 내부 중요 시스템(AD/배포/관리) &amp;gt; 일반 업무 단말&lt;/li&gt;
        &lt;li&gt;패치 지연이 예상되면, “완화 먼저” 적용 가능한 그룹부터 처리&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;3) 즉시 완화 후보 선정(패치 전)&lt;/h3&gt;
      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;완화(임시 방어) 예시&lt;/strong&gt;&lt;br&gt;
        - 외부 노출이면: 취약 기능이 포함된 경로/포트 차단(방화벽/WAF), 접근 IP 제한&lt;br&gt;
        - 내부 서비스면: 관리 콘솔/관리 포트 접근 통제, 관리자 계정 MFA 강화&lt;br&gt;
        - 권한 상승 우려면: 로컬 관리자 최소화, 서비스 계정 권한 축소, 실행 경로 제한(애플리케이션 제어)&lt;br&gt;
      &lt;/div&gt;

      &lt;pre&gt;&lt;code&gt;# 네트워크 관점에서 즉시 확인(외부 노출 여부 체크)
# - 어떤 포트가 열려 있는지, 어디에서 접속 가능한지
# - 관리 포트(원격 관리/콘솔)가 내부망으로 제한되어 있는지&lt;/code&gt;&lt;/pre&gt;
    &lt;/section&gt;

    &lt;section id=&quot;deep-analysis&quot;&gt;
      &lt;h2&gt;심화 분석&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;

      &lt;h3&gt;분기 1) 원격 악용 가능성(인터넷 노출 서비스)&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;공개 서비스의 엔드포인트/포트가 취약 컴포넌트에 직접 닿는지 확인&lt;/li&gt;
        &lt;li&gt;프록시/WAF/게이트웨이를 통과해야 하는 구조라면, 차단 룰 적용 가능 여부부터 검토&lt;/li&gt;
        &lt;li&gt;요청 패턴(반복/비정상 파라미터/고정 User-Agent 등)을 로그에서 타임라인으로 정리&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;분기 2) 권한 상승 가능성(로컬/내부 서비스)&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;취약 컴포넌트가 SYSTEM/root 권한으로 동작하는지, 또는 높은 권한과 상호작용하는지 확인&lt;/li&gt;
        &lt;li&gt;일반 사용자 계정이 해당 컴포넌트를 트리거할 수 있는 경로(로컬 IPC/파일/레지스트리/소켓)가 있는지 확인&lt;/li&gt;
        &lt;li&gt;관리자 입장에서 “권한 변경” 이벤트(계정/그룹/서비스/스케줄러)를 우선 점검&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;분기 3) 서비스 거부 가능성(가용성 영향)&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;크래시/재시작이 반복되면, 가용성뿐 아니라 “보안/감사 공백”도 동반되는지 확인&lt;/li&gt;
        &lt;li&gt;자원 고갈(디스크/메모리/핸들/스레드)과 연계되면, 임시로 리소스 상한/레이트 리밋을 적용&lt;/li&gt;
      &lt;/ul&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;실무 기준 팁&lt;/strong&gt;&lt;br&gt;
        CVE-2026-8153의 세부 정보가 확정되면, “우리 환경에서 가능한 공격 경로”를 1페이지로 요약해두는 게 중요합니다.&lt;br&gt;
        (노출 지점, 필요한 권한, 영향, 완화, 패치 계획)만 정리해도 커뮤니케이션 비용이 크게 줄어듭니다.&lt;br&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section id=&quot;recovery&quot;&gt;
      &lt;h2&gt;복구&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;

      &lt;h3&gt;1) 패치/업데이트 적용(근본 해결)&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;벤더/배포판이 제공하는 수정 버전으로 업데이트(가능하면 중앙 배포로 일괄 적용)&lt;/li&gt;
        &lt;li&gt;서비스 재시작/재부팅 필요 여부를 작업 계획에 포함&lt;/li&gt;
        &lt;li&gt;적용 후 “버전 값”을 다시 수집해 실제 반영 여부를 확인&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;2) 패치 전후 검증&lt;/h3&gt;
      &lt;pre&gt;&lt;code&gt;# (공통) 적용 전/후에 같은 항목을 비교
# - 설치 버전/빌드
# - 서비스 상태(정상 동작/크래시 재발 여부)
# - 외부 노출 포트/경로(불필요 노출 제거 여부)
# - 로그에서 이상 패턴 재발 여부&lt;/code&gt;&lt;/pre&gt;

      &lt;h3&gt;3) 침해 의심 시 조치(보수적 루트)&lt;/h3&gt;
      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;우선순위&lt;/strong&gt;&lt;br&gt;
        1) 격리(네트워크 분리) → 2) 증거 보존(로그/타임라인) → 3) 계정/자격 증명 회수 → 4) 복구(재배포/클린 설치 포함)&lt;br&gt;
      &lt;/div&gt;
      &lt;ul&gt;
        &lt;li&gt;권한 상승/원격 실행이 의심되면, 신뢰 회복을 위해 재배포(이미지 재설치)까지 고려&lt;/li&gt;
        &lt;li&gt;중요 서버는 서비스 계정/연동 키/토큰 교체를 같이 수행&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/section&gt;

    &lt;section id=&quot;prevention&quot;&gt;
      &lt;h2&gt;재발 방지&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;

      &lt;h3&gt;패치 운영&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;긴급 패치 트랙&lt;/strong&gt;: CVSS가 높거나 악용 정황이 있으면 별도 긴급 배포 경로로 처리&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;적용 검증 자동화&lt;/strong&gt;: “배포 성공”이 아니라 “버전/상태 수집”으로 적용을 증명&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;유지보수 창 표준화&lt;/strong&gt;: 서비스별 롤링/블루그린 등 다운타임 전략을 템플릿화&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;공격 표면 관리&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;노출 최소화&lt;/strong&gt;: 필요 없는 포트/관리 콘솔은 내부망 한정, 접근 제어 기본 적용&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;권한 최소화&lt;/strong&gt;: 서비스 계정 권한 축소, 관리자 권한의 일상 사용 제한&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;로그/감사 강화&lt;/strong&gt;: 패치 기간(전후 72시간)에는 관련 로그를 집중 모니터링&lt;/li&gt;
      &lt;/ul&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;운영 환경에서는&lt;/strong&gt;&lt;br&gt;
        CVE 대응을 “한 번의 작업”으로 끝내지 말고,&lt;br&gt;
        자산·버전 수집 → 노출 평가 → 패치/완화 → 사후 검증을 반복 가능한 루틴으로 만드는 것이 가장 큰 재발 방지입니다.&lt;br&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;홈&quot;,
              &quot;item&quot;: &quot;https://yourblog.example/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;보안&quot;,
              &quot;item&quot;: &quot;https://yourblog.example/security&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;CVE-2026-8153 대응 절차: 영향 확인부터 복구까지&quot;,
              &quot;item&quot;: &quot;https://yourblog.example/security/cve-2026-8153&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;TechArticle&quot;,
          &quot;headline&quot;: &quot;CVE-2026-8153 대응 절차(일반오류형)&quot;,
          &quot;description&quot;: &quot;CVE-2026-8153 취약점 공지를 받았지만 제품/버전 영향이 불명확할 때, 운영 환경에서 바로 적용 가능한 점검·분석·완화·복구·재발 방지 절차를 단계별로 정리합니다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;datePublished&quot;: &quot;2026-05-22&quot;,
          &quot;dateModified&quot;: &quot;2026-05-22&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://yourblog.example/security/cve-2026-8153&quot;
          },
          &quot;keywords&quot;: [
            &quot;CVE-2026-8153&quot;,
            &quot;CVE 대응&quot;,
            &quot;취약점 점검&quot;,
            &quot;패치 관리&quot;,
            &quot;영향 범위 분석&quot;,
            &quot;완화 조치&quot;,
            &quot;침해 대응&quot;,
            &quot;자산 식별&quot;,
            &quot;버전 확인&quot;,
            &quot;운영 보안&quot;
          ]
        }
      ]
    }
    &lt;/script&gt;

    &lt;!--
      태그(관리자 입력용, 10개):
      CVE-2026-8153, CVE 대응, 취약점 점검, 영향 범위, 패치 관리, 완화 조치, 침해 대응, 자산 관리, 버전 확인, 운영 보안
    --&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>IT 소식 뉴스/CVE CODE</category>
      <category>CVE 대응</category>
      <category>CVE-2026-8153</category>
      <category>버전 확인</category>
      <category>영향 범위 분석</category>
      <category>완화 조치</category>
      <category>운영 보안</category>
      <category>자산 식별</category>
      <category>취약점 점검</category>
      <category>침해 대응</category>
      <category>패치 관리</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/524</guid>
      <comments>https://togethergrow.tistory.com/entry/CVE-2026-8153#entry524comment</comments>
      <pubDate>Fri, 22 May 2026 14:10:34 +0900</pubDate>
    </item>
    <item>
      <title>Microsoft Defender 취약점 CVE-2026-41091, CVE-2026-45498</title>
      <link>https://togethergrow.tistory.com/entry/Microsoft-Defender-%EC%B7%A8%EC%95%BD%EC%A0%90-CVE-2026-41091-CVE-2026-45498</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;Microsoft Defender 취약점 CVE-2026-41091, CVE-2026-45498 대응 절차&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;Microsoft Defender에서 확인된 2건의 취약점(CVE-2026-41091 권한 상승, CVE-2026-45498 서비스 거부)이 실제 공격에 악용된 상황을 가정해, 운영 환경 기준 점검·완화·복구·재발 방지 흐름을 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;Microsoft Defender,CVE-2026-41091,CVE-2026-45498,권한 상승,EoP,서비스 거부,DoS,엔드포인트 보안,보안 업데이트,공격 악용&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;Microsoft Defender 취약점 CVE-2026-41091, CVE-2026-45498 대응 절차&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;권한 상승(CVE-2026-41091)·서비스 거부(CVE-2026-45498) 이슈를 점검→분석→복구→재발 방지 순서로 정리.&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://yourblog.example/security/defender-cve-2026-41091-45498&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://yourblog.example/static/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;Microsoft Defender 취약점 CVE-2026-41091, CVE-2026-45498 대응 절차&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;Defender 취약점 2건(권한 상승/서비스 거부) 대응 체크리스트.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://yourblog.example/static/og-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .article-wrap{max-width:860px;margin:0 auto;padding:20px 16px;line-height:1.7}
    .article-wrap h1{font-size:1.9rem;letter-spacing:-0.02em;margin:0 0 12px}
    .article-wrap .lead{opacity:.9;margin:0 0 18px}
    .article-wrap section{padding:18px 0;border-top:1px solid rgba(0,0,0,.08)}
    .article-wrap section:first-of-type{border-top:0}
    .article-wrap h2{font-size:1.35rem;margin:0 0 10px}
    .article-wrap h3{font-size:1.05rem;margin:14px 0 8px}
    .article-wrap .callout{border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px 12px;margin:12px 0}
    .article-wrap .callout strong{display:inline-block;margin-bottom:6px}
    .article-wrap ul{margin:8px 0 0 20px}
    .article-wrap li{margin:6px 0}
    .article-wrap code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}
    .article-wrap pre{overflow:auto;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px;margin:10px 0}
    .article-wrap pre code{display:block;white-space:pre}
    .article-wrap .mini{opacity:.85;font-size:.95rem}
    .article-wrap .hr-gap{height:10px}
    .article-wrap .badge{display:inline-block;border:1px solid rgba(0,0,0,.16);border-radius:999px;padding:2px 10px;font-size:.92rem;opacity:.9}
    .article-wrap .two-col{display:grid;grid-template-columns:1fr;gap:10px}
    .article-wrap .kpi{border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px}
    .article-wrap .kpi .t{font-size:.95rem;opacity:.85;margin:0 0 6px}
    .article-wrap .kpi .v{font-size:1.05rem;margin:0}
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;header&gt;
      &lt;h1&gt;Microsoft Defender 취약점 2건(CVE-2026-41091, CVE-2026-45498) 대응 매뉴얼&lt;/h1&gt;
      &lt;p class=&quot;lead&quot;&gt;
        마이크로소프트의 기본 보안 제품인 Defender에서 발견된 취약점 2건이 실제 공격에 악용된 것으로 알려진 상황에서는,
        “영향 확인 → 즉시 완화 → 패치 적용 → 사후 점검”의 속도가 곧 피해 규모를 결정합니다.
        &lt;span class=&quot;badge&quot;&gt;CVE-2026-41091(권한 상승)&lt;/span&gt;,
        &lt;span class=&quot;badge&quot;&gt;CVE-2026-45498(서비스 거부)&lt;/span&gt;를 운영 환경 기준으로 정리합니다.
      &lt;/p&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;핵심 요약&lt;/strong&gt;&lt;br&gt;
        - 권한 상승(EoP): 로컬 사용자/침입자가 Defender 관련 구성요소를 발판으로 SYSTEM급 권한을 노릴 수 있는 시나리오가 핵심&lt;br&gt;
        - 서비스 거부(DoS): Defender 기능이 비정상 종료/중단되거나 보호 상태가 흔들리는 형태로 “보안 공백”이 생길 수 있음&lt;br&gt;
        - 실무 기준으로 보면: “Defender 플랫폼/엔진/서명 버전”과 “Windows 보안 업데이트 적용 상태”를 먼저 고정하고, 그 다음 침해 징후를 확인하는 흐름이 안정적입니다.&lt;br&gt;
      &lt;/div&gt;
    &lt;/header&gt;

    &lt;section id=&quot;overview&quot;&gt;
      &lt;h2&gt;개요&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;
      &lt;p&gt;
        이번 이슈의 포인트는 “기본 탑재되는 보안 제품”에서 발생했고, 실제 악용 정황이 언급된다는 점입니다.
        즉, 단순히 특정 기능을 켠 일부 환경만의 문제가 아니라 “기본 보호 체계” 자체가 공격 표면이 될 수 있습니다.
      &lt;/p&gt;

      &lt;div class=&quot;two-col&quot;&gt;
        &lt;div class=&quot;kpi&quot;&gt;
          &lt;p class=&quot;t&quot;&gt;취약점 1&lt;/p&gt;
          &lt;p class=&quot;v&quot;&gt;&lt;b&gt;CVE-2026-41091&lt;/b&gt; · 권한 상승(EoP)&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;kpi&quot;&gt;
          &lt;p class=&quot;t&quot;&gt;취약점 2&lt;/p&gt;
          &lt;p class=&quot;v&quot;&gt;&lt;b&gt;CVE-2026-45498&lt;/b&gt; · 서비스 거부(DoS)&lt;/p&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;p class=&quot;mini&quot;&gt;
        이 문서는 “일반오류형(확장형 매뉴얼)” 구조로,
        개요 → 환경 → 증상 → 1차 점검 → 심화 분석 → 복구 → 재발 방지 순서로 바로 실행 가능한 체크리스트를 제공합니다.
      &lt;/p&gt;
    &lt;/section&gt;

    &lt;section id=&quot;environment&quot;&gt;
      &lt;h2&gt;환경&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;
      &lt;p&gt;
        Defender는 구성요소가 여러 겹(플랫폼/엔진/서명/서비스)이라 “정확히 무엇이 설치되어 있고 어떤 버전인지”부터 잡아야 합니다.
        운영 환경에서는 Windows 업데이트 정책(WSUS/Intune/ConfigMgr 등)과 함께 관리되는 경우가 많아,
        정책과 실제 단말 상태가 일치하는지 확인하는 과정이 중요합니다.
      &lt;/p&gt;

      &lt;h3&gt;사전 수집(권장)&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;OS 버전/빌드, 누적 업데이트 적용 여부&lt;/li&gt;
        &lt;li&gt;Microsoft Defender 플랫폼/엔진/서명 버전&lt;/li&gt;
        &lt;li&gt;Defender 관련 서비스 상태(실행/중지/비정상 종료 반복)&lt;/li&gt;
        &lt;li&gt;단말이 서버인지(Windows Server) 클라이언트인지, 그리고 조직 정책(실시간 보호/클라우드 보호 등)&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;버전/상태 확인(기본 명령)&lt;/h3&gt;
      &lt;pre&gt;&lt;code&gt;# PowerShell (관리자 권한 권장)
Get-ComputerInfo | Select-Object OsName, OsVersion, OsBuildNumber

# Defender 상태/버전
Get-MpComputerStatus | Select-Object AMProductVersion, AMEngineVersion, AntispywareSignatureVersion, AntivirusSignatureVersion, NISEngineVersion, NISSignatureVersion, RealTimeProtectionEnabled

# Defender 서비스(예: WinDefend 등) 상태 확인
Get-Service | Where-Object { $_.Name -match 'WinDefend|WdNisSvc|Sense' } | Select-Object Name, Status, StartType&lt;/code&gt;&lt;/pre&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;운영 환경에서는&lt;/strong&gt;&lt;br&gt;
        “정책상 최신”이라고 가정하지 말고, 실제 단말에서 버전 값을 수집해 표준값과 비교하세요.&lt;br&gt;
        특히 악용 정황이 있는 경우, 패치/플랫폼 업데이트가 일부 단말에서만 누락되는 순간 공격 표면이 열립니다.&lt;br&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section id=&quot;symptoms&quot;&gt;
      &lt;h2&gt;증상&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;
      &lt;p&gt;
        두 취약점은 성격이 다르기 때문에 증상도 다르게 나타날 수 있습니다.
        다만 “권한 상승”은 성공하면 흔적이 은밀할 수 있고, “서비스 거부”는 오히려 눈에 띄는 장애로 나타나는 편입니다.
      &lt;/p&gt;

      &lt;h3&gt;가능한 징후(참고)&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;b&gt;EoP(권한 상승) 관점&lt;/b&gt;: 일반 사용자 컨텍스트에서 SYSTEM 권한 프로세스/서비스가 비정상적으로 생성되거나, 권한이 급격히 상승한 실행 흐름이 관찰됨&lt;/li&gt;
        &lt;li&gt;&lt;b&gt;DoS(서비스 거부) 관점&lt;/b&gt;: Defender 서비스가 반복적으로 중지/재시작, 실시간 보호가 꺼짐, 스캔/업데이트 실패가 급증&lt;/li&gt;
        &lt;li&gt;보안 이벤트 로그에 Defender 관련 오류/크래시 이벤트가 특정 시점부터 집중&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;로그 확인(기본)&lt;/h3&gt;
      &lt;pre&gt;&lt;code&gt;# 이벤트 로그(Defender Operational)
# GUI: 이벤트 뷰어 &gt; Applications and Services Logs &gt; Microsoft &gt; Windows &gt; Windows Defender &gt; Operational
# PowerShell 예시:
Get-WinEvent -LogName &quot;Microsoft-Windows-Windows Defender/Operational&quot; -MaxEvents 50 | Select-Object TimeCreated, Id, LevelDisplayName, Message&lt;/code&gt;&lt;/pre&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;주의&lt;/strong&gt;&lt;br&gt;
        “서비스가 살아있다”는 것만으로 안전하다고 결론 내리기 어렵습니다.&lt;br&gt;
        악용 정황이 있는 이슈는 “패치/플랫폼 업데이트 적용”과 “침해 지표 점검”을 함께 진행해야 합니다.&lt;br&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section id=&quot;first-check&quot;&gt;
      &lt;h2&gt;1차 점검&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;

      &lt;h3&gt;1) 노출 단말 식별(자산 기준)&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;조직 자산 목록에서 Windows 단말/서버를 “Defender 사용 그룹”으로 묶어 대상 범위를 확정&lt;/li&gt;
        &lt;li&gt;중요도 기준으로 우선순위 부여: 인터넷 노출 서버, 원격 접속 사용자 단말, 관리 서버(AD/배포 서버) 우선&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;2) 업데이트 적용 상태 확인(우선순위 1)&lt;/h3&gt;
      &lt;p class=&quot;mini&quot;&gt;
        실제 악용 정황이 언급된 상황에서는 “취약 버전인지 여부”가 1차 분기점입니다.
        조직의 업데이트 경로(Windows Update/WSUS/Intune/ConfigMgr)를 기준으로,
        (1) 배포 성공 여부, (2) 재부팅 대기 여부, (3) 실패 코드 존재 여부를 함께 봅니다.
      &lt;/p&gt;
      &lt;pre&gt;&lt;code&gt;# 설치된 업데이트(간단 확인)
Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 20

# Windows Update 상태/로그는 운영 표준에 따라 확인(WSUS/Intune/ConfigMgr 포함)&lt;/code&gt;&lt;/pre&gt;

      &lt;h3&gt;3) Defender 보호 상태 확인(우선순위 2)&lt;/h3&gt;
      &lt;pre&gt;&lt;code&gt;# 핵심 플래그 빠르게 확인
(Get-MpComputerStatus).RealTimeProtectionEnabled
(Get-MpComputerStatus).AntivirusEnabled
(Get-MpComputerStatus).AMServiceEnabled&lt;/code&gt;&lt;/pre&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;빠른 판단 기준&lt;/strong&gt;&lt;br&gt;
        - 업데이트가 누락된 단말이 존재한다면: 그 그룹을 “긴급 패치/격리 우선”으로 분류&lt;br&gt;
        - DoS 징후(서비스 반복 중지)가 있다면: 운영 영향(보안 공백)을 고려해 임시 방어(네트워크 제한/정책 강화) 병행&lt;br&gt;
        - EoP 우려가 큰 단말(다중 사용자/원격 접속/개발 도구 설치 등)은 로그인/권한 정책을 즉시 강화하는 것이 현실적인 완화가 됩니다.&lt;br&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section id=&quot;deep-analysis&quot;&gt;
      &lt;h2&gt;심화 분석&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;

      &lt;h3&gt;1) 타임라인 기반 분석&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;이상 징후 시작 시각(Defender 오류/중지)과 사용자 로그인/프로세스 생성 이벤트를 같은 축으로 정렬&lt;/li&gt;
        &lt;li&gt;업데이트 배포 시각과 장애 발생 시각이 겹치는지 분리(업데이트 부작용 vs 공격 가능성)&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;2) 권한 상승(EoP) 가설 검증 포인트&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;비관리자 사용자에서 시작된 프로세스 트리가 SYSTEM 권한으로 급격히 전환되는 흐름&lt;/li&gt;
        &lt;li&gt;로컬 관리자 그룹/권한 정책 변경, 신규 서비스 등록, 스케줄러 작업 생성 여부&lt;/li&gt;
        &lt;li&gt;EDR/Defender for Endpoint가 있다면, 해당 단말의 경고 타임라인과 함께 확인&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;3) 서비스 거부(DoS) 가설 검증 포인트&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;Defender 서비스 크래시/재시작 패턴이 동일 이벤트 ID로 반복되는지&lt;/li&gt;
        &lt;li&gt;서명 업데이트 실패/엔진 업데이트 실패가 특정 네트워크 구간(프록시/SSL 검사 등)에서 집중되는지&lt;/li&gt;
        &lt;li&gt;자원 고갈(디스크/메모리)과 동반되는지(공격이든 오작동이든 결과적으로 보호 공백이 생김)&lt;/li&gt;
      &lt;/ul&gt;

      &lt;pre&gt;&lt;code&gt;# 최근 크래시/서비스 관련 이벤트(시스템 로그)
Get-WinEvent -LogName &quot;System&quot; -MaxEvents 200 |
  Where-Object { $_.Message -match &quot;WinDefend|WdNisSvc|Sense|Windows Defender&quot; } |
  Select-Object TimeCreated, Id, LevelDisplayName, Message&lt;/code&gt;&lt;/pre&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;실무 기준 팁&lt;/strong&gt;&lt;br&gt;
        “악용됨”이라는 정보가 있을 때는, 단순 패치로 끝내지 말고 최소한&lt;br&gt;
        (1) 의심 단말의 이벤트 로그 백업, (2) 핵심 지표(서비스 중지/보호 비활성) 추적, (3) 관리자 권한 변경 감사를 같이 남겨야 합니다.&lt;br&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section id=&quot;recovery&quot;&gt;
      &lt;h2&gt;복구&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;

      &lt;h3&gt;1) 즉시 완화(패치 전까지)&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;업데이트 누락 단말은 네트워크 접근을 제한(내부 중요 시스템 접근/관리 포트 접근 차단 등)&lt;/li&gt;
        &lt;li&gt;로컬 관리자 권한 최소화(임시 승격 차단, 관리 계정 사용 통제)&lt;/li&gt;
        &lt;li&gt;원격 접속 경로(예: RDP/SSH/VDI) 접근 제어 강화 및 MFA 적용 범위 확대&lt;/li&gt;
        &lt;li&gt;Defender 보호 기능이 비활성화된 단말은 “보호 공백” 상태로 분류해 우선 복구 대상 지정&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;2) 패치/플랫폼 업데이트 적용(근본 해결)&lt;/h3&gt;
      &lt;p class=&quot;mini&quot;&gt;
        조직 표준 업데이트 경로를 통해 해당 취약점에 대한 수정이 포함된 보안 업데이트/플랫폼 업데이트를 적용합니다.
        운영 환경에서는 “배포 성공”만 확인하지 말고, 적용 후 버전 값과 보호 상태가 정상인지까지 확인하는 것이 중요합니다.
      &lt;/p&gt;
      &lt;pre&gt;&lt;code&gt;# 업데이트 적용 후 버전/보호상태 재확인
Get-MpComputerStatus | Select-Object AMProductVersion, AMEngineVersion, AntivirusSignatureVersion, RealTimeProtectionEnabled, AMServiceEnabled

# 필요 시 재부팅 상태/적용 대기 여부도 함께 확인(조직 도구 기준)&lt;/code&gt;&lt;/pre&gt;

      &lt;h3&gt;3) 침해 의심 시 조치(보수적 루트)&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;의심 단말 격리(네트워크 분리) → 증거 보존(로그/타임라인) → 계정/자격 증명 회수(비밀번호 변경, 토큰 폐기)&lt;/li&gt;
        &lt;li&gt;관리자 계정/서비스 계정의 권한 변경 및 신규 계정 생성 여부 점검&lt;/li&gt;
        &lt;li&gt;필요 시 단말 재이미징/클린 설치까지 고려(권한 상승 성공 후에는 신뢰 회복이 어려울 수 있음)&lt;/li&gt;
      &lt;/ul&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;중요&lt;/strong&gt;&lt;br&gt;
        EoP가 실제로 성공했을 가능성이 있다면 “패치 적용”은 시작일 뿐이고,&lt;br&gt;
        관리자 권한 탈취/지속성(서비스·스케줄러·레지스트리·시작 프로그램) 점검이 함께 따라가야 합니다.&lt;br&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section id=&quot;prevention&quot;&gt;
      &lt;h2&gt;재발 방지&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;

      &lt;h3&gt;운영 정책&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;패치 SLA 설정&lt;/strong&gt;: 기본 보안 제품 취약점은 일반 앱보다 더 짧은 기한으로 “긴급 배포” 트랙을 별도로 운영&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;버전 수집 자동화&lt;/strong&gt;: 단말의 Defender 버전/보호 상태를 중앙에서 수집해 “누락/비활성”을 즉시 탐지&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;권한 관리 강화&lt;/strong&gt;: 로컬 관리자 최소화, JIT(필요 시점에만 승격) 및 MFA 확대로 EoP 성공 시 피해를 줄임&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;탐지/대응&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;보호 공백 알림&lt;/strong&gt;: 실시간 보호 OFF, 서비스 중지, 업데이트 실패 등은 즉시 티켓/알림으로 전환&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;중요 자산 분리&lt;/strong&gt;: 관리 서버/배포 서버/도메인 컨트롤러는 일반 사용자 단말과 네트워크·권한 측면에서 분리&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;사후 점검 루틴&lt;/strong&gt;: 대규모 패치 후 24~72시간 동안 Defender 오류/중지 이벤트를 집중 모니터링&lt;/li&gt;
      &lt;/ul&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;관리자 입장에서&lt;/strong&gt;&lt;br&gt;
        기본 보안 제품의 취약점은 “보안의 바닥”이 흔들리는 사건입니다.&lt;br&gt;
        따라서 이번처럼 악용 정황이 거론되면, 패치 적용 + 보호 공백 모니터링 + 권한 통제(최소권한)를 한 세트로 묶어 운영하는 것이 재발 방지의 핵심입니다.&lt;br&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;홈&quot;,
              &quot;item&quot;: &quot;https://yourblog.example/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;보안&quot;,
              &quot;item&quot;: &quot;https://yourblog.example/security&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;Microsoft Defender 취약점 CVE-2026-41091, CVE-2026-45498 대응 절차&quot;,
              &quot;item&quot;: &quot;https://yourblog.example/security/defender-cve-2026-41091-45498&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;TechArticle&quot;,
          &quot;headline&quot;: &quot;Microsoft Defender 취약점 2건(CVE-2026-41091, CVE-2026-45498) 대응 매뉴얼&quot;,
          &quot;description&quot;: &quot;Microsoft Defender에서 확인된 2건의 취약점(CVE-2026-41091 권한 상승, CVE-2026-45498 서비스 거부)이 실제 공격에 악용된 상황을 가정해, 운영 환경 기준 점검·완화·복구·재발 방지 흐름을 정리합니다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;datePublished&quot;: &quot;2026-05-22&quot;,
          &quot;dateModified&quot;: &quot;2026-05-22&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://yourblog.example/security/defender-cve-2026-41091-45498&quot;
          },
          &quot;keywords&quot;: [
            &quot;Microsoft Defender&quot;,
            &quot;CVE-2026-41091&quot;,
            &quot;CVE-2026-45498&quot;,
            &quot;권한 상승&quot;,
            &quot;서비스 거부&quot;,
            &quot;엔드포인트 보안&quot;,
            &quot;보안 업데이트&quot;,
            &quot;공격 악용&quot;,
            &quot;보호 공백&quot;,
            &quot;권한 통제&quot;
          ]
        }
      ]
    }
    &lt;/script&gt;

    &lt;!--
      태그(관리자 입력용, 10개):
      Microsoft Defender, CVE-2026-41091, CVE-2026-45498, 권한 상승, 서비스 거부, 엔드포인트 보안, 보안 업데이트, Windows 보안, 침해 대응, 패치 관리
    --&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>IT 소식 뉴스/CVE CODE</category>
      <category>CVE-2026-41091</category>
      <category>CVE-2026-45498</category>
      <category>DOS</category>
      <category>EOP</category>
      <category>Microsoft Defender</category>
      <category>공격 악용</category>
      <category>권한 상승</category>
      <category>보안 업데이트</category>
      <category>서비스 거부</category>
      <category>엔드포인트 보안</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/523</guid>
      <comments>https://togethergrow.tistory.com/entry/Microsoft-Defender-%EC%B7%A8%EC%95%BD%EC%A0%90-CVE-2026-41091-CVE-2026-45498#entry523comment</comments>
      <pubDate>Fri, 22 May 2026 14:05:58 +0900</pubDate>
    </item>
    <item>
      <title>[ORACLE] SPLIT 수행 시 ORA-600 발생 원인과 점검 절차</title>
      <link>https://togethergrow.tistory.com/entry/ORACLE-SPLIT-%EC%88%98%ED%96%89-%EC%8B%9C-ORA-600-%EB%B0%9C%EC%83%9D-%EC%9B%90%EC%9D%B8%EA%B3%BC-%EC%A0%90%EA%B2%80-%EC%A0%88%EC%B0%A8</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;SPLIT 수행 시 ORA-600 발생 원인과 점검 절차&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;Oracle에서 SPLIT(파티션/서브파티션/세그먼트 관련 작업) 수행 중 ORA-600이 발생할 때, 1차 점검부터 심화 분석, 복구 및 재발 방지까지 운영 환경 기준으로 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;ORA-600,SPLIT,Oracle,파티션 SPLIT,인덱스 재구성,세그먼트 손상,온라인 DDL,DBMS_REPAIR,Data Pump,ALERT 로그,trace&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;SPLIT 수행 시 ORA-600 발생 원인과 점검 절차&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;SPLIT 수행 중 ORA-600 발생 시 원인 후보(오브젝트/인덱스/UNDO/버그)별 점검 → 복구 → 재발 방지까지 단계별 체크리스트.&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://yourblog.example/oracle/ora-600-split&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://yourblog.example/static/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;SPLIT 수행 시 ORA-600 발생 원인과 점검 절차&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;SPLIT(파티션 등) 수행 중 ORA-600을 빠르게 좁혀가는 점검/복구 절차 정리.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://yourblog.example/static/og-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .article-wrap{max-width:860px;margin:0 auto;padding:20px 16px;line-height:1.7}
    .article-wrap h1{font-size:1.9rem;letter-spacing:-0.02em;margin:0 0 12px}
    .article-wrap .lead{opacity:.9;margin:0 0 18px}
    .article-wrap section{padding:18px 0;border-top:1px solid rgba(0,0,0,.08)}
    .article-wrap section:first-of-type{border-top:0}
    .article-wrap h2{font-size:1.35rem;margin:0 0 10px}
    .article-wrap h3{font-size:1.05rem;margin:14px 0 8px}
    .article-wrap .callout{border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px 12px;margin:12px 0}
    .article-wrap .callout strong{display:inline-block;margin-bottom:6px}
    .article-wrap ul{margin:8px 0 0 20px}
    .article-wrap li{margin:6px 0}
    .article-wrap code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}
    .article-wrap pre{overflow:auto;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px;margin:10px 0}
    .article-wrap pre code{display:block;white-space:pre}
    .article-wrap .mini{opacity:.85;font-size:.95rem}
    .article-wrap .hr-gap{height:10px}
    .article-wrap .grid{display:grid;grid-template-columns:1fr;gap:10px}
    .article-wrap .badge{display:inline-block;border:1px solid rgba(0,0,0,.16);border-radius:999px;padding:2px 10px;font-size:.92rem;opacity:.9}
    .article-wrap .kbd{border:1px solid rgba(0,0,0,.14);border-bottom-width:2px;border-radius:8px;padding:0 6px;font-family:inherit;font-size:.92rem}
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;header&gt;
      &lt;h1&gt;SPLIT 수행 시 ORA-600 발생 원인과 점검 절차&lt;/h1&gt;
      &lt;p class=&quot;lead&quot;&gt;
        ORA-600(Internal error)은 “원인 코드/인자(argument)”에 따라 성격이 크게 달라집니다.
        특히 파티션 &lt;span class=&quot;badge&quot;&gt;SPLIT&lt;/span&gt; 같은 DDL 작업 중 ORA-600이 뜨면,
        (1) 오브젝트/인덱스/UNDO/시스템 상태 문제인지, (2) 특정 버전 결함(버그)인지부터 빠르게 갈라서 보는 게 핵심입니다.
      &lt;/p&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;먼저 결론부터&lt;/strong&gt;&lt;br&gt;
        - ORA-600은 “코드(첫 번째 argument) + trace/alert”가 없으면 정답을 못 좁힙니다.&lt;br&gt;
        - 운영 환경에서는 “재현/우회”보다 &lt;b&gt;원인 코드 확보 → 영향 범위 확정 → 안전한 복구 루트&lt;/b&gt;가 우선입니다.&lt;br&gt;
        - 실무 기준으로 보면, SPLIT 대상 테이블/인덱스의 상태(통계/무결성/세그먼트)와 DDL 방식(ONLINE/병렬/로깅)이 흔한 분기점입니다.&lt;br&gt;
      &lt;/div&gt;
    &lt;/header&gt;

    &lt;section id=&quot;overview&quot;&gt;
      &lt;h2&gt;개요&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;
      &lt;p&gt;
        이 문서는 “SPLIT 수행 시 ORA-600”을 일반오류형(확장형 매뉴얼) 흐름으로 정리합니다.
        SPLIT의 의미는 환경마다 다를 수 있지만, 보통 다음 중 하나입니다.
      &lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;파티션/서브파티션 &lt;code&gt;SPLIT PARTITION&lt;/code&gt; / &lt;code&gt;SPLIT SUBPARTITION&lt;/code&gt;&lt;/li&gt;
        &lt;li&gt;인덱스 파티션/서브파티션 관련 DDL&lt;/li&gt;
        &lt;li&gt;특정 기능/제품에서 “split”이라는 작업 명칭을 DDL로 래핑한 경우&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p class=&quot;mini&quot;&gt;
        따라서 아래 절차는 “ORA-600 argument + 대상 오브젝트 + 수행한 정확한 DDL”을 기준으로 공통 분기하도록 구성했습니다.
      &lt;/p&gt;
    &lt;/section&gt;

    &lt;section id=&quot;environment&quot;&gt;
      &lt;h2&gt;환경&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;필수 수집(이 정보가 없으면 분석이 멈춥니다)&lt;/strong&gt;&lt;br&gt;
          - DB 버전/패치 레벨: &lt;code&gt;v$version&lt;/code&gt;, RU/RUR 적용 여부&lt;br&gt;
          - 발생 시각(분 단위)과 세션 정보: SID/SERIAL#, username, module/action&lt;br&gt;
          - 수행한 DDL 원문: &lt;code&gt;ALTER TABLE ... SPLIT ...&lt;/code&gt; 전체&lt;br&gt;
          - alert.log 및 해당 ORA-600 trace 파일 경로/내용&lt;br&gt;
        &lt;/div&gt;
        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;자주 영향 받는 옵션(있으면 같이 수집)&lt;/strong&gt;&lt;br&gt;
          - ONLINE DDL 사용 여부, 병렬/로깅/압축/암호화 옵션&lt;br&gt;
          - UNDO/TEMP 여유, REDO 발생량, 아카이브 지연 여부&lt;br&gt;
          - Data Guard/Standby 적용 여부(redo apply 지연 포함)&lt;br&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;h3&gt;기본 확인 SQL&lt;/h3&gt;
      &lt;pre&gt;&lt;code&gt;-- 버전/플랫폼
select * from v$version;

-- 인스턴스/DB 정보
select instance_name, host_name, version, startup_time from v$instance;
select name, open_mode, database_role from v$database;

-- 파라미터(온라인 DDL, 병렬 등 분석에 자주 씀)
show parameter parallel;
show parameter undo;
show parameter db_securefile;&lt;/code&gt;&lt;/pre&gt;
    &lt;/section&gt;

    &lt;section id=&quot;symptoms&quot;&gt;
      &lt;h2&gt;증상&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;
      &lt;p&gt;
        SPLIT 실행 도중 ORA-600이 발생하면 DDL이 실패하고, 상황에 따라 “부분적으로 생성된 세그먼트/인덱스”가 남거나,
        메타데이터는 진행되었지만 데이터 이동이 중단된 상태가 될 수 있습니다(환경/옵션에 따라 다름).
      &lt;/p&gt;

      &lt;h3&gt;대표적인 관찰 포인트&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;DDL이 즉시 실패하는지, 일정 시간 진행 후 실패하는지(대개 데이터 이동/인덱스 처리 시점에서 갈립니다)&lt;/li&gt;
        &lt;li&gt;같은 DDL을 반복하면 재현되는지(재현되면 버그/오브젝트 손상 가능성이 커짐)&lt;/li&gt;
        &lt;li&gt;특정 파티션/서브파티션 범위에서만 발생하는지(“특정 키 범위 데이터” 또는 “특정 세그먼트” 의심)&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;로그 예시(형식 참고)&lt;/h3&gt;
      &lt;pre&gt;&lt;code&gt;ORA-00600: internal error code, arguments: [arg0], [arg1], [arg2], ...
ORA-06512: at line ...

-- alert.log에 trace 파일 경로가 같이 찍히는 경우가 많음
Errors in file /u01/app/oracle/diag/rdbms/DB/trace/DB_ora_12345.trc:
ORA-00600: internal error code, arguments: [...]&lt;/code&gt;&lt;/pre&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;중요&lt;/strong&gt;&lt;br&gt;
        ORA-600의 첫 번째 argument(예: &lt;code&gt;[k...], [q...], [d...], [kc...], [kts...]&lt;/code&gt; 등)를 확보해야 분기할 수 있습니다.&lt;br&gt;
        이 문서의 점검 흐름은 “argument 기반으로 범위를 줄여가는” 방식입니다.
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section id=&quot;first-check&quot;&gt;
      &lt;h2&gt;1차 점검&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;

      &lt;h3&gt;1) ORA-600 argument와 trace 파일 위치 확보&lt;/h3&gt;
      &lt;pre&gt;&lt;code&gt;-- trace 파일이 어디에 생성되는지 빠르게 확인
select value as diag_trace
from v$diag_info
where name = 'Diag Trace';

-- 최근 발생한 에러를 세션/시간 기준으로 찾는 보조(권한/옵션에 따라 다름)
-- 가능하면 alert.log에서 발생 시각 주변을 우선 확인&lt;/code&gt;&lt;/pre&gt;

      &lt;h3&gt;2) SPLIT 대상 오브젝트 식별(테이블/파티션/인덱스)&lt;/h3&gt;
      &lt;pre&gt;&lt;code&gt;-- SPLIT 대상 테이블/파티션 확인 (예시: 소유자/테이블명은 교체)
select owner, table_name, partitioned
from dba_tables
where owner = upper(:owner) and table_name = upper(:table_name);

select owner, table_name, partition_name, tablespace_name, status
from dba_tab_partitions
where owner = upper(:owner) and table_name = upper(:table_name)
order by partition_position;

-- 관련 인덱스 상태
select owner, index_name, status, partitioned
from dba_indexes
where table_owner = upper(:owner) and table_name = upper(:table_name)
order by index_name;&lt;/code&gt;&lt;/pre&gt;

      &lt;h3&gt;3) 즉시 위험 신호 점검(공간/UNDO/아카이브)&lt;/h3&gt;
      &lt;pre&gt;&lt;code&gt;-- 테이블스페이스 여유 (간단 확인)
select tablespace_name, round(sum(bytes)/1024/1024) as mb
from dba_free_space
group by tablespace_name
order by mb desc;

-- UNDO 사용량/설정 확인(환경에 따라 뷰/권한 차이 있음)
show parameter undo_tablespace;
show parameter undo_retention;

-- 아카이브 모드/적용 지연(해당 시)
archive log list;&lt;/code&gt;&lt;/pre&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;1차 점검에서 자주 나오는 결론&lt;/strong&gt;&lt;br&gt;
        - 공간/UNDO/TEMP 부족이 보이면: ORA-600이 “2차 증상”일 가능성도 있어 먼저 해소 후 재시도&lt;br&gt;
        - 인덱스/파티션 상태가 INVALID/UNUSABLE이면: SPLIT 도중 내부 경로에서 ORA-600 유발 가능성 상승&lt;br&gt;
        - 같은 argument로 100% 재현되면: 특정 오브젝트 손상 또는 버전 결함(패치 필요) 방향으로 무게중심 이동&lt;br&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section id=&quot;deep-analysis&quot;&gt;
      &lt;h2&gt;심화 분석&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;

      &lt;h3&gt;분기 1) 오브젝트/세그먼트 손상 의심&lt;/h3&gt;
      &lt;p class=&quot;mini&quot;&gt;
        SPLIT은 데이터 이동/인덱스 갱신을 동반하는 경우가 많아서, 특정 파티션/인덱스 세그먼트의 미세한 손상이 트리거가 될 수 있습니다.
      &lt;/p&gt;
      &lt;pre&gt;&lt;code&gt;-- 권한이 있으면 가장 먼저 검토(테이블/인덱스)
analyze table &amp;lt;OWNER&amp;gt;.&amp;lt;TABLE&amp;gt; validate structure cascade;

-- 파티션 단위로 가능한 경우(환경에 따라 지원/제약 있음)
analyze table &amp;lt;OWNER&amp;gt;.&amp;lt;TABLE&amp;gt; partition (&amp;lt;PARTITION_NAME&amp;gt;) validate structure cascade;

-- 인덱스 단독 점검
analyze index &amp;lt;OWNER&amp;gt;.&amp;lt;INDEX_NAME&amp;gt; validate structure;&lt;/code&gt;&lt;/pre&gt;
      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;해석 팁&lt;/strong&gt;&lt;br&gt;
        - validate 결과에서 체인(row chaining) 자체는 “손상”이 아닙니다.&lt;br&gt;
        - 오류/부정합 메시지, 또는 특정 파티션에서만 실패하는 패턴이 나오면 “해당 파티션/세그먼트” 중심으로 복구를 설계합니다.&lt;br&gt;
      &lt;/div&gt;

      &lt;h3&gt;분기 2) ONLINE/병렬/특정 옵션 조합 이슈(버그 포함) 의심&lt;/h3&gt;
      &lt;p class=&quot;mini&quot;&gt;
        운영 환경에서는 ONLINE DDL, 병렬 DDL, 압축/암호화, LOB(SecureFile), 파티션 인덱스 구성이 겹치면 내부 경로가 복잡해집니다.
        ORA-600이 특정 옵션에서만 재현되면 “옵션 제거로 우회 가능 여부”를 먼저 확인하는 게 빠릅니다.
      &lt;/p&gt;
      &lt;pre&gt;&lt;code&gt;-- 예시: ONLINE/병렬을 제거한 형태로 재현성 비교(DDL 문장은 환경에 맞게 조정)
-- (1) 병렬 제거
alter session disable parallel dml;
alter session disable parallel ddl;

-- (2) ONLINE 옵션 제거(가능한 경우)
-- alter table ... split partition ...;  -- ONLINE 키워드/옵션을 제외한 변형으로 테스트&lt;/code&gt;&lt;/pre&gt;

      &lt;h3&gt;분기 3) 동시성/락/장시간 트랜잭션 영향&lt;/h3&gt;
      &lt;pre&gt;&lt;code&gt;-- SPLIT 대상 테이블에 장시간 트랜잭션/락이 걸려있는지 확인(대표 쿼리 예시)
select
  s.sid, s.serial#, s.username, s.status, s.module,
  l.type, l.lmode, l.request
from v$session s
join v$lock l on s.sid = l.sid
where s.username is not null
order by s.sid;&lt;/code&gt;&lt;/pre&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;운영 환경에서는&lt;/strong&gt;&lt;br&gt;
        SPLIT 같은 변경 작업은 “동시성”이 원인인 경우가 많습니다.&lt;br&gt;
        락/장트랜잭션을 정리하고, 배치/피크 시간대를 피해서 재현성(발생/미발생)을 비교하면 원인 좁히기가 빨라집니다.
      &lt;/div&gt;

      &lt;h3&gt;분기 4) incident/trace에서 ORA-600 세부 코드 확보&lt;/h3&gt;
      &lt;p class=&quot;mini&quot;&gt;
        trace 파일에는 ORA-600 argument 외에 call stack, object id, SQL text 조각이 남는 경우가 있습니다.
        “어떤 오브젝트(OBJ#)에서 났는지”가 나오면, 손상/구성 이슈를 매우 빠르게 특정할 수 있습니다.
      &lt;/p&gt;
      &lt;pre&gt;&lt;code&gt;-- OBJ#(object id)가 trace에 있다면 매핑
select owner, object_name, object_type, subobject_name
from dba_objects
where object_id = :obj_id;&lt;/code&gt;&lt;/pre&gt;
    &lt;/section&gt;

    &lt;section id=&quot;recovery&quot;&gt;
      &lt;h2&gt;복구&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;

      &lt;h3&gt;1) 즉시 안전 조치(재시도 전)&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;실패한 DDL이 남긴 중간 오브젝트(임시 세그먼트/UNUSABLE 인덱스) 여부 확인&lt;/li&gt;
        &lt;li&gt;업무 영향이 큰 경우: SPLIT 작업을 중단하고 “현 상태 백업/스냅샷” 확보(논리/물리 중 가능한 방식)&lt;/li&gt;
        &lt;li&gt;같은 DDL을 무작정 반복 실행하지 않기(오브젝트 상태를 더 꼬이게 만들 수 있음)&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;2) 인덱스 상태 정리(UNUSABLE/INVALID 대응)&lt;/h3&gt;
      &lt;pre&gt;&lt;code&gt;-- UNUSABLE 인덱스/파티션 인덱스가 있다면 재구성(예시)
alter index &amp;lt;OWNER&amp;gt;.&amp;lt;INDEX_NAME&amp;gt; rebuild;

-- 파티션 인덱스라면(예시)
-- alter index &amp;lt;OWNER&amp;gt;.&amp;lt;INDEX_NAME&amp;gt; rebuild partition &amp;lt;PARTITION_NAME&amp;gt;;&lt;/code&gt;&lt;/pre&gt;

      &lt;h3&gt;3) 오브젝트 손상이 의심될 때의 복구 루트(현실적인 선택지)&lt;/h3&gt;
      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;권장 순서(보수적으로)&lt;/strong&gt;&lt;br&gt;
        1) 영향 범위 최소화(문제 파티션/서브파티션만 분리) → 2) 논리 복구(Data Pump/CTAS) → 3) 마지막 수단으로 repair 계열 고려&lt;br&gt;
      &lt;/div&gt;
      &lt;pre&gt;&lt;code&gt;-- (A) 문제 범위가 파티션 단위로 고립 가능하면:
-- 1) 대상 파티션을 별도 테이블로 추출(CTAS) 후 교체 전략 검토
create table &amp;lt;OWNER&amp;gt;.&amp;lt;NEW_TABLE&amp;gt; as
select /*+ parallel */ * from &amp;lt;OWNER&amp;gt;.&amp;lt;TABLE&amp;gt; partition (&amp;lt;PARTITION_NAME&amp;gt;);

-- (B) 논리 백업/복구(예: Data Pump) 루트는 운영 정책에 맞게 진행
-- expdp/impdp는 옵션과 다운타임 전략이 중요하므로 사내 표준 절차에 따르는 것을 권장&lt;/code&gt;&lt;/pre&gt;

      &lt;h3&gt;4) 버전 결함(패치) 방향일 때&lt;/h3&gt;
      &lt;p&gt;
        ORA-600 argument가 특정 버전/RU 조합에서 알려진 케이스와 매칭되면, 가장 안정적인 해결은 “권장 RU/RUR 적용(또는 패치셋 업데이트)”입니다.
        운영 환경에서는 패치 전까지 아래 우회가 도움이 되는 경우가 있습니다.
      &lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;ONLINE 옵션 제거 후 오프라인 시간 확보하여 수행&lt;/li&gt;
        &lt;li&gt;병렬/특정 압축 옵션 제거 후 수행&lt;/li&gt;
        &lt;li&gt;인덱스를 사전에 rebuild 후 수행&lt;/li&gt;
        &lt;li&gt;피크 시간 회피(동시성/락 이슈 차단)&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/section&gt;

    &lt;section id=&quot;prevention&quot;&gt;
      &lt;h2&gt;재발 방지&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;

      &lt;h3&gt;운영 절차 측면&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;변경 전 점검 체크리스트&lt;/strong&gt;: 대상 테이블/인덱스 상태, 공간/UNDO/TEMP 여유, 동시성(락/장트랜잭션) 확인을 표준화&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;DDL 실행 템플릿&lt;/strong&gt;: 기본은 병렬 OFF, ONLINE은 필요 시에만, 로깅/압축 옵션은 단계적으로 적용&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;재현성 기록&lt;/strong&gt;: 동일 DDL/동일 argument 재현 여부, 발생 시각, 세션 정보, trace 파일을 티켓에 남겨 다음 대응 시간을 줄이기&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;기술 측면&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;정기 패치 정책&lt;/strong&gt;: Oracle RU/RUR(또는 조직 표준 패치 정책) 주기를 고정하고, 변경 작업은 패치 후 수행을 기본으로 설계&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;무결성 점검 루틴&lt;/strong&gt;: 대형 파티션 테이블은 정기적으로 인덱스/세그먼트 상태 점검(업무 영향 최소 시간대)&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;백업/복구 리허설&lt;/strong&gt;: SPLIT 실패 시 “되돌리기/대체(CTAS/impdp)” 루트의 소요시간을 사전에 검증&lt;/li&gt;
      &lt;/ul&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;관리자 입장에서&lt;/strong&gt;&lt;br&gt;
        ORA-600은 “원인 확정”보다 “안전한 복구와 재발 방지”가 먼저입니다.&lt;br&gt;
        SPLIT 같은 구조 변경은 작업 전 표준 점검(공간/UNDO/락/인덱스 상태)을 습관화하면, 같은 유형의 장애가 크게 줄어듭니다.
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;홈&quot;,
              &quot;item&quot;: &quot;https://yourblog.example/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;DB 운영&quot;,
              &quot;item&quot;: &quot;https://yourblog.example/db&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;SPLIT 수행 시 ORA-600 발생 원인과 점검 절차&quot;,
              &quot;item&quot;: &quot;https://yourblog.example/oracle/ora-600-split&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;TechArticle&quot;,
          &quot;headline&quot;: &quot;SPLIT 수행 시 ORA-600 발생 원인과 점검 절차&quot;,
          &quot;description&quot;: &quot;Oracle에서 SPLIT(파티션/서브파티션/세그먼트 관련 작업) 수행 중 ORA-600이 발생할 때, 1차 점검부터 심화 분석, 복구 및 재발 방지까지 운영 환경 기준으로 정리합니다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;datePublished&quot;: &quot;2026-05-22&quot;,
          &quot;dateModified&quot;: &quot;2026-05-22&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://yourblog.example/oracle/ora-600-split&quot;
          },
          &quot;keywords&quot;: [
            &quot;ORA-600&quot;,
            &quot;SPLIT&quot;,
            &quot;Oracle&quot;,
            &quot;파티션 SPLIT&quot;,
            &quot;인덱스 재구성&quot;,
            &quot;세그먼트 손상&quot;,
            &quot;온라인 DDL&quot;,
            &quot;DBMS_REPAIR&quot;,
            &quot;ALERT 로그&quot;,
            &quot;trace&quot;
          ]
        }
      ]
    }
    &lt;/script&gt;

    &lt;!--
      태그(관리자 입력용, 10개):
      ORA-600, Oracle, 파티션, SPLIT PARTITION, 온라인 DDL, 인덱스 UNUSABLE, 세그먼트 손상, UNDO, alert.log, trace 분석
    --&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>지식 공유/DBMS</category>
      <category>ALERT 로그</category>
      <category>Data Pump</category>
      <category>DBMS_REPAIR</category>
      <category>ORA-600</category>
      <category>oracle</category>
      <category>Split</category>
      <category>세그먼트 손상</category>
      <category>온라인 DDL</category>
      <category>인덱스 재구성</category>
      <category>파티션 SPLIT</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/522</guid>
      <comments>https://togethergrow.tistory.com/entry/ORACLE-SPLIT-%EC%88%98%ED%96%89-%EC%8B%9C-ORA-600-%EB%B0%9C%EC%83%9D-%EC%9B%90%EC%9D%B8%EA%B3%BC-%EC%A0%90%EA%B2%80-%EC%A0%88%EC%B0%A8#entry522comment</comments>
      <pubDate>Fri, 22 May 2026 14:02:57 +0900</pubDate>
    </item>
    <item>
      <title>CVE-2026-43284, CVE-2026-43500</title>
      <link>https://togethergrow.tistory.com/entry/CVE-2026-43284-CVE-2026-43500</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;CVE-2026-43284, CVE-2026-43500 점검과 완화 방법&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;Linux 커널에서 공개된 CVE-2026-43284 및 CVE-2026-43500(Dirty Frag) 취약점에 대해, 운영 환경에서 바로 적용 가능한 1차 점검부터 심화 분석, 복구 및 재발 방지까지 단계별로 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;CVE-2026-43284,CVE-2026-43500,Dirty Frag,Linux 커널,로컬 권한 상승,LPE,esp4,esp6,rxrpc,IPsec,AFS,RxRPC&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;CVE-2026-43284, CVE-2026-43500 점검과 완화 방법&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;CVE-2026-43284 및 CVE-2026-43500(Dirty Frag) 취약점: 증상, 1차 점검, 심화 분석, 복구/재발 방지를 운영 기준으로 정리.&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://yourblog.example/security/cve-2026-43284-43500&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://yourblog.example/static/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;CVE-2026-43284, CVE-2026-43500 점검과 완화 방법&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;CVE-2026-43284 및 CVE-2026-43500 취약점 대응을 점검→분석→복구→재발 방지 순서로 정리.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://yourblog.example/static/og-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .article-wrap{max-width:860px;margin:0 auto;padding:20px 16px;line-height:1.7}
    .article-wrap h1{font-size:1.9rem;letter-spacing:-0.02em;margin:0 0 12px}
    .article-wrap .lead{opacity:.9;margin:0 0 18px}
    .article-wrap section{padding:18px 0;border-top:1px solid rgba(0,0,0,.08)}
    .article-wrap section:first-of-type{border-top:0}
    .article-wrap h2{font-size:1.35rem;margin:0 0 10px}
    .article-wrap h3{font-size:1.05rem;margin:14px 0 8px}
    .article-wrap .callout{border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px 12px;margin:12px 0}
    .article-wrap .callout strong{display:inline-block;margin-bottom:6px}
    .article-wrap ul{margin:8px 0 0 20px}
    .article-wrap li{margin:6px 0}
    .article-wrap code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}
    .article-wrap pre{overflow:auto;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px;margin:10px 0}
    .article-wrap pre code{display:block;white-space:pre}
    .article-wrap .mini{opacity:.85;font-size:.95rem}
    .article-wrap .hr-gap{height:10px}
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;header&gt;
      &lt;h1&gt;CVE-2026-43284 및 CVE-2026-43500 취약점 점검과 완화 절차&lt;/h1&gt;
      &lt;p class=&quot;lead&quot;&gt;
        CVE-2026-43284(커널 IPsec ESP/XFRM 계열)와 CVE-2026-43500(커널 RxRPC 계열)은 함께 “Dirty Frag”로 묶여 언급되는 로컬 권한 상승(LPE) 이슈로 알려져 있습니다.
        운영 환경에서는 “패치 적용”이 최종 해법이지만, 배포 지연이나 변경 동결이 있는 경우에는 모듈 차단 같은 완화가 현실적인 1차 대응이 됩니다.
      &lt;/p&gt;
      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;핵심 요약&lt;/strong&gt;&lt;br&gt;
        - 위협 모델: 로컬 계정(SSH 포함) 또는 컨테이너 워크로드가 “호스트 커널 기능”을 악용할 수 있는 상황에서 위험도 상승&lt;br&gt;
        - 대상 영역: ESP(IPsec) 모듈(예: esp4/esp6) 및 RxRPC 모듈(rxrpc) 관련 경로가 관여&lt;br&gt;
        - 우선순위: (1) 현재 커널/모듈 사용 여부 파악 → (2) 즉시 완화(차단/언로드) → (3) 벤더 커널 업데이트로 복구&lt;br&gt;
      &lt;/div&gt;
    &lt;/header&gt;

    &lt;section id=&quot;overview&quot;&gt;
      &lt;h2&gt;개요&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;
      &lt;p&gt;
        CVE-2026-43284는 Linux 커널 네트워킹/암호화 스택 중 IPsec ESP 처리 경로와 연관되어 언급되며, CVE-2026-43500은 RxRPC 서브시스템 경로와 연관되어 공개되었습니다.
        두 이슈는 “로컬 권한 상승(LPE)” 관점에서 함께 다뤄지는 경우가 많고, 실무 기준으로 보면 “해당 모듈이 실제로 로드/사용 중인지”가 대응 우선순위를 가르는 기준이 됩니다.
      &lt;/p&gt;

      &lt;h3&gt;영향 범위(운영 관점)&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;로컬 사용자 권한 상승&lt;/strong&gt;: 일반 사용자 권한이 root 수준으로 상승할 수 있는 시나리오가 문제의 중심입니다.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;컨테이너 환경&lt;/strong&gt;: 호스트 커널 기능을 공유하므로, “임의의 3rd-party 워크로드 실행” 환경에서는 리스크가 커질 수 있습니다.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;기능 영향&lt;/strong&gt;: IPsec(예: VPN) 또는 AFS/RxRPC 사용 중이면, 모듈 차단 완화가 서비스에 직접 영향이 갈 수 있습니다.&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/section&gt;

    &lt;section id=&quot;environment&quot;&gt;
      &lt;h2&gt;환경&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;
      &lt;p&gt;
        아래 항목은 특정 배포판에 종속되지 않도록 “공통 리눅스 운영 기준”으로 정리했습니다.
        실제 사용 시에는 커널 패키지 공급자(배포판/벤더)의 보안 권고에 따라 “패치 포함 커널 버전”을 최종 기준으로 잡는 것이 안전합니다.
      &lt;/p&gt;

      &lt;h3&gt;점검 전 확인할 것&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;호스트/노드의 커널 버전(&lt;code&gt;uname -r&lt;/code&gt;)&lt;/li&gt;
        &lt;li&gt;ESP(IPsec) 사용 여부: 사이트 간 터널/VPN, 커널 모듈(esp4/esp6) 로드 여부&lt;/li&gt;
        &lt;li&gt;RxRPC 사용 여부: AFS 또는 RxRPC 기반 구성, 커널 모듈(rxrpc) 로드 여부&lt;/li&gt;
        &lt;li&gt;컨테이너 운영 여부 및 “비특권 사용자 네임스페이스” 정책&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/section&gt;

    &lt;section id=&quot;symptoms&quot;&gt;
      &lt;h2&gt;증상&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;
      &lt;p class=&quot;mini&quot;&gt;
        이 유형의 취약점은 “침해 흔적이 명확하지 않은 상태로 권한이 올라가는” 형태가 많아, 증상 기반 탐지는 한계가 있습니다.
        따라서 CVE-2026-43284, CVE-2026-43500은 “환경 노출 여부 점검”과 “완화/패치 적용 상태 관리”가 핵심입니다.
      &lt;/p&gt;

      &lt;h3&gt;의심 신호(참고)&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;평소 사용하지 않던 로컬 계정에서의 root 권한 획득 시도(예: &lt;code&gt;sudo&lt;/code&gt; 기록과 불일치)&lt;/li&gt;
        &lt;li&gt;갑작스러운 커널 모듈 로드/언로드 흔적(esp4/esp6/rxrpc 관련)&lt;/li&gt;
        &lt;li&gt;컨테이너 환경에서 비정상적인 호스트 권한 상승 시도(로그/감사 이벤트)&lt;/li&gt;
      &lt;/ul&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;관리자 입장에서&lt;/strong&gt;&lt;br&gt;
        “증상”만으로 결론을 내리지 말고,&lt;br&gt;
        (1) 모듈 로드 여부 + (2) 커널 패치 수준 + (3) 로컬 접근 경로(SSH/계정 정책/컨테이너 실행 정책)를 같이 보세요.
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section id=&quot;first-check&quot;&gt;
      &lt;h2&gt;1차 점검&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;
      &lt;p&gt;
        1차 점검의 목적은 “CVE-2026-43284 및 CVE-2026-43500이 성립할 수 있는 조건(특정 모듈/기능 사용)”이 현재 시스템에 존재하는지 빠르게 확인하는 것입니다.
      &lt;/p&gt;

      &lt;h3&gt;1) 커널 버전 확인&lt;/h3&gt;
      &lt;pre&gt;&lt;code&gt;uname -r
cat /etc/os-release 2&amp;gt;/dev/null || true&lt;/code&gt;&lt;/pre&gt;

      &lt;h3&gt;2) 관련 모듈 로드 여부 확인&lt;/h3&gt;
      &lt;pre&gt;&lt;code&gt;lsmod | grep -E '^(esp4|esp6|rxrpc)\b' || echo &quot;관련 모듈 미로드(표시 없음)&quot;
grep -E '^(esp4|esp6|rxrpc) ' /proc/modules 2&amp;gt;/dev/null || true&lt;/code&gt;&lt;/pre&gt;

      &lt;h3&gt;3) 기능 사용 여부(간단 체크)&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;IPsec(ESP)&lt;/strong&gt;: VPN/터널이 실제로 동작 중인지, 관련 서비스/설정이 있는지 확인&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;RxRPC&lt;/strong&gt;: AFS 사용 여부 또는 rxrpc 기반 서비스가 있는지 확인&lt;/li&gt;
      &lt;/ul&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;판단 기준(빠른 결론)&lt;/strong&gt;&lt;br&gt;
        - esp4/esp6가 로드되어 있고 IPsec을 실제 사용 중이라면: “완화 적용 시 서비스 영향”을 먼저 평가&lt;br&gt;
        - rxrpc가 로드되어 있지 않다면: rxrpc 관련 완화는 영향이 거의 없을 가능성이 큼&lt;br&gt;
        - 어떤 경우든 최종 목표는 “패치된 커널로 업데이트”&lt;br&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section id=&quot;deep-analysis&quot;&gt;
      &lt;h2&gt;심화 분석&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;
      &lt;p&gt;
        심화 분석은 “왜 이 시스템이 위험한지/덜 위험한지”를 운영 정책과 함께 확정하는 단계입니다.
        특히 CVE-2026-43284, CVE-2026-43500은 로컬 접근이 전제되므로, 로컬 접근 경로를 최소화하는 하드닝도 함께 검토합니다.
      &lt;/p&gt;

      &lt;h3&gt;1) 모듈 정보(로딩 경로/의존성) 확인&lt;/h3&gt;
      &lt;pre&gt;&lt;code&gt;modinfo esp4 2&amp;gt;/dev/null || true
modinfo esp6 2&amp;gt;/dev/null || true
modinfo rxrpc 2&amp;gt;/dev/null || true&lt;/code&gt;&lt;/pre&gt;

      &lt;h3&gt;2) 로컬 접근 경로 점검(권한 상승 전제 조건 줄이기)&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;SSH 접근 정책(허용 사용자/키 기반 인증/2FA/접근 제어)&lt;/li&gt;
        &lt;li&gt;불필요한 로컬 계정/서비스 계정 정리&lt;/li&gt;
        &lt;li&gt;컨테이너 런타임 정책(신뢰되지 않은 워크로드 실행 차단, 권한 최소화)&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h3&gt;3) “비특권 사용자 네임스페이스” 정책 검토(환경별 선택)&lt;/h3&gt;
      &lt;p class=&quot;mini&quot;&gt;
        일부 환경에서는 비특권 사용자 네임스페이스를 제한하는 방식이 완화 옵션으로 언급됩니다.
        다만 rootless 컨테이너/샌드박스 기능에 영향이 갈 수 있어, 운영 요구사항에 맞게 선택해야 합니다.
      &lt;/p&gt;
      &lt;pre&gt;&lt;code&gt;# 현재 값 확인(배포판/커널 설정에 따라 파일 존재 여부는 다를 수 있음)
sysctl user.max_user_namespaces 2&amp;gt;/dev/null || true&lt;/code&gt;&lt;/pre&gt;
    &lt;/section&gt;

    &lt;section id=&quot;recovery&quot;&gt;
      &lt;h2&gt;복구&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;
      &lt;p&gt;
        복구는 두 갈래로 나뉩니다.&lt;br&gt;
        (A) “즉시 완화(모듈 차단/언로드)”로 노출을 줄이고&lt;br&gt;
        (B) “커널 업데이트(패치 적용)”로 근본 해결을 합니다.
      &lt;/p&gt;

      &lt;h3&gt;A) 즉시 완화: 모듈 차단(재부팅 전/후 적용 가능)&lt;/h3&gt;
      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;주의&lt;/strong&gt;&lt;br&gt;
        - esp4/esp6 차단은 IPsec(ESP) 기능을 중단시킬 수 있습니다.&lt;br&gt;
        - rxrpc 차단은 AFS/RxRPC 기반 기능에 영향을 줄 수 있습니다.&lt;br&gt;
        - 운영 환경에서는 서비스 영향 평가 후 적용하세요.&lt;br&gt;
      &lt;/div&gt;

      &lt;pre&gt;&lt;code&gt;# 1) 향후 로드를 차단(모듈 install을 false로 매핑)
# 배포판에 따라 경로/도구는 다를 수 있으나, modprobe.d 방식은 공통적으로 많이 사용됨
sudo sh -c 'printf &quot;%s\n&quot; \
  &quot;install esp4 /bin/false&quot; \
  &quot;install esp6 /bin/false&quot; \
  &quot;install rxrpc /bin/false&quot; \
  &amp;gt; /etc/modprobe.d/dirty-frag.conf'

# 2) 현재 로드된 경우 언로드(사용 중이면 실패할 수 있음)
sudo rmmod esp4 esp6 rxrpc 2&amp;gt;/dev/null || true

# 3) 로드 상태 확인
grep -qE '^(esp4|esp6|rxrpc) ' /proc/modules &amp;amp;&amp;amp; echo &quot;아직 로드됨(재부팅 또는 사용 중 여부 확인 필요)&quot; || echo &quot;미로드 상태&quot;&lt;/code&gt;&lt;/pre&gt;

      &lt;h3&gt;B) 근본 해결: 커널 업데이트&lt;/h3&gt;
      &lt;p&gt;
        최종적으로는 “벤더에서 패치를 포함한 커널 패키지”로 업데이트해야 합니다.
        변경 동결이 있는 조직이라면, 완화(모듈 차단)를 먼저 적용하고 정기 패치 윈도우에서 커널 업데이트를 진행하는 방식이 현실적입니다.
      &lt;/p&gt;

      &lt;pre&gt;&lt;code&gt;# 예시(배포판별 명령은 다름): 업데이트 후 재부팅이 필요할 수 있음
# - Debian/Ubuntu 계열: apt 기반
# - RHEL 계열: dnf/yum 기반
# - SUSE 계열: zypper 기반

uname -r
# (업데이트 수행)
# reboot
uname -r&lt;/code&gt;&lt;/pre&gt;

      &lt;h3&gt;완화 해제(패치 적용 후)&lt;/h3&gt;
      &lt;pre&gt;&lt;code&gt;sudo rm -f /etc/modprobe.d/dirty-frag.conf
# initramfs를 사용하는 환경이라면 재생성 필요(배포판별 명령 상이)
# 예: Debian/Ubuntu 계열
sudo update-initramfs -u -k all 2&amp;gt;/dev/null || true&lt;/code&gt;&lt;/pre&gt;
    &lt;/section&gt;

    &lt;section id=&quot;prevention&quot;&gt;
      &lt;h2&gt;재발 방지&lt;/h2&gt;
      &lt;div class=&quot;hr-gap&quot;&gt;&lt;/div&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;커널 업데이트 체계화&lt;/strong&gt;: 커널 보안 패치가 누락되지 않도록, 정기 점검/배포 흐름을 고정합니다.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;불필요 모듈 최소화&lt;/strong&gt;: 실제 사용하지 않는 기능(IPsec/RxRPC 등)은 기본적으로 비활성화/차단을 검토합니다.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;로컬 접근면 축소&lt;/strong&gt;: SSH 접근 정책 강화, 계정 최소화, 권한 분리(운영 계정/배포 계정)를 적용합니다.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;컨테이너 하드닝&lt;/strong&gt;: 신뢰되지 않은 워크로드 실행을 줄이고, 런타임/노드 정책으로 권한을 제한합니다.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;점검 자동화&lt;/strong&gt;: &lt;code&gt;uname -r&lt;/code&gt;, &lt;code&gt;lsmod&lt;/code&gt; 결과를 주기적으로 수집해 “모듈 로드 상태 변화”를 감시합니다.&lt;/li&gt;
      &lt;/ul&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;운영 환경에서는&lt;/strong&gt;&lt;br&gt;
        취약점 공지가 뜰 때마다 “패치 전 완화 → 패치 적용 → 완화 해제”를 템플릿처럼 반복할 수 있어야 합니다.&lt;br&gt;
        CVE-2026-43284, CVE-2026-43500처럼 로컬 권한 상승 계열은 ‘로컬 접근면 관리’가 재발 방지의 핵심입니다.
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;홈&quot;,
              &quot;item&quot;: &quot;https://yourblog.example/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;보안&quot;,
              &quot;item&quot;: &quot;https://yourblog.example/security&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;CVE-2026-43284, CVE-2026-43500 점검과 완화 방법&quot;,
              &quot;item&quot;: &quot;https://yourblog.example/security/cve-2026-43284-43500&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;TechArticle&quot;,
          &quot;headline&quot;: &quot;CVE-2026-43284 및 CVE-2026-43500 취약점 점검과 완화 절차&quot;,
          &quot;description&quot;: &quot;Linux 커널에서 공개된 CVE-2026-43284 및 CVE-2026-43500(Dirty Frag) 취약점에 대해, 운영 환경에서 적용 가능한 1차 점검부터 심화 분석, 복구 및 재발 방지까지 단계별로 정리합니다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;datePublished&quot;: &quot;2026-05-22&quot;,
          &quot;dateModified&quot;: &quot;2026-05-22&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://yourblog.example/security/cve-2026-43284-43500&quot;
          },
          &quot;keywords&quot;: [
            &quot;CVE-2026-43284&quot;,
            &quot;CVE-2026-43500&quot;,
            &quot;Dirty Frag&quot;,
            &quot;Linux 커널&quot;,
            &quot;로컬 권한 상승&quot;,
            &quot;esp4&quot;,
            &quot;esp6&quot;,
            &quot;rxrpc&quot;,
            &quot;IPsec&quot;,
            &quot;RxRPC&quot;
          ]
        }
      ]
    }
    &lt;/script&gt;

    &lt;!--
      태그(관리자 입력용, 10개):
      CVE-2026-43284, CVE-2026-43500, Dirty Frag, Linux 커널, 로컬 권한 상승, IPsec, ESP, RxRPC, esp4 esp6, 보안 패치
    --&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>IT 소식 뉴스/CVE CODE</category>
      <category>CVE-2026-43284</category>
      <category>CVE-2026-43500</category>
      <category>Dirty Frag</category>
      <category>esp4</category>
      <category>esp6</category>
      <category>ipsec</category>
      <category>Linux 커널</category>
      <category>LPE</category>
      <category>rxrpc</category>
      <category>로컬 권한 상승</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/521</guid>
      <comments>https://togethergrow.tistory.com/entry/CVE-2026-43284-CVE-2026-43500#entry521comment</comments>
      <pubDate>Fri, 22 May 2026 13:08:19 +0900</pubDate>
    </item>
    <item>
      <title>CVE-2024-28752 : Apache CXF Aegis SSRF</title>
      <link>https://togethergrow.tistory.com/entry/CVE-2024-28752-Apache-CXF-Aegis-SSRF</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;CVE-2024-28752 점검과 대응: Apache CXF Aegis SSRF&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;CVE-2024-28752는 Apache CXF의 Aegis DataBinding 사용 시 발생 가능한 SSRF 취약점입니다. 운영 환경에서 영향 여부를 빠르게 판정하고, 단기 완화부터 안전 버전 업그레이드 및 재발 방지까지 단계별로 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;CVE-2024-28752,Apache CXF,SSRF,Aegis DataBinding,서버사이드요청위조,취약점 점검,버전 업그레이드,운영 환경,보안 패치,네트워크 이그레스&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;CVE-2024-28752 점검과 대응: Apache CXF Aegis SSRF&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;Apache CXF Aegis DataBinding 사용 여부와 버전을 기준으로 CVE-2024-28752를 판정하고, 완화·복구·재발 방지까지 운영 관점에서 정리합니다.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;CVE-2024-28752 점검과 대응: Apache CXF Aegis SSRF&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;CVE-2024-28752(SSRF) 영향 확인, 단기 완화, 패치 및 재발 방지 절차를 한 번에 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;style&gt;
    .post-content{line-height:1.7}
    .post-content .wrap{max-width:860px;margin:0 auto;padding:0 12px}
    .post-content h1{margin:0 0 10px 0;font-size:1.9rem}
    .post-content .lead{margin:0 0 18px 0;opacity:.9}
    .post-content section{margin:26px 0}
    .post-content h2{margin:0 0 10px 0;font-size:1.35rem}
    .post-content .hr{height:1px;background:rgba(0,0,0,.08);margin:18px 0}
    .post-content .card{border:1px solid rgba(0,0,0,.12);border-radius:14px;padding:14px 14px;margin:12px 0}
    .post-content .card strong{display:inline-block;margin-bottom:6px}
    .post-content ul{margin:10px 0 0 18px}
    .post-content li{margin:6px 0}
    .post-content code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot;Courier New&quot;,monospace}
    .post-content pre{overflow:auto;border:1px solid rgba(0,0,0,.12);border-radius:14px;padding:12px;margin:12px 0}
    .post-content .muted{opacity:.8}
    .post-content .badge{display:inline-block;border:1px solid rgba(0,0,0,.18);border-radius:999px;padding:2px 10px;font-size:.85rem;margin-right:6px}
    .post-content .grid{display:grid;grid-template-columns:1fr;gap:10px}
    @media (min-width:740px){
      .post-content .grid{grid-template-columns:1fr 1fr}
    }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;post-content&quot;&gt;
    &lt;div class=&quot;wrap&quot;&gt;
      &lt;header&gt;
        &lt;h1&gt;CVE-2024-28752&lt;/h1&gt;
        &lt;p class=&quot;lead&quot;&gt;
          CVE-2024-28752는 &lt;strong&gt;Apache CXF&lt;/strong&gt;에서 &lt;strong&gt;Aegis DataBinding&lt;/strong&gt;을 사용할 때 발생 가능한 &lt;strong&gt;SSRF(Server-Side Request Forgery)&lt;/strong&gt; 취약점으로,
          특정 형태의 웹서비스 요청을 통해 서버가 임의의 URL로 요청을 보내도록 유도될 수 있습니다.&lt;br&gt;
          운영 환경에서는 “취약점 설명”보다 &lt;strong&gt;우리 서비스가 Aegis DataBinding을 쓰는지&lt;/strong&gt;와 &lt;strong&gt;CXF 버전이 안전한지&lt;/strong&gt;를 빠르게 확정하는 것이 우선입니다.
          (실무 기준으로 보면, “Aegis 사용 여부 + 버전” 두 가지가 우선순위를 결정합니다.)
          &lt;!-- 근거: NVD/Apache advisory (turn0search0, turn0search7) --&gt;
        &lt;/p&gt;
        &lt;div class=&quot;hr&quot;&gt;&lt;/div&gt;
        &lt;p class=&quot;muted&quot;&gt;문서 범위: 일반오류형(확장형 매뉴얼) / 목표: 영향 확인 → 단기 완화 → 패치/복구 → 재발 방지&lt;/p&gt;
      &lt;/header&gt;

      &lt;section aria-labelledby=&quot;sec-overview&quot;&gt;
        &lt;h2 id=&quot;sec-overview&quot;&gt;개요&lt;/h2&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;핵심 요약&lt;/strong&gt;&lt;br&gt;
          - 영향 조건: &lt;strong&gt;Apache CXF&lt;/strong&gt; + &lt;strong&gt;Aegis DataBinding 사용&lt;/strong&gt; + 외부 입력이 해당 웹서비스 파라미터로 유입되는 구조&lt;br&gt;
          - 취약 범위(일반 안내): &lt;strong&gt;Apache CXF 4.0.4 / 3.6.3 / 3.5.8 이전&lt;/strong&gt; 버전에서 Aegis DataBinding을 사용할 때 영향 가능&lt;br&gt;
          - 기본 DataBinding(JAXB 등)만 사용하는 경우는 영향이 없다고 안내되는 케이스가 많습니다.
          &lt;!-- 근거: NVD/GHSA/Apache advisory (turn0search0, turn0search3, turn0search7) --&gt;
        &lt;/div&gt;

        &lt;div class=&quot;grid&quot;&gt;
          &lt;div class=&quot;card&quot;&gt;
            &lt;strong&gt;운영 영향(대표 시나리오)&lt;/strong&gt;&lt;br&gt;
            - 내부망 접근: 메타데이터/관리 콘솔/내부 API 등으로 서버가 요청을 보내도록 유도될 수 있음&lt;br&gt;
            - 정보 노출: 응답/에러 메시지/로그에 내부 자원 정보가 남을 수 있음&lt;br&gt;
            - 후속 공격: 내부 서비스 식별, SSRF를 발판으로 추가 취약점 탐색
          &lt;/div&gt;
          &lt;div class=&quot;card&quot;&gt;
            &lt;strong&gt;우선순위&lt;/strong&gt;&lt;br&gt;
            &lt;span class=&quot;badge&quot;&gt;1) CXF 포함 여부&lt;/span&gt;
            &lt;span class=&quot;badge&quot;&gt;2) Aegis 사용 여부&lt;/span&gt;
            &lt;span class=&quot;badge&quot;&gt;3) 버전&lt;/span&gt;&lt;br&gt;&lt;br&gt;
            - 스캐너가 “제품명” 대신 “이미지/패키지 경로” 기준으로 표시하는 경우가 많으니,
              &lt;strong&gt;탐지 경로(Path)&lt;/strong&gt;와 &lt;strong&gt;실제 배포 산출물(JAR/컨테이너)&lt;/strong&gt;을 먼저 맞춰보세요.
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-env&quot;&gt;
        &lt;h2 id=&quot;sec-env&quot;&gt;환경&lt;/h2&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;기록해야 할 항목(필수)&lt;/strong&gt;&lt;br&gt;
          - 배포 형태: VM / 온프렘 / 컨테이너 / 쿠버네티스 / WAS 내장 여부&lt;br&gt;
          - CXF 포함 위치: 애플리케이션 JAR/WAR/ear 내부, lib 디렉터리, 별도 모듈/플러그인 등&lt;br&gt;
          - 노출 범위: 외부 공개 엔드포인트 여부, 인증/인가 방식, 내부 전용 여부&lt;br&gt;
          - 네트워크 정책: 아웃바운드(egress) 허용 범위(프록시/방화벽/네임스페이스 정책)
        &lt;/div&gt;

        &lt;pre&gt;&lt;code&gt;# (리눅스/컨테이너) CXF 관련 jar 탐색 예시
# - 경로는 환경에 맞게 조정
find / -type f -name &quot;*.jar&quot; 2&amp;gt;/dev/null | egrep -i &quot;cxf|aegis&quot; | head -n 50

# (애플리케이션 디렉터리 기준) 흔히 사용하는 탐색
find ./ -type f -name &quot;*.jar&quot; | egrep -i &quot;cxf|aegis&quot;
&lt;/code&gt;&lt;/pre&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-symptom&quot;&gt;
        &lt;h2 id=&quot;sec-symptom&quot;&gt;증상&lt;/h2&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;자주 나타나는 징후&lt;/strong&gt;&lt;br&gt;
          - 보안 스캐너/게이트에서 &lt;code&gt;CVE-2024-28752&lt;/code&gt; 탐지로 빌드/배포가 차단됨&lt;br&gt;
          - CXF 라이브러리(cxf-core 등) 버전이 취약 범위로 표시됨&lt;br&gt;
          - 웹서비스 요청 처리 경로에서 예상치 못한 URL 접근 시도(프록시/방화벽 로그) 패턴이 보임
        &lt;/div&gt;

        &lt;pre&gt;&lt;code&gt;# (네트워크/방화벽 로그 관점) SSRF 의심 시 확인 포인트
# - 앱 서버가 외부/내부 특정 주소로 비정상적으로 요청을 보내는지
# - 평소 없던 DNS 조회/HTTP CONNECT/메타데이터 IP로의 접근 시도 여부
&lt;/code&gt;&lt;/pre&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;주의&lt;/strong&gt;&lt;br&gt;
          - “탐지됨”은 “즉시 악용됨”과 동일하지 않습니다.&lt;br&gt;
          - 다만 SSRF는 네트워크 경계와 직결되므로, &lt;strong&gt;외부 노출 + egress 허용&lt;/strong&gt; 조합이면 우선순위를 높게 잡는 편이 안전합니다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-check&quot;&gt;
        &lt;h2 id=&quot;sec-check&quot;&gt;1차 점검&lt;/h2&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;체크리스트(빠른 판정)&lt;/strong&gt;&lt;br&gt;
          1) 우리 서비스(또는 제품/플러그인)에 &lt;strong&gt;Apache CXF&lt;/strong&gt;가 포함되어 있는가?&lt;br&gt;
          2) 포함된 CXF 버전이 &lt;strong&gt;4.0.4 / 3.6.3 / 3.5.8 이전&lt;/strong&gt;인가?&lt;br&gt;
          3) &lt;strong&gt;Aegis DataBinding&lt;/strong&gt;을 실제로 사용하는가? (의존성 + 구성 + 코드 경로)&lt;br&gt;
          4) 해당 웹서비스 엔드포인트가 외부 입력을 받아 처리하는가?
          &lt;!-- 근거: NVD/Apache advisory (turn0search0, turn0search7) --&gt;
        &lt;/div&gt;

        &lt;pre&gt;&lt;code&gt;# (JAR 버전 확인) 파일명으로 1차 확인 (정확하지 않을 수 있어도 빠름)
ls -al | egrep -i &quot;cxf-.*\.jar|aegis.*\.jar&quot;

# (MANIFEST/Maven metadata로 확인) jar 내부 메타 확인 예시
jar tf cxf-core*.jar | egrep -i &quot;pom\.properties|MANIFEST\.MF&quot; | head

# (pom.properties 확인 예시)
# jar xf cxf-core*.jar META-INF/maven/*/*/pom.properties
# cat META-INF/maven/*/*/pom.properties
&lt;/code&gt;&lt;/pre&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;Aegis 사용 여부(빠른 확인 힌트)&lt;/strong&gt;&lt;br&gt;
          - 의존성에 &lt;code&gt;cxf-rt-databinding-aegis&lt;/code&gt; 또는 “aegis” 관련 모듈이 포함되는지 확인&lt;br&gt;
          - Spring/XML/코드 설정에서 “Aegis” databinding을 명시하는 설정이 있는지 검색&lt;br&gt;
          - 운영에서 실제로 로딩되는 클래스/빈이 Aegis 경로를 타는지(로그/디버그/구성) 확인
        &lt;/div&gt;

        &lt;pre&gt;&lt;code&gt;# (리포지토리) Aegis 관련 키워드 검색 예시
grep -RIn --exclude-dir=target --exclude-dir=.git &quot;aegis&quot; .
grep -RIn --exclude-dir=target --exclude-dir=.git &quot;databinding&quot; .
&lt;/code&gt;&lt;/pre&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-deep&quot;&gt;
        &lt;h2 id=&quot;sec-deep&quot;&gt;심화 분석&lt;/h2&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;위험도가 급상승하는 조건&lt;/strong&gt;&lt;br&gt;
          - 외부에서 접근 가능한 SOAP/웹서비스 엔드포인트가 있고, 요청 파라미터가 다양한 타입(복합 객체 포함)을 받는 구조&lt;br&gt;
          - 서버가 내부망/메타데이터(클라우드)로 나갈 수 있는 egress가 열려 있음&lt;br&gt;
          - 프록시/방화벽에서 앱 서버의 아웃바운드가 광범위하게 허용됨
        &lt;/div&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;운영 관점에서의 결론 내리기&lt;/strong&gt;&lt;br&gt;
          - “취약 버전이 포함됨”만으로도 보안 게이트는 막힐 수 있습니다.&lt;br&gt;
          - 하지만 실제 위험도는 &lt;strong&gt;Aegis 사용 여부&lt;/strong&gt;와 &lt;strong&gt;외부 입력 연결&lt;/strong&gt;이 좌우합니다.&lt;br&gt;
          - 그래서 분석 순서는 &lt;strong&gt;버전 확인 → Aegis 사용 확인 → 노출면(외부/내부) → egress&lt;/strong&gt;가 가장 빠릅니다.
        &lt;/div&gt;

        &lt;pre&gt;&lt;code&gt;# (런타임 분석) JVM 옵션/클래스패스/컨테이너 이미지에서 실제 로딩 라이브러리 확인 힌트
# - 애플리케이션 시작 로그에 로딩된 모듈, classpath 출력 옵션을 활용
# - Aegis 관련 모듈이 실제로 로딩되는지 확인

# (네트워크 분석) 의심 시 서버에서 나가는 트래픽 확인(환경별로 접근 방식 상이)
# - egress 정책/프록시 로그/방화벽 로그에서 대상 URL/호스트 패턴 확인
&lt;/code&gt;&lt;/pre&gt;

        &lt;p class=&quot;muted&quot;&gt;
          공격자는 SSRF로 내부 자원에 접근을 시도합니다. 운영 환경에서는 “내부로 나갈 수 있느냐(egress)”가 1차 방어선입니다.
          그래서 패치가 곧바로 어렵다면, egress를 줄이는 것만으로도 실질 위험도를 크게 낮출 수 있습니다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-recover&quot;&gt;
        &lt;h2 id=&quot;sec-recover&quot;&gt;복구&lt;/h2&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;권장 복구 흐름&lt;/strong&gt;&lt;br&gt;
          1) &lt;strong&gt;패치 포함 버전으로 업그레이드&lt;/strong&gt;(가장 확실)&lt;br&gt;
          2) 업그레이드 전까지 &lt;strong&gt;단기 완화(egress 제한 + 노출면 축소)&lt;/strong&gt;&lt;br&gt;
          3) 배포 후 &lt;strong&gt;재스캔&lt;/strong&gt;과 &lt;strong&gt;트래픽/로그 모니터링&lt;/strong&gt;으로 해소 확인
          &lt;!-- 근거: Apache advisory/NVD (turn0search7, turn0search0) --&gt;
        &lt;/div&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;업그레이드 가이드(일반)&lt;/strong&gt;&lt;br&gt;
          - Apache CXF를 &lt;strong&gt;4.0.4 / 3.6.3 / 3.5.8 이상&lt;/strong&gt;으로 올리는 방향을 우선 검토합니다.&lt;br&gt;
          - 제품/플러그인이 CXF를 번들링하고 있다면, 상위 제품의 업데이트(핫픽스/마이너 릴리즈)가 우선일 수 있습니다.
          &lt;!-- 근거: Apache advisory/NVD/GHSA (turn0search7, turn0search0, turn0search3) --&gt;
        &lt;/div&gt;

        &lt;pre&gt;&lt;code&gt;# (Maven) 의존성 트리에서 CXF 버전 확인 예시
mvn -q -DskipTests dependency:tree | egrep -i &quot;org\.apache\.cxf|cxf-rt|cxf-core&quot;

# (Gradle) 의존성 확인 예시
./gradlew -q dependencies | egrep -i &quot;org\.apache\.cxf|cxf-rt|cxf-core&quot;

# (컨테이너) 패치 적용 후 이미지 재빌드/재배포 기본 흐름
# - 조직 표준 이미지/레지스트리 정책에 맞게 수행
docker build -t your-image:patched .
docker run --rm your-image:patched java -version
&lt;/code&gt;&lt;/pre&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;단기 완화(업그레이드 전 임시)&lt;/strong&gt;&lt;br&gt;
          - egress 제한: 앱 서버에서 외부/내부 임의 주소로 나가는 트래픽을 기본 차단하고, 필요한 목적지(프록시/외부 API)만 허용&lt;br&gt;
          - 노출면 축소: 외부 공개 웹서비스 엔드포인트를 내부망으로 제한하거나, 인증/인가를 강화&lt;br&gt;
          - Aegis 회피: 가능하면 Aegis DataBinding을 사용하지 않도록 구성 변경(기본 databinding 전환) 검토
          &lt;!-- 근거: “Aegis 사용 시 영향” 요지 (turn0search0, turn0search7) --&gt;
        &lt;/div&gt;

        &lt;p class=&quot;muted&quot;&gt;
          단기 완화는 “리스크를 낮추는 조치”이고, 보안 감사/게이트를 통과하려면 최종적으로 “안전 버전 적용”이 필요할 때가 많습니다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-prevent&quot;&gt;
        &lt;h2 id=&quot;sec-prevent&quot;&gt;재발 방지&lt;/h2&gt;

        &lt;div class=&quot;grid&quot;&gt;
          &lt;div class=&quot;card&quot;&gt;
            &lt;strong&gt;운영 프로세스&lt;/strong&gt;&lt;br&gt;
            - 컴포넌트 인벤토리: CXF 포함 위치(앱/플러그인/번들)와 버전 기록&lt;br&gt;
            - 정기 업데이트: LTS/유지보수 라인 기준으로 분기별(또는 월별) 보안 패치 적용 루틴화&lt;br&gt;
            - 배포 게이트: 스캔 결과에 대한 예외 승인 절차(기간/책임/보완책) 명문화
          &lt;/div&gt;
          &lt;div class=&quot;card&quot;&gt;
            &lt;strong&gt;기술적 가드레일&lt;/strong&gt;&lt;br&gt;
            - egress 기본 차단 + 목적지 허용(프록시/방화벽/쿠버네티스 네트워크 정책)&lt;br&gt;
            - 외부 노출 웹서비스는 인증/인가·입력 검증·레이트 리밋을 기본 적용&lt;br&gt;
            - 모니터링: 앱 서버의 비정상 아웃바운드(DNS/HTTP) 탐지 알림 구성
          &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;릴리즈 체크(추천)&lt;/strong&gt;&lt;br&gt;
          - 배포 전: 의존성 트리/이미지 스캔에서 &lt;code&gt;CVE-2024-28752&lt;/code&gt; 해소 여부 확인&lt;br&gt;
          - 배포 후: 동일 조건 재스캔 + egress 로그/방화벽 로그에서 이상 트래픽 여부 확인&lt;br&gt;
          - 기록: “영향 모듈 / 버전 / 조치일 / 롤백 포인트 / 단기 완화(있다면)”를 변경관리 티켓에 남기기
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-result&quot;&gt;
        &lt;h2 id=&quot;sec-result&quot;&gt;결과&lt;/h2&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;완료 기준&lt;/strong&gt;&lt;br&gt;
          - (필수) 스캐너/CI 게이트에서 &lt;code&gt;CVE-2024-28752&lt;/code&gt; 탐지가 해소됨&lt;br&gt;
          - (필수) 서비스 지표(에러율/지연/리소스) 이상 없음&lt;br&gt;
          - (권장) Aegis 사용 여부 판정 근거(구성/의존성/런타임 로딩)를 문서화 완료
        &lt;/div&gt;

        &lt;p class=&quot;muted&quot;&gt;
          다음에 비슷한 SSRF 계열 이슈가 나오면, “취약점 이름”보다 &lt;strong&gt;노출 엔드포인트 + egress + 실제 사용 구성&lt;/strong&gt;을 먼저 보면 더 빠르게 정리됩니다.
        &lt;/p&gt;
      &lt;/section&gt;
    &lt;/div&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;TechArticle&quot;,
          &quot;@id&quot;: &quot;https://example.com/cve-2024-28752#article&quot;,
          &quot;headline&quot;: &quot;CVE-2024-28752&quot;,
          &quot;description&quot;: &quot;CVE-2024-28752(Apache CXF Aegis DataBinding SSRF) 취약점의 영향 조건을 점검하고, 단기 완화, 패치 적용, 복구 및 재발 방지 절차를 운영 관점으로 정리한 문서.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;mainEntityOfPage&quot;: &quot;https://example.com/cve-2024-28752&quot;,
          &quot;image&quot;: &quot;https://example.com/og-placeholder.jpg&quot;
        },
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;@id&quot;: &quot;https://example.com/cve-2024-28752#breadcrumb&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;홈&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;보안 점검&quot;,
              &quot;item&quot;: &quot;https://example.com/security&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;CVE-2024-28752&quot;
            }
          ]
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;

&lt;!-- TAGS (관리자 입력용 10개): CVE-2024-28752, ApacheCXF, SSRF, AegisDataBinding, 서버사이드요청위조, 취약점대응, 보안패치, 의존성점검, 이그레스제어, 운영보안 --&gt;</description>
      <category>IT 소식 뉴스/CVE CODE</category>
      <category>Aegis DataBinding</category>
      <category>apache CXF</category>
      <category>CVE-2024-28752</category>
      <category>SSRF</category>
      <category>네트워크 이그레스</category>
      <category>버전 업그레이드</category>
      <category>보안 패치</category>
      <category>서버사이드요청위조</category>
      <category>운영 환경</category>
      <category>취약점 점검</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/520</guid>
      <comments>https://togethergrow.tistory.com/entry/CVE-2024-28752-Apache-CXF-Aegis-SSRF#entry520comment</comments>
      <pubDate>Mon, 18 May 2026 11:32:23 +0900</pubDate>
    </item>
    <item>
      <title>[tocmat] CVE-2022-21824</title>
      <link>https://togethergrow.tistory.com/entry/tocmat-CVE-2022-21824</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;tocmat에서 CVE-2022-21824 점검과 대응&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;tocmat 환경에서 CVE-2022-21824(프로토타입 오염) 경고가 발생했을 때, 영향을 받는 구성요소 확인부터 버전 점검, 단기 완화, 패치 및 재발 방지까지 운영 관점으로 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;CVE-2022-21824,Node.js,prototype pollution,프로토타입 오염,보안 취약점,버전 점검,패치 적용,운영 환경,취약점 대응,콘솔 테이블&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;tocmat에서 CVE-2022-21824 점검과 대응&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;tocmat 환경에서 CVE-2022-21824 경고 발생 시 점검·완화·복구·재발 방지 절차를 한 번에 정리합니다.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;tocmat에서 CVE-2022-21824 점검과 대응&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;운영 환경 기준으로 CVE-2022-21824 영향을 확인하고 안전한 버전으로 올리는 절차를 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;style&gt;
    .post-content{line-height:1.7}
    .post-content .wrap{max-width:860px;margin:0 auto;padding:0 12px}
    .post-content h1{margin:0 0 10px 0;font-size:1.9rem}
    .post-content .lead{margin:0 0 18px 0;opacity:.9}
    .post-content section{margin:26px 0}
    .post-content h2{margin:0 0 10px 0;font-size:1.35rem}
    .post-content .hr{height:1px;background:rgba(0,0,0,.08);margin:18px 0}
    .post-content .card{border:1px solid rgba(0,0,0,.12);border-radius:14px;padding:14px 14px;margin:12px 0}
    .post-content .card strong{display:inline-block;margin-bottom:6px}
    .post-content ul{margin:10px 0 0 18px}
    .post-content li{margin:6px 0}
    .post-content code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot;Courier New&quot;,monospace}
    .post-content pre{overflow:auto;border:1px solid rgba(0,0,0,.12);border-radius:14px;padding:12px;margin:12px 0}
    .post-content .muted{opacity:.8}
    .post-content .badge{display:inline-block;border:1px solid rgba(0,0,0,.18);border-radius:999px;padding:2px 10px;font-size:.85rem;margin-right:6px}
    .post-content .grid{display:grid;grid-template-columns:1fr;gap:10px}
    @media (min-width:740px){
      .post-content .grid{grid-template-columns:1fr 1fr}
    }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;post-content&quot;&gt;
    &lt;div class=&quot;wrap&quot;&gt;
      &lt;header&gt;
        &lt;h1&gt;tocmat - CVE-2022-21824&lt;/h1&gt;
        &lt;p class=&quot;lead&quot;&gt;
          CVE-2022-21824는 “프로토타입 오염(Prototype Pollution)” 계열 이슈로 분류되는 경우가 많고, 실제로는 &lt;strong&gt;Node.js 런타임&lt;/strong&gt;의 특정 동작(예: console.table 경로)과 맞물릴 때 경고로 뜨는 패턴이 자주 보입니다.&lt;br&gt;
          운영 환경에서는 “tocmat” 자체가 무엇이든, &lt;strong&gt;어떤 프로세스가 어떤 Node.js 버전을 포함/사용하는지&lt;/strong&gt;를 먼저 확정하는 게 핵심입니다. (실무 기준으로 보면, 취약점 이름보다 “실제 포함된 컴포넌트/버전”이 복구 속도를 좌우합니다.)
        &lt;/p&gt;
        &lt;div class=&quot;hr&quot;&gt;&lt;/div&gt;
        &lt;p class=&quot;muted&quot;&gt;
          문서 범위: 일반오류형(확장형 매뉴얼) / 목표: 영향 확인 → 단기 완화 → 패치/복구 → 재발 방지
        &lt;/p&gt;
      &lt;/header&gt;

      &lt;section aria-labelledby=&quot;sec-overview&quot;&gt;
        &lt;h2 id=&quot;sec-overview&quot;&gt;개요&lt;/h2&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;핵심 요약&lt;/strong&gt;&lt;br&gt;
          - 스캐너/진단 도구에서 “tocmat - CVE-2022-21824”로 표시되더라도, 실제 원인은 대개 &lt;strong&gt;tocmat이 포함한 Node.js(또는 번들된 런타임/라이브러리)&lt;/strong&gt;일 수 있습니다.&lt;br&gt;
          - 대응은 “서비스 중단 최소화” 관점에서 &lt;strong&gt;① 식별 → ② 단기 완화 → ③ 안전 버전으로 업데이트&lt;/strong&gt; 순으로 진행합니다.
        &lt;/div&gt;

        &lt;div class=&quot;grid&quot;&gt;
          &lt;div class=&quot;card&quot;&gt;
            &lt;strong&gt;영향(운영 관점)&lt;/strong&gt;&lt;br&gt;
            - 프로세스 비정상 동작/예외 증가, 일부 요청에서 기능 오작동 가능&lt;br&gt;
            - 로그/모니터링 상 에러율 상승, 일부는 DoS 형태(과도한 예외·메모리)로 나타날 수 있음&lt;br&gt;
            - “취약점 존재” 자체보다 &lt;strong&gt;외부 입력이 해당 취약 동작 경로로 들어갈 수 있는지&lt;/strong&gt;가 실질 위험도를 결정
          &lt;/div&gt;
          &lt;div class=&quot;card&quot;&gt;
            &lt;strong&gt;우선순위&lt;/strong&gt;&lt;br&gt;
            &lt;span class=&quot;badge&quot;&gt;1) 포함 여부 확정&lt;/span&gt;
            &lt;span class=&quot;badge&quot;&gt;2) 버전/빌드 확인&lt;/span&gt;
            &lt;span class=&quot;badge&quot;&gt;3) 패치 적용&lt;/span&gt;&lt;br&gt;&lt;br&gt;
            - “tocmat”이 Tomcat(자바)처럼 보이는 이름이라도, 진단 결과가 Node.js CVE라면 &lt;strong&gt;운영 구성요소(사이드카, 빌드툴, 관리 콘솔, 프록시)&lt;/strong&gt;에 Node가 섞여 있을 가능성이 큽니다.
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-env&quot;&gt;
        &lt;h2 id=&quot;sec-env&quot;&gt;환경&lt;/h2&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;기록해야 할 항목(필수)&lt;/strong&gt;&lt;br&gt;
          - tocmat 구성: 단일 바이너리/컨테이너/VM/온프렘/클라우드 매니지드 여부&lt;br&gt;
          - 실행 프로세스 목록(서비스/관리도구/배치 포함)&lt;br&gt;
          - Node.js 포함 방식: 시스템 설치 / 컨테이너 베이스 이미지 / 앱 번들 / 빌드 스테이지 전용&lt;br&gt;
          - 배포 경로: CI/CD 파이프라인, 이미지 태그/해시, 롤백 방법
        &lt;/div&gt;

        &lt;pre&gt;&lt;code&gt;# (리눅스 예시) 실행 중 프로세스에서 node 흔적 확인
ps aux | egrep -i &quot;node|npm|yarn|pnpm&quot; | head

# (컨테이너 예시) 이미지 내부 node 버전 확인
node -v
npm -v

# (패키지 매니저/배포물 예시) lockfile/번들 내 node 엔진/버전 단서 확인
cat package.json | sed -n '1,160p'
ls -al | egrep -i &quot;package-lock|yarn.lock|pnpm-lock&quot;
&lt;/code&gt;&lt;/pre&gt;

        &lt;p class=&quot;muted&quot;&gt;
          ※ 컨테이너 기반이면 “런타임 컨테이너”와 “빌드 컨테이너”를 분리해서 확인하세요. 빌드 단계에만 node가 있고 런타임에는 없다면,
          스캐너가 빌드 아티팩트/레이어를 잡아낸 것인지도 함께 판단해야 합니다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-symptom&quot;&gt;
        &lt;h2 id=&quot;sec-symptom&quot;&gt;증상&lt;/h2&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;자주 나타나는 징후&lt;/strong&gt;&lt;br&gt;
          - 취약점 스캐너(호스트/컨테이너/리포지토리)가 CVE-2022-21824를 탐지&lt;br&gt;
          - 보안 게이트(배포 차단 정책)에서 High 등급으로 빌드/배포 실패&lt;br&gt;
          - 특정 요청 처리 시 예외 로그가 증가(특히 입력 데이터가 예상과 다를 때)
        &lt;/div&gt;

        &lt;pre&gt;&lt;code&gt;# (예시 로그 형태) 진단 도구/CI 출력에서 흔히 보이는 패턴
Vulnerability detected: CVE-2022-21824
Component: nodejs (or node) / Severity: High
Path: /usr/local/bin/node  (or /app/node_modules/...)
Image: your-registry/your-image:tag
&lt;/code&gt;&lt;/pre&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;주의&lt;/strong&gt;&lt;br&gt;
          - “tocmat”이라는 표시가 실제 제품명/프로세스명이 아닐 수 있습니다.&lt;br&gt;
          - 스캐너가 “취약점 DB 매칭”으로 표시하는 이름과, 운영에서 실행되는 실제 바이너리/라이브러리는 다를 수 있으니 &lt;strong&gt;경로(Path)&lt;/strong&gt;를 가장 먼저 보세요.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-check&quot;&gt;
        &lt;h2 id=&quot;sec-check&quot;&gt;1차 점검&lt;/h2&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;체크리스트(빠르게 결론 내기)&lt;/strong&gt;&lt;br&gt;
          1) 경고가 가리키는 파일 경로에 실제로 node가 존재하는가?&lt;br&gt;
          2) 해당 node가 &lt;strong&gt;런타임에서 실행되는가&lt;/strong&gt; 아니면 빌드/테스트 도구에만 존재하는가?&lt;br&gt;
          3) node 버전이 안전 버전(패치 포함)인지 확인했는가?&lt;br&gt;
          4) 외부 입력이 취약 동작 경로로 들어갈 수 있는 구조인가(콘솔 출력/테이블 출력 등 포함)?
        &lt;/div&gt;

        &lt;pre&gt;&lt;code&gt;# (리눅스/컨테이너) node 버전 확정
which node || command -v node
node -v

# (런타임 실행 여부) 현재 실행 중인 node 프로세스 확인
pgrep -a node || true

# (컨테이너) 실행 레이어에 node가 있는지, 빌드 레이어만 있는지 점검(멀티스테이지 빌드라면 특히 중요)
# - 런타임 이미지에서 node -v가 안 나오면, 빌드 전용일 수 있음
&lt;/code&gt;&lt;/pre&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;판정 가이드(운영 입장)&lt;/strong&gt;&lt;br&gt;
          - 런타임에서 node가 실행 중이고 버전이 취약 범위라면: &lt;strong&gt;즉시 패치 계획 수립&lt;/strong&gt;&lt;br&gt;
          - 런타임에 node가 없고 빌드 레이어에서만 탐지라면: &lt;strong&gt;빌드 이미지를 분리/정리&lt;/strong&gt; 또는 스캔 대상 정책 조정(보안팀 합의 필요)&lt;br&gt;
          - “번들된 node”라면: 상위 제품(tocmat) 업데이트 또는 번들 교체가 우선
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-deep&quot;&gt;
        &lt;h2 id=&quot;sec-deep&quot;&gt;심화 분석&lt;/h2&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;왜 Node.js CVE가 tocmat로 뜨나?&lt;/strong&gt;&lt;br&gt;
          - 보안 도구가 “애플리케이션 이름” 대신 “탐지 지점(패키지/이미지/경로)”을 대표 라벨로 보여주기 때문입니다.&lt;br&gt;
          - 예: tocmat 컨테이너 안에 node 런타임이 포함되어 있거나, 관리 UI/배치 작업이 node로 구성된 경우
        &lt;/div&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;기술적 관점(요지)&lt;/strong&gt;&lt;br&gt;
          - CVE-2022-21824는 프로토타입 오염(Prototype Pollution) 취약점으로 분류되며,&lt;br&gt;
          - 특정 입력을 다루는 과정에서 Object 프로토타입에 예상치 못한 영향이 생길 수 있는 케이스로 보고됩니다.&lt;br&gt;
          - 다만 “항상 원격 코드 실행”처럼 단정하기보다는, &lt;strong&gt;우리 서비스에서 해당 코드 경로가 외부 입력과 연결되는지&lt;/strong&gt;를 확인하는 게 중요합니다.
        &lt;/div&gt;

        &lt;pre&gt;&lt;code&gt;# (코드 관점 점검 포인트 예시)
# - 사용자 입력(요청/메시지/파일) 값을 그대로 console.table(...)에 넣는 코드가 있는지
# - 디버그/운영 로그에서 구조화된 데이터를 테이블로 출력하는 경로가 있는지

# 검색 예시(리포지토리)
grep -RIn --exclude-dir=node_modules &quot;console\.table&quot; .
&lt;/code&gt;&lt;/pre&gt;

        &lt;p class=&quot;muted&quot;&gt;
          실제 사용 시에는 “외부 입력 → 로깅/테이블 출력 → 프로세스 영향” 연결이 있는지,
          그리고 “권한 없는 원격 사용자”가 그 경로를 만들 수 있는지까지 확인하면 우선순위를 더 정확히 잡을 수 있습니다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-recover&quot;&gt;
        &lt;h2 id=&quot;sec-recover&quot;&gt;복구&lt;/h2&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;권장 복구 흐름&lt;/strong&gt;&lt;br&gt;
          1) 안전한 버전으로 업데이트(가장 확실한 해결)&lt;br&gt;
          2) 즉시 업데이트가 어렵다면 단기 완화(입력 경로 차단/코드 경로 회피) + 변경관리 기록&lt;br&gt;
          3) 배포 후 재스캔 및 모니터링으로 “탐지 해소”와 “장애 없음”을 동시에 확인
        &lt;/div&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;업데이트(일반 가이드)&lt;/strong&gt;&lt;br&gt;
          - 노드 런타임이 직접 설치되어 있다면: OS 패키지/공식 배포판 기준으로 안전 버전으로 상향&lt;br&gt;
          - 컨테이너라면: 베이스 이미지를 최신 보안 패치 포함 버전으로 교체 후 재빌드&lt;br&gt;
          - 번들(상위 제품 내 포함)이라면: tocmat 제품 업데이트/핫픽스 적용이 우선
        &lt;/div&gt;

        &lt;pre&gt;&lt;code&gt;# (컨테이너 예시) 베이스 이미지/런타임 업데이트 후 재빌드
# - 예시는 개념용이며, 조직 표준 이미지/레지스트리 정책을 따르세요.
docker build -t your-image:patched .
docker run --rm your-image:patched node -v

# 배포 후 점검(예시)
curl -fsS https://your-service/healthz
&lt;/code&gt;&lt;/pre&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;단기 완화(업데이트 전 임시)&lt;/strong&gt;&lt;br&gt;
          - 외부 입력이 console.table 등 “테이블 출력 경로”로 들어가지 않도록 차단/검증 강화&lt;br&gt;
          - 문제 코드 경로가 디버그/옵션일 경우 운영에서 비활성화&lt;br&gt;
          - WAF/게이트웨이에서 비정상 파라미터(프로토타입 키 유사 패턴) 필터링을 임시 적용(과차단 주의)
        &lt;/div&gt;

        &lt;p class=&quot;muted&quot;&gt;
          단기 완화는 “위험도 낮추기”일 뿐, 보안 감사/게이트를 통과하려면 최종적으로 패치(버전 상향)가 필요할 때가 많습니다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-prevent&quot;&gt;
        &lt;h2 id=&quot;sec-prevent&quot;&gt;재발 방지&lt;/h2&gt;

        &lt;div class=&quot;grid&quot;&gt;
          &lt;div class=&quot;card&quot;&gt;
            &lt;strong&gt;운영 프로세스&lt;/strong&gt;&lt;br&gt;
            - SBOM/컴포넌트 인벤토리 유지(이미지 해시, 런타임 버전, 번들 포함 관계)&lt;br&gt;
            - “빌드 이미지”와 “런타임 이미지” 분리(멀티스테이지 빌드 정착)&lt;br&gt;
            - 보안 스캔 기준: 런타임 레이어 중심 + 예외 승인 워크플로 명문화
          &lt;/div&gt;
          &lt;div class=&quot;card&quot;&gt;
            &lt;strong&gt;기술적 가드레일&lt;/strong&gt;&lt;br&gt;
            - 외부 입력의 객체 키 화이트리스트/스키마 검증(특히 로그/디버그 출력 전)&lt;br&gt;
            - 의존성 업데이트 정책(정기 업데이트, LTS 추적, 긴급 패치 창구)&lt;br&gt;
            - 모니터링: 에러율/메모리/CPU 급증 알림 + 릴리즈별 비교
          &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;릴리즈 체크(추천)&lt;/strong&gt;&lt;br&gt;
          - 배포 전: 이미지/호스트 스캔 결과(해당 CVE 포함 여부) 확인&lt;br&gt;
          - 배포 후: 동일 조건 재스캔 + 서비스 지표(에러율, 지연, 리소스) 확인&lt;br&gt;
          - 기록: “탐지 ID / 영향 컴포넌트 / 버전 / 조치일 / 롤백 포인트”를 변경관리 티켓에 남기기
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-result&quot;&gt;
        &lt;h2 id=&quot;sec-result&quot;&gt;결과&lt;/h2&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;strong&gt;완료 기준&lt;/strong&gt;&lt;br&gt;
          - (필수) 스캐너/CI 게이트에서 CVE-2022-21824 탐지가 해소됨&lt;br&gt;
          - (필수) 운영 지표 이상 없음(에러율/지연/리소스)&lt;br&gt;
          - (권장) 어떤 구성요소가 원인이었는지(tocmat 내부/외부, 런타임/빌드) 문서화 완료
        &lt;/div&gt;

        &lt;p class=&quot;muted&quot;&gt;
          다음에 같은 유형이 재발하면, “tocmat이라는 표기”에 끌려가기보다 &lt;strong&gt;탐지 경로(Path) → 실제 실행 여부 → 버전&lt;/strong&gt; 순서로 보면 훨씬 빨리 정리됩니다.
        &lt;/p&gt;
      &lt;/section&gt;
    &lt;/div&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;TechArticle&quot;,
          &quot;@id&quot;: &quot;https://example.com/tocmat-cve-2022-21824#article&quot;,
          &quot;headline&quot;: &quot;tocmat - CVE-2022-21824&quot;,
          &quot;description&quot;: &quot;tocmat 환경에서 CVE-2022-21824 경고 발생 시 영향 확인, 버전 점검, 완화, 패치 및 재발 방지 절차를 운영 관점으로 정리한 문서.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;mainEntityOfPage&quot;: &quot;https://example.com/tocmat-cve-2022-21824&quot;,
          &quot;image&quot;: &quot;https://example.com/og-placeholder.jpg&quot;
        },
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;@id&quot;: &quot;https://example.com/tocmat-cve-2022-21824#breadcrumb&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;홈&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;보안 점검&quot;,
              &quot;item&quot;: &quot;https://example.com/security&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;tocmat - CVE-2022-21824&quot;
            }
          ]
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;

&lt;!-- TAGS (관리자 입력용 10개): CVE-2022-21824, Node.js, 프로토타입오염, 보안취약점, 취약점점검, 패치관리, 컨테이너보안, 버전업, 운영대응, 보안스캔 --&gt;</description>
      <category>IT 소식 뉴스/CVE CODE</category>
      <category>CVE-2022-21824</category>
      <category>node.js</category>
      <category>prototype pollution</category>
      <category>버전 점검</category>
      <category>보안 취약점</category>
      <category>운영 환경</category>
      <category>취약점 대응</category>
      <category>콘솔 테이블</category>
      <category>패치 적용</category>
      <category>프로토타입 오염</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/519</guid>
      <comments>https://togethergrow.tistory.com/entry/tocmat-CVE-2022-21824#entry519comment</comments>
      <pubDate>Mon, 18 May 2026 11:29:35 +0900</pubDate>
    </item>
    <item>
      <title>ORA-01210 데이터파일 헤더 미디어 손상으로 RECOVER 실패 시 복구 절차</title>
      <link>https://togethergrow.tistory.com/entry/ORA-01210-%EB%8D%B0%EC%9D%B4%ED%84%B0%ED%8C%8C%EC%9D%BC-%ED%97%A4%EB%8D%94-%EB%AF%B8%EB%94%94%EC%96%B4-%EC%86%90%EC%83%81%EC%9C%BC%EB%A1%9C-RECOVER-%EC%8B%A4%ED%8C%A8-%EC%8B%9C-%EB%B3%B5%EA%B5%AC-%EC%A0%88%EC%B0%A8</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,initial-scale=1&quot; /&gt;

  &lt;title&gt;ORA-01210 데이터파일 헤더 미디어 손상으로 RECOVER 실패 시 복구 절차&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;RECOVER DATABASE USING BACKUP CONTROLFILE 수행 중 ORA-01210(데이터파일 헤더 미디어 손상)과 ORA-01122/01110이 발생해 복구가 중단될 때, 1차 점검부터 RMAN 복구·대체 전략까지 단계별로 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;ORA-01210, ORA-01122, ORA-00283, Oracle recovery, backup controlfile, RMAN restore, datafile header corrupt, ASM, undo tablespace, archivelog, resetlogs&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;ORA-01210 데이터파일 헤더 미디어 손상으로 RECOVER 실패 시 복구 절차&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;RECOVER 중 ORA-01210/ORA-01122/ORA-01110이 발생할 때의 점검·복구 순서와 우회 전략(UNDO 포함)을 정리합니다.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-image.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;ORA-01210 데이터파일 헤더 미디어 손상으로 RECOVER 실패 시 복구 절차&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;RECOVER DATABASE USING BACKUP CONTROLFILE 수행 중 데이터파일 헤더 미디어 손상으로 복구가 중단될 때의 단계형 대응.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-image.jpg&quot; /&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main&gt;
    &lt;article class=&quot;post-content&quot; aria-label=&quot;일반오류형 확장형 매뉴얼&quot;&gt;
      &lt;header class=&quot;post-header&quot;&gt;
        &lt;h1&gt;ORA-01210 데이터파일 헤더 미디어 손상으로 RECOVER 실패 시 복구 절차&lt;/h1&gt;
        &lt;p class=&quot;sub&quot;&gt;
          아래 내용은 &lt;code&gt;RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL&lt;/code&gt; 수행 중&lt;br&gt;
          &lt;code&gt;ORA-01210&lt;/code&gt;(data file header is media corrupt)로 복구 세션이 중단되는 케이스를 기준으로 정리했습니다.
        &lt;/p&gt;
      &lt;/header&gt;

      &lt;style&gt;
        .post-content{line-height:1.7; font-size:16px;}
        .post-content .wrap{max-width:920px; margin:0 auto; padding:0 4px;}
        .post-content h2{font-size:1.35em; margin:28px 0 10px;}
        .post-content h3{font-size:1.1em; margin:18px 0 8px;}
        .post-content p{margin:10px 0;}
        .post-content ul{margin:10px 0 10px 18px;}
        .post-content li{margin:6px 0;}
        .post-content code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot;Courier New&quot;,monospace; font-size:0.95em;}
        .post-content pre{background:#0b1020; color:#e6edf3; border-radius:14px; padding:14px; overflow:auto; margin:12px 0;}
        .post-content pre code{color:inherit;}
        .post-content .callout{border:1px solid rgba(0,0,0,.08); border-radius:16px; padding:12px 14px; margin:12px 0; background:rgba(0,0,0,.02);}
        .post-content .callout strong{display:block; margin-bottom:6px;}
        .post-content table{width:100%; border-collapse:collapse; margin:10px 0; font-size:15px;}
        .post-content th,.post-content td{border:1px solid rgba(0,0,0,.12); padding:10px; vertical-align:top;}
        .post-content th{background:rgba(0,0,0,.04); text-align:left;}
        .post-content .hr{height:1px; background:rgba(0,0,0,.08); margin:18px 0;}
        .post-content .badge{display:inline-block; padding:2px 8px; border-radius:999px; background:rgba(0,0,0,.06); font-size:12px; vertical-align:middle;}
      &lt;/style&gt;

      &lt;div class=&quot;wrap&quot;&gt;

        &lt;section&gt;
          &lt;h2&gt;개요&lt;/h2&gt;

          &lt;p&gt;
            다음과 같은 로그 흐름은 “아카이브/리두 부족”이 아니라,
            &lt;strong&gt;특정 데이터파일의 헤더 자체가 물리적으로 손상&lt;/strong&gt;되어 검증 단계에서 복구가 끊기는 패턴입니다.
          &lt;/p&gt;

          &lt;pre&gt;&lt;code&gt;SQL&amp;gt; recover database using backup controlfile until cancel;
ORA-00283: recovery session canceled due to errors
ORA-01122: database file &amp;lt;DATAFILE_NO&amp;gt; failed verification check
ORA-01110: data file &amp;lt;DATAFILE_NO&amp;gt;: '+DATA_DG/&amp;lt;DB_UNIQUE&amp;gt;/DATAFILE/undotbs_&amp;lt;N&amp;gt;.&amp;lt;inc&amp;gt;.&amp;lt;stamp&amp;gt;'
ORA-01210: data file header is media corrupt&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;strong&gt;핵심 포인트&lt;/strong&gt;
            &lt;code&gt;ORA-01210&lt;/code&gt;은 “해당 데이터파일을 읽어야 하는데 헤더가 깨져 검증 실패”를 의미합니다.&lt;br&gt;
            이 케이스는 보통 &lt;strong&gt;해당 데이터파일을 백업에서 RESTORE 후 RECOVER&lt;/strong&gt;하는 것이 정석입니다.
          &lt;/div&gt;

          &lt;p&gt;
            실무 기준으로 보면, 이 오류는 “UNDO라서 버려도 되지 않나?”라고 접근하면 더 크게 꼬일 수 있습니다.&lt;br&gt;
            특히 데이터베이스가 MOUNT 상태에서 복구 중이라면, “새 UNDO 생성/전환”은 OPEN이 필요해 우회가 쉽지 않습니다.
          &lt;/p&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;환경&lt;/h2&gt;

          &lt;ul&gt;
            &lt;li&gt;Oracle DB + ASM 환경 가정 (경로가 &lt;code&gt;+DATA_DG/...&lt;/code&gt; 형태)&lt;/li&gt;
            &lt;li&gt;복구 모드: &lt;span class=&quot;badge&quot;&gt;MOUNT&lt;/span&gt; 상태에서 &lt;code&gt;USING BACKUP CONTROLFILE&lt;/code&gt; 수행&lt;/li&gt;
            &lt;li&gt;문제 파일: &lt;code&gt;UNDOTBS_&amp;lt;N&amp;gt;&lt;/code&gt;에 속한 데이터파일(식별정보는 대체 표기)&lt;/li&gt;
          &lt;/ul&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;strong&gt;중요&lt;/strong&gt;
            아래 예시는 데이터파일 번호/파일명/UNDO 번호를 모두 식별불가 형태로 치환했습니다.&lt;br&gt;
            실제 적용 시에는 조회 결과로 나온 값만 치환 없이 그대로 사용하세요.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;증상&lt;/h2&gt;

          &lt;h3&gt;대표 증상&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;&lt;code&gt;RECOVER DATABASE ...&lt;/code&gt; 실행 즉시 &lt;code&gt;ORA-01122&lt;/code&gt; + &lt;code&gt;ORA-01210&lt;/code&gt;으로 중단&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;ORA-01110&lt;/code&gt;에 특정 데이터파일(ASM 경로)이 반복 표기&lt;/li&gt;
            &lt;li&gt;아카이브 로그를 넣기 전에 검증 단계에서 끊김&lt;/li&gt;
          &lt;/ul&gt;

          &lt;h3&gt;의미 해석&lt;/h3&gt;
          &lt;table&gt;
            &lt;thead&gt;
              &lt;tr&gt;
                &lt;th&gt;오류&lt;/th&gt;
                &lt;th&gt;현장에서의 의미&lt;/th&gt;
              &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
              &lt;tr&gt;
                &lt;td&gt;&lt;code&gt;ORA-01210&lt;/code&gt;&lt;/td&gt;
                &lt;td&gt;데이터파일 헤더(파일 시작부) 자체가 미디어 손상으로 읽기/검증 불가&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;&lt;code&gt;ORA-01122&lt;/code&gt;&lt;/td&gt;
                &lt;td&gt;Oracle이 내부 검증을 시도했으나 해당 데이터파일이 검증 실패&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;&lt;code&gt;ORA-01110&lt;/code&gt;&lt;/td&gt;
                &lt;td&gt;문제의 “대상 데이터파일”을 명시(복구 대상 pinpoint)&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;&lt;code&gt;ORA-00283&lt;/code&gt;&lt;/td&gt;
                &lt;td&gt;위 오류들 때문에 복구 세션이 취소됨(결과 메시지)&lt;/td&gt;
              &lt;/tr&gt;
            &lt;/tbody&gt;
          &lt;/table&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;1차 점검&lt;/h2&gt;

          &lt;h3&gt;1) 대상 데이터파일 번호/테이블스페이스 재확인&lt;/h3&gt;
          &lt;p&gt;MOUNT에서도 조회 가능한 뷰로 “어느 TS/어느 파일”인지 먼저 고정합니다.&lt;/p&gt;
          &lt;pre&gt;&lt;code&gt;-- SQL*Plus
SELECT file#, name, status, error
  FROM v$datafile
 ORDER BY file#;

SELECT file#, status, error, change#, time
  FROM v$recover_file
 ORDER BY file#;&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;2) 해당 파일이 실제로 읽히는지(OS/ASM 레벨)&lt;/h3&gt;
          &lt;p&gt;ASM이라면 ASMCMD로 파일 존재/메타를 먼저 확인합니다.&lt;/p&gt;
          &lt;pre&gt;&lt;code&gt;-- OS: grid/oracle 사용자로
asmcmd ls +DATA_DG/&amp;lt;DB_UNIQUE&amp;gt;/DATAFILE/
asmcmd ls +DATA_DG/&amp;lt;DB_UNIQUE&amp;gt;/DATAFILE/undotbs_&amp;lt;N&amp;gt;.*&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;3) “파일 손상”인지 “경로/권한/디스크”인지 분리&lt;/h3&gt;
          &lt;p&gt;헤더 미디어 손상은 보통 물리 손상 쪽이지만, 스토리지 이슈가 동반될 수 있어 기본 점검은 권장됩니다.&lt;/p&gt;
          &lt;ul&gt;
            &lt;li&gt;스토리지/ASM 디스크그룹 상태(&lt;code&gt;v$asm_diskgroup&lt;/code&gt;, &lt;code&gt;asmcmd lsdg&lt;/code&gt;)&lt;/li&gt;
            &lt;li&gt;OS 로그(디스크 I/O 에러 흔적)&lt;/li&gt;
            &lt;li&gt;동일 DG에서 다른 파일도 읽기 오류가 있는지&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;심화 분석&lt;/h2&gt;

          &lt;h3&gt;분기 A: 백업이 있고, RMAN 사용 가능&lt;/h3&gt;
          &lt;p&gt;
            가장 표준적인 복구 흐름입니다.&lt;br&gt;
            “문제 데이터파일만” 백업본으로 되돌린 뒤, 그 파일만 redo 적용(RECOVER)합니다.
          &lt;/p&gt;

          &lt;h3&gt;분기 B: 백업이 없거나, 카탈로그/제어파일 정보가 불완전&lt;/h3&gt;
          &lt;p&gt;
            이 경우는 현실적으로 선택지가 급격히 줄어듭니다.&lt;br&gt;
            &lt;code&gt;USING BACKUP CONTROLFILE&lt;/code&gt;로 복구를 진행 중이라면 “어차피 백업 기반 복구”를 전제로 하는 경우가 많아서,
            백업 소스가 없다면 &lt;strong&gt;동일 시점 복구 자체가 불가능&lt;/strong&gt;할 수 있습니다.
          &lt;/p&gt;

          &lt;h3&gt;분기 C: 대상이 UNDO 데이터파일일 때의 주의&lt;/h3&gt;
          &lt;div class=&quot;callout&quot;&gt;
            &lt;strong&gt;UNDO라서 그냥 버려도 되지 않나?&lt;/strong&gt;
            OPEN 상태라면 “새 UNDO TS 생성 → 전환 → 기존 UNDO drop” 같은 정리가 가능하지만,&lt;br&gt;
            지금처럼 MOUNT에서 media recovery를 하는 국면에서는 “새 UNDO 생성/전환”이 막혀있는 경우가 많습니다.&lt;br&gt;
            따라서 결론은 대부분 동일합니다: &lt;strong&gt;해당 UNDO 데이터파일도 백업에서 RESTORE 후 RECOVER&lt;/strong&gt;가 정석입니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;복구&lt;/h2&gt;

          &lt;h3&gt;0) 전제: 상태를 MOUNT로 고정&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;-- SQL*Plus
SHUTDOWN ABORT;
STARTUP MOUNT;&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;1) RMAN에서 문제 데이터파일만 RESTORE + RECOVER&lt;/h3&gt;
          &lt;p&gt;아래는 “문제 데이터파일 번호”를 기준으로 진행하는 가장 단순한 절차입니다.&lt;/p&gt;
          &lt;pre&gt;&lt;code&gt;-- RMAN
rman target /

-- (선택) 복구 대상/백업 인식 확인
REPORT SCHEMA;
LIST BACKUP OF DATAFILE &amp;lt;DATAFILE_NO&amp;gt;;

-- 핵심: 손상 파일만 복구
RUN {
  ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
  RESTORE DATAFILE &amp;lt;DATAFILE_NO&amp;gt;;
  RECOVER DATAFILE &amp;lt;DATAFILE_NO&amp;gt;;
  RELEASE CHANNEL c1;
}&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;strong&gt;체크&lt;/strong&gt;
            RESTORE가 성공해도 RECOVER 과정에서 아카이브 로그 요구가 뜰 수 있습니다.&lt;br&gt;
            그 경우는 “파일 손상”이 아니라 “적용할 로그가 더 필요”하다는 정상 흐름입니다.
          &lt;/div&gt;

          &lt;h3&gt;2) 전체 데이터베이스 복구 재시도&lt;/h3&gt;
          &lt;p&gt;문제 파일이 정상화되면, 다시 전체 RECOVER 흐름으로 돌아갑니다.&lt;/p&gt;
          &lt;pre&gt;&lt;code&gt;-- SQL*Plus
RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;&lt;/code&gt;&lt;/pre&gt;

          &lt;p&gt;요구하는 아카이브 로그를 제공할 수 있는 만큼 적용하고, 더 이상 없으면 CANCEL합니다.&lt;/p&gt;

          &lt;h3&gt;3) OPEN RESETLOGS&lt;/h3&gt;
          &lt;p&gt;복구 종료 지점이 “백업 컨트롤파일 기반”이면 보통 RESETLOGS 오픈이 필요합니다.&lt;/p&gt;
          &lt;pre&gt;&lt;code&gt;ALTER DATABASE OPEN RESETLOGS;&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;4) (가능하면) 손상 검증/재점검&lt;/h3&gt;
          &lt;p&gt;복구 직후 최소한의 검증을 권장합니다.&lt;/p&gt;
          &lt;pre&gt;&lt;code&gt;-- RMAN: 논리/물리 점검(환경에 맞게 선택)
BACKUP VALIDATE CHECK LOGICAL DATABASE;

-- 또는 특정 파일만 점검
VALIDATE DATAFILE &amp;lt;DATAFILE_NO&amp;gt;;&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;strong&gt;복구 중 막히는 흔한 원인&lt;/strong&gt;
            아카이브 로그 미보유&lt;br&gt;
            백업본이 손상/불완전&lt;br&gt;
            ASM 디스크그룹/스토리지 레벨 I/O 문제 지속&lt;br&gt;
            컨트롤파일/카탈로그 불일치
          &lt;/div&gt;

          &lt;h3&gt;5) “RMAN 자체가 어려운 환경”일 때 (최소 가이드)&lt;/h3&gt;
          &lt;p&gt;
            운영 환경에서는 RMAN이 사실상 정답이지만, 복구 툴/백업 소스가 없는 경우는 결론이 빠르게 나옵니다.&lt;br&gt;
            아래는 판단 기준만 간단히 정리합니다.
          &lt;/p&gt;
          &lt;ul&gt;
            &lt;li&gt;해당 데이터파일의 “정상 백업본”이 없으면: 동일 시점 복구는 거의 불가능&lt;/li&gt;
            &lt;li&gt;스토리지 I/O 에러가 계속되면: 복구 반복보다 먼저 스토리지 안정화가 우선&lt;/li&gt;
            &lt;li&gt;UNDO 파일이라고 해서 MOUNT에서 임의 재생성은 대부분 막힘: 백업 복구가 정석&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;재발 방지&lt;/h2&gt;

          &lt;h3&gt;1) 백업/아카이브 로그 보존 정책 재점검&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;데이터파일 단위 RESTORE가 가능하도록 RMAN 백업 주기/보관기간 정리&lt;/li&gt;
            &lt;li&gt;아카이브 로그 보관(특히 백업 컨트롤파일 기반 복구 시점 커버)&lt;/li&gt;
          &lt;/ul&gt;

          &lt;h3&gt;2) 스토리지/ASM 레벨 사전 감지&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;ASM 디스크그룹 상태/리밸런싱/디스크 오류 알람&lt;/li&gt;
            &lt;li&gt;OS 커널 로그에서 I/O error, reset, path failover 이벤트 모니터링&lt;/li&gt;
          &lt;/ul&gt;

          &lt;h3&gt;3) 장애 시 운영 절차(런북) 고정&lt;/h3&gt;
          &lt;p&gt;
            실제 사용 시에는 “원인 파악보다 서비스 복구”가 우선인 경우가 많습니다.&lt;br&gt;
            그래서 런북에는 최소한 아래 3가지는 고정하는 게 좋습니다.
          &lt;/p&gt;
          &lt;ul&gt;
            &lt;li&gt;오류 발생 즉시: &lt;code&gt;v$recover_file&lt;/code&gt;, &lt;code&gt;v$datafile&lt;/code&gt; 출력 확보&lt;/li&gt;
            &lt;li&gt;복구 우선순위: 손상 파일 단위 RESTORE/RECOVER → 전체 RECOVER 재시도&lt;/li&gt;
            &lt;li&gt;복구 이후: VALIDATE + 스토리지 원인 분석(재발 방지)&lt;/li&gt;
          &lt;/ul&gt;

          &lt;div class=&quot;hr&quot;&gt;&lt;/div&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;strong&gt;한 줄 정리&lt;/strong&gt;
            &lt;code&gt;ORA-01210&lt;/code&gt;은 “로그를 더 넣으면 된다”가 아니라 “파일 헤더가 깨져 검증 자체가 안 된다”에 가깝습니다.&lt;br&gt;
            따라서 대부분의 해법은 &lt;strong&gt;문제 데이터파일을 백업에서 복구(RESTORE)하고 다시 RECOVER&lt;/strong&gt;하는 흐름으로 수렴합니다.
          &lt;/div&gt;
        &lt;/section&gt;

      &lt;/div&gt;
    &lt;/article&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;DB 장애&quot;,
              &quot;item&quot;: &quot;https://example.com/db/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;ORA-01210 데이터파일 헤더 미디어 손상 복구&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;TechArticle&quot;,
          &quot;headline&quot;: &quot;ORA-01210 데이터파일 헤더 미디어 손상으로 RECOVER 실패 시 복구 절차&quot;,
          &quot;description&quot;: &quot;RECOVER DATABASE USING BACKUP CONTROLFILE 수행 중 ORA-01210(데이터파일 헤더 미디어 손상)과 ORA-01122/01110이 발생해 복구가 중단될 때, 1차 점검부터 RMAN 복구·대체 전략까지 단계별로 정리합니다.&quot;,
          &quot;inLanguage&quot;: &quot;ko&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/db/ora-01210-recover-failure&quot;
          }
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>지식 공유/DBMS</category>
      <category>archivelog</category>
      <category>ASM</category>
      <category>backup controlfile</category>
      <category>datafile header corrupt</category>
      <category>ORA-00283</category>
      <category>ORA-01122</category>
      <category>ORA-01210</category>
      <category>Oracle recovery</category>
      <category>RMAN restore</category>
      <category>undo tablespace</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/518</guid>
      <comments>https://togethergrow.tistory.com/entry/ORA-01210-%EB%8D%B0%EC%9D%B4%ED%84%B0%ED%8C%8C%EC%9D%BC-%ED%97%A4%EB%8D%94-%EB%AF%B8%EB%94%94%EC%96%B4-%EC%86%90%EC%83%81%EC%9C%BC%EB%A1%9C-RECOVER-%EC%8B%A4%ED%8C%A8-%EC%8B%9C-%EB%B3%B5%EA%B5%AC-%EC%A0%88%EC%B0%A8#entry518comment</comments>
      <pubDate>Thu, 16 Apr 2026 17:24:08 +0900</pubDate>
    </item>
    <item>
      <title>Rescue 모드에서 인증 장애 복구: /etc/shadow&amp;middot;unix_chkpwd&amp;middot;init 실행 실패 점검</title>
      <link>https://togethergrow.tistory.com/entry/Rescue-%EB%AA%A8%EB%93%9C%EC%97%90%EC%84%9C-%EC%9D%B8%EC%A6%9D-%EC%9E%A5%EC%95%A0-%EB%B3%B5%EA%B5%AC-etcshadow%C2%B7unixchkpwd%C2%B7init-%EC%8B%A4%ED%96%89-%EC%8B%A4%ED%8C%A8-%EC%A0%90%EA%B2%80</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,initial-scale=1&quot; /&gt;

  &lt;title&gt;Rescue 모드에서 인증 장애 복구: /etc/shadow·unix_chkpwd·init 실행 실패 점검&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;unix_chkpwd SUID 제거·/etc/shadow 권한 변경 이후 SSH/su/sudo가 막히고, rescue 환경에서 dnf/yum 없이 복구해야 할 때의 점검·복구 순서를 정리합니다. init 실행 실패와 chroot I/O 오류까지 함께 다룹니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;unix_chkpwd, /etc/shadow, SUID, PAM, rescue mode, chroot, systemd, /sbin/init, SELinux autorelabel, xfs_repair, fsck&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;Rescue 모드에서 인증 장애 복구: /etc/shadow·unix_chkpwd·init 실행 실패 점검&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;unix_chkpwd SUID 제거·/etc/shadow 권한 변경 이후 인증이 붕괴됐을 때, rescue 환경에서 복구하는 실무 절차를 단계별로 정리합니다.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-image.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;Rescue 모드에서 인증 장애 복구: /etc/shadow·unix_chkpwd·init 실행 실패 점검&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;권한 변경으로 SSH/sudo/su가 막힌 상황에서 rescue로 진입해 점검·복구하는 순서와 분기(SELinux, FS 손상, init 실패)를 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-image.jpg&quot; /&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main&gt;
    &lt;article class=&quot;post-content&quot; aria-label=&quot;일반오류형 매뉴얼&quot;&gt;
      &lt;header class=&quot;post-header&quot;&gt;
        &lt;h1&gt;Rescue 모드에서 인증 장애 복구: /etc/shadow·unix_chkpwd·init 실행 실패 점검&lt;/h1&gt;
        &lt;p class=&quot;sub&quot;&gt;
          권한/보안 점검 조치 이후 &lt;strong&gt;로그인 불가&lt;/strong&gt; 또는 &lt;strong&gt;/sbin/init 실행 실패&lt;/strong&gt;까지 번질 때, 단계별로 원인 분기와 복구를 진행합니다.
        &lt;/p&gt;
      &lt;/header&gt;

      &lt;style&gt;
        .post-content{line-height:1.7; font-size:16px;}
        .post-content .wrap{max-width:860px; margin:0 auto; padding:0 4px;}
        .post-content h2{font-size:1.35em; margin:28px 0 10px;}
        .post-content h3{font-size:1.1em; margin:18px 0 8px;}
        .post-content p{margin:10px 0;}
        .post-content ul{margin:10px 0 10px 18px;}
        .post-content li{margin:6px 0;}
        .post-content code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot;Courier New&quot;,monospace; font-size:0.95em;}
        .post-content pre{background:#0b1020; color:#e6edf3; border-radius:14px; padding:14px 14px; overflow:auto; margin:12px 0;}
        .post-content pre code{color:inherit;}
        .post-content .callout{border:1px solid rgba(0,0,0,.08); border-radius:16px; padding:12px 14px; margin:12px 0; background:rgba(0,0,0,.02);}
        .post-content .callout strong{display:block; margin-bottom:6px;}
        .post-content .grid{display:grid; grid-template-columns:1fr; gap:10px;}
        .post-content .badge{display:inline-block; padding:2px 8px; border-radius:999px; background:rgba(0,0,0,.06); font-size:12px; vertical-align:middle;}
        .post-content .hr{height:1px; background:rgba(0,0,0,.08); margin:18px 0;}
        .post-content table{width:100%; border-collapse:collapse; margin:10px 0; font-size:15px;}
        .post-content th,.post-content td{border:1px solid rgba(0,0,0,.12); padding:10px; vertical-align:top;}
        .post-content th{background:rgba(0,0,0,.04); text-align:left;}
      &lt;/style&gt;

      &lt;div class=&quot;wrap&quot;&gt;

        &lt;section&gt;
          &lt;h2&gt;개요&lt;/h2&gt;

          &lt;p&gt;
            사용자 인증 체계(PAM)는 &lt;code&gt;/etc/shadow&lt;/code&gt;를 일반 사용자에게 직접 노출하지 않도록 설계되어 있고,
            대신 인증 과정에서 필요한 접근을 &lt;code&gt;unix_chkpwd&lt;/code&gt; 같은 헬퍼가 담당합니다.
            여기서 권한(특히 SUID)이나 파일 접근이 끊기면 &lt;span class=&quot;badge&quot;&gt;SSH&lt;/span&gt;, &lt;span class=&quot;badge&quot;&gt;sudo&lt;/span&gt;, &lt;span class=&quot;badge&quot;&gt;su&lt;/span&gt;가 연쇄로 실패해
            “서버가 죽은 것처럼” 보일 수 있습니다.
          &lt;/p&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;strong&gt;실무 기준으로 보면&lt;/strong&gt;
            인증 장애는 원인이 단일해 보이더라도, &lt;br&gt;
            SELinux 컨텍스트, 루트 마운트 상태, 파일시스템 손상(I/O error)까지 같이 엮여 “부팅 실패(/sbin/init)”로 번질 수 있습니다. &lt;br&gt;
            그래서 아래처럼 &lt;em&gt;단계형 분기&lt;/em&gt;로 접근하는 게 가장 안전합니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;환경&lt;/h2&gt;

          &lt;p&gt;아래 환경을 가정합니다. (다르더라도 흐름은 동일합니다.)&lt;/p&gt;
          &lt;ul&gt;
            &lt;li&gt;RHEL/Rocky/CentOS 계열 (systemd 기반)&lt;/li&gt;
            &lt;li&gt;Rescue/Single user 모드로 진입 가능&lt;/li&gt;
            &lt;li&gt;보안 점검/하드닝 과정에서 SUID/권한 변경 이력 존재&lt;/li&gt;
            &lt;li&gt;일부 rescue 환경에서 &lt;code&gt;dnf&lt;/code&gt;/&lt;code&gt;yum&lt;/code&gt;/&lt;code&gt;find&lt;/code&gt;/&lt;code&gt;touch&lt;/code&gt;가 없을 수 있음&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;증상&lt;/h2&gt;

          &lt;div class=&quot;grid&quot;&gt;
            &lt;div class=&quot;callout&quot;&gt;
              &lt;strong&gt;인증 계열 증상&lt;/strong&gt;
              SSH 로그인 실패&lt;br&gt;
              sudo/su 실패&lt;br&gt;
              PAM 관련 서비스 기동 실패
            &lt;/div&gt;

            &lt;div class=&quot;callout&quot;&gt;
              &lt;strong&gt;부팅/시스템 계열 증상&lt;/strong&gt;
              &lt;code&gt;Failed to execute /sbin/init&lt;/code&gt;&lt;br&gt;
              &lt;code&gt;Failed to execute fallback shell&lt;/code&gt;&lt;br&gt;
              chroot 시 &lt;code&gt;/bin/sh Input/output error&lt;/code&gt;
            &lt;/div&gt;
          &lt;/div&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;strong&gt;중요&lt;/strong&gt;
            인증만 깨진 상태라면 “OS는 살아있는데 접속이 막힌 상태”일 가능성이 큽니다.&lt;br&gt;
            반면 &lt;code&gt;/sbin/init&lt;/code&gt; 실패나 &lt;code&gt;Input/output error&lt;/code&gt;가 있으면 권한 문제가 아니라
            &lt;em&gt;systemd/glibc 손상&lt;/em&gt; 또는 &lt;em&gt;파일시스템/디스크 문제&lt;/em&gt;로 분기해야 합니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;1차 점검&lt;/h2&gt;

          &lt;h3&gt;1) 최소 확인: shadow와 unix_chkpwd 기본값&lt;/h3&gt;

          &lt;p&gt;정상 구성의 대표 조합은 다음입니다.&lt;/p&gt;
          &lt;table&gt;
            &lt;thead&gt;
              &lt;tr&gt;
                &lt;th&gt;대상&lt;/th&gt;
                &lt;th&gt;권장 상태&lt;/th&gt;
                &lt;th&gt;의미&lt;/th&gt;
              &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
              &lt;tr&gt;
                &lt;td&gt;&lt;code&gt;/etc/shadow&lt;/code&gt;&lt;/td&gt;
                &lt;td&gt;&lt;code&gt;0400&lt;/code&gt; / 소유자 &lt;code&gt;root:root&lt;/code&gt;&lt;/td&gt;
                &lt;td&gt;shadow는 root만 읽을 수 있어야 함&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;&lt;code&gt;unix_chkpwd&lt;/code&gt;&lt;/td&gt;
                &lt;td&gt;&lt;code&gt;4750&lt;/code&gt; / 소유자 &lt;code&gt;root:root&lt;/code&gt;&lt;/td&gt;
                &lt;td&gt;SUID로 인증 과정에서 shadow 접근을 대행&lt;/td&gt;
              &lt;/tr&gt;
            &lt;/tbody&gt;
          &lt;/table&gt;

          &lt;h3&gt;2) 부팅 가능(로그인 가능)한 경우 즉시 확인&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;ls -l /etc/shadow
ls -l /sbin/unix_chkpwd 2&amp;gt;/dev/null
ls -l /usr/sbin/unix_chkpwd 2&amp;gt;/dev/null&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;3) Rescue에서 루트 파일시스템 RW + 바인드 마운트&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;mount -o remount,rw /sysroot
mount --bind /dev  /sysroot/dev
mount --bind /proc /sysroot/proc
mount --bind /sys  /sysroot/sys
mount --bind /run  /sysroot/run&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;strong&gt;chroot가 안 되면?&lt;/strong&gt;
            chroot 자체가 실패(&lt;code&gt;/bin/sh Input/output error&lt;/code&gt;)하면 권한 복구보다 먼저&lt;br&gt;
            &lt;em&gt;파일시스템 점검(xfs_repair/fsck)&lt;/em&gt;로 분기해야 합니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;심화 분석&lt;/h2&gt;

          &lt;h3&gt;분기 A: 인증만 막힘(SSH/sudo/su 실패) — OS는 부팅됨&lt;/h3&gt;
          &lt;p&gt;대부분 다음 케이스 중 하나입니다.&lt;/p&gt;
          &lt;ul&gt;
            &lt;li&gt;&lt;code&gt;unix_chkpwd&lt;/code&gt;에서 SUID 제거됨 (&lt;code&gt;4750 → 0750&lt;/code&gt;)&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;/etc/shadow&lt;/code&gt; 권한이 과도하게 잠김 (&lt;code&gt;000&lt;/code&gt; 등)&lt;/li&gt;
            &lt;li&gt;SELinux 컨텍스트 꼬임(라벨 손상)&lt;/li&gt;
          &lt;/ul&gt;

          &lt;h3&gt;분기 B: &lt;code&gt;Failed to execute /sbin/init&lt;/code&gt; — init/systemd 경로 문제&lt;/h3&gt;
          &lt;p&gt;
            이 메시지가 반복되면 인증 파일만 복구해도 해결되지 않습니다.&lt;br&gt;
            &lt;code&gt;/sbin/init&lt;/code&gt; 링크/권한, &lt;code&gt;/usr/lib/systemd/systemd&lt;/code&gt; 존재 여부,
            그리고 SELinux 재라벨이 핵심입니다.
          &lt;/p&gt;

          &lt;pre&gt;&lt;code&gt;ls -l /sysroot/sbin/init
ls -l /sysroot/usr/lib/systemd/systemd&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;분기 C: &lt;code&gt;Input/output error&lt;/code&gt; — 파일시스템/디스크 손상 의심&lt;/h3&gt;
          &lt;p&gt;이 경우는 “권한 복구”가 아니라 “읽기 자체가 안 되는 상태”를 먼저 해결해야 합니다.&lt;/p&gt;

          &lt;pre&gt;&lt;code&gt;# 루트 디바이스/FS 타입 확인
lsblk -f&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;strong&gt;참고 분기&lt;/strong&gt;
            FS가 XFS면 &lt;code&gt;xfs_repair&lt;/code&gt;, ext 계열이면 &lt;code&gt;fsck&lt;/code&gt;로 점검합니다.&lt;br&gt;
            rescue 환경에 해당 명령이 없다면 설치 미디어(또는 더 기능이 많은 rescue 이미지)로 교체가 필요할 수 있습니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;복구&lt;/h2&gt;

          &lt;h3&gt;1) 인증 복구(표준 권장)&lt;/h3&gt;
          &lt;p&gt;가장 안전한 표준 복구입니다. (가능하면 이 조합으로 복귀)&lt;/p&gt;

          &lt;pre&gt;&lt;code&gt;chown root:root /sysroot/etc/shadow
chmod 400 /sysroot/etc/shadow

# unix_chkpwd 경로는 환경별로 다를 수 있어 2개 모두 시도
[ -e /sysroot/sbin/unix_chkpwd ] &amp;amp;&amp;amp; chown root:root /sysroot/sbin/unix_chkpwd &amp;amp;&amp;amp; chmod 4750 /sysroot/sbin/unix_chkpwd
[ -e /sysroot/usr/sbin/unix_chkpwd ] &amp;amp;&amp;amp; chown root:root /sysroot/usr/sbin/unix_chkpwd &amp;amp;&amp;amp; chmod 4750 /sysroot/usr/sbin/unix_chkpwd&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;2) init 실행 실패 복구(링크/권한 + SELinux 재라벨)&lt;/h3&gt;

          &lt;pre&gt;&lt;code&gt;# /sbin/init이 systemd로 연결되는 구조를 강제로 정리
ln -sf /usr/lib/systemd/systemd /sysroot/sbin/init

chown root:root /sysroot/sbin/init
chmod 755 /sysroot/sbin/init

chown root:root /sysroot/usr/lib/systemd/systemd
chmod 755 /sysroot/usr/lib/systemd/systemd&lt;/code&gt;&lt;/pre&gt;

          &lt;p&gt;SELinux를 쓰는 환경이면 재라벨 예약 파일을 생성합니다. &lt;code&gt;touch&lt;/code&gt;가 없으면 &lt;code&gt;echo&lt;/code&gt;로 대체합니다.&lt;/p&gt;
          &lt;pre&gt;&lt;code&gt;echo &amp;gt; /sysroot/.autorelabel&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;3) 재부팅&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;reboot&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;strong&gt;부팅 중 주의&lt;/strong&gt;
            SELinux relabel(재라벨) 메시지가 나오면 중간에 끄지 말고 끝까지 진행합니다.&lt;br&gt;
            시간이 오래 걸려도 정상 동작일 수 있습니다.
          &lt;/div&gt;

          &lt;h3&gt;4) 부팅 후 확인&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;ls -l /etc/shadow
ls -l /sbin/unix_chkpwd 2&amp;gt;/dev/null
ls -l /usr/sbin/unix_chkpwd 2&amp;gt;/dev/null
ls -l /sbin/init
ls -l /usr/lib/systemd/systemd&lt;/code&gt;&lt;/pre&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;재발 방지&lt;/h2&gt;

          &lt;h3&gt;1) SUID/SGID 점검에서 “예외” 기준을 명확히&lt;/h3&gt;
          &lt;p&gt;
            SUID/SGID 최소화는 원칙적으로 맞지만, &lt;code&gt;unix_chkpwd&lt;/code&gt;처럼 인증 체계에 필수인 구성요소는 예외가 필요합니다.&lt;br&gt;
            운영 환경에서는 “제거”보다 “필수 파일 식별 + 무결성 확인 + 접근 통제”가 더 안전합니다.
          &lt;/p&gt;

          &lt;h3&gt;2) 변경 전후 체크리스트&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;변경 전: &lt;code&gt;ls -l /etc/shadow&lt;/code&gt;, &lt;code&gt;ls -l (unix_chkpwd 경로)&lt;/code&gt; 기록&lt;/li&gt;
            &lt;li&gt;변경 후: SSH, sudo, su 최소 1회 동작 확인&lt;/li&gt;
            &lt;li&gt;SELinux 사용 시: 컨텍스트 손상 가능성 고려(필요 시 재라벨 계획 포함)&lt;/li&gt;
          &lt;/ul&gt;

          &lt;h3&gt;3) Rescue 환경 준비&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;복구 매체는 “명령이 충분한” 이미지로 준비 (dnf/yum, xfs_repair/fsck 포함)&lt;/li&gt;
            &lt;li&gt;ISO/IODD 사용 시: CD-ROM(iso9660) 모드 전환 방법 숙지&lt;/li&gt;
            &lt;li&gt;네트워크 복구 절차(인터페이스 up, DHCP, DNS) 문서화&lt;/li&gt;
          &lt;/ul&gt;

          &lt;div class=&quot;hr&quot;&gt;&lt;/div&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;strong&gt;핵심 요약&lt;/strong&gt;
            &lt;code&gt;/etc/shadow&lt;/code&gt;는 root만 읽도록 유지하고(보통 0400),&lt;br&gt;
            &lt;code&gt;unix_chkpwd&lt;/code&gt;는 인증 흐름을 위해 SUID(4750)가 필요한 경우가 많습니다.&lt;br&gt;
            여기에 &lt;code&gt;/sbin/init&lt;/code&gt; 실행 실패나 &lt;code&gt;I/O error&lt;/code&gt;가 섞이면 권한 문제가 아니라
            systemd/FS/SELinux까지 같이 복구해야 합니다.
          &lt;/div&gt;
        &lt;/section&gt;

      &lt;/div&gt;
    &lt;/article&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;운영 장애&quot;,
              &quot;item&quot;: &quot;https://example.com/ops/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;Rescue 모드에서 인증 장애 복구&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;TechArticle&quot;,
          &quot;headline&quot;: &quot;Rescue 모드에서 인증 장애 복구: /etc/shadow·unix_chkpwd·init 실행 실패 점검&quot;,
          &quot;description&quot;: &quot;unix_chkpwd SUID 제거·/etc/shadow 권한 변경 이후 SSH/su/sudo가 막히고, rescue 환경에서 dnf/yum 없이 복구해야 할 때의 점검·복구 순서를 정리합니다. init 실행 실패와 chroot I/O 오류까지 함께 다룹니다.&quot;,
          &quot;inLanguage&quot;: &quot;ko&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/ops/rescue-shadow-unix-chkpwd-init&quot;
          }
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>지식 공유/Server</category>
      <category>/etc/shadow</category>
      <category>/sbin/init</category>
      <category>chroot</category>
      <category>pam</category>
      <category>Rescue mode</category>
      <category>SELinux autorelabel</category>
      <category>SUID</category>
      <category>systemd</category>
      <category>unix_chkpwd</category>
      <category>xfs_repair</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/517</guid>
      <comments>https://togethergrow.tistory.com/entry/Rescue-%EB%AA%A8%EB%93%9C%EC%97%90%EC%84%9C-%EC%9D%B8%EC%A6%9D-%EC%9E%A5%EC%95%A0-%EB%B3%B5%EA%B5%AC-etcshadow%C2%B7unixchkpwd%C2%B7init-%EC%8B%A4%ED%96%89-%EC%8B%A4%ED%8C%A8-%EC%A0%90%EA%B2%80#entry517comment</comments>
      <pubDate>Thu, 16 Apr 2026 17:16:37 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 커널 로그에서 SYN 반복 유입 확인과 대응</title>
      <link>https://togethergrow.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%BB%A4%EB%84%90-%EB%A1%9C%EA%B7%B8%EC%97%90%EC%84%9C-SYN-%EB%B0%98%EB%B3%B5-%EC%9C%A0%EC%9E%85-%ED%99%95%EC%9D%B8%EA%B3%BC-%EB%8C%80%EC%9D%91</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;리눅스 커널 로그에서 SYN 반복 유입 확인과 대응 절차&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;커널 방화벽 로그에 동일 목적지 포트로 SYN 패킷이 반복 유입될 때, 원인 추적부터 1차 점검·심화 분석·복구·재발 방지까지 운영 관점에서 정리합니다.&quot; /&gt;

  &lt;meta name=&quot;keywords&quot; content=&quot;리눅스 커널 로그,SYN 플러딩,TCP SYN,iptables 로그,NFTables,방화벽 점검,포트 스캔,네트워크 트러블슈팅,서버 보안,패킷 분석,운영 대응&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:locale&quot; content=&quot;ko_KR&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;리눅스 커널 로그에서 SYN 반복 유입 확인과 대응 절차&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;동일 목적지 포트로 SYN 패킷이 반복 유입될 때의 점검/분석/복구/재발 방지 흐름을 운영 절차로 정리합니다.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.png&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;리눅스 커널 로그에서 SYN 반복 유입 확인과 대응 절차&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;커널 로그 기반으로 SYN 반복 유입을 진단하고 대응하는 실무 절차를 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.png&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;style&gt;
    .article-wrap{
      line-height:1.7;
      word-break:keep-all;
    }
    .article-wrap .content{
      max-width:860px;
      margin:0 auto;
      padding:0 4px;
    }
    .article-wrap h1{
      font-size:1.9rem;
      margin:0 0 14px;
      letter-spacing:-0.2px;
    }
    .article-wrap .lead{
      margin:0 0 18px;
      padding:12px 14px;
      border:1px solid rgba(0,0,0,.08);
      border-radius:14px;
      background:rgba(0,0,0,.02);
    }
    .article-wrap h2{
      font-size:1.35rem;
      margin:26px 0 8px;
      letter-spacing:-0.2px;
    }
    .article-wrap h3{
      font-size:1.1rem;
      margin:18px 0 8px;
    }
    .article-wrap p{ margin:10px 0; }
    .article-wrap ul{ margin:10px 0 10px 18px; }
    .article-wrap li{ margin:6px 0; }
    .article-wrap .callout{
      margin:14px 0;
      padding:12px 14px;
      border-left:4px solid rgba(0,0,0,.18);
      background:rgba(0,0,0,.03);
      border-radius:12px;
    }
    .article-wrap .callout strong{ display:inline-block; margin-bottom:6px; }
    .article-wrap pre{
      margin:12px 0;
      padding:12px 14px;
      overflow:auto;
      border-radius:12px;
      border:1px solid rgba(0,0,0,.10);
      background:rgba(0,0,0,.03);
    }
    .article-wrap code{
      font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;,&quot;Courier New&quot;, monospace;
      font-size:.92rem;
    }
    .article-wrap .grid{
      display:grid;
      grid-template-columns:1fr;
      gap:10px;
      margin:10px 0;
    }
    .article-wrap .grid .box{
      padding:12px 14px;
      border:1px solid rgba(0,0,0,.08);
      border-radius:14px;
      background:rgba(0,0,0,.015);
    }
    .article-wrap .kpi{
      display:flex;
      flex-wrap:wrap;
      gap:8px;
      margin:8px 0 0;
      padding:0;
      list-style:none;
    }
    .article-wrap .kpi li{
      padding:6px 10px;
      border:1px solid rgba(0,0,0,.10);
      border-radius:999px;
      background:rgba(0,0,0,.02);
      margin:0;
      font-size:.92rem;
    }
    .article-wrap .muted{
      color:rgba(0,0,0,.65);
      font-size:.95rem;
    }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;article class=&quot;content&quot;&gt;
      &lt;header&gt;
        &lt;h1&gt;리눅스 커널 로그에서 SYN 반복 유입 확인과 대응 절차&lt;/h1&gt;
        &lt;div class=&quot;lead&quot;&gt;
          &lt;p&gt;
            커널 로그에 특정 포트로 &lt;strong&gt;TCP SYN&lt;/strong&gt; 패킷이 짧은 시간에 반복 기록되는 경우는 흔히
            &lt;strong&gt;포트 스캔&lt;/strong&gt;, &lt;strong&gt;오탐(정상 헬스체크/클라이언트 재시도)&lt;/strong&gt;, 또는 &lt;strong&gt;SYN Flood 성격의 비정상 트래픽&lt;/strong&gt;으로 나뉩니다.&lt;br&gt;
            실제 사용 시에는 “차단했나/허용했나”보다 먼저, &lt;strong&gt;해당 포트의 서비스 노출 여부&lt;/strong&gt;와 &lt;strong&gt;연결 성립(3-way handshake) 여부&lt;/strong&gt;를 구분해서 보는 게 핵심입니다.
          &lt;/p&gt;
          &lt;ul class=&quot;kpi&quot;&gt;
            &lt;li&gt;핵심 포인트: SYN 반복 = 공격 단정 금지&lt;/li&gt;
            &lt;li&gt;우선순위: 노출 여부 → 연결 성립 여부 → 발생 원인&lt;/li&gt;
            &lt;li&gt;대응: 증상 완화(레이트리밋/차단) + 근본 원인(노출/라우팅/정책)&lt;/li&gt;
          &lt;/ul&gt;
          &lt;p class=&quot;muted&quot;&gt;※ 요청에 따라 IP/포트/MAC 등 식별값은 예시로 대체했습니다.&lt;/p&gt;
        &lt;/div&gt;
      &lt;/header&gt;

      &lt;section aria-label=&quot;개요&quot;&gt;
        &lt;h2&gt;개요&lt;/h2&gt;

        &lt;p&gt;
          아래 로그는 리눅스 커널(방화벽 로깅 규칙)에서 특정 인터페이스로 유입되는 TCP 패킷을 기록한 형태입니다.
          로그 문자열에 &lt;code&gt;SYN&lt;/code&gt; 플래그가 포함되어 있고, 목적지 포트(&lt;code&gt;DPT&lt;/code&gt;)로 동일/유사 값이 반복되어 나타납니다.
        &lt;/p&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;운영 환경에서는&lt;/strong&gt;&lt;br&gt;
          “SYN이 많다”는 사실만으로 장애/침해를 확정하지 않고,&lt;br&gt;
          ① 외부에 노출된 포트인지,&lt;br&gt;
          ② 실제 서비스 프로세스가 리스닝 중인지,&lt;br&gt;
          ③ SYN-ACK까지 나가는지(연결 성립되는지),&lt;br&gt;
          ④ 특정 출발지에 편중되는지&lt;br&gt;
          순서로 확인하는 것이 안전합니다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section aria-label=&quot;환경&quot;&gt;
        &lt;h2&gt;환경&lt;/h2&gt;

        &lt;div class=&quot;grid&quot;&gt;
          &lt;div class=&quot;box&quot;&gt;
            &lt;h3&gt;대상 시스템(예시)&lt;/h3&gt;
            &lt;ul&gt;
              &lt;li&gt;OS: Linux (커널 로그 출력)&lt;/li&gt;
              &lt;li&gt;네트워크 인터페이스: &lt;code&gt;enpXsY&lt;/code&gt; (예: &lt;code&gt;enp4s0f0&lt;/code&gt;)&lt;/li&gt;
              &lt;li&gt;방화벽: iptables 또는 nftables 기반 로깅 규칙(커널 로그 프리픽스 포함)&lt;/li&gt;
              &lt;li&gt;로그 수집: syslog/journald 등&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/div&gt;
          &lt;div class=&quot;box&quot;&gt;
            &lt;h3&gt;로그 특징(예시)&lt;/h3&gt;
            &lt;ul&gt;
              &lt;li&gt;프리픽스: &lt;code&gt;SYNAP_9000_TCPIN=...&lt;/code&gt; (정책/룰명)&lt;/li&gt;
              &lt;li&gt;플래그: &lt;code&gt;SYN&lt;/code&gt; 표시&lt;/li&gt;
              &lt;li&gt;목적지 포트: &lt;code&gt;DPT=9000&lt;/code&gt; 반복&lt;/li&gt;
              &lt;li&gt;출발지 포트: &lt;code&gt;SPT&lt;/code&gt; 값이 매번 달라짐(일반적인 클라이언트 에페머럴 포트)&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section aria-label=&quot;증상&quot;&gt;
        &lt;h2&gt;증상&lt;/h2&gt;

        &lt;p&gt;대표 증상은 다음 중 하나 또는 복합으로 나타납니다.&lt;/p&gt;
        &lt;ul&gt;
          &lt;li&gt;커널 로그에 동일 목적지 포트로 SYN 유입이 다수 기록됨&lt;/li&gt;
          &lt;li&gt;특정 출발지 IP에서만 반복되거나, 다수 IP로 분산되어 들어옴&lt;/li&gt;
          &lt;li&gt;서비스 포트가 외부에 노출되어 있다면 접속 실패/지연/세션 고갈 징후가 동반될 수 있음&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;로그 예시(식별값 대체)&lt;/h3&gt;
        &lt;pre&gt;&lt;code&gt;Apr 15 09:55:25 host kernel: SYNAP_9000_TCPIN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx SRC=10.0.0.10 DST=192.0.2.20 LEN=52 TOS=0x00 PREC=0x00 TTL=126 ID=20635 DF PROTO=TCP SPT=50084 DPT=9000 WINDOW=65535 RES=0x00 SYN URGP=0
Apr 15 09:55:25 host kernel: SYNAP_9000_TCPIN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx SRC=10.0.0.10 DST=192.0.2.20 LEN=52 TOS=0x00 PREC=0x00 TTL=126 ID=20636 DF PROTO=TCP SPT=18499 DPT=9000 WINDOW=65535 RES=0x00 SYN URGP=0
Apr 15 09:56:29 host kernel: SYNAP_9000_TCPIN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx SRC=10.0.0.10 DST=192.0.2.20 LEN=52 TOS=0x00 PREC=0x00 TTL=126 ID=40511 DF PROTO=TCP SPT=33564 DPT=9000 WINDOW=65535 RES=0x00 SYN URGP=0&lt;/code&gt;&lt;/pre&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;해석 포인트&lt;/strong&gt;&lt;br&gt;
          &lt;code&gt;SPT&lt;/code&gt;가 계속 바뀌는 것은 “클라이언트가 여러 번 시도”하거나 “스캔 도구가 포트를 두드리는” 상황에서 흔합니다.&lt;br&gt;
          반면 &lt;code&gt;SRC&lt;/code&gt;가 다수로 바뀌며 동시에 들어오고, 서버가 응답하느라 자원이 급격히 증가한다면 SYN Flood 성격을 의심할 여지가 커집니다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section aria-label=&quot;1차 점검&quot;&gt;
        &lt;h2&gt;1차 점검&lt;/h2&gt;

        &lt;p&gt;1차 점검은 “지금 당장 위험/장애가 진행 중인지”를 빠르게 가르는 단계입니다.&lt;/p&gt;

        &lt;h3&gt;1) 해당 포트가 실제로 열려 있는지&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;서버에서 프로세스 리스닝 여부 확인(예: &lt;code&gt;ss -lntp&lt;/code&gt;, &lt;code&gt;lsof -i&lt;/code&gt;)&lt;/li&gt;
          &lt;li&gt;로드밸런서/방화벽/보안장비 정책에서 외부 노출 여부 확인&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;2) 연결이 성립되는지(3-way handshake)&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;SYN만 들어오고 SYN-ACK/ACK가 이어지지 않으면 스캔/오탐/차단 상황 가능성&lt;/li&gt;
          &lt;li&gt;연결 성립이 늘어나며 &lt;code&gt;SYN_RECV&lt;/code&gt;가 급증하면 리스크가 커짐&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;3) 트래픽 편중 여부&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;특정 &lt;code&gt;SRC&lt;/code&gt; 단일 IP에 편중: 내부 시스템의 재시도/오류 클라이언트/특정 스캐너 가능&lt;/li&gt;
          &lt;li&gt;다수 &lt;code&gt;SRC&lt;/code&gt; 분산: 대규모 스캔 또는 분산 공격 가능&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;

      &lt;section aria-label=&quot;심화 분석&quot;&gt;
        &lt;h2&gt;심화 분석&lt;/h2&gt;

        &lt;p&gt;1차 점검에서 “단순 로그 증가”를 넘어 원인을 좁히는 단계입니다.&lt;/p&gt;

        &lt;h3&gt;1) 로그 프리픽스(룰명) 기준으로 정책 확인&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;code&gt;SYNAP_9000_TCPIN&lt;/code&gt; 같은 프리픽스는 보통 iptables/nftables 룰에 지정된 로그 태그입니다.&lt;/li&gt;
          &lt;li&gt;해당 룰이 “허용 전 로깅”인지, “차단 전 로깅”인지에 따라 해석이 달라집니다.&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;2) 패킷 캡처로 실제 흐름 확인&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;SYN 유입이 실제로 얼마나 되는지, 서버가 SYN-ACK을 내보내는지 확인&lt;/li&gt;
          &lt;li&gt;TTL/옵션/윈도우 크기 패턴이 일정하면 자동화 도구 트래픽일 수 있음&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;3) 서비스 관점 원인 후보 정리&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;정상 트래픽(헬스체크/모니터링/배치)이 실패하여 재시도 루프에 빠진 경우&lt;/li&gt;
          &lt;li&gt;외부 노출된 관리 포트/테스트 포트가 스캔 대상이 된 경우&lt;/li&gt;
          &lt;li&gt;보안장비/라우팅 변경 직후 우회 경로로 유입이 증가한 경우&lt;/li&gt;
        &lt;/ul&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;관리자 입장에서&lt;/strong&gt;&lt;br&gt;
          “이 포트가 왜 인터넷/사내에서 접근 가능한 상태인가?”가 가장 큰 비용 절감 포인트입니다.&lt;br&gt;
          불필요 포트 노출을 제거하면, 방어/탐지/장애 대응 비용이 함께 내려갑니다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section aria-label=&quot;복구&quot;&gt;
        &lt;h2&gt;복구&lt;/h2&gt;

        &lt;p&gt;복구는 “즉시 완화”와 “구조적 해결”을 나눠서 진행하는 것이 안정적입니다.&lt;/p&gt;

        &lt;h3&gt;즉시 완화(단기)&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;단일 출발지 편중이면 해당 대역 임시 차단(운영 영향 고려)&lt;/li&gt;
          &lt;li&gt;레이트 리밋 적용(동일 포트/동일 출발지 기준)&lt;/li&gt;
          &lt;li&gt;불필요 로그 폭주 방지(로깅 레벨/샘플링/제한 적용)&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;구조적 해결(중기)&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;해당 포트를 외부에서 접근할 필요가 없다면 접근 경로 자체를 제거(ACL/보안그룹/방화벽 정책)&lt;/li&gt;
          &lt;li&gt;관리/내부용 포트는 VPN/점프호스트/사내망으로만 제한&lt;/li&gt;
          &lt;li&gt;서비스가 필요하다면 WAF/L4 정책, 커널 튜닝(SYN backlog, syncookies) 등 방어 레이어 보강&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;

      &lt;section aria-label=&quot;재발 방지&quot;&gt;
        &lt;h2&gt;재발 방지&lt;/h2&gt;

        &lt;ul&gt;
          &lt;li&gt;&lt;strong&gt;노출 포트 정기 점검&lt;/strong&gt;: 자산 기준으로 “열려 있는 포트 목록”을 주기적으로 비교&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;로그 기준 알림&lt;/strong&gt;: 특정 프리픽스/포트 기준으로 단위 시간당 임계치 알림 설정&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;정상 트래픽 화이트리스트&lt;/strong&gt;: 헬스체크/모니터링 출발지 대역을 관리하고 변경 이력 추적&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;변경관리&lt;/strong&gt;: 라우팅/방화벽 정책 변경 시, 예상 유입 포트/대역을 사전에 검증&lt;/li&gt;
        &lt;/ul&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;요약&lt;/strong&gt;&lt;br&gt;
          SYN 반복 유입은 “현상”이고, 원인은 스캔/오탐/공격/정상 재시도까지 폭이 넓습니다.&lt;br&gt;
          실무 기준으로 보면, 포트 노출 여부와 연결 성립 여부를 먼저 가르면 대응이 훨씬 빨라집니다.
        &lt;/div&gt;
      &lt;/section&gt;
    &lt;/article&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;운영·보안&quot;,
              &quot;item&quot;: &quot;https://example.com/ops-security&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;리눅스 커널 로그에서 SYN 반복 유입 확인과 대응 절차&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;TechArticle&quot;,
          &quot;headline&quot;: &quot;리눅스 커널 로그에서 SYN 반복 유입 확인과 대응 절차&quot;,
          &quot;description&quot;: &quot;커널 방화벽 로그에 동일 목적지 포트로 SYN 패킷이 반복 유입될 때, 원인 추적부터 1차 점검·심화 분석·복구·재발 방지까지 운영 관점에서 정리합니다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;datePublished&quot;: &quot;2026-04-15&quot;,
          &quot;dateModified&quot;: &quot;2026-04-15&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/&quot;
          }
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>지식 공유/Server</category>
      <category>iptables 로그</category>
      <category>nftables</category>
      <category>SYN 플러딩</category>
      <category>TCP SYN</category>
      <category>네트워크 트러블슈팅</category>
      <category>리눅스 커널 로그</category>
      <category>방화벽 점검</category>
      <category>서버 보안</category>
      <category>패킷 분석</category>
      <category>포트 스캔</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/516</guid>
      <comments>https://togethergrow.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%BB%A4%EB%84%90-%EB%A1%9C%EA%B7%B8%EC%97%90%EC%84%9C-SYN-%EB%B0%98%EB%B3%B5-%EC%9C%A0%EC%9E%85-%ED%99%95%EC%9D%B8%EA%B3%BC-%EB%8C%80%EC%9D%91#entry516comment</comments>
      <pubDate>Wed, 15 Apr 2026 10:49:34 +0900</pubDate>
    </item>
    <item>
      <title>대전사이언스페스티벌 2026 일정&amp;middot;프로그램&amp;middot;무료 입장 안내</title>
      <link>https://togethergrow.tistory.com/entry/%EB%8C%80%EC%A0%84%EC%82%AC%EC%9D%B4%EC%96%B8%EC%8A%A4%ED%8E%98%EC%8A%A4%ED%8B%B0%EB%B2%8C-2026-%EC%9D%BC%EC%A0%95%C2%B7%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%C2%B7%EB%AC%B4%EB%A3%8C-%EC%9E%85%EC%9E%A5-%EC%95%88%EB%82%B4</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;e21c4802-a014-414b-9b8b-174244c89e64_28.jpg&quot; data-origin-width=&quot;443&quot; data-origin-height=&quot;627&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyw5pn/dJMcaffaByV/kSHNJuDromHJA0GC0RdsD0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyw5pn/dJMcaffaByV/kSHNJuDromHJA0GC0RdsD0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyw5pn/dJMcaffaByV/kSHNJuDromHJA0GC0RdsD0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcyw5pn%2FdJMcaffaByV%2FkSHNJuDromHJA0GC0RdsD0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;2026.04.17~04.19 대전 DCC 제2전시장에서 열리는 대전사이언스페스티벌. &amp;lsquo;인간과 AI가 공존하는 미래도시&amp;rsquo; 테마로 전시&amp;middot;체험&amp;middot;공연&amp;middot;강연&amp;middot;대회까지 한 번에 즐기는 도심형 과학축제 정보를 정리했습니다&quot; loading=&quot;lazy&quot; width=&quot;443&quot; height=&quot;627&quot; data-filename=&quot;e21c4802-a014-414b-9b8b-174244c89e64_28.jpg&quot; data-origin-width=&quot;443&quot; data-origin-height=&quot;627&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;대전사이언스페스티벌 2026 일정·프로그램·무료 입장 안내&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;2026.04.17~04.19 대전 DCC 제2전시장에서 열리는 대전사이언스페스티벌. ‘인간과 AI가 공존하는 미래도시’ 테마로 전시·체험·공연·강연·대회까지 한 번에 즐기는 도심형 과학축제 정보를 정리했습니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;대전사이언스페스티벌,대한민국과학축제,과학축제,대전 DCC,대전컨벤션센터,유성구 도룡동,무료 행사,과학 체험,AI 스탬프 투어,드론레이싱&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;대전사이언스페스티벌 2026 일정·프로그램·무료 입장 안내&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;4/17~4/19 대전 DCC 제2전시장, 인간과 AI가 공존하는 미래도시 과학축제&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://your-domain.example/og-placeholder.jpg&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://your-domain.example/post/daejeon-science-festival-2026&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;대전사이언스페스티벌 2026&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;일정·장소·프로그램·부대행사까지 한 번에 정리&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://your-domain.example/og-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .post-content{
      line-height:1.7;
      word-break:keep-all;
    }
    .post-content .wrap{
      max-width:920px;
      margin:0 auto;
    }
    .post-content h1{
      margin:0 0 10px 0;
      font-size:1.9rem;
      letter-spacing:-0.02em;
    }
    .post-content .meta{
      margin:0 0 18px 0;
      opacity:.85;
      font-size:.98rem;
    }
    .post-content section{
      margin:22px 0;
    }
    .post-content h2{
      margin:0 0 10px 0;
      font-size:1.35rem;
      letter-spacing:-0.01em;
    }
    .post-content h3{
      margin:14px 0 8px 0;
      font-size:1.1rem;
    }
    .post-content .callout{
      border:1px solid rgba(0,0,0,.12);
      border-radius:14px;
      padding:14px 14px;
      margin:12px 0;
      background:transparent;
    }
    .post-content .callout strong{
      display:block;
      margin-bottom:6px;
    }
    .post-content ul{
      margin:8px 0 0 18px;
      padding:0;
    }
    .post-content li{
      margin:6px 0;
    }
    .post-content .grid{
      display:grid;
      grid-template-columns:1fr;
      gap:10px;
    }
    .post-content .card{
      border:1px solid rgba(0,0,0,.12);
      border-radius:14px;
      padding:12px 12px;
    }
    .post-content .label{
      font-weight:700;
      margin-right:6px;
    }
    .post-content .mini{
      font-size:.95rem;
      opacity:.9;
    }
    .post-content a{
      text-decoration:underline;
      text-underline-offset:2px;
    }
    .post-content table{
      width:100%;
      border-collapse:separate;
      border-spacing:0;
      overflow:hidden;
      border:1px solid rgba(0,0,0,.12);
      border-radius:14px;
      margin:10px 0 0 0;
    }
    .post-content th, .post-content td{
      padding:10px 10px;
      vertical-align:top;
      border-bottom:1px solid rgba(0,0,0,.08);
    }
    .post-content tr:last-child th, .post-content tr:last-child td{
      border-bottom:none;
    }
    .post-content th{
      width:160px;
      text-align:left;
      font-weight:700;
      background:transparent;
    }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;post-content&quot;&gt;
    &lt;div class=&quot;wrap&quot;&gt;
      &lt;header&gt;
        &lt;h1&gt;인간과 AI가 공존하는 미래도시 축제, 대전사이언스페스티벌&lt;/h1&gt;
        &lt;p class=&quot;meta&quot;&gt;기간 2026.04.17 ~ 2026.04.19 · 장소 DCC대전컨벤션센터 제2전시장 · 무료&lt;/p&gt;
      &lt;/header&gt;

      &lt;section aria-labelledby=&quot;sec-summary&quot; id=&quot;summary&quot;&gt;
        &lt;h2 id=&quot;sec-summary&quot;&gt;요약 정보&lt;/h2&gt;

        &lt;table aria-label=&quot;행사 요약 정보 표&quot;&gt;
          &lt;tbody&gt;
            &lt;tr&gt;
              &lt;th&gt;행사명&lt;/th&gt;
              &lt;td&gt;대전사이언스페스티벌 (2026 대한민국과학축제와 함께하는 과학행사)&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;th&gt;기간&lt;/th&gt;
              &lt;td&gt;2026.04.17(금) ~ 2026.04.19(일)&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;th&gt;장소&lt;/th&gt;
              &lt;td&gt;대전광역시 유성구 엑스포로 87(도룡동) DCC대전컨벤션센터 제2전시장&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;th&gt;입장료&lt;/th&gt;
              &lt;td&gt;무료&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;th&gt;주최/운영&lt;/th&gt;
              &lt;td&gt;과학기술정보통신부, 대전광역시 / 대전관광공사, 한국과학창의재단, 국립중앙과학관&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;th&gt;문의&lt;/th&gt;
              &lt;td&gt;042-477-5181&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;th&gt;인스타그램&lt;/th&gt;
              &lt;td&gt;&lt;a href=&quot;https://www.instagram.com/dsf.daejeon&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;instagram.com&lt;/a&gt;&lt;br&gt;&lt;span class=&quot;mini&quot;&gt;@dsf.daejeon&lt;/span&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;th&gt;공식 홈페이지&lt;/th&gt;
              &lt;td&gt;&lt;a href=&quot;https://www.대전사이언스페스티벌.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;대전사이언스페스티벌.com&lt;/a&gt;&lt;/td&gt;
            &lt;/tr&gt;
          &lt;/tbody&gt;
        &lt;/table&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;축제 한 줄 소개&lt;/strong&gt;
          정부·공공·민간기업·단체가 함께 참여해 첨단 과학기술부터 일상 속 과학까지 전시·체험·공연·강연·대회를 한 자리에서 즐길 수 있는 도심형 과학축제입니다.
        &lt;/div&gt;

        &lt;p class=&quot;mini&quot;&gt;
          실무 기준으로 보면, 대형 과학행사는 “무엇을 볼지”만 정해도 만족도가 확 올라갑니다.
          아래 프로그램 구역별 특징을 보고, 동선과 체험 우선순위를 먼저 잡아두는 걸 추천합니다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-highlights&quot; id=&quot;highlights&quot;&gt;
        &lt;h2 id=&quot;sec-highlights&quot;&gt;이번 축제에서 기대할 포인트&lt;/h2&gt;

        &lt;div class=&quot;grid&quot;&gt;
          &lt;div class=&quot;card&quot;&gt;
            &lt;span class=&quot;label&quot;&gt;미래도시 테마&lt;/span&gt;
            인간과 AI가 공존하는 미래도시를 상상하고 체험하는 콘텐츠가 중심 축을 이룹니다.
          &lt;/div&gt;
          &lt;div class=&quot;card&quot;&gt;
            &lt;span class=&quot;label&quot;&gt;전 세대 참여&lt;/span&gt;
            청소년부터 성인까지 함께 즐길 수 있도록 전시·체험·공연·강연·대회 구성이 폭넓습니다.
          &lt;/div&gt;
          &lt;div class=&quot;card&quot;&gt;
            &lt;span class=&quot;label&quot;&gt;도심형 축제&lt;/span&gt;
            이동 부담을 낮추고, 다양한 체험을 한 곳에서 이어서 즐길 수 있는 구성이 강점입니다.
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-program&quot; id=&quot;program&quot;&gt;
        &lt;h2 id=&quot;sec-program&quot;&gt;구역별 프로그램&lt;/h2&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;관람 팁&lt;/strong&gt;
          체험형 콘텐츠는 대기열이 생기기 쉬우니,&lt;br&gt;
          먼저 “꼭 해보고 싶은 체험 3개”를 정하고 동선을 맞추면 훨씬 편합니다.
        &lt;/div&gt;

        &lt;h3&gt;1) 사이언스 미래연구소&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;사이언스 AI 스테이션&lt;/li&gt;
          &lt;li&gt;출연연 연구성과 특별관&lt;/li&gt;
          &lt;li&gt;과학체험부스&lt;/li&gt;
          &lt;li&gt;사이언스 어트랙션관&lt;/li&gt;
          &lt;li&gt;사이언스 아레나&lt;/li&gt;
          &lt;li&gt;드론레이싱 체험&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;2) 사이언스 그린파크&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;대한민국 과학축제&lt;/li&gt;
          &lt;li&gt;통합 개막식&lt;/li&gt;
          &lt;li&gt;D-FOOD 존&lt;/li&gt;
          &lt;li&gt;푸드트럭&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;3) 사이언스 아트 브릿지&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;사이언스 갤러리&lt;/li&gt;
          &lt;li&gt;아티언스 버스킹&lt;/li&gt;
          &lt;li&gt;포토존 이벤트&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;4) 사이언스 가든&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;가든 음악회&lt;/li&gt;
          &lt;li&gt;친환경 체험&lt;/li&gt;
          &lt;li&gt;꿈씨패밀리 포토존&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;5) 사이언스 어드벤처&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;RC카 레이싱 체험&lt;/li&gt;
          &lt;li&gt;페이퍼 파일럿 종이비행기 대회&lt;/li&gt;
          &lt;li&gt;흑백과학자 시즌2&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;6) 국립중앙과학관 사이언스 데이&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;국립중앙과학관 연계 프로그램(현장 안내 확인 권장)&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;7) 부대 프로그램&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;AI 스탬프 투어&lt;/li&gt;
          &lt;li&gt;사이언스 패밀리 시티투어&lt;/li&gt;
          &lt;li&gt;사이언스 도슨트 투어&lt;/li&gt;
          &lt;li&gt;K-사이언스 시티투어&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-who&quot; id=&quot;who&quot;&gt;
        &lt;h2 id=&quot;sec-who&quot;&gt;이런 분께 잘 맞아요&lt;/h2&gt;

        &lt;ul&gt;
          &lt;li&gt;&lt;strong&gt;가족 나들이&lt;/strong&gt;: 아이가 직접 만지고 해보는 체험 위주로 하루 동선을 짜기 좋습니다.&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;학생·청소년&lt;/strong&gt;: AI/드론/레이싱 체험, 과학 전시를 통해 관심 분야를 넓히기 좋습니다.&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;성인 관람객&lt;/strong&gt;: 전시와 공연·강연을 묶어 “가볍게 배우는 과학문화” 코스로 즐기기 좋습니다.&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;사진/기록&lt;/strong&gt;: 아트 브릿지·포토존 이벤트를 중심으로 콘텐츠를 남기기 좋습니다.&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-tips&quot; id=&quot;tips&quot;&gt;
        &lt;h2 id=&quot;sec-tips&quot;&gt;방문 전 체크&lt;/h2&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;현장 체감 꿀팁&lt;/strong&gt;
          편한 신발 + 보조배터리 + 물 한 병이면 만족도가 크게 올라갑니다.&lt;br&gt;
          체험 위주라면 오전에 핵심 체험을 먼저 하고, 오후에 전시·공연으로 넘어가는 흐름이 안정적입니다.
        &lt;/div&gt;

        &lt;h3&gt;준비물&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;편한 신발(대기/이동이 많을 수 있음)&lt;/li&gt;
          &lt;li&gt;보조배터리(사진/영상 촬영, 스탬프 투어 참여 시 유용)&lt;/li&gt;
          &lt;li&gt;얇은 겉옷(실내외 이동 시 체감 온도 차 대비)&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;문의/공지 확인&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;행사 운영/프로그램 변동 가능성은 공식 홈페이지 및 인스타그램 공지를 우선 확인하세요.&lt;/li&gt;
          &lt;li&gt;단체 방문, 체험 운영 시간 등은 전화 문의(042-477-5181)로 확인하면 가장 빠릅니다.&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-cta&quot; id=&quot;cta&quot;&gt;
        &lt;h2 id=&quot;sec-cta&quot;&gt;현장 즐기기 추천 코스&lt;/h2&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;반나절 코스(체험 중심)&lt;/strong&gt;
          사이언스 미래연구소(체험 2~3개) → 사이언스 어드벤처(레이싱/대회) → 그린파크(D-FOOD/푸드트럭)
        &lt;/div&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;하루 코스(전시+공연+기록)&lt;/strong&gt;
          미래연구소(전시/특별관) → 아트 브릿지(갤러리·버스킹·포토존) → 가든(음악회·친환경 체험) → 그린파크(식음)
        &lt;/div&gt;

        &lt;p class=&quot;mini&quot;&gt;
          무료 행사인 만큼, “체험 3개 + 공연 1개 + 사진 포인트 2곳”처럼 목표를 정해두면 만족도가 높아집니다.
        &lt;/p&gt;
      &lt;/section&gt;
    &lt;/div&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;Event&quot;,
          &quot;@id&quot;: &quot;https://your-domain.example/post/daejeon-science-festival-2026#event&quot;,
          &quot;name&quot;: &quot;대전사이언스페스티벌&quot;,
          &quot;description&quot;: &quot;2026 대한민국과학축제와 함께하는 ‘대전사이언스페스티벌’. 과학기술정보통신부와 대전광역시가 공동개최하는 대형 과학행사로 전시·체험·공연·강연·대회 등 과학문화 프로그램을 청소년부터 성인까지 함께 즐길 수 있다.&quot;,
          &quot;startDate&quot;: &quot;2026-04-17&quot;,
          &quot;endDate&quot;: &quot;2026-04-19&quot;,
          &quot;eventAttendanceMode&quot;: &quot;https://schema.org/OfflineEventAttendanceMode&quot;,
          &quot;eventStatus&quot;: &quot;https://schema.org/EventScheduled&quot;,
          &quot;isAccessibleForFree&quot;: true,
          &quot;location&quot;: {
            &quot;@type&quot;: &quot;Place&quot;,
            &quot;name&quot;: &quot;DCC대전컨벤션센터 제2전시장&quot;,
            &quot;address&quot;: {
              &quot;@type&quot;: &quot;PostalAddress&quot;,
              &quot;addressLocality&quot;: &quot;대전광역시&quot;,
              &quot;addressRegion&quot;: &quot;유성구&quot;,
              &quot;streetAddress&quot;: &quot;엑스포로 87 (도룡동)&quot;,
              &quot;postalCode&quot;: &quot;&quot;
            }
          },
          &quot;offers&quot;: {
            &quot;@type&quot;: &quot;Offer&quot;,
            &quot;price&quot;: &quot;0&quot;,
            &quot;priceCurrency&quot;: &quot;KRW&quot;,
            &quot;availability&quot;: &quot;https://schema.org/InStock&quot;,
            &quot;url&quot;: &quot;https://www.대전사이언스페스티벌.com/&quot;
          },
          &quot;organizer&quot;: [
            { &quot;@type&quot;: &quot;Organization&quot;, &quot;name&quot;: &quot;과학기술정보통신부&quot; },
            { &quot;@type&quot;: &quot;Organization&quot;, &quot;name&quot;: &quot;대전광역시&quot; },
            { &quot;@type&quot;: &quot;Organization&quot;, &quot;name&quot;: &quot;대전관광공사&quot; },
            { &quot;@type&quot;: &quot;Organization&quot;, &quot;name&quot;: &quot;한국과학창의재단&quot; },
            { &quot;@type&quot;: &quot;Organization&quot;, &quot;name&quot;: &quot;국립중앙과학관&quot; }
          ],
          &quot;telephone&quot;: &quot;042-477-5181&quot;,
          &quot;url&quot;: &quot;https://www.대전사이언스페스티벌.com/&quot;,
          &quot;sameAs&quot;: [
            &quot;https://www.instagram.com/dsf.daejeon&quot;
          ],
          &quot;image&quot;: [
            &quot;https://your-domain.example/og-placeholder.jpg&quot;
          ]
        },
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;@id&quot;: &quot;https://your-domain.example/post/daejeon-science-festival-2026#breadcrumb&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;홈&quot;,
              &quot;item&quot;: &quot;https://your-domain.example/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;축제&quot;,
              &quot;item&quot;: &quot;https://your-domain.example/category/festival&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;대전사이언스페스티벌 2026&quot;
            }
          ]
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>일상 정보/대전 소식</category>
      <category>AI 스탬프 투어</category>
      <category>과학 체험</category>
      <category>과학축제</category>
      <category>대전 DCC</category>
      <category>대전사이언스페스티벌</category>
      <category>대전컨벤션센터</category>
      <category>대한민국과학축제</category>
      <category>드론레이싱</category>
      <category>무료 행사</category>
      <category>유성구 도룡동</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/515</guid>
      <comments>https://togethergrow.tistory.com/entry/%EB%8C%80%EC%A0%84%EC%82%AC%EC%9D%B4%EC%96%B8%EC%8A%A4%ED%8E%98%EC%8A%A4%ED%8B%B0%EB%B2%8C-2026-%EC%9D%BC%EC%A0%95%C2%B7%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%C2%B7%EB%AC%B4%EB%A3%8C-%EC%9E%85%EC%9E%A5-%EC%95%88%EB%82%B4#entry515comment</comments>
      <pubDate>Fri, 10 Apr 2026 13:52:59 +0900</pubDate>
    </item>
    <item>
      <title>제로콘 2026, React2Shell 발견자 &amp;ldquo;웹 개발 편의성은 새 공격 통로&amp;rdquo;</title>
      <link>https://togethergrow.tistory.com/entry/%EC%A0%9C%EB%A1%9C%EC%BD%98-2026-React2Shell-%EB%B0%9C%EA%B2%AC%EC%9E%90-%E2%80%9C%EC%9B%B9-%EA%B0%9C%EB%B0%9C-%ED%8E%B8%EC%9D%98%EC%84%B1%EC%9D%80-%EC%83%88-%EA%B3%B5%EA%B2%A9-%ED%86%B5%EB%A1%9C%E2%80%9D</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;제로콘 2026, React2Shell 발견자 “웹 개발 편의성은 새 공격 통로”&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;서울에서 열린 Zer0Con 2026에서 React2Shell 발견자 래클런 데이비드슨이 서버 액션·Flight 프로토콜·역직렬화 이슈를 중심으로 ‘편의성’이 새로운 공격 표면이 되는 흐름을 짚었다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;제로콘 2026,Zer0Con,React2Shell,CVE-2025-55182,래클런 데이비드슨,서버 액션,Flight 프로토콜,역직렬화,웹 보안,공격 표면,오펜시브 보안&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;제로콘 2026, React2Shell 발견자 “웹 개발 편의성은 새 공격 통로”&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;서버 액션·Flight 프로토콜·역직렬화 이슈로 본 최신 웹 프레임워크의 새로운 공격 표면&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://your-domain.example/og-placeholder.jpg&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://your-domain.example/post/zer0con-2026-react2shell&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;제로콘 2026, React2Shell 발견자 “웹 개발 편의성은 새 공격 통로”&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;‘서버에서만 실행된다’는 믿음이 흔들릴 때: 최신 웹 개발의 공격 표면&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://your-domain.example/og-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .post-content{
      line-height:1.7;
      word-break:keep-all;
    }
    .post-content .wrap{
      max-width:920px;
      margin:0 auto;
    }
    .post-content h1{
      margin:0 0 10px 0;
      font-size:1.9rem;
      letter-spacing:-0.02em;
    }
    .post-content .meta{
      margin:0 0 18px 0;
      opacity:.85;
      font-size:.98rem;
    }
    .post-content section{
      margin:22px 0;
    }
    .post-content h2{
      margin:0 0 10px 0;
      font-size:1.35rem;
      letter-spacing:-0.01em;
    }
    .post-content h3{
      margin:14px 0 8px 0;
      font-size:1.1rem;
    }
    .post-content .callout{
      border:1px solid rgba(0,0,0,.12);
      border-radius:14px;
      padding:14px 14px;
      margin:12px 0;
      background:transparent;
    }
    .post-content .callout strong{
      display:block;
      margin-bottom:6px;
    }
    .post-content ul{
      margin:8px 0 0 18px;
      padding:0;
    }
    .post-content li{
      margin:6px 0;
    }
    .post-content .mini{
      font-size:.95rem;
      opacity:.9;
    }
    .post-content a{
      text-decoration:underline;
      text-underline-offset:2px;
    }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;post-content&quot;&gt;
    &lt;div class=&quot;wrap&quot;&gt;
      &lt;header&gt;
        &lt;h1&gt;23개국 연구자 모인 제로콘 2026, React2Shell 발견자 “최신 웹 개발의 편의성은 새 공격 통로”&lt;/h1&gt;
        &lt;p class=&quot;meta&quot;&gt;Zer0Con 2026 · 서울 페어몬트 엠베서더 서울 · 서버 액션·Flight 프로토콜·역직렬화 이슈 집중 조명&lt;/p&gt;
      &lt;/header&gt;

      &lt;section aria-labelledby=&quot;sec-lead&quot; id=&quot;lead&quot;&gt;
        &lt;h2 id=&quot;sec-lead&quot;&gt;현장 요약&lt;/h2&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;한 문장 정리&lt;/strong&gt;
          제로콘 2026 첫 세션은 “개발자가 믿는 실행 경계”와 “서버가 실제로 받아들이는 입력” 사이의 틈이 커질수록 공격 표면도 커진다는 메시지를 던졌다.
        &lt;/div&gt;

        &lt;p&gt;
          비공개 오펜시브 보안 컨퍼런스 &lt;strong&gt;제로콘(Zer0Con) 2026&lt;/strong&gt;이 2026년 4월 2일 서울 페어몬트 엠베서더 서울에서 열렸다.
          10회를 맞은 이번 행사에는 23개국 130여 명의 글로벌 취약점 연구자가 참석해 최신 연구를 공유했다.
        &lt;/p&gt;
        &lt;p class=&quot;mini&quot;&gt;
          운영 환경에서는 “새 기능이 추가됐다”는 소식만큼이나 “그 기능이 외부 입력과 어떤 방식으로 맞닿는가”가 중요하다.
          실무 기준으로 보면, 프레임워크의 편의 기능은 개발 속도를 올리지만 동시에 검증 책임을 개발자와 운영팀 쪽으로 밀어 넣기도 한다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-speaker&quot; id=&quot;speaker&quot;&gt;
        &lt;h2 id=&quot;sec-speaker&quot;&gt;첫 발표: React2Shell 발견자 래클런 데이비드슨&lt;/h2&gt;

        &lt;p&gt;
          올해 첫 발표는 카라페이스(Carafe)의 &lt;strong&gt;래클런 데이비드슨(Lachlan Davidson)&lt;/strong&gt;이 맡았다.
          그는 &lt;strong&gt;React2Shell(CVE-2025-55182)&lt;/strong&gt;로 알려진 취약점을 최초로 발견한 연구자로 소개되며,
          발표 제목은 &lt;em&gt;“Discovering React2Shell and Unleashing the New Age of JavaScript Exploits”&lt;/em&gt;였다.
        &lt;/p&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;그가 던진 핵심 메시지&lt;/strong&gt;
          개발자가 “이 코드는 안전하게 동작할 것”이라고 믿는 방식과,&lt;br&gt;
          실제 서버가 받아들이고 실행하는 방식이 다르면 그 틈에서 취약점이 발생한다.&lt;br&gt;
          편의성은 곧바로 안전을 의미하지 않는다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-serveronly&quot; id=&quot;serveronly&quot;&gt;
        &lt;h2 id=&quot;sec-serveronly&quot;&gt;“서버에서만 실행된다”는 믿음이 위험해지는 순간&lt;/h2&gt;

        &lt;p&gt;
          발표의 출발점은 최신 웹 개발에서 자주 보이는 “서버 전용” 신호다.
          예를 들어 &lt;code&gt;use server&lt;/code&gt; 같은 표식을 보면 많은 개발자는 “이 코드는 서버 내부에서만 실행될 것”이라고 직관적으로 받아들인다.
          하지만 공격자 관점에서 보면, 이런 기능이 &lt;strong&gt;외부에서 호출 가능한 창구&lt;/strong&gt;처럼 보일 수 있고,
          접근 제어와 입력 검증이 빠져 있으면 예상치 못한 방식으로 두드릴 여지가 생긴다.
        &lt;/p&gt;

        &lt;h3&gt;개발자가 놓치기 쉬운 지점&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;strong&gt;권한 확인의 누락&lt;/strong&gt;: “내부 기능”이라고 생각해 인증/인가 체크를 생략하기 쉬움&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;입력 검증의 약화&lt;/strong&gt;: 편의 기능이 데이터를 “알아서” 변환해줄 것이라 기대하는 순간이 생김&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;실행 경계 착시&lt;/strong&gt;: 코드는 서버에 있지만, 호출은 네트워크 너머에서 올 수 있음&lt;/li&gt;
        &lt;/ul&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;운영팀 관점 체크&lt;/strong&gt;
          “서버 액션(Server Actions)” 계열 엔드포인트가 어떤 규칙으로 노출되는지,&lt;br&gt;
          라우팅/미들웨어/권한 정책이 코드 단위로 일관되게 적용되는지부터 점검하는 게 현실적이다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-types&quot; id=&quot;types&quot;&gt;
        &lt;h2 id=&quot;sec-types&quot;&gt;타입이 보장해주지 못하는 것들&lt;/h2&gt;

        &lt;p&gt;
          데이비드슨은 타입 문제도 강조했다.
          에디터와 타입 시스템은 “이 값은 숫자”, “이 값은 객체”라고 친절하게 알려주지만,
          자바스크립트 런타임은 그 기대를 그대로 지켜주지 않을 수 있다.
          겉으로는 안전해 보이는 코드가 실제 서버 입력에서 전혀 다른 형태의 값과 만나면,
          예외 처리의 빈틈이나 예상치 못한 분기 흐름이 생기며 공격으로 이어질 수 있다.
        &lt;/p&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;현장에서 자주 나오는 패턴&lt;/strong&gt;
          “프론트에서 이미 검증했다” → “서버에서는 가볍게만 확인했다” → “예상치 못한 형태의 입력이 서버까지 도달했다”&lt;br&gt;
          이런 흐름이 반복되면, React2Shell 같은 체인형 취약점이 만들어질 토양이 생긴다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-flight&quot; id=&quot;flight&quot;&gt;
        &lt;h2 id=&quot;sec-flight&quot;&gt;Flight 프로토콜과 역직렬화, 그리고 ‘복잡한 데이터’의 시대&lt;/h2&gt;

        &lt;p&gt;
          발표에서 특히 눈길을 끈 대목은 &lt;strong&gt;서버가 상태/데이터를 잠시 숨겨 보관했다가 다시 복원하는 구조&lt;/strong&gt;에 대한 설명이었다.
          최신 프레임워크는 개발 편의성을 위해 더 복잡한 형태의 데이터 구조를 서버와 주고받는다.
          과거처럼 단순한 JSON만 오가던 시절에는 입력 형태를 예측하기 쉬웠지만,
          이제는 Map/Set, 특수 객체, 지연 처리용 데이터 등 다양한 구조가 섞일 수 있다.
        &lt;/p&gt;

        &lt;p&gt;
          이 과정에서 “암호화되어 있으니 괜찮다”는 판단이 들어가면 위험해질 수 있다.
          중요한 것은 암호화 자체보다, &lt;strong&gt;복원 시점에서 다시 권한을 확인하고 입력을 검증하는 절차&lt;/strong&gt;다.
          React2Shell 논의에서도 &lt;strong&gt;Flight 프로토콜&lt;/strong&gt;과 &lt;strong&gt;역직렬화(Deserialization)&lt;/strong&gt; 이슈가 자주 함께 거론되는 이유가 여기에 있다.
        &lt;/p&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;개발팀·보안팀이 함께 정리할 질문&lt;/strong&gt;
          이 데이터는 어디서 생성되고 어디서 복원되는가?&lt;br&gt;
          복원 과정에서 “신뢰 경계”는 어디까지인가?&lt;br&gt;
          복원 직후에 권한/입력 검증을 반드시 거치는가?
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-meaning&quot; id=&quot;meaning&quot;&gt;
        &lt;h2 id=&quot;sec-meaning&quot;&gt;React2Shell을 “버그 하나”로만 보면 놓치는 것&lt;/h2&gt;

        &lt;p&gt;
          데이비드슨은 React2Shell(CVE-2025-55182)을 단순히 “리액트에서 발생한 버그”로만 보지 않았다.
          더 편리한 개발 경험을 만들기 위해 프레임워크가 복잡한 내부 프로토콜과 데이터 구조를 사용하기 시작했고,
          그 결과 예전에는 잘 보이지 않던 새로운 공격 방법이 생겨났다고 설명했다.
        &lt;/p&gt;

        &lt;p class=&quot;mini&quot;&gt;
          실제 사용 시, 이 메시지는 특정 프레임워크를 탓하자는 이야기가 아니라 “경계의 변화”를 읽자는 쪽에 가깝다.
          서버 액션, Flight 프로토콜, 역직렬화 같은 키워드는 지금의 웹 보안에서 “새로운 기본값”이 되어가고 있다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-takeaway&quot; id=&quot;takeaway&quot;&gt;
        &lt;h2 id=&quot;sec-takeaway&quot;&gt;현업을 위한 정리&lt;/h2&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;바로 적용 가능한 5가지 점검 포인트&lt;/strong&gt;
          1) 서버 액션/서버 함수 엔드포인트에 인증·인가가 “기본 적용”인지 확인&lt;br&gt;
          2) 입력 검증은 클라이언트가 아니라 서버에서 종결되는지 재점검&lt;br&gt;
          3) 상태 복원/역직렬화 구간에 대한 로깅·모니터링 포인트를 확보&lt;br&gt;
          4) “암호화/서명됨”이라는 이유로 신뢰 경계를 넓히지 않기&lt;br&gt;
          5) 프레임워크 업데이트 공지에서 보안 이슈(특히 RCE/역직렬화)를 최우선으로 반영
        &lt;/div&gt;

        &lt;p&gt;
          제로콘 2026 첫 세션이 던진 결론은 명확했다.
          최신 웹 개발의 편의성은 개발 속도를 올리지만, 동시에 새로운 공격 통로를 만들 수 있다.
          React2Shell을 계기로 서버 액션과 Flight 프로토콜, 역직렬화 구간을 “그냥 프레임워크가 처리해주는 영역”으로 남겨두지 않는 태도가 중요해졌다.
        &lt;/p&gt;
      &lt;/section&gt;
    &lt;/div&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BlogPosting&quot;,
          &quot;@id&quot;: &quot;https://your-domain.example/post/zer0con-2026-react2shell#blogposting&quot;,
          &quot;headline&quot;: &quot;23개국 연구자 모인 제로콘 2026, React2Shell 발견자 “최신 웹 개발의 편의성은 새 공격 통로”&quot;,
          &quot;description&quot;: &quot;서울에서 열린 Zer0Con 2026에서 React2Shell 발견자 래클런 데이비드슨이 서버 액션·Flight 프로토콜·역직렬화 이슈를 중심으로 ‘편의성’이 새로운 공격 표면이 되는 흐름을 짚었다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;datePublished&quot;: &quot;2026-04-05&quot;,
          &quot;dateModified&quot;: &quot;2026-04-05&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://your-domain.example/post/zer0con-2026-react2shell&quot;
          },
          &quot;publisher&quot;: {
            &quot;@type&quot;: &quot;Organization&quot;,
            &quot;name&quot;: &quot;Tistory Blog&quot;
          }
        },
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;@id&quot;: &quot;https://your-domain.example/post/zer0con-2026-react2shell#breadcrumb&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;홈&quot;,
              &quot;item&quot;: &quot;https://your-domain.example/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;보안&quot;,
              &quot;item&quot;: &quot;https://your-domain.example/category/security&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;제로콘 2026&quot;
            }
          ]
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>IT 소식 뉴스/IT 소식</category>
      <category>CVE-2025-55182</category>
      <category>Flight 프로토콜</category>
      <category>React2Shell</category>
      <category>Zer0Con</category>
      <category>공격 표면</category>
      <category>래클런 데이비드슨</category>
      <category>서버 액션</category>
      <category>역직렬화</category>
      <category>웹 보안</category>
      <category>제로콘 2026</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/514</guid>
      <comments>https://togethergrow.tistory.com/entry/%EC%A0%9C%EB%A1%9C%EC%BD%98-2026-React2Shell-%EB%B0%9C%EA%B2%AC%EC%9E%90-%E2%80%9C%EC%9B%B9-%EA%B0%9C%EB%B0%9C-%ED%8E%B8%EC%9D%98%EC%84%B1%EC%9D%80-%EC%83%88-%EA%B3%B5%EA%B2%A9-%ED%86%B5%EB%A1%9C%E2%80%9D#entry514comment</comments>
      <pubDate>Fri, 10 Apr 2026 13:41:13 +0900</pubDate>
    </item>
    <item>
      <title>LiteLLM 악성 패키지 유포 대응 체크리스트 (국가사이버안보센터 3/31 권고 기준)</title>
      <link>https://togethergrow.tistory.com/entry/LiteLLM-%EC%95%85%EC%84%B1-%ED%8C%A8%ED%82%A4%EC%A7%80-%EC%9C%A0%ED%8F%AC-%EB%8C%80%EC%9D%91-%EC%B2%B4%ED%81%AC%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EA%B5%AD%EA%B0%80%EC%82%AC%EC%9D%B4%EB%B2%84%EC%95%88%EB%B3%B4%EC%84%BC%ED%84%B0-331-%EA%B6%8C%EA%B3%A0-%EA%B8%B0%EC%A4%80</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;LiteLLM 악성 패키지 유포 대응 체크리스트 (국가사이버안보센터 3/31 권고 기준)&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;LiteLLM 1.82.7·1.82.8 악성 패키지 유포 이슈에 대해 영향 범위 확인부터 1차 점검, 심화 분석, 복구 및 재발 방지까지 운영 환경 기준으로 정리했습니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;LiteLLM,악성 패키지,PyPI,공급망 공격,자격 증명 탈취,API 키 유출,CI/CD 보안,비밀정보 회전,침해사고 대응,보안 권고&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;LiteLLM 악성 패키지 유포 대응 체크리스트&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;LiteLLM 1.82.7·1.82.8 영향 확인, 점검, 복구, 재발 방지까지 한 번에 정리&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://your-domain.example/og-placeholder.jpg&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://your-domain.example/post/litellm-supplychain-advisory&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;LiteLLM 악성 패키지 유포 대응 체크리스트&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;운영 환경 기준으로 정리한 LiteLLM 공급망 이슈 대응 절차&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://your-domain.example/og-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .post-content{
      line-height:1.7;
      word-break:keep-all;
    }
    .post-content .wrap{
      max-width:920px;
      margin:0 auto;
    }
    .post-content h1{
      margin:0 0 10px 0;
      font-size:1.9rem;
      letter-spacing:-0.02em;
    }
    .post-content .meta{
      margin:0 0 18px 0;
      opacity:.85;
      font-size:.98rem;
    }
    .post-content section{
      margin:22px 0;
    }
    .post-content h2{
      margin:0 0 10px 0;
      font-size:1.35rem;
      letter-spacing:-0.01em;
    }
    .post-content h3{
      margin:14px 0 8px 0;
      font-size:1.1rem;
    }
    .post-content .callout{
      border:1px solid rgba(0,0,0,.12);
      border-radius:14px;
      padding:14px 14px;
      margin:12px 0;
      background:transparent;
    }
    .post-content .callout strong{
      display:block;
      margin-bottom:6px;
    }
    .post-content ul{
      margin:8px 0 0 18px;
      padding:0;
    }
    .post-content li{
      margin:6px 0;
    }
    .post-content code{
      font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace;
      font-size:.95em;
    }
    .post-content pre{
      overflow:auto;
      padding:12px 12px;
      border-radius:14px;
      border:1px solid rgba(0,0,0,.12);
      margin:10px 0 0 0;
      background:transparent;
    }
    .post-content pre code{
      display:block;
      white-space:pre;
    }
    .post-content .mini{
      font-size:.95rem;
      opacity:.9;
    }
    .post-content a{
      text-decoration:underline;
      text-underline-offset:2px;
    }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;post-content&quot;&gt;
    &lt;div class=&quot;wrap&quot;&gt;
      &lt;header&gt;
        &lt;h1&gt;LiteLLM 악성 패키지 유포 대응 체크리스트&lt;/h1&gt;
        &lt;p class=&quot;meta&quot;&gt;국가사이버안보센터 보안권고(3/31.) 이슈 기준 · 영향 범위 확인 → 점검 → 복구 → 재발 방지&lt;/p&gt;
      &lt;/header&gt;

      &lt;section aria-labelledby=&quot;sec-overview&quot; id=&quot;overview&quot;&gt;
        &lt;h2 id=&quot;sec-overview&quot;&gt;개요&lt;/h2&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;핵심 요약&lt;/strong&gt;
          LiteLLM의 특정 버전(1.82.7, 1.82.8)이 공식 배포 경로(PyPI)에서 악성 코드가 포함된 상태로 유포된 정황이 공유되었습니다.&lt;br&gt;
          해당 버전은 자격 증명(환경변수, API 키, 클라우드 키, SSH 키 등) 탈취 및 외부 전송 시도가 문제로 지적되며, 운영 환경에서는 “설치 여부 확인”과 “비밀정보 회전(rotate)”이 최우선입니다.
        &lt;/div&gt;

        &lt;p class=&quot;mini&quot;&gt;
          본 문서는 “일반오류형(확장형 매뉴얼)” 흐름으로, 조직 내 서버/개발PC/CI 파이프라인에 LiteLLM이 포함되었을 가능성을 기준으로 작성했습니다.
          실제 사용 시에는 “직접 설치”뿐 아니라 “간접 의존성(트랜지티브)”도 함께 보셔야 합니다. 실무 기준으로 보면, 이 유형은 패키지 교체만으로 끝나지 않고 &lt;em&gt;키/토큰 교체&lt;/em&gt;가 동반되어야 안전합니다.
        &lt;/p&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;관련 공지 확인(운영 시 참고)&lt;/strong&gt;
          LiteLLM 측 보안 업데이트: &lt;a href=&quot;https://docs.litellm.ai/blog/security-update-march-2026&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;docs.litellm.ai&lt;/a&gt;&lt;br&gt;
          보호나라(KISA) 공지(제품 사용 주의 권고): &lt;a href=&quot;https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&amp;menuNo=205020&amp;nttId=72015&amp;pageIndex=1&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;boho.or.kr&lt;/a&gt;
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-env&quot; id=&quot;environment&quot;&gt;
        &lt;h2 id=&quot;sec-env&quot;&gt;환경&lt;/h2&gt;

        &lt;ul&gt;
          &lt;li&gt;Python 패키지 설치 경로: &lt;code&gt;pip install litellm&lt;/code&gt; (또는 요구사항 파일/빌드 스크립트에서 설치)&lt;/li&gt;
          &lt;li&gt;빌드/배포: CI/CD(GitHub Actions, GitLab CI, Jenkins 등)에서 패키지 설치 후 이미지 빌드&lt;/li&gt;
          &lt;li&gt;컨테이너: Dockerfile 내 &lt;code&gt;pip install&lt;/code&gt; 수행 또는 런타임 설치&lt;/li&gt;
          &lt;li&gt;간접 의존성: 에이전트/오케스트레이션 도구, 플러그인/서버(MCP 등)에서 LiteLLM이 끌려올 수 있음&lt;/li&gt;
          &lt;li&gt;주요 보호 대상: API 키(LLM 공급자), 클라우드 키(AWS/GCP/Azure), DB 계정, SSH 키, 쿠버네티스 토큰/시크릿&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-symptom&quot; id=&quot;symptoms&quot;&gt;
        &lt;h2 id=&quot;sec-symptom&quot;&gt;증상&lt;/h2&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;이상 징후(있으면 “심화 분석”으로 즉시 이동)&lt;/strong&gt;
          &lt;span&gt;1) 설치/업데이트 이력에 &lt;code&gt;litellm==1.82.7&lt;/code&gt; 또는 &lt;code&gt;litellm==1.82.8&lt;/code&gt; 존재&lt;/span&gt;&lt;br&gt;
          &lt;span&gt;2) 서버/개발PC에서 평소와 다른 외부 통신(특히 빌드/실행 직후) 증가&lt;/span&gt;&lt;br&gt;
          &lt;span&gt;3) 갑작스러운 API 키 오남용/과금 급증, 클라우드 리소스 비정상 생성&lt;/span&gt;&lt;br&gt;
          &lt;span&gt;4) CI 로그에서 “버전 고정 없이 설치”된 흔적(예: &lt;code&gt;pip install litellm&lt;/code&gt; 단독)&lt;/span&gt;&lt;br&gt;
          &lt;span&gt;5) 코드 변경 없이 인증 실패/권한 오류가 늘어남(키 탈취 후 공격자가 먼저 회전했을 가능성 포함)&lt;/span&gt;
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-first&quot; id=&quot;first-check&quot;&gt;
        &lt;h2 id=&quot;sec-first&quot;&gt;1차 점검&lt;/h2&gt;

        &lt;h3&gt;1) 설치 여부/버전 확인&lt;/h3&gt;
        &lt;pre&gt;&lt;code&gt;# 서버/개발PC
pip show litellm

# 가상환경 목록이 많다면(예시)
python -c &quot;import pkgutil; print('litellm' in [m.name for m in pkgutil.iter_modules()])&quot;&lt;/code&gt;&lt;/pre&gt;

        &lt;h3&gt;2) 위험 버전 즉시 차단&lt;/h3&gt;
        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;권고 방향(조직 정책에 따라 택1)&lt;/strong&gt;
          (A) 안전 버전으로 업그레이드: LiteLLM 측 공지 기준으로 &lt;code&gt;v1.83.0&lt;/code&gt; 이상 사용(검증된 릴리스 기준)&lt;br&gt;
          (B) 보수적 다운그레이드: 1.82.6 이하로 낮추고(조직 검증 완료 버전) 즉시 키/토큰 회전 진행&lt;br&gt;
          &lt;span class=&quot;mini&quot;&gt;※ 운영 정책상 “상향 업데이트 승인 절차”가 오래 걸리면, 우선 (B)로 서비스 안정화 후 (A)로 이행하는 전략도 가능합니다.&lt;/span&gt;
        &lt;/div&gt;

        &lt;pre&gt;&lt;code&gt;# 제거 후 재설치(예시)
pip uninstall -y litellm

# 업그레이드(예시)
pip install -U &quot;litellm&gt;=1.83.0&quot;

# 또는 다운그레이드(예시)
pip install -U &quot;litellm&lt;=1.82.6&quot;&lt;/code&gt;&lt;/pre&gt;

        &lt;h3&gt;3) 비밀정보 회전(가장 중요)&lt;/h3&gt;
        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;회전 대상 체크&lt;/strong&gt;
          LLM 공급자 API 키(OpenAI/Anthropic/Google 등)&lt;br&gt;
          클라우드 키(AWS Access Key, GCP SA 키, Azure SP 비밀값)&lt;br&gt;
          Git 토큰(GitHub PAT 등), 레지스트리 토큰, CI 비밀값(Secrets/Variables)&lt;br&gt;
          DB 계정/비밀번호, SSH 키(배포키 포함), K8s Secret/Token&lt;br&gt;
          &lt;span class=&quot;mini&quot;&gt;※ “패키지 제거”만 하고 키 회전을 안 하면, 이미 유출된 키로 2차 피해가 이어질 수 있습니다.&lt;/span&gt;
        &lt;/div&gt;

        &lt;h3&gt;4) 영향 범위 빠른 스코프 확장&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;strong&gt;요구사항 파일&lt;/strong&gt;: &lt;code&gt;requirements.txt&lt;/code&gt;, &lt;code&gt;poetry.lock&lt;/code&gt;, &lt;code&gt;pipfile.lock&lt;/code&gt;에서 &lt;code&gt;litellm&lt;/code&gt; 검색&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;CI 설정&lt;/strong&gt;: 워크플로/파이프라인 YAML에서 &lt;code&gt;pip install&lt;/code&gt; 구문과 버전 고정 여부 확인&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;Dockerfile&lt;/strong&gt;: 이미지 빌드 단계에서 버전 고정 없는 설치가 있는지 확인&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-deep&quot; id=&quot;deep-dive&quot;&gt;
        &lt;h2 id=&quot;sec-deep&quot;&gt;심화 분석&lt;/h2&gt;

        &lt;h3&gt;1) 설치/업데이트 타임라인 확인&lt;/h3&gt;
        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;포인트&lt;/strong&gt;
          LiteLLM 측 업데이트에서는 문제가 된 PyPI 버전이 짧은 시간 동안 유포되었다는 안내가 있으며,&lt;br&gt;
          조직 내부 로그(빌드 로그/배포 로그/패키지 캐시)를 통해 “그 시간대에 설치가 발생했는지”를 우선 확인합니다.
        &lt;/div&gt;

        &lt;h3&gt;2) 의심스러운 외부 통신(egress) 점검&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;방화벽/프록시/DNS 로그에서 빌드 노드·런타임 서버의 신규 도메인 접속 여부 확인&lt;/li&gt;
          &lt;li&gt;CI 러너/빌드 서버에서 설치 직후 HTTP POST 요청 증가, 비정상적인 암호화/압축 트래픽 징후 확인&lt;/li&gt;
          &lt;li&gt;컨테이너 환경이라면: 빌드 단계(Builder)와 런타임 단계(Runtime) 각각 분리해서 네트워크 로그 확인&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;3) 파일/프로세스 흔적 점검(환경별)&lt;/h3&gt;
        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;운영 환경 기준으로 점검 범위 예시&lt;/strong&gt;
          (1) 해당 버전이 설치된 Python site-packages 경로 확인&lt;br&gt;
          (2) 실행 시점에 자동 로드되는 경로(.pth 등) 및 비정상 스크립트 생성 여부 확인&lt;br&gt;
          (3) 같은 호스트에서 API 키 파일(.env), SSH 키, K8s 설정(~/.kube) 접근 흔적 점검
        &lt;/div&gt;

        &lt;h3&gt;4) “간접 의존성” 확인&lt;/h3&gt;
        &lt;pre&gt;&lt;code&gt;# 현재 환경에서 의존성 트리 확인(도구에 따라 택1)
pip freeze | grep -i litellm

# pipdeptree 사용 시(설치되어 있다면)
pipdeptree | grep -i -n &quot;litellm&quot;&lt;/code&gt;&lt;/pre&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-recovery&quot; id=&quot;recovery&quot;&gt;
        &lt;h2 id=&quot;sec-recovery&quot;&gt;복구&lt;/h2&gt;

        &lt;h3&gt;1) 격리 및 교체&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;의심 호스트/러너를 네트워크 격리(가능하면 즉시)&lt;/li&gt;
          &lt;li&gt;위험 버전 제거 후 안전 버전으로 재배포(버전 고정 적용)&lt;/li&gt;
          &lt;li&gt;빌드 캐시/패키지 캐시 초기화(조직 정책에 맞춰 수행)&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;2) 비밀정보 회전(전면)&lt;/h3&gt;
        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;운영 우선순위(권장)&lt;/strong&gt;
          1) 외부 노출 시 피해가 큰 키(클라우드/결제/관리자 권한)부터 즉시 폐기/재발급&lt;br&gt;
          2) CI/레지스트리 토큰 교체 후 파이프라인 재서명/재배포&lt;br&gt;
          3) 서비스 계정/DB 계정 교체 및 접근 제어 점검&lt;br&gt;
          4) 교체 후 “기존 키가 더 이상 동작하지 않는지” 테스트로 확인
        &lt;/div&gt;

        &lt;h3&gt;3) 침해 의심 시 대응&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;정황이 확인되면 내부 IR 절차(티켓/에스컬레이션/증적 보존) 즉시 개시&lt;/li&gt;
          &lt;li&gt;로그 보존(프록시/DNS/CI/서버 감사 로그) 및 포렌식용 스냅샷 확보&lt;/li&gt;
          &lt;li&gt;조직의 대외 신고/공유 프로세스에 따라 진행(공공/교육/기업 기준 상이)&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-prevent&quot; id=&quot;prevention&quot;&gt;
        &lt;h2 id=&quot;sec-prevent&quot;&gt;재발 방지&lt;/h2&gt;

        &lt;h3&gt;1) 버전 고정과 검증을 “기본값”으로&lt;/h3&gt;
        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;실행 항목&lt;/strong&gt;
          요구사항 파일에 버전 고정(또는 lock 파일 운영)을 필수화&lt;br&gt;
          CI에서 “버전 미고정 설치”를 정책으로 차단(예: &lt;code&gt;pip install litellm&lt;/code&gt; 단독 금지)&lt;br&gt;
          릴리스 승인 절차에 “공급망 사고 발생 시 긴급 예외 프로세스” 포함
        &lt;/div&gt;

        &lt;h3&gt;2) 빌드/배포 단계 보안 강화&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;빌드 러너 격리(권한 최소화, 네트워크 egress 제한, 단기 토큰 사용)&lt;/li&gt;
          &lt;li&gt;SBOM 생성 및 배포 아티팩트 서명/검증(가능한 범위부터 단계적으로)&lt;/li&gt;
          &lt;li&gt;의존성 다운로드를 내부 프록시/미러로 통제하고, 승인된 패키지만 통과&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;3) 키/토큰 운영 원칙 재정비&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;장기 고정 키 지양: 단기 토큰/워크로드 아이덴티티 우선&lt;/li&gt;
          &lt;li&gt;키 사용 범위 최소화(권한/리전/리소스 제한)&lt;/li&gt;
          &lt;li&gt;키 유출 탐지(이상 과금, 비정상 지역 접근, 대량 호출) 알림 룰 상시 운영&lt;/li&gt;
        &lt;/ul&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;운영 환경에서는&lt;/strong&gt;
          “오픈소스 문제 → 패키지 교체”로 끝내기보다,&lt;br&gt;
          “비밀정보 회전 + egress 통제 + 의존성 통제”까지 묶어야 동일 유형의 공급망 사고에 반복 노출되지 않습니다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section aria-labelledby=&quot;sec-checklist&quot; id=&quot;quick-checklist&quot;&gt;
        &lt;h2 id=&quot;sec-checklist&quot;&gt;빠른 체크리스트&lt;/h2&gt;

        &lt;ul&gt;
          &lt;li&gt;[ ] 우리 조직에 &lt;code&gt;litellm==1.82.7&lt;/code&gt; / &lt;code&gt;1.82.8&lt;/code&gt; 설치 이력이 있는가&lt;/li&gt;
          &lt;li&gt;[ ] CI/CD, Dockerfile, requirements/lock 파일에 “버전 미고정 설치”가 있는가&lt;/li&gt;
          &lt;li&gt;[ ] 해당 환경에서 사용된 API 키/클라우드 키/CI 토큰을 회전했는가&lt;/li&gt;
          &lt;li&gt;[ ] 빌드 노드 및 런타임 서버의 egress 로그를 확인했는가&lt;/li&gt;
          &lt;li&gt;[ ] 재발 방지로 버전 고정/정책 차단/승인 절차를 적용했는가&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;
    &lt;/div&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;TechArticle&quot;,
          &quot;@id&quot;: &quot;https://your-domain.example/post/litellm-supplychain-advisory#techarticle&quot;,
          &quot;headline&quot;: &quot;LiteLLM 악성 패키지 유포 대응 체크리스트&quot;,
          &quot;description&quot;: &quot;LiteLLM 1.82.7·1.82.8 악성 패키지 유포 이슈에 대해 영향 범위 확인부터 1차 점검, 심화 분석, 복구 및 재발 방지까지 운영 환경 기준으로 정리한 매뉴얼.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;datePublished&quot;: &quot;2026-03-31&quot;,
          &quot;dateModified&quot;: &quot;2026-03-31&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://your-domain.example/post/litellm-supplychain-advisory&quot;
          },
          &quot;publisher&quot;: {
            &quot;@type&quot;: &quot;Organization&quot;,
            &quot;name&quot;: &quot;Tistory Blog&quot;
          }
        },
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;@id&quot;: &quot;https://your-domain.example/post/litellm-supplychain-advisory#breadcrumb&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;홈&quot;,
              &quot;item&quot;: &quot;https://your-domain.example/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;보안&quot;,
              &quot;item&quot;: &quot;https://your-domain.example/category/security&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;LiteLLM 악성 패키지 유포 대응&quot;
            }
          ]
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>IT 소식 뉴스/CVE CODE</category>
      <category>API 키 유출</category>
      <category>CI/CD 보안</category>
      <category>LiteLLM</category>
      <category>pypi</category>
      <category>공급망 공격</category>
      <category>보안 권고</category>
      <category>비밀정보 회전</category>
      <category>악성 패키지</category>
      <category>자격 증명 탈취</category>
      <category>침해사고 대응</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/513</guid>
      <comments>https://togethergrow.tistory.com/entry/LiteLLM-%EC%95%85%EC%84%B1-%ED%8C%A8%ED%82%A4%EC%A7%80-%EC%9C%A0%ED%8F%AC-%EB%8C%80%EC%9D%91-%EC%B2%B4%ED%81%AC%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EA%B5%AD%EA%B0%80%EC%82%AC%EC%9D%B4%EB%B2%84%EC%95%88%EB%B3%B4%EC%84%BC%ED%84%B0-331-%EA%B6%8C%EA%B3%A0-%EA%B8%B0%EC%A4%80#entry513comment</comments>
      <pubDate>Fri, 10 Apr 2026 11:54:57 +0900</pubDate>
    </item>
    <item>
      <title>대전 벚꽃 개화시기와 명소, 근교 추천 코스</title>
      <link>https://togethergrow.tistory.com/entry/%EB%8C%80%EC%A0%84-%EB%B2%9A%EA%BD%83-%EA%B0%9C%ED%99%94%EC%8B%9C%EA%B8%B0%EC%99%80-%EB%AA%85%EC%86%8C-%EA%B7%BC%EA%B5%90-%EC%B6%94%EC%B2%9C-%EC%BD%94%EC%8A%A4</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;대전 벚꽃 개화시기와 명소, 근교 추천 코스&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;2026년 대전 벚꽃 예상 개화 흐름(개화~만개)과 대전 시내·근교 명소를 한 번에 정리했습니다. 갑천·유림공원 산책부터 대청호 드라이브, 동학사 벚꽃길까지 동선별로 골라가세요.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;대전 벚꽃 개화시기,대전 벚꽃 명소,대전 근교 벚꽃,갑천 벚꽃길,유림공원,카이스트 벚꽃,대청호 벚꽃길,동학사 벚꽃,테미공원,한밭수목원&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;대전 벚꽃 개화시기와 명소, 근교 추천 코스&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;2026년 대전 벚꽃 예상 타이밍과 대전·근교 벚꽃 명소를 동선별로 정리했습니다.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://placehold.co/1200x630?text=OG+Image+URL+Please+Replace&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;대전 벚꽃 개화시기와 명소, 근교 추천 코스&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;2026년 대전 벚꽃 예상 타이밍과 대전·근교 벚꽃 명소를 동선별로 정리했습니다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://placehold.co/1200x630?text=OG+Image+URL+Please+Replace&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;post-content&quot; role=&quot;main&quot;&gt;
    &lt;article&gt;
      &lt;header class=&quot;post-header&quot;&gt;
        &lt;h1&gt;대전 벚꽃 개화시기와 명소, 근교 추천 코스&lt;/h1&gt;
        &lt;p class=&quot;sub&quot;&gt;
          “이번 주말에 대전 벚꽃 어디로 갈까?”를 빠르게 결정할 수 있게, 개화 타이밍부터 시내·근교 명소까지 한 번에 정리했습니다.
        &lt;/p&gt;
      &lt;/header&gt;

      &lt;style&gt;
        .post-content { line-height: 1.7; }
        .post-content .wrap { max-width: 860px; margin: 0 auto; }
        .post-content h2 { margin: 26px 0 10px; font-size: 1.35rem; }
        .post-content h3 { margin: 18px 0 8px; font-size: 1.12rem; }
        .post-content p { margin: 10px 0; }
        .post-content ul { margin: 10px 0 10px 18px; }
        .post-content li { margin: 6px 0; }
        .post-content .note {
          border: 1px solid rgba(0,0,0,0.12);
          border-radius: 14px;
          padding: 14px 14px;
          margin: 14px 0;
        }
        .post-content .badge {
          display: inline-block;
          border: 1px solid rgba(0,0,0,0.18);
          border-radius: 999px;
          padding: 2px 10px;
          font-size: 0.9rem;
          margin-right: 6px;
          white-space: nowrap;
        }
        .post-content .grid {
          display: grid;
          grid-template-columns: 1fr;
          gap: 12px;
        }
        @media (min-width: 860px) {
          .post-content .grid { grid-template-columns: 1fr 1fr; }
        }
        .post-content table {
          width: 100%;
          border-collapse: collapse;
          margin: 12px 0;
          font-size: 0.98rem;
        }
        .post-content th, .post-content td {
          border: 1px solid rgba(0,0,0,0.12);
          padding: 10px 10px;
          vertical-align: top;
        }
        .post-content th { text-align: left; }
        .post-content .mini { font-size: 0.95rem; opacity: 0.92; }
        .post-content .kicker { margin-top: 6px; font-size: 0.98rem; opacity: 0.95; }
        .post-content .cta {
          border: 1px solid rgba(0,0,0,0.12);
          border-radius: 14px;
          padding: 14px;
          margin: 18px 0;
        }
        .post-content .cta strong { display: block; margin-bottom: 6px; }
        .post-content a { word-break: break-word; }
      &lt;/style&gt;

      &lt;div class=&quot;wrap&quot;&gt;
        &lt;section&gt;
          &lt;h2&gt;대전 벚꽃 개화시기&lt;/h2&gt;

          &lt;p&gt;
            2026년 기준으로 대전은 &lt;strong&gt;3월 말(3/29~3/31 전후) 첫 개화&lt;/strong&gt;가 예상되고,
            보통 &lt;strong&gt;개화 후 5~7일&lt;/strong&gt; 사이에 만개 분위기가 올라옵니다.
            다만 비·강풍이 한 번 오면 “절정 체감”이 확 줄어들 수 있어요.
          &lt;/p&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;span class=&quot;badge&quot;&gt;체감 타이밍&lt;/span&gt;
            &lt;span class=&quot;badge&quot;&gt;개화&lt;/span&gt; 3월 말&lt;br /&gt;
            &lt;span class=&quot;badge&quot;&gt;만개&lt;/span&gt; 4월 초~중순 초입&lt;br /&gt;
            &lt;span class=&quot;badge&quot;&gt;추천&lt;/span&gt; 평일 오전 / 비 예보 전날
            &lt;p class=&quot;mini&quot; style=&quot;margin-top:10px;&quot;&gt;
              운영 환경에서는 “예상일”보다 &lt;strong&gt;2~4일 오차&lt;/strong&gt;가 흔합니다. 출발 당일 오전에 최신 관측(기상·현장 사진)을 한 번 확인하고 움직이면 실패 확률이 크게 줄어요.
            &lt;/p&gt;
          &lt;/div&gt;

          &lt;h3&gt;짧게 보는 체크리스트&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;바람 강한 날(초속 6m 이상 체감)은 꽃잎이 빨리 떨어질 수 있음&lt;/li&gt;
            &lt;li&gt;야간이 목적이면 조명/야경 포인트(수변·공원)로 동선 구성&lt;/li&gt;
            &lt;li&gt;드라이브는 “정체 구간”이 핵심: 출발 시간(오전 8~10시)로 승부&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;대전 벚꽃 명소&lt;/h2&gt;

          &lt;div class=&quot;grid&quot;&gt;
            &lt;div class=&quot;note&quot;&gt;
              &lt;h3 style=&quot;margin-top:0;&quot;&gt;갑천·유림공원&lt;/h3&gt;
              &lt;p class=&quot;kicker&quot;&gt;
                &lt;strong&gt;산책/러닝/자전거&lt;/strong&gt;에 최적화된 코스. 수변 따라 걷는 맛이 좋아 “벚꽃+바람” 조합이 잘 나옵니다.
              &lt;/p&gt;
              &lt;ul&gt;
                &lt;li&gt;포인트: 수변 길, 분수 주변, 왕벚나무 라인&lt;/li&gt;
                &lt;li&gt;체감 팁: 해 질 무렵은 역광이 예쁘고, 낮엔 사람 많아도 동선이 넓어 분산됨&lt;/li&gt;
              &lt;/ul&gt;
              &lt;p class=&quot;mini&quot;&gt;
                주변에 봉명동 카페거리/유성 일대가 가까워 “벚꽃 보고 바로 쉬기”가 편합니다. (자전거 코스 추천 동선으로도 자주 언급됩니다.)
              &lt;/p&gt;
            &lt;/div&gt;

            &lt;div class=&quot;note&quot;&gt;
              &lt;h3 style=&quot;margin-top:0;&quot;&gt;카이스트(대덕연구단지 인근)&lt;/h3&gt;
              &lt;p class=&quot;kicker&quot;&gt;
                &lt;strong&gt;캠퍼스 벚꽃&lt;/strong&gt; 특유의 정돈된 분위기. 사진은 인물샷보다 “길/나무/연못” 구도가 잘 나오는 편입니다.
              &lt;/p&gt;
              &lt;ul&gt;
                &lt;li&gt;포인트: 캠퍼스 산책로, 연못 주변&lt;/li&gt;
                &lt;li&gt;체감 팁: 주말 낮은 혼잡하니 평일 오전이 안정적&lt;/li&gt;
              &lt;/ul&gt;
              &lt;p class=&quot;mini&quot;&gt;
                유림공원과 묶어서 “한 번에 2곳”으로 움직이기 좋아요.
              &lt;/p&gt;
            &lt;/div&gt;

            &lt;div class=&quot;note&quot;&gt;
              &lt;h3 style=&quot;margin-top:0;&quot;&gt;우암사적공원&lt;/h3&gt;
              &lt;p class=&quot;kicker&quot;&gt;
                한옥/전통 건축과 벚꽃이 겹치면 분위기가 확 살아납니다. “화려함”보다 &lt;strong&gt;고즈넉함&lt;/strong&gt; 쪽.
              &lt;/p&gt;
              &lt;ul&gt;
                &lt;li&gt;포인트: 전통 건축 주변, 연못·정자 구간&lt;/li&gt;
                &lt;li&gt;체감 팁: 사진은 사람 적은 시간대(오전) 추천&lt;/li&gt;
              &lt;/ul&gt;
              &lt;p class=&quot;mini&quot;&gt;
                “벚꽃+문화 산책”을 원할 때 만족도가 높습니다.
              &lt;/p&gt;
            &lt;/div&gt;

            &lt;div class=&quot;note&quot;&gt;
              &lt;h3 style=&quot;margin-top:0;&quot;&gt;테미공원&lt;/h3&gt;
              &lt;p class=&quot;kicker&quot;&gt;
                도심 속 가벼운 오르막 산책 느낌. &lt;strong&gt;은행동·대흥동&lt;/strong&gt;과 가깝게 엮기 좋아 “짧고 굵게” 코스로 딱입니다.
              &lt;/p&gt;
              &lt;ul&gt;
                &lt;li&gt;포인트: 산책로 벚꽃 라인, 도심뷰 스팟&lt;/li&gt;
                &lt;li&gt;주의: 도로가 좁고 주차 여건이 아쉬운 편이라 대중교통/도보 접근이 유리&lt;/li&gt;
              &lt;/ul&gt;
              &lt;p class=&quot;mini&quot;&gt;
                벚꽃 산책 후에는 은행동 쪽으로 내려가 “빵/카페” 코스로 마무리하기 좋습니다.
              &lt;/p&gt;
            &lt;/div&gt;
          &lt;/div&gt;

          &lt;h3&gt;대전 시내 명소 요약표&lt;/h3&gt;
          &lt;table&gt;
            &lt;thead&gt;
              &lt;tr&gt;
                &lt;th&gt;명소&lt;/th&gt;
                &lt;th&gt;추천 유형&lt;/th&gt;
                &lt;th&gt;근처 같이 가기 좋은 곳(가볍게)&lt;/th&gt;
                &lt;th&gt;참고 링크&lt;/th&gt;
              &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
              &lt;tr&gt;
                &lt;td&gt;갑천·유림공원&lt;/td&gt;
                &lt;td&gt;산책, 자전거, 가족 나들이&lt;/td&gt;
                &lt;td&gt;
                  봉명동 카페거리(티타임)&lt;br /&gt;
                  유성온천 족욕(가볍게 쉬기)&lt;br /&gt;
                &lt;/td&gt;
                &lt;td&gt;
                  &lt;a href=&quot;https://korean.visitkorea.or.kr/detail/rem_detail.do?cotid=f14e9970-1fb3-44b3-b96b-0dc64cad476d&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;korean.visitkorea.or.kr&lt;/a&gt;&lt;br /&gt;
                  &lt;a href=&quot;https://www.yuseong.go.kr/prog/trrsrt/TRSE_01/tour/sub02_01/view.do?trrsrtNo=15&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;yuseong.go.kr&lt;/a&gt;&lt;br /&gt;
                &lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;카이스트&lt;/td&gt;
                &lt;td&gt;캠퍼스 감성, 사진&lt;/td&gt;
                &lt;td&gt;
                  유림공원(연계 동선)&lt;br /&gt;
                  연구단지 주변 식사/카페(분산 선택 가능)&lt;br /&gt;
                &lt;/td&gt;
                &lt;td&gt;
                  &lt;a href=&quot;https://korean.visitkorea.or.kr/detail/rem_detail.do?cotid=f14e9970-1fb3-44b3-b96b-0dc64cad476d&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;korean.visitkorea.or.kr&lt;/a&gt;&lt;br /&gt;
                &lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;우암사적공원&lt;/td&gt;
                &lt;td&gt;고즈넉한 분위기, 한옥+벚꽃&lt;/td&gt;
                &lt;td&gt;
                  동구/자양동 쪽 식사(근처 이동)&lt;br /&gt;
                &lt;/td&gt;
                &lt;td&gt;
                  &lt;a href=&quot;https://korean.visitkorea.or.kr/detail/rem_detail.do?cotid=a9916d37-d006-4e69-ad18-5d239387aca1&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;korean.visitkorea.or.kr&lt;/a&gt;&lt;br /&gt;
                &lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;테미공원&lt;/td&gt;
                &lt;td&gt;도심 산책, 짧은 코스&lt;/td&gt;
                &lt;td&gt;
                  은행동·대흥동(도심 산책/카페)&lt;br /&gt;
                  성심당 본점(빵 코스)&lt;br /&gt;
                &lt;/td&gt;
                &lt;td&gt;
                  &lt;a href=&quot;https://sungsimdang.co.kr/31/15&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;sungsimdang.co.kr&lt;/a&gt;&lt;br /&gt;
                &lt;/td&gt;
              &lt;/tr&gt;
            &lt;/tbody&gt;
          &lt;/table&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;대전 근교 벚꽃 명소&lt;/h2&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;h3 style=&quot;margin-top:0;&quot;&gt;대청호 벚꽃길(드라이브)&lt;/h3&gt;
            &lt;p&gt;
              대전 근교(동구 라인)에서 “드라이브로 벚꽃을 끝없이 보고 싶다”면 대청호가 강력합니다.
              길게 이어지는 왕벚꽃 라인이 특징이고, 호수 풍경까지 같이 붙어서 만족도가 높아요.
            &lt;/p&gt;
            &lt;ul&gt;
              &lt;li&gt;포인트: 호수+벚꽃 같이 담기는 구간, ‘벚꽃한터’ 주변 집결 포인트&lt;/li&gt;
              &lt;li&gt;팁: 주말 한낮은 정체가 심해질 수 있어 &lt;strong&gt;오전 출발&lt;/strong&gt;이 안전&lt;/li&gt;
              &lt;li&gt;현장 운영: 주차/임시주차장 안내는 시즌마다 변동 가능&lt;/li&gt;
            &lt;/ul&gt;
            &lt;p class=&quot;mini&quot;&gt;
              (행사/운영 정보는 매년 공지 시점이 다르므로 방문 전 공식 안내를 확인하세요.)
            &lt;/p&gt;
            &lt;p class=&quot;mini&quot; style=&quot;margin-top:10px;&quot;&gt;
              참고 링크&lt;br /&gt;
              &lt;a href=&quot;https://www.donggu.go.kr/dg/tour/contents/988&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;donggu.go.kr&lt;/a&gt;&lt;br /&gt;
            &lt;/p&gt;
          &lt;/div&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;h3 style=&quot;margin-top:0;&quot;&gt;계룡산 동학사 벚꽃길(공주)&lt;/h3&gt;
            &lt;p&gt;
              “벚꽃 + 계곡/산 공기” 조합으로 분위기가 완전히 달라집니다. 주차는 시즌에 따라 체감 난도가 올라가니,
              가능하면 평일이나 아침을 추천해요.
            &lt;/p&gt;
            &lt;ul&gt;
              &lt;li&gt;포인트: 동학사 입구부터 이어지는 벚꽃길 산책&lt;/li&gt;
              &lt;li&gt;팁: 꽃 구경 후엔 근처 카페/디저트로 쉬어가기 좋다는 후기가 꾸준함&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/div&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;h3 style=&quot;margin-top:0;&quot;&gt;세종 호수공원(산책형)&lt;/h3&gt;
            &lt;p&gt;
              대전에서 한 시간 내외로 “탁 트인 호수뷰”를 원하면 세종 호수공원도 선택지입니다.
              호수 라인 산책이 편하고, 벚꽃 시즌엔 포인트가 분산돼 체감 혼잡이 덜한 날도 있어요.
            &lt;/p&gt;
            &lt;ul&gt;
              &lt;li&gt;포인트: 호수 라인 산책, 넓은 동선&lt;/li&gt;
              &lt;li&gt;팁: 가족/연인 산책 코스로 만족도가 높은 편&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;동선 추천&lt;/h2&gt;

          &lt;div class=&quot;cta&quot;&gt;
            &lt;strong&gt;1) “도심 반나절” 코스&lt;/strong&gt;
            테미공원(가볍게 산책) → 은행동/대흥동(커피) → 성심당(빵 포장) → 마무리
            &lt;p class=&quot;mini&quot; style=&quot;margin-top:8px;&quot;&gt;
              사람 많은 시간대를 피하려면 오전 9~11시에 산책을 끝내는 구성이 안정적입니다.
            &lt;/p&gt;
          &lt;/div&gt;

          &lt;div class=&quot;cta&quot;&gt;
            &lt;strong&gt;2) “유성 하루” 코스&lt;/strong&gt;
            유림공원·갑천 산책(점심 전) → 카이스트 산책(짧게) → 봉명동 카페거리(휴식) → 유성온천 족욕(선택)
            &lt;p class=&quot;mini&quot; style=&quot;margin-top:8px;&quot;&gt;
              실제 사용 시 가장 실패가 적은 코스가 “수변 산책+카페” 조합입니다. 날씨 변수에도 대응이 쉬워요.
            &lt;/p&gt;
          &lt;/div&gt;

          &lt;div class=&quot;cta&quot;&gt;
            &lt;strong&gt;3) “근교 드라이브” 코스&lt;/strong&gt;
            대청호 벚꽃길(오전 출발) → 전망 좋은 포인트에서 짧게 걷기 → 카페/식사 → 귀가
            &lt;p class=&quot;mini&quot; style=&quot;margin-top:8px;&quot;&gt;
              주말은 정체가 핵심 변수라, “오전 출발·오후 이른 시간 복귀”로 스트레스가 줄어듭니다.
            &lt;/p&gt;
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;벚꽃 시즌 실전 팁&lt;/h2&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;h3 style=&quot;margin-top:0;&quot;&gt;사진이 예쁘게 나오는 시간대&lt;/h3&gt;
            &lt;p&gt;
              오전엔 색이 깨끗하고, 해 질 무렵엔 분위기가 좋아요.&lt;br&gt;
              인물 사진은 &lt;strong&gt;그늘+밝은 배경&lt;/strong&gt; 구도가 안정적이고, 수변은 반사광이 살아납니다.&lt;br&gt;
              바람이 강하면 꽃잎이 빨리 떨어질 수 있으니, 비 예보 전날을 노리는 것도 방법입니다.
            &lt;/p&gt;
          &lt;/div&gt;

          &lt;div class=&quot;note&quot;&gt;
            &lt;h3 style=&quot;margin-top:0;&quot;&gt;혼잡 회피(관리자 입장 팁)&lt;/h3&gt;
            &lt;p&gt;
              운영 환경에서는 “명소 선택”보다 &lt;strong&gt;시간 선택&lt;/strong&gt;이 훨씬 중요합니다.&lt;br&gt;
              주말이라면 오전 8~10시 도착을 목표로 잡고, 도심 코스는 대중교통/도보 비중을 늘리면 체감이 크게 달라져요.
            &lt;/p&gt;
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;마무리&lt;/h2&gt;
          &lt;p&gt;
            대전 벚꽃은 “수변 산책(갑천·유림공원)”과 “도심 산책(테미공원)”의 접근성이 좋고,
            근교로는 “대청호 드라이브”, “동학사 벚꽃길”처럼 결이 다른 선택지가 있어요.
            이번 주 일정이 짧다면 도심·유성권으로, 하루를 쓸 수 있다면 대청호/동학사로 확장해보세요.
          &lt;/p&gt;
        &lt;/section&gt;
      &lt;/div&gt;
    &lt;/article&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;대전&quot;,
              &quot;item&quot;: &quot;https://example.com/daejeon&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;대전 벚꽃&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;Event&quot;,
          &quot;name&quot;: &quot;대전 벚꽃 시즌 2026&quot;,
          &quot;description&quot;: &quot;2026년 대전 지역 벚꽃 개화~만개 흐름에 맞춰 갑천·유림공원·카이스트·테미공원 등 시내 명소와 대청호·동학사 등 근교 명소를 즐기는 봄 시즌 여행.&quot;,
          &quot;eventAttendanceMode&quot;: &quot;https://schema.org/OfflineEventAttendanceMode&quot;,
          &quot;eventStatus&quot;: &quot;https://schema.org/EventScheduled&quot;,
          &quot;startDate&quot;: &quot;2026-03-29&quot;,
          &quot;endDate&quot;: &quot;2026-04-12&quot;,
          &quot;location&quot;: [
            {
              &quot;@type&quot;: &quot;Place&quot;,
              &quot;name&quot;: &quot;대전광역시&quot;,
              &quot;address&quot;: {
                &quot;@type&quot;: &quot;PostalAddress&quot;,
                &quot;addressLocality&quot;: &quot;대전광역시&quot;,
                &quot;addressCountry&quot;: &quot;KR&quot;
              }
            }
          ],
          &quot;image&quot;: [
            &quot;https://placehold.co/1200x630?text=OG+Image+URL+Please+Replace&quot;
          ],
          &quot;organizer&quot;: {
            &quot;@type&quot;: &quot;Organization&quot;,
            &quot;name&quot;: &quot;대전 봄나들이 안내&quot;
          }
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>일상 정보/대전 소식</category>
      <category>갑천 벚꽃길</category>
      <category>대전 근교 벚꽃</category>
      <category>대전 벚꽃 개화시기</category>
      <category>대전 벚꽃 명소</category>
      <category>대청호 벚꽃길</category>
      <category>동학사 벚꽃</category>
      <category>유림공원</category>
      <category>카이스트 벚꽃</category>
      <category>테미공원</category>
      <category>한밭수목원</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/512</guid>
      <comments>https://togethergrow.tistory.com/entry/%EB%8C%80%EC%A0%84-%EB%B2%9A%EA%BD%83-%EA%B0%9C%ED%99%94%EC%8B%9C%EA%B8%B0%EC%99%80-%EB%AA%85%EC%86%8C-%EA%B7%BC%EA%B5%90-%EC%B6%94%EC%B2%9C-%EC%BD%94%EC%8A%A4#entry512comment</comments>
      <pubDate>Fri, 20 Mar 2026 15:42:29 +0900</pubDate>
    </item>
    <item>
      <title>유출 사고 시 ISMS-P 인증 취소 가능성&amp;hellip; &amp;lsquo;스냅샷&amp;rsquo; 심사 방식 손본다</title>
      <link>https://togethergrow.tistory.com/entry/%EC%9C%A0%EC%B6%9C-%EC%82%AC%EA%B3%A0-%EC%8B%9C-ISMS-P-%EC%9D%B8%EC%A6%9D-%EC%B7%A8%EC%86%8C-%EA%B0%80%EB%8A%A5%EC%84%B1%E2%80%A6-%E2%80%98%EC%8A%A4%EB%83%85%EC%83%B7%E2%80%99-%EC%8B%AC%EC%82%AC-%EB%B0%A9%EC%8B%9D-%EC%86%90%EB%B3%B8%EB%8B%A4</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ChatGPT Image 2026년 3월 13일 오후 08_26_38.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ca6y9j/dJMcabwEXnx/m6PZKmLjS6pBkQs4gm32c0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ca6y9j/dJMcabwEXnx/m6PZKmLjS6pBkQs4gm32c0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ca6y9j/dJMcabwEXnx/m6PZKmLjS6pBkQs4gm32c0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fca6y9j%2FdJMcabwEXnx%2Fm6PZKmLjS6pBkQs4gm32c0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;정부가 ISMS&amp;middot;ISMS-P 인증의 실효성을 높이기 위해 의무대상 확대, 현장 실증형 심사 전환, 사고 발생 시 인증 취소 검토 등 구조 개편 방향을 논의했다. 기업 입장에서 바뀌는 심사 포인트와 사전 준비 체크리스트를 정리한다&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;ChatGPT Image 2026년 3월 13일 오후 08_26_38.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;유출 사고 시 ISMS-P 인증 취소 가능성… ‘스냅샷’ 심사 방식 손본다&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;정부가 ISMS·ISMS-P 인증의 실효성을 높이기 위해 의무대상 확대, 현장 실증형 심사 전환, 사고 발생 시 인증 취소 검토 등 구조 개편 방향을 논의했다. 기업 입장에서 바뀌는 심사 포인트와 사전 준비 체크리스트를 정리한다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;ISMS,ISMS-P,개인정보보호,정보보호관리체계,KISA,현장심사,인증취소,스냅샷평가,사후관리,보안점검,개인정보유출&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;유출 사고 시 ISMS-P 인증 취소 가능성… ‘스냅샷’ 심사 방식 손본다&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;의무대상 확대, 서면 중심 ‘스냅샷’ 심사에서 현장 실증형 점검으로 전환, 사고 발생 시 인증 취소 검토까지—ISMS·ISMS-P 개편 방향과 기업 대응 포인트를 정리.&quot; /&gt;
  &lt;meta property=&quot;og:url&quot; content=&quot;https://example.com/post/isms-p-reform&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;유출 사고 시 ISMS-P 인증 취소 가능성… ‘스냅샷’ 심사 방식 손본다&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;현장 실증형 심사 강화·사후관리 강화·의무화 확대… ISMS·ISMS-P 개편 논의 핵심만 압축.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .post-content{
      line-height: 1.7;
    }
    .post-content .wrap{
      max-width: 860px;
      margin: 0 auto;
      padding: 0 12px;
    }
    .post-content h1{
      font-size: 1.9rem;
      line-height: 1.25;
      margin: 0 0 10px 0;
    }
    .post-content .meta{
      font-size: 0.95rem;
      opacity: 0.85;
      margin: 0 0 18px 0;
    }
    .post-content section{
      margin: 22px 0;
    }
    .post-content h2{
      font-size: 1.35rem;
      margin: 0 0 10px 0;
    }
    .post-content p{
      margin: 10px 0;
    }
    .post-content .callout{
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 14px;
      padding: 14px 14px;
      margin: 12px 0;
    }
    .post-content .callout strong{
      display: inline-block;
      margin-bottom: 6px;
    }
    .post-content ul{
      margin: 10px 0 10px 18px;
    }
    .post-content li{
      margin: 6px 0;
    }
    .post-content .mini{
      font-size: 0.95rem;
      opacity: 0.9;
    }
    .post-content .quote{
      border-left: 4px solid rgba(0,0,0,0.18);
      padding: 10px 12px;
      margin: 12px 0;
      border-radius: 10px;
      background: rgba(0,0,0,0.03);
    }
    .post-content code{
      font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace;
      font-size: 0.95em;
    }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;post-content&quot;&gt;
    &lt;article class=&quot;wrap&quot;&gt;
      &lt;header&gt;
        &lt;h1&gt;유출 사고 시 ISMS-P 인증 취소 가능성… ‘스냅샷’ 심사 방식 손본다&lt;/h1&gt;
        &lt;p class=&quot;meta&quot;&gt;핵심 요약: 의무대상 확대 · 현장 실증형 심사 강화 · 사후관리 강화(인증 취소 검토) · 심사원 전문성 강화&lt;/p&gt;
      &lt;/header&gt;

      &lt;section&gt;
        &lt;h2&gt;무슨 일이 논의됐나&lt;/h2&gt;

        &lt;p&gt;
          정부가 &lt;strong&gt;ISMS·ISMS-P 인증제의 실효성&lt;/strong&gt;을 높이기 위해 제도 전반을 손보는 방향을 공개적으로 논의했다.
          요지는 “서면 중심으로 특정 시점만 확인하는 &lt;strong&gt;‘스냅샷’ 방식 심사&lt;/strong&gt;의 한계를 넘어, 실제 운영 상태를 더 깊게 들여다보겠다”는 것이다.
        &lt;/p&gt;

        &lt;p class=&quot;mini&quot;&gt;
          기사에서 언급된 간담회는 &lt;strong&gt;3월 12일&lt;/strong&gt; 서울 광화문 인근에서 열렸고, 과기정통부와 개인정보보호위원회가 인증기관·심사기관·심사원들과 함께 개선 방향과 현장 애로사항을 청취했다는 흐름이다.
        &lt;/p&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;이번 논의의 결론을 한 문장으로&lt;/strong&gt;&lt;br&gt;
          “인증서 발급 그 순간만 ‘그럴듯하게’ 맞추는 구조가 아니라,&lt;br&gt;
          일정 수준 이상의 보호 조치가 &lt;em&gt;지속 유지&lt;/em&gt;되도록 제도를 재설계하겠다.”
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;바뀌는 방향 4가지&lt;/h2&gt;

        &lt;p&gt;발표에서 제시된 추진 과제는 크게 4축으로 정리된다.&lt;/p&gt;

        &lt;ul&gt;
          &lt;li&gt;&lt;strong&gt;인증 의무대상 확대 및 기준 강화&lt;/strong&gt;: 대규모 개인정보처리자 중심으로 의무화 확대 추진&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;인증심사 방식 강화&lt;/strong&gt;: 서면 증적 확인 위주 → 취약점 직접 점검, 시스템 접속 시연 등 현장 실증형으로 전환&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;인증 사후관리 강화&lt;/strong&gt;: 사고 발생 시에도 취소 사례가 없던 흐름에서 벗어나, 문제 발생 시 &lt;em&gt;인증 취소 검토&lt;/em&gt;까지 포함&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;심사기관·심사원 전문성 강화&lt;/strong&gt;: 심사원 역량 제고 교육, 심사기관 관리·감독 강화&lt;/li&gt;
        &lt;/ul&gt;

        &lt;div class=&quot;quote&quot;&gt;
          &lt;strong&gt;현장에 가장 크게 체감될 변화&lt;/strong&gt;&lt;br&gt;
          “문서가 그럴듯하면 통과”가 아니라,&lt;br&gt;
          실제 시스템에서 &lt;em&gt;통제가 동작하는지&lt;/em&gt;를 보여줘야 하는 구조로 간다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;‘스냅샷’ 심사의 한계가 왜 문제였나&lt;/h2&gt;

        &lt;p&gt;
          스냅샷 평가는 특정 시점의 제출 자료와 샘플링 확인에 의존하기 쉽다.
          그런데 현실의 침해사고는 “운영 중 변경”, “권한 누수”, “로그 미수집”, “위험 수용의 누적”처럼
          &lt;strong&gt;시간에 따라 쌓이는 구멍&lt;/strong&gt;에서 터지는 경우가 많다.
        &lt;/p&gt;

        &lt;p&gt;
          운영 환경에서는 문서가 맞더라도, 실제 설정이 어긋나거나 예외 정책이 늘어나면서
          원칙과 현실이 분리되는 순간이 생긴다. 실무 기준으로 보면 이 ‘분리’를 빨리 잡아내는 장치가 부족했던 셈이다.
        &lt;/p&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;기업이 느낄 포인트&lt;/strong&gt;&lt;br&gt;
          앞으로는 “규정/절차”뿐 아니라 “기술 통제의 실행 흔적(로그·설정·시연)”이 핵심 증적이 될 가능성이 크다.&lt;br&gt;
          문서만 정비해두고 시스템을 방치하면 리스크가 커진다.
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;인증 취소가 가능해지면 무엇이 달라지나&lt;/h2&gt;

        &lt;p&gt;
          지금까지 “인증이 있는데도 사고가 나는” 사례가 반복되면, 외부에서는 인증의 신뢰도 자체를 의심한다.
          따라서 사후관리 강화와 인증 취소 카드가 현실화되면, 인증은 ‘한 번 따는 자격증’이 아니라
          &lt;strong&gt;유지·운영을 강제하는 규율 장치&lt;/strong&gt;에 가까워진다.
        &lt;/p&gt;

        &lt;ul&gt;
          &lt;li&gt;사고 대응 시, &lt;strong&gt;기술적·관리적 조치의 지속성&lt;/strong&gt;이 더 중요해짐&lt;/li&gt;
          &lt;li&gt;사후 점검/모니터링이 늘면, &lt;strong&gt;운영 증적 품질&lt;/strong&gt;이 기업 평판과 직결&lt;/li&gt;
          &lt;li&gt;인증 범위/예외/위탁 관리가 허술하면, ‘취소 검토’의 타깃이 될 수 있음&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;기업 대응 체크리스트&lt;/h2&gt;

        &lt;p&gt;아래 항목은 “현장 실증형 심사”를 전제로 준비하면 도움이 되는 실무 항목이다.&lt;/p&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;1) 기술 통제 ‘시연 가능한’ 상태로 유지&lt;/strong&gt;&lt;br&gt;
          접근통제(권한)·계정 라이프사이클·MFA 적용 현황을 즉시 보여줄 수 있는가&lt;br&gt;
          중요 시스템/DB 접속 이력과 차단 정책이 운영에서 실제로 작동하는가
        &lt;/div&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;2) 취약점 점검/조치의 선순환 증적&lt;/strong&gt;&lt;br&gt;
          정기 취약점 점검 결과 → 조치 → 재점검 기록이 끊기지 않는가&lt;br&gt;
          “미조치 사유/위험 수용”이 남발되지는 않는가
        &lt;/div&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;3) 로그·모니터링의 ‘유효성’&lt;/strong&gt;&lt;br&gt;
          수집은 하고 있는데, 실제 탐지 룰/경보가 살아있는가&lt;br&gt;
          사고 가정 시 ‘추적 가능한지’(누가, 언제, 무엇을) 시나리오로 점검하는가
        &lt;/div&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;4) 위탁/협력사 통제&lt;/strong&gt;&lt;br&gt;
          개인정보 처리 위탁, 외주 운영, 클라우드 운영에서&lt;br&gt;
          책임 경계와 점검 주기가 문서가 아니라 실제 운영으로 굴러가는가
        &lt;/div&gt;

        &lt;p class=&quot;mini&quot;&gt;
          포인트는 단순하다. “문서가 맞다”를 넘어 “운영에서 계속 맞다”를 증명하는 구조로 준비해야 한다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;마무리&lt;/h2&gt;

        &lt;p&gt;
          이번 흐름은 인증제도의 위상을 높이기 위한 방향이기도 하지만, 기업 입장에서는 비용과 운영 부담이 늘 수 있다.
          다만 대형 유출 사고가 반복되는 환경에서, “인증은 있는데 사고가 난다”는 모순을 줄이려면
          &lt;strong&gt;현장 검증과 사후관리 강화&lt;/strong&gt;는 피하기 어려운 흐름이다.
        &lt;/p&gt;

        &lt;p&gt;
          당장 할 일은 거창한 문서 개정이 아니라,
          &lt;strong&gt;운영 증적(설정·로그·점검 결과·조치 이력)을 실제로 굴리는 습관&lt;/strong&gt;을 만드는 것이다.
          그게 앞으로의 심사 변화에서 가장 강한 방어선이 된다.
        &lt;/p&gt;
      &lt;/section&gt;
    &lt;/article&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
      {
        &quot;@context&quot;: &quot;https://schema.org&quot;,
        &quot;@graph&quot;: [
          {
            &quot;@type&quot;: &quot;BreadcrumbList&quot;,
            &quot;itemListElement&quot;: [
              {
                &quot;@type&quot;: &quot;ListItem&quot;,
                &quot;position&quot;: 1,
                &quot;name&quot;: &quot;홈&quot;,
                &quot;item&quot;: &quot;https://example.com/&quot;
              },
              {
                &quot;@type&quot;: &quot;ListItem&quot;,
                &quot;position&quot;: 2,
                &quot;name&quot;: &quot;ISMS·ISMS-P 실효성 강화&quot;,
                &quot;item&quot;: &quot;https://example.com/post/isms-p-reform&quot;
              }
            ]
          },
          {
            &quot;@type&quot;: &quot;BlogPosting&quot;,
            &quot;headline&quot;: &quot;유출 사고 시 ISMS-P 인증 취소 가능성… ‘스냅샷’ 심사 방식 손본다&quot;,
            &quot;description&quot;: &quot;정부가 ISMS·ISMS-P 인증의 실효성을 높이기 위해 의무대상 확대, 현장 실증형 심사 전환, 사고 발생 시 인증 취소 검토 등 구조 개편 방향을 논의했다. 기업 입장에서 바뀌는 심사 포인트와 사전 준비 체크리스트를 정리한다.&quot;,
            &quot;inLanguage&quot;: &quot;ko-KR&quot;,
            &quot;mainEntityOfPage&quot;: {
              &quot;@type&quot;: &quot;WebPage&quot;,
              &quot;@id&quot;: &quot;https://example.com/post/isms-p-reform&quot;
            },
            &quot;publisher&quot;: {
              &quot;@type&quot;: &quot;Organization&quot;,
              &quot;name&quot;: &quot;블로그 편집부&quot;
            },
            &quot;datePublished&quot;: &quot;2026-03-12&quot;,
            &quot;dateModified&quot;: &quot;2026-03-12&quot;,
            &quot;articleSection&quot;: [
              &quot;정책&quot;,
              &quot;보안&quot;,
              &quot;개인정보&quot;
            ],
            &quot;keywords&quot;: [
              &quot;ISMS&quot;,
              &quot;ISMS-P&quot;,
              &quot;개인정보보호&quot;,
              &quot;정보보호관리체계&quot;,
              &quot;현장심사&quot;,
              &quot;인증취소&quot;,
              &quot;사후관리&quot;,
              &quot;취약점점검&quot;
            ]
          }
        ]
      }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>IT 소식 뉴스/IT 소식</category>
      <category>ISMS</category>
      <category>ISMS-P</category>
      <category>KISA</category>
      <category>개인정보보호</category>
      <category>보안점검</category>
      <category>사후관리</category>
      <category>스냅샷평가</category>
      <category>인증취소</category>
      <category>정보보호관리체계</category>
      <category>현장심사</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/511</guid>
      <comments>https://togethergrow.tistory.com/entry/%EC%9C%A0%EC%B6%9C-%EC%82%AC%EA%B3%A0-%EC%8B%9C-ISMS-P-%EC%9D%B8%EC%A6%9D-%EC%B7%A8%EC%86%8C-%EA%B0%80%EB%8A%A5%EC%84%B1%E2%80%A6-%E2%80%98%EC%8A%A4%EB%83%85%EC%83%B7%E2%80%99-%EC%8B%AC%EC%82%AC-%EB%B0%A9%EC%8B%9D-%EC%86%90%EB%B3%B8%EB%8B%A4#entry511comment</comments>
      <pubDate>Fri, 13 Mar 2026 20:27:22 +0900</pubDate>
    </item>
    <item>
      <title>Nginx UI 취약점(CVE-2026-27944) 인증 없이 백업 탈취 이슈</title>
      <link>https://togethergrow.tistory.com/entry/Nginx-UI-%EC%B7%A8%EC%95%BD%EC%A0%90CVE-2026-27944-%EC%9D%B8%EC%A6%9D-%EC%97%86%EC%9D%B4-%EB%B0%B1%EC%97%85-%ED%83%88%EC%B7%A8-%EC%9D%B4%EC%8A%88</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7ADU8/dJMcagEJgVT/711UPuJ9FaYLD71KLHje30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7ADU8/dJMcagEJgVT/711UPuJ9FaYLD71KLHje30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7ADU8/dJMcagEJgVT/711UPuJ9FaYLD71KLHje30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7ADU8%2FdJMcagEJgVT%2F711UPuJ9FaYLD71KLHje30%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;!doctype html&amp;gt;&lt;/p&gt;
&lt;main&gt;
&lt;article class=&quot;post-content&quot;&gt;
&lt;div class=&quot;container&quot;&gt;&lt;header&gt;
&lt;h1&gt;Nginx UI 취약점(CVE-2026-27944) 인증 없이 백업 탈취 이슈 정리&lt;/h1&gt;
&lt;p class=&quot;lead&quot; data-ke-size=&quot;size16&quot;&gt;웹서버 관리 도구인 Nginx UI에서 &lt;b&gt;인증 없이 서버 전체 백업을 내려받을 수 있고&lt;/b&gt;, 백업을 푸는 데 필요한 정보까지 &lt;b&gt;응답 헤더로 함께 노출&lt;/b&gt;될 수 있는 치명적 취약점이 확인됐습니다.&lt;br /&gt;이 이슈는 &lt;b&gt;CVE-2026-27944&lt;/b&gt;로 분류됐으며, &lt;b&gt;CVSS 9.8&lt;/b&gt;로 &amp;ldquo;즉시 대응&amp;rdquo; 급에 해당합니다.&lt;/p&gt;
&lt;div class=&quot;kpi&quot; aria-label=&quot;핵심 요약&quot;&gt;&lt;span class=&quot;pill&quot;&gt;&lt;b&gt;분류&lt;/b&gt; CVE-2026-27944&lt;/span&gt; &lt;span class=&quot;pill&quot;&gt;&lt;b&gt;위험도&lt;/b&gt; CVSS 9.8 (Critical)&lt;/span&gt; &lt;span class=&quot;pill&quot;&gt;&lt;b&gt;공격 전제&lt;/b&gt; 인증 불필요&lt;/span&gt; &lt;span class=&quot;pill&quot;&gt;&lt;b&gt;핵심 기능&lt;/b&gt; 백업 API&lt;/span&gt; &lt;span class=&quot;pill&quot;&gt;&lt;b&gt;우선 조치&lt;/b&gt; 노출 차단 + 업데이트&lt;/span&gt;&lt;/div&gt;
&lt;/header&gt;
&lt;section&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;무슨 일이 문제였나&lt;/h2&gt;
&lt;div class=&quot;divider&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p class=&quot;note&quot; data-ke-size=&quot;size16&quot;&gt;문제의 핵심은 Nginx UI의 &lt;b&gt;백업 기능&lt;/b&gt;입니다. 원래 백업은 운영 정보를 안전하게 보관하기 위한 기능이지만, 취약한 구성에서는 &lt;b&gt;특정 백업 API 경로&lt;/b&gt;에 접근만 해도 로그인 없이 전체 백업 파일을 요청할 수 있었습니다.&lt;/p&gt;
&lt;div class=&quot;callout&quot;&gt;&lt;b&gt;더 위험했던 지점&lt;/b&gt;&lt;br /&gt;백업 파일이 암호화되어 전달되더라도, 이를 풀 수 있는 &lt;b&gt;암호화 키/초기화 정보가 응답 헤더로 함께 노출&lt;/b&gt;되는 구조라면&lt;br /&gt;공격자는 백업을 내려받은 뒤 &lt;b&gt;즉시 복호화&lt;/b&gt;해서 내용을 확인할 수 있습니다.&lt;br /&gt;쉽게 말해 &amp;ldquo;잠긴 금고 옆에 열쇠를 같이 두는&amp;rdquo; 형태입니다.&lt;/div&gt;
&lt;/section&gt;
&lt;section&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;영향 범위가 큰 이유&lt;/h2&gt;
&lt;div class=&quot;divider&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p class=&quot;note&quot; data-ke-size=&quot;size16&quot;&gt;백업에는 운영 핵심 정보가 한 번에 모일 수 있어, Nginx UI 취약점(CVE-2026-27944)의 파급력이 커집니다. 실무 기준으로 보면 &amp;ldquo;백업 유출&amp;rdquo;은 곧 &amp;ldquo;환경 전체 유출&amp;rdquo;로 이어질 수 있습니다.&lt;/p&gt;
&lt;table aria-label=&quot;백업에 포함될 수 있는 민감 정보&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;정보 유형&lt;/th&gt;
&lt;th&gt;포함 가능 항목&lt;/th&gt;
&lt;th&gt;유출 시 위험&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;계정/세션&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;관리자 계정 정보, 세션 토큰&lt;/td&gt;
&lt;td&gt;관리 화면 장악, 설정 변경&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;설정/구성&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;Nginx 설정, 가상호스트/업스트림 정보&lt;/td&gt;
&lt;td&gt;내부 구조 노출, 후속 공격 용이&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;암호/키&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;SSL 인증서/개인 키&lt;/td&gt;
&lt;td&gt;사칭/중간자 공격 위험 증가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;연동 정보&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;DB 연결 정보, 외부 연동 토큰&lt;/td&gt;
&lt;td&gt;2차 침투, 데이터 유출 확산&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/section&gt;
&lt;section&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;특히 위험한 환경&lt;/h2&gt;
&lt;div class=&quot;divider&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;관리 인터페이스가 인터넷에 직접 노출&lt;/b&gt;된 조직(검색/스캔에 쉽게 걸림)&lt;/li&gt;
&lt;li&gt;방화벽/ACL 없이 관리 포트가 열려 있거나, 기본 경로가 유지된 환경&lt;/li&gt;
&lt;li&gt;백업 기능을 운영 편의로 상시 활성화하고, 접근 통제가 약한 환경&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;callout&quot;&gt;&lt;b&gt;운영 환경에서는&lt;/b&gt;&lt;br /&gt;&amp;ldquo;관리 도구는 내부망/VPN 뒤&amp;rdquo;가 기본입니다.&lt;br /&gt;Nginx UI처럼 편의 기능이 많은 도구일수록, 한 번 취약점이 터지면 영향 범위가 커지기 때문에&lt;br /&gt;관리 인터페이스 노출 자체를 우선적으로 줄이는 편이 가장 효과적입니다.&lt;/div&gt;
&lt;/section&gt;
&lt;section&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;즉시 해야 할 대응 체크리스트&lt;/h2&gt;
&lt;div class=&quot;divider&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1) 노출 차단(패치보다 먼저)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Nginx UI 관리 인터페이스를 &lt;b&gt;외부 인터넷에서 차단&lt;/b&gt;(방화벽/보안그룹/ACL)&lt;/li&gt;
&lt;li&gt;필요 시 내부망 또는 VPN에서만 접근 허용&lt;/li&gt;
&lt;li&gt;관리 경로에 대해 IP 허용 목록 적용(가능한 경우)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2) 버전 확인 및 업데이트&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용 중인 Nginx UI 버전을 확인&lt;/li&gt;
&lt;li&gt;&lt;b&gt;2.3.3 이상&lt;/b&gt;으로 업데이트(패치 반영 버전)&lt;/li&gt;
&lt;li&gt;배포 전후로 버전/설정 변경 증적을 남겨 추적 가능하게 유지&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3) 백업 API 접근 흔적 점검&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹/프록시/WAF 로그에서 백업 API 경로에 대한 비정상 접근이 있었는지 확인&lt;/li&gt;
&lt;li&gt;반복 요청, 비정상 User-Agent, 짧은 시간대 집중 트래픽이 있는지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4) 유출 가정 하에 &amp;ldquo;회전(교체)&amp;rdquo;&lt;/h3&gt;
&lt;div class=&quot;callout&quot;&gt;&lt;b&gt;패치만으로 충분하지 않을 수 있음&lt;/b&gt;&lt;br /&gt;외부 노출 상태였거나 로그에서 수상한 접근이 있었다면, 백업이 이미 유출됐을 가능성을 고려해야 합니다.&lt;br /&gt;아래 항목은 &amp;ldquo;유출 가정&amp;rdquo; 시 우선 회전 대상입니다.&lt;br /&gt;관리자 비밀번호/토큰, DB 계정 비밀번호, API 토큰, SSL 인증서/개인 키&lt;/div&gt;
&lt;/section&gt;
&lt;section&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;재발 방지를 위한 운영 권장 사항&lt;/h2&gt;
&lt;div class=&quot;divider&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1) 관리 인터페이스 기본 원칙&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;관리 UI는 내부망/VPN 뒤로 배치(직접 노출 금지)&lt;/li&gt;
&lt;li&gt;접근 경로는 Bastion/Jump 서버 경유&lt;/li&gt;
&lt;li&gt;MFA 및 관리자 권한 분리(최소 권한)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2) 백업 보안 원칙&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;백업 파일은 최소 보관, 최소 권한 접근&lt;/li&gt;
&lt;li&gt;복호화 키/초기화 정보는 절대로 외부로 노출되지 않도록 분리 관리&lt;/li&gt;
&lt;li&gt;백업 다운로드/복원 행위는 별도 감사 로그로 남기기&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3) 패치 운영(SLA) 정립&lt;/h3&gt;
&lt;div class=&quot;callout&quot;&gt;&lt;b&gt;관리자 입장에서&lt;/b&gt;&lt;br /&gt;CVSS 9.x급은 &amp;ldquo;긴급&amp;rdquo;으로 분류해&lt;br /&gt;① 즉시 노출 차단(대안 통제) &amp;rarr; ② 최단 시간 내 업데이트 &amp;rarr; ③ 로그 점검 및 회전(교체)까지&lt;br /&gt;하나의 표준 절차로 고정해두는 편이 실제 대응 속도를 크게 올립니다.&lt;/div&gt;
&lt;/section&gt;
&lt;section&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;한 줄 정리&lt;/h2&gt;
&lt;div class=&quot;divider&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p class=&quot;note&quot; data-ke-size=&quot;size16&quot;&gt;Nginx UI 취약점(CVE-2026-27944, CVSS 9.8)은 &amp;ldquo;인증 없이 백업 탈취 + 복호화 정보 노출&amp;rdquo; 조합이라, 관리 인터페이스가 노출된 환경에서는 &lt;b&gt;노출 차단과 업데이트를 동시에&lt;/b&gt; 진행하고, 외부 노출 이력이 있다면 &lt;b&gt;키/계정/인증서 교체&lt;/b&gt;까지 포함해 대응하는 게 안전합니다.&lt;/p&gt;
&lt;/section&gt;
&lt;/div&gt;
&lt;/article&gt;
&lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;Security&quot;,
              &quot;item&quot;: &quot;https://example.com/category/security&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;Nginx UI 취약점(CVE-2026-27944) 인증 없이 백업 탈취 이슈 정리&quot;,
              &quot;item&quot;: &quot;https://example.com/nginx-ui-cve-2026-27944&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;BlogPosting&quot;,
          &quot;headline&quot;: &quot;Nginx UI 취약점(CVE-2026-27944) 인증 없이 백업 탈취 이슈 정리&quot;,
          &quot;description&quot;: &quot;Nginx UI에서 인증 없이 /api/backup 접근으로 서버 전체 백업을 내려받고, 복호화 정보까지 헤더로 노출될 수 있는 치명적 취약점(CVE-2026-27944, CVSS 9.8)을 핵심과 대응 체크리스트 중심으로 정리했습니다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;datePublished&quot;: &quot;2026-03-10&quot;,
          &quot;dateModified&quot;: &quot;2026-03-10&quot;,
          &quot;author&quot;: {
            &quot;@type&quot;: &quot;Person&quot;,
            &quot;name&quot;: &quot;관리자&quot;
          },
          &quot;publisher&quot;: {
            &quot;@type&quot;: &quot;Organization&quot;,
            &quot;name&quot;: &quot;Tistory Blog&quot;
          },
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/nginx-ui-cve-2026-27944&quot;
          }
        }
      ]
    }
    &lt;/script&gt;
&lt;/main&gt;
&lt;p&gt;&lt;a href=&quot;https://one-day-growth.com/entry/CVE-2026-27944&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2026.03.10 - [IT 소식 뉴스/CVE CODE] - CVE-2026-27944&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1773149938206&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;CVE-2026-27944&quot; data-og-description=&quot;CVE-2026-27944 대응 절차 CVE-2026-27944로 분류됐고, 보안 위험도를 나타내는 CVSS 점수는 9.8입니다. 이 급의 이슈는 &amp;ldquo;나중에 패치&amp;rdquo;가 아니라, 즉시 영향 범위를 확인하고 임시 완화 후 패치/검증까지 &quot; data-og-host=&quot;one-day-growth.com&quot; data-og-source-url=&quot;https://one-day-growth.com/entry/CVE-2026-27944&quot; data-og-url=&quot;https://one-day-growth.com/entry/CVE-2026-27944&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/yC32i/dJMb8Z3pw0c/Fzgl2utUFIPN8NH6igxXb1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://one-day-growth.com/entry/CVE-2026-27944&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://one-day-growth.com/entry/CVE-2026-27944&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/yC32i/dJMb8Z3pw0c/Fzgl2utUFIPN8NH6igxXb1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;CVE-2026-27944&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;CVE-2026-27944 대응 절차 CVE-2026-27944로 분류됐고, 보안 위험도를 나타내는 CVSS 점수는 9.8입니다. 이 급의 이슈는 &amp;ldquo;나중에 패치&amp;rdquo;가 아니라, 즉시 영향 범위를 확인하고 임시 완화 후 패치/검증까지&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;one-day-growth.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT 소식 뉴스/IT 소식</category>
      <category>api/backup</category>
      <category>CVE-2026-27944</category>
      <category>CVSS 9.8</category>
      <category>Nginx UI</category>
      <category>SSL키유출</category>
      <category>관리인터페이스</category>
      <category>백업탈취</category>
      <category>보안패치</category>
      <category>접근제어</category>
      <category>취약점대응</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/510</guid>
      <comments>https://togethergrow.tistory.com/entry/Nginx-UI-%EC%B7%A8%EC%95%BD%EC%A0%90CVE-2026-27944-%EC%9D%B8%EC%A6%9D-%EC%97%86%EC%9D%B4-%EB%B0%B1%EC%97%85-%ED%83%88%EC%B7%A8-%EC%9D%B4%EC%8A%88#entry510comment</comments>
      <pubDate>Tue, 10 Mar 2026 22:50:02 +0900</pubDate>
    </item>
    <item>
      <title>CVE-2026-27944</title>
      <link>https://togethergrow.tistory.com/entry/CVE-2026-27944</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;CVE-2026-27944 대응 절차&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;CVE-2026-27944(CVSS 9.8)로 분류된 치명적 취약점에 대해, 영향 범위 확인부터 임시 완화·패치 적용·재발 방지까지 운영 기준의 대응 절차를 정리했습니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;CVE-2026-27944,CVSS 9.8,취약점대응,보안패치,긴급조치,영향도분석,침해징후,자산점검,로그분석,재발방지&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;CVE-2026-27944 대응 절차&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;치명도(CVSS 9.8) 취약점에 대해 자산 식별→영향 확인→임시 완화→패치→검증→재발 방지까지 한 번에 정리했습니다.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;CVE-2026-27944 대응 절차&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;CVE-2026-27944(CVSS 9.8) 긴급 대응: 점검부터 완화·패치·검증·재발 방지까지.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .post-content{
      line-height:1.7;
      word-break:keep-all;
    }
    .post-content .container{
      max-width:860px;
      margin:0 auto;
      padding:0 16px;
    }
    .post-content h1{
      font-size:1.8rem;
      letter-spacing:-0.02em;
      margin:0 0 14px;
    }
    .post-content .lead{
      margin:0 0 18px;
      opacity:0.95;
    }
    .post-content section{ margin:26px 0; }
    .post-content h2{
      font-size:1.25rem;
      margin:0 0 10px;
      letter-spacing:-0.01em;
    }
    .post-content h3{
      font-size:1.05rem;
      margin:18px 0 8px;
    }
    .post-content ul{
      margin:10px 0 0 18px;
      padding:0;
    }
    .post-content li{ margin:6px 0; }
    .post-content .callout{
      border:1px solid rgba(0,0,0,0.12);
      border-radius:12px;
      padding:14px 14px;
      margin:12px 0 0;
      background:rgba(0,0,0,0.02);
    }
    .post-content .callout b{
      display:inline-block;
      margin-bottom:6px;
    }
    .post-content pre{
      margin:12px 0 0;
      padding:14px;
      border-radius:12px;
      overflow:auto;
      border:1px solid rgba(0,0,0,0.12);
      background:rgba(0,0,0,0.03);
    }
    .post-content code{
      font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace;
      font-size:0.92em;
    }
    .post-content .note{
      margin-top:10px;
      opacity:0.95;
    }
    .post-content .divider{
      height:1px;
      background:rgba(0,0,0,0.12);
      margin:18px 0 0;
    }
    .post-content table{
      width:100%;
      border-collapse:collapse;
      margin-top:12px;
      border:1px solid rgba(0,0,0,0.12);
      border-radius:12px;
      overflow:hidden;
    }
    .post-content th, .post-content td{
      border-bottom:1px solid rgba(0,0,0,0.12);
      padding:10px;
      vertical-align:top;
      text-align:left;
    }
    .post-content tr:last-child td{ border-bottom:none; }
    .post-content .kpi{
      display:flex;
      flex-wrap:wrap;
      gap:10px;
      margin-top:10px;
    }
    .post-content .kpi .pill{
      border:1px solid rgba(0,0,0,0.12);
      border-radius:999px;
      padding:6px 10px;
      background:rgba(0,0,0,0.02);
      font-size:0.95rem;
    }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main&gt;
    &lt;article class=&quot;post-content&quot;&gt;
      &lt;div class=&quot;container&quot;&gt;
        &lt;header&gt;
          &lt;h1&gt;CVE-2026-27944 대응 절차&lt;/h1&gt;
          &lt;p class=&quot;lead&quot;&gt;
            CVE-2026-27944로 분류됐고, 보안 위험도를 나타내는 CVSS 점수는 &lt;b&gt;9.8&lt;/b&gt;입니다.&lt;br&gt;
            이 급의 이슈는 “나중에 패치”가 아니라, &lt;b&gt;즉시 영향 범위를 확인하고 임시 완화 후 패치/검증&lt;/b&gt;까지 한 번에 가져가는 게 운영적으로 안전합니다.
          &lt;/p&gt;

          &lt;div class=&quot;kpi&quot; aria-label=&quot;핵심 요약&quot;&gt;
            &lt;span class=&quot;pill&quot;&gt;&lt;b&gt;분류&lt;/b&gt; CVE-2026-27944&lt;/span&gt;
            &lt;span class=&quot;pill&quot;&gt;&lt;b&gt;위험도&lt;/b&gt; CVSS 9.8&lt;/span&gt;
            &lt;span class=&quot;pill&quot;&gt;&lt;b&gt;우선순위&lt;/b&gt; 긴급&lt;/span&gt;
            &lt;span class=&quot;pill&quot;&gt;&lt;b&gt;목표&lt;/b&gt; 노출 차단 → 패치&lt;/span&gt;
          &lt;/div&gt;
        &lt;/header&gt;

        &lt;section&gt;
          &lt;h2&gt;개요&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;p class=&quot;note&quot;&gt;
            이 문서는 특정 벤더/제품에 종속되지 않는 &lt;b&gt;일반오류형(확장형 매뉴얼)&lt;/b&gt; 흐름으로 작성했습니다.&lt;br&gt;
            실무 기준으로 보면, CVSS 9.8은 “인터넷 노출 + 인증 우회/원격 코드 실행/권한상승” 같은 조합일 가능성이 높아
            &lt;b&gt;패치 전이라도 먼저 노출면을 줄이는 조치&lt;/b&gt;가 필요합니다.
          &lt;/p&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;중요&lt;/b&gt;&lt;br&gt;
            취약점 상세(영향 제품/버전/공격 벡터)가 확정되지 않은 상태에서는&lt;br&gt;
            “자산 식별 → 노출 확인 → 임시 완화 → 패치 검증” 순서로 통제 가능한 범위를 먼저 잠그는 게 안전합니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;환경&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;ul&gt;
            &lt;li&gt;대상: 서버/미들웨어/웹서비스/에이전트 등 “외부 입력을 처리하는 구성요소” 전반&lt;/li&gt;
            &lt;li&gt;필수 준비물: 자산 목록(서버/컨테이너/버전), 배포 이력, 방화벽/로드밸런서/WAF 정책, 중앙 로그(가능하면)&lt;/li&gt;
            &lt;li&gt;점검 범위: 인터넷 노출 구간, 내부망 서비스, 관리자 콘솔/관리 포트, API 엔드포인트&lt;/li&gt;
          &lt;/ul&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;운영 환경에서는&lt;/b&gt;&lt;br&gt;
            “패치 적용”보다 먼저 &lt;b&gt;노출면 감소(차단/접근제어)&lt;/b&gt;가 빠르게 효과를 내는 경우가 많습니다.&lt;br&gt;
            특히 중앙 인증/게이트웨이 뒤에 숨겨야 하는 관리 포트가 그대로 열려 있으면 우선순위가 최상입니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;증상&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;ul&gt;
            &lt;li&gt;보안 공지에서 CVE-2026-27944 및 CVSS 9.8로 분류되어 긴급 대응이 필요함&lt;/li&gt;
            &lt;li&gt;취약점의 영향 제품이 자사 환경에 포함되는지 불명확하거나, 자산/버전 관리가 부족함&lt;/li&gt;
            &lt;li&gt;침해 여부(스캔/익스플로잇 시도)를 빠르게 확인해야 함&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;1차 점검&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;h3&gt;1) “영향 가능 자산”부터 좁히기&lt;/h3&gt;
          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;우선순위 기준&lt;/b&gt;&lt;br&gt;
            1) 인터넷에 직접 노출된 서비스&lt;br&gt;
            2) 인증 전 접근 가능한 엔드포인트/관리 콘솔&lt;br&gt;
            3) 단일 서버가 아니라 다수 노드에 공통 배포된 구성요소(공급망 성격)
          &lt;/div&gt;

          &lt;h3&gt;2) 노출면(포트/URL) 확인&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;# 예시: 리눅스에서 서비스 리스닝 확인
ss -lntp

# 예시: 컨테이너 환경이면 노출 포트 확인
docker ps --format &quot;table {{.Names}}\t{{.Image}}\t{{.Ports}}&quot;&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;3) 버전/패키지 확인(제품별 명령으로 치환)&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;# 예시: 패키지 매니저 기반(해당 OS에 맞게 사용)
rpm -qa | sort
dpkg -l | sort&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;4) 즉시 로그에서 “스캔/공격 징후” 찾기&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;# 예시: 최근 24시간 내 4xx/5xx 급증, 비정상 User-Agent, 반복 요청 탐색
# (웹서버 로그 경로/포맷에 맞게 수정)
grep -E &quot; 40[0-9] | 50[0-9] &quot; /var/log/nginx/access.log | tail -n 200

# 예시: 인증 실패/권한 오류 빈발
grep -E &quot;unauthorized|forbidden|authentication|invalid&quot; /var/log/* 2&amp;gt;/dev/null | tail -n 200&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;팁&lt;/b&gt;&lt;br&gt;
            “취약점이 특정 경로/파라미터/헤더를 이용”하는 유형이라면, 해당 패턴(경로/키워드)을 로그에서 집중 검색하는 게 빠릅니다.&lt;br&gt;
            중앙 로깅이 있다면, 동일 패턴이 여러 서버에 동시에 나타나는지 교차 확인하세요.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;심화 분석&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;h3&gt;1) 공격 가능 경로를 분류해서 대응 범위를 줄이기&lt;/h3&gt;
          &lt;table aria-label=&quot;공격면 분류&quot;&gt;
            &lt;thead&gt;
              &lt;tr&gt;
                &lt;th&gt;구간&lt;/th&gt;
                &lt;th&gt;점검 포인트&lt;/th&gt;
                &lt;th&gt;즉시 통제&lt;/th&gt;
              &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
              &lt;tr&gt;
                &lt;td&gt;인터넷 노출&lt;/td&gt;
                &lt;td&gt;공개 포트/URL, 관리자 페이지, 업로드/템플릿/플러그인&lt;/td&gt;
                &lt;td&gt;방화벽/WAF 차단, 관리 포트 차단, 지역/대역 제한&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;내부망&lt;/td&gt;
                &lt;td&gt;동서 트래픽, 내부 사용자/시스템 간 호출&lt;/td&gt;
                &lt;td&gt;SG/ACL 분리, 서비스 계정 권한 최소화&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;관리 영역&lt;/td&gt;
                &lt;td&gt;관리 콘솔, SSH/RDP, 에이전트 업데이트&lt;/td&gt;
                &lt;td&gt;MFA/접근통제 강화, 관리자 IP 고정, bastion 경유&lt;/td&gt;
              &lt;/tr&gt;
            &lt;/tbody&gt;
          &lt;/table&gt;

          &lt;h3&gt;2) 침해 의심 시 최소 확인 항목&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;최근 생성/수정된 실행 파일, 스케줄러(cron) 등록, 의심 프로세스&lt;/li&gt;
            &lt;li&gt;웹루트/업로드 디렉터리에 생성된 스크립트/바이너리&lt;/li&gt;
            &lt;li&gt;비정상 외부 통신(새로운 목적지, 비정상 포트)&lt;/li&gt;
          &lt;/ul&gt;

          &lt;pre&gt;&lt;code&gt;# 예시: 최근 수정 파일(범위를 좁혀서 실행)
find /var/www -type f -mtime -2 -ls 2&amp;gt;/dev/null | tail -n 200

# 예시: 의심 프로세스/네트워크(기본 확인)
ps aux --sort=-%mem | head -n 15
ss -antp | head -n 50&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;중요&lt;/b&gt;&lt;br&gt;
            이미 침해가 의심되면 “패치”보다 먼저 &lt;b&gt;증거 보존(로그/파일/메모리/네트워크)&lt;/b&gt;과 &lt;b&gt;격리&lt;/b&gt;가 우선일 수 있습니다.&lt;br&gt;
            운영 영향도가 크면, 최소한 로그 원본과 주요 디렉터리 스냅샷은 확보해두는 편이 안전합니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;복구&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;h3&gt;1) 임시 완화(패치 전 즉시 적용 가능한 통제)&lt;/h3&gt;
          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;우선 적용 후보&lt;/b&gt;&lt;br&gt;
            1) 취약 가능 엔드포인트/관리 경로 접근 차단(방화벽/WAF/리버스프록시)&lt;br&gt;
            2) 외부 노출 최소화(필요 포트만 허용, 나머지 DROP)&lt;br&gt;
            3) 관리자 콘솔은 내부망/특정 IP만 허용, MFA 적용&lt;br&gt;
            4) 업로드/플러그인 등 동적 기능은 임시 비활성(가능한 경우)
          &lt;/div&gt;

          &lt;h3&gt;2) 패치 적용(벤더 권고 절차에 맞춰 진행)&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;영향 제품/버전 매칭 → 패치/업데이트 경로 확인 → 스테이징 검증 → 운영 배포&lt;/li&gt;
            &lt;li&gt;롤백 플랜(패키지 다운그레이드/이미지 롤백/스냅샷)을 사전에 확보&lt;/li&gt;
          &lt;/ul&gt;

          &lt;pre&gt;&lt;code&gt;# 예시: 패치 전후 버전 기록(증적용)
date
uname -a
# 제품별 버전 확인 명령을 여기에 추가(운영 표준에 맞게 기록)&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;3) 패치 후 검증&lt;/h3&gt;
          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;검증 체크&lt;/b&gt;&lt;br&gt;
            기능 테스트: 주요 API/화면, 인증/권한 흐름&lt;br&gt;
            보안 테스트: 차단 정책 정상 동작, 로그에 에러 급증 여부&lt;br&gt;
            성능/안정성: 재기동 후 메모리/CPU/에러율 추이
          &lt;/div&gt;

          &lt;h3&gt;4) 침해가 확인된 경우(최소 조치 흐름)&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;격리: 의심 서버/컨테이너 네트워크 분리&lt;/li&gt;
            &lt;li&gt;차단: 공격 소스 대역/패턴 차단, 계정/토큰 교체&lt;/li&gt;
            &lt;li&gt;복구: 신뢰 가능한 이미지/패키지로 재배포(클린 재설치 우선)&lt;/li&gt;
            &lt;li&gt;사후: 비밀번호/키/토큰 회전, 권한 최소화 재점검&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;재발 방지&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;h3&gt;1) 자산/버전 관리 체계화&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;서버/컨테이너/패키지 버전을 중앙에서 조회 가능하게 유지&lt;/li&gt;
            &lt;li&gt;“인터넷 노출 자산”은 별도 태그로 관리하고 변경 시 자동 알림&lt;/li&gt;
          &lt;/ul&gt;

          &lt;h3&gt;2) 패치 SLA(긴급/중요/일반) 정의&lt;/h3&gt;
          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;운영 환경에서는&lt;/b&gt;&lt;br&gt;
            CVSS 9.x 급은 “긴급”으로 분류하고, 임시 완화는 즉시, 패치는 최단 시간 내 완료하는 SLA가 필요합니다.&lt;br&gt;
            단, 서비스 특성상 즉시 패치가 어려우면 “차단/접근제어/기능 비활성” 같은 대안 통제를 표준으로 마련하세요.
          &lt;/div&gt;

          &lt;h3&gt;3) 보안 모니터링 강화&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;WAF/리버스프록시 로그에서 특정 패턴 다발 요청 감지&lt;/li&gt;
            &lt;li&gt;인증 실패 폭증, 5xx 급증, 관리자 경로 접근 시도 알람&lt;/li&gt;
            &lt;li&gt;새로운 외부 목적지 통신/의심 프로세스 발생 알람&lt;/li&gt;
          &lt;/ul&gt;

          &lt;h3&gt;4) 권한 최소화&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;서비스 계정 권한 최소화(파일/네트워크/DB 권한)&lt;/li&gt;
            &lt;li&gt;관리 포트는 내부망/특정 IP만 허용, bastion 경유&lt;/li&gt;
            &lt;li&gt;비밀정보(키/토큰)는 파일 하드코딩 금지, 중앙 비밀관리로 통합&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;
      &lt;/div&gt;
    &lt;/article&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;Security&quot;,
              &quot;item&quot;: &quot;https://example.com/category/security&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;CVE-2026-27944 대응 절차&quot;,
              &quot;item&quot;: &quot;https://example.com/cve-2026-27944-response&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;TechArticle&quot;,
          &quot;headline&quot;: &quot;CVE-2026-27944 대응 절차&quot;,
          &quot;description&quot;: &quot;CVE-2026-27944(CVSS 9.8)로 분류된 치명적 취약점에 대해, 영향 범위 확인부터 임시 완화·패치 적용·재발 방지까지 운영 기준의 대응 절차를 정리했습니다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;datePublished&quot;: &quot;2026-03-10&quot;,
          &quot;dateModified&quot;: &quot;2026-03-10&quot;,
          &quot;author&quot;: {
            &quot;@type&quot;: &quot;Person&quot;,
            &quot;name&quot;: &quot;관리자&quot;
          },
          &quot;publisher&quot;: {
            &quot;@type&quot;: &quot;Organization&quot;,
            &quot;name&quot;: &quot;Tistory Blog&quot;
          },
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/cve-2026-27944-response&quot;
          }
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>IT 소식 뉴스/CVE CODE</category>
      <category>CVE-2026-27944</category>
      <category>CVSS 9.8</category>
      <category>긴급조치</category>
      <category>로그분석</category>
      <category>보안패치</category>
      <category>영향도분석</category>
      <category>자산점검</category>
      <category>재발방지</category>
      <category>취약점대응</category>
      <category>침해징후</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/509</guid>
      <comments>https://togethergrow.tistory.com/entry/CVE-2026-27944#entry509comment</comments>
      <pubDate>Tue, 10 Mar 2026 22:36:24 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 SWAP 확인부터 스왑 메모리 증설</title>
      <link>https://togethergrow.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-SWAP-%ED%99%95%EC%9D%B8%EB%B6%80%ED%84%B0-%EC%8A%A4%EC%99%91-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%A6%9D%EC%84%A4</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;리눅스 SWAP 확인부터 스왑 메모리 증설까지&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;리눅스에서 현재 SWAP 사용량을 확인하고, 스왑 파일/스왑 파티션으로 안전하게 증설한 뒤 영구 적용까지 마무리하는 운영 절차를 정리했습니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;리눅스,스왑,SWAP,스왑메모리,swapfile,swapon,swapoff,free,vmstat,fstab&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;리눅스 SWAP 확인부터 스왑 메모리 증설까지&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;SWAP 확인 → 원인 점검 → 스왑 파일/파티션 증설 → 영구 적용까지 운영 흐름을 한 번에 정리했습니다.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;리눅스 SWAP 확인부터 스왑 메모리 증설까지&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;리눅스에서 SWAP 상태 확인부터 스왑 증설과 영구 적용까지의 실무 절차를 정리했습니다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .post-content{
      line-height:1.7;
      word-break:keep-all;
    }
    .post-content .container{
      max-width:860px;
      margin:0 auto;
      padding:0 16px;
    }
    .post-content h1{
      font-size:1.8rem;
      letter-spacing:-0.02em;
      margin:0 0 14px;
    }
    .post-content .lead{
      margin:0 0 18px;
      opacity:0.95;
    }
    .post-content section{ margin:26px 0; }
    .post-content h2{
      font-size:1.25rem;
      margin:0 0 10px;
      letter-spacing:-0.01em;
    }
    .post-content h3{
      font-size:1.05rem;
      margin:18px 0 8px;
    }
    .post-content ul{
      margin:10px 0 0 18px;
      padding:0;
    }
    .post-content li{ margin:6px 0; }
    .post-content .callout{
      border:1px solid rgba(0,0,0,0.12);
      border-radius:12px;
      padding:14px 14px;
      margin:12px 0 0;
      background:rgba(0,0,0,0.02);
    }
    .post-content .callout b{
      display:inline-block;
      margin-bottom:6px;
    }
    .post-content pre{
      margin:12px 0 0;
      padding:14px;
      border-radius:12px;
      overflow:auto;
      border:1px solid rgba(0,0,0,0.12);
      background:rgba(0,0,0,0.03);
    }
    .post-content code{
      font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace;
      font-size:0.92em;
    }
    .post-content .note{
      margin-top:10px;
      opacity:0.95;
    }
    .post-content .divider{
      height:1px;
      background:rgba(0,0,0,0.12);
      margin:18px 0 0;
    }
    .post-content table{
      width:100%;
      border-collapse:collapse;
      margin-top:12px;
      border:1px solid rgba(0,0,0,0.12);
      border-radius:12px;
      overflow:hidden;
    }
    .post-content th, .post-content td{
      border-bottom:1px solid rgba(0,0,0,0.12);
      padding:10px;
      vertical-align:top;
      text-align:left;
    }
    .post-content tr:last-child td{ border-bottom:none; }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main&gt;
    &lt;article class=&quot;post-content&quot;&gt;
      &lt;div class=&quot;container&quot;&gt;
        &lt;header&gt;
          &lt;h1&gt;리눅스 SWAP 확인부터 스왑 메모리 증설까지&lt;/h1&gt;
          &lt;p class=&quot;lead&quot;&gt;
            서버에서 메모리가 부족해지면 커널이 디스크 기반의 SWAP을 사용하면서 응답이 급격히 느려질 수 있습니다.&lt;br&gt;
            이 문서는 &lt;b&gt;현재 SWAP 상태 확인&lt;/b&gt;부터 &lt;b&gt;원인 점검&lt;/b&gt;, 그리고 &lt;b&gt;스왑 파일/스왑 파티션 증설&lt;/b&gt; 및 &lt;b&gt;영구 적용&lt;/b&gt;까지 한 흐름으로 정리합니다.
          &lt;/p&gt;
        &lt;/header&gt;

        &lt;section&gt;
          &lt;h2&gt;개요&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;p class=&quot;note&quot;&gt;
            SWAP을 늘리는 건 “메모리 부족 상황에서 서버가 죽는 것”을 막는 완충 장치입니다.&lt;br&gt;
            다만 SWAP이 많다고 성능이 좋아지는 건 아니고, SWAP 사용이 잦다면 &lt;b&gt;메모리 누수/캐시 정책/프로세스 튜닝&lt;/b&gt;이 우선입니다.&lt;br&gt;
            &lt;b&gt;실제 사용 시&lt;/b&gt;에는 “증설”과 함께 “왜 스왑을 쓰는지”를 같이 잡아야 재발을 줄일 수 있습니다.
          &lt;/p&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;운영 환경에서는&lt;/b&gt;&lt;br&gt;
            스왑 작업은 I/O 부하와 리스크가 있으니, 변경 윈도우(점검 시간) 확보 후 진행하는 게 안전합니다.&lt;br&gt;
            특히 swapoff는 메모리 여유가 없으면 실패하거나 서버가 더 불안정해질 수 있습니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;환경&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;ul&gt;
            &lt;li&gt;대상 OS: Linux (RHEL/CentOS/Rocky/Alma/Ubuntu/Debian 계열 공통)&lt;/li&gt;
            &lt;li&gt;필요 권한: root 또는 sudo&lt;/li&gt;
            &lt;li&gt;필수 명령: &lt;code&gt;free&lt;/code&gt;, &lt;code&gt;swapon&lt;/code&gt;, &lt;code&gt;vmstat&lt;/code&gt;, &lt;code&gt;top&lt;/code&gt;/&lt;code&gt;ps&lt;/code&gt;, &lt;code&gt;df&lt;/code&gt;, &lt;code&gt;fallocate&lt;/code&gt;/&lt;code&gt;dd&lt;/code&gt;, &lt;code&gt;mkswap&lt;/code&gt;&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;증상&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;ul&gt;
            &lt;li&gt;서버가 갑자기 느려지고 load가 오르며 디스크 I/O가 증가함&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;free&lt;/code&gt;에서 Swap 사용량이 꾸준히 증가하거나 이미 많이 사용 중&lt;/li&gt;
            &lt;li&gt;OOM(Out Of Memory) 발생 또는 서비스 프로세스가 비정상 종료&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;1차 점검&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;h3&gt;1) SWAP 사용량 빠르게 확인&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;free -h&lt;/code&gt;&lt;/pre&gt;
          &lt;p class=&quot;note&quot;&gt;
            Swap의 &lt;code&gt;used&lt;/code&gt;가 크고 지속적으로 늘면, 메모리 압박이 실제로 발생 중일 가능성이 높습니다.
          &lt;/p&gt;

          &lt;h3&gt;2) SWAP 장치/파일 목록 확인&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;swapon --show&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;3) SWAP 인/아웃(활동) 확인&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;vmstat 1 5&lt;/code&gt;&lt;/pre&gt;
          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;해석 포인트&lt;/b&gt;&lt;br&gt;
            &lt;code&gt;si&lt;/code&gt;(swap in), &lt;code&gt;so&lt;/code&gt;(swap out)가 계속 0이 아니면 스왑이 “활발히” 사용 중입니다.&lt;br&gt;
            이 상태에서 체감 성능 저하가 같이 나오면, 스왑 증설만으로 해결되지 않을 수 있습니다.
          &lt;/div&gt;

          &lt;h3&gt;4) 메모리 많이 쓰는 프로세스 확인&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;top&lt;/code&gt;&lt;/pre&gt;
          &lt;p class=&quot;note&quot;&gt;또는 RSS 기준으로 상위 프로세스를 뽑으면 빠릅니다.&lt;/p&gt;
          &lt;pre&gt;&lt;code&gt;ps aux --sort=-rss | head -n 15&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;5) 디스크 여유 확인(스왑 파일 방식이면 필수)&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;df -h&lt;/code&gt;&lt;/pre&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;심화 분석&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;h3&gt;1) 스왑이 많은데 실제 메모리가 여유처럼 보일 때&lt;/h3&gt;
          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;가능한 원인&lt;/b&gt;&lt;br&gt;
            파일 캐시(페이지캐시)와 애플리케이션 메모리 사용이 섞여 보이는 케이스가 많습니다.&lt;br&gt;
            커널은 캐시를 “회수 가능”으로 보지만, 급격한 메모리 압박이 발생하면 스왑으로 밀어낼 수 있습니다.&lt;br&gt;
            따라서 단순 free 값만 보지 말고, &lt;code&gt;vmstat&lt;/code&gt;와 프로세스 RSS 추이를 같이 보세요.
          &lt;/div&gt;

          &lt;h3&gt;2) 스왑 사용이 늘어나는 패턴 점검&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;배치/스케줄러 시간대에만 증가하는지&lt;/li&gt;
            &lt;li&gt;특정 서비스 재기동 이후부터 꾸준히 증가하는지(메모리 누수 의심)&lt;/li&gt;
            &lt;li&gt;컨테이너/자바 프로세스 힙 설정이 과한지&lt;/li&gt;
          &lt;/ul&gt;

          &lt;h3&gt;3) 커널 스왑 성향(swappiness) 확인&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;cat /proc/sys/vm/swappiness&lt;/code&gt;&lt;/pre&gt;
          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;참고&lt;/b&gt;&lt;br&gt;
            값이 높을수록 스왑을 더 적극적으로 사용합니다.&lt;br&gt;
            “무작정 0으로”는 권장하지 않고, 운영 환경에서는 10~30 같은 보수적 값으로 조정하는 경우가 많습니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;복구&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;p class=&quot;note&quot;&gt;
            스왑 증설은 크게 &lt;b&gt;스왑 파일(swapfile)&lt;/b&gt; 방식과 &lt;b&gt;스왑 파티션&lt;/b&gt; 방식이 있습니다.&lt;br&gt;
            빠르고 운영에 부담이 적은 건 대체로 스왑 파일 방식입니다.
          &lt;/p&gt;

          &lt;table aria-label=&quot;증설 방식 선택&quot;&gt;
            &lt;thead&gt;
              &lt;tr&gt;
                &lt;th&gt;방식&lt;/th&gt;
                &lt;th&gt;장점&lt;/th&gt;
                &lt;th&gt;주의&lt;/th&gt;
              &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
              &lt;tr&gt;
                &lt;td&gt;&lt;b&gt;스왑 파일&lt;/b&gt;&lt;/td&gt;
                &lt;td&gt;생성/증설이 빠름, 재파티셔닝 불필요&lt;/td&gt;
                &lt;td&gt;디스크 여유 필요, 파일 권한/마운트 정책 확인&lt;/td&gt;
              &lt;/tr&gt;
              &lt;tr&gt;
                &lt;td&gt;&lt;b&gt;스왑 파티션&lt;/b&gt;&lt;/td&gt;
                &lt;td&gt;전통적 방식, 일관된 성능/관리&lt;/td&gt;
                &lt;td&gt;파티션 작업 리스크, 다운타임/재부팅 필요할 수 있음&lt;/td&gt;
              &lt;/tr&gt;
            &lt;/tbody&gt;
          &lt;/table&gt;

          &lt;h3&gt;A) 스왑 파일로 증설(권장 흐름)&lt;/h3&gt;
          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;예시: 8GB 스왑 파일 추가&lt;/b&gt;&lt;br&gt;
            경로는 관례적으로 &lt;code&gt;/swapfile&lt;/code&gt; 또는 &lt;code&gt;/swapfile2&lt;/code&gt; 등을 사용합니다.
          &lt;/div&gt;

          &lt;h4&gt;1) 스왑 파일 생성&lt;/h4&gt;
          &lt;pre&gt;&lt;code&gt;# fallocate 가능할 때(빠름)
sudo fallocate -l 8G /swapfile

# fallocate가 어렵거나 파일시스템 정책상 문제 시(dd)
# sudo dd if=/dev/zero of=/swapfile bs=1M count=8192 status=progress&lt;/code&gt;&lt;/pre&gt;

          &lt;h4&gt;2) 권한 설정(필수)&lt;/h4&gt;
          &lt;pre&gt;&lt;code&gt;sudo chmod 600 /swapfile&lt;/code&gt;&lt;/pre&gt;

          &lt;h4&gt;3) 스왑 영역 생성&lt;/h4&gt;
          &lt;pre&gt;&lt;code&gt;sudo mkswap /swapfile&lt;/code&gt;&lt;/pre&gt;

          &lt;h4&gt;4) 스왑 활성화&lt;/h4&gt;
          &lt;pre&gt;&lt;code&gt;sudo swapon /swapfile&lt;/code&gt;&lt;/pre&gt;

          &lt;h4&gt;5) 적용 확인&lt;/h4&gt;
          &lt;pre&gt;&lt;code&gt;swapon --show
free -h&lt;/code&gt;&lt;/pre&gt;

          &lt;h4&gt;6) 재부팅 후에도 유지(영구 적용)&lt;/h4&gt;
          &lt;pre&gt;&lt;code&gt;# /etc/fstab에 한 줄 추가
# (편집 전 백업 권장)
sudo cp -a /etc/fstab /etc/fstab.bak&lt;/code&gt;&lt;/pre&gt;
          &lt;pre&gt;&lt;code&gt;# 편집기로 열어서 아래 라인 추가
/swapfile none swap sw 0 0&lt;/code&gt;&lt;/pre&gt;
          &lt;pre&gt;&lt;code&gt;# fstab 문법 점검 겸 마운트 시뮬레이션(시스템에 따라 지원)
sudo mount -a&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;운영 팁&lt;/b&gt;&lt;br&gt;
            fstab 오타는 부팅 장애로 이어질 수 있으니, 백업 후 적용하는 게 안전합니다.&lt;br&gt;
            스왑 파일 경로를 바꿨다면, fstab도 반드시 일치해야 합니다.
          &lt;/div&gt;

          &lt;h3&gt;B) 기존 스왑 파일을 “늘리는” 대신 새 파일 추가를 권장하는 이유&lt;/h3&gt;
          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;실무 권장&lt;/b&gt;&lt;br&gt;
            기존 파일을 resize하는 것보다, &lt;b&gt;새 swapfile을 추가&lt;/b&gt;하는 방식이 변경 리스크가 낮습니다.&lt;br&gt;
            필요 시 swapoff/swapfile 제거도 더 단순해집니다.
          &lt;/div&gt;

          &lt;h3&gt;C) 스왑 파티션 증설(가능할 때만)&lt;/h3&gt;
          &lt;p class=&quot;note&quot;&gt;
            파티션 증설은 서버 구성에 따라 절차가 크게 달라집니다(LVM 여부/남은 디스크/볼륨 구조).&lt;br&gt;
            아래는 “이미 스왑 파티션이 있고 교체/추가”하는 형태의 기본 흐름만 정리합니다.
          &lt;/p&gt;

          &lt;h4&gt;1) 현재 스왑 파티션 확인&lt;/h4&gt;
          &lt;pre&gt;&lt;code&gt;lsblk
swapon --show&lt;/code&gt;&lt;/pre&gt;

          &lt;h4&gt;2) (가능한 경우) 새 스왑 파티션/볼륨 생성 후 활성화&lt;/h4&gt;
          &lt;pre&gt;&lt;code&gt;# 새 파티션(예: /dev/sdb2)이 준비되었다는 가정
sudo mkswap /dev/sdb2
sudo swapon /dev/sdb2&lt;/code&gt;&lt;/pre&gt;

          &lt;h4&gt;3) 영구 적용(/etc/fstab)&lt;/h4&gt;
          &lt;pre&gt;&lt;code&gt;sudo cp -a /etc/fstab /etc/fstab.bak&lt;/code&gt;&lt;/pre&gt;
          &lt;pre&gt;&lt;code&gt;# UUID 기반 권장
sudo blkid /dev/sdb2&lt;/code&gt;&lt;/pre&gt;
          &lt;pre&gt;&lt;code&gt;# /etc/fstab 예시(blkid로 확인한 UUID 사용)
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx none swap sw 0 0&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;D) “스왑을 비우고 싶을 때” 주의&lt;/h3&gt;
          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;중요&lt;/b&gt;&lt;br&gt;
            swapoff는 스왑에 있는 데이터를 RAM으로 되돌려야 하므로, 메모리 여유가 없으면 실패하거나 위험합니다.&lt;br&gt;
            운영 환경에서는 서비스 영향도를 충분히 고려하세요.
          &lt;/div&gt;
          &lt;pre&gt;&lt;code&gt;# 여유가 확실할 때만(선택)
sudo swapoff -a
sudo swapon -a&lt;/code&gt;&lt;/pre&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;재발 방지&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;h3&gt;1) 스왑 증설과 함께 “원인”을 같이 잡기&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;메모리 누수 의심 시: 프로세스 RSS 추이/로그/배포 변경 이력 확인&lt;/li&gt;
            &lt;li&gt;자바/런타임: 힙/GC 설정이 물리 메모리 대비 과하지 않은지 점검&lt;/li&gt;
            &lt;li&gt;배치 작업: 병렬도/동시 실행 제한, 작업 분리&lt;/li&gt;
          &lt;/ul&gt;

          &lt;h3&gt;2) swappiness 조정(정책 기반)&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;# 일시 적용(재부팅 시 원복)
sudo sysctl vm.swappiness=20&lt;/code&gt;&lt;/pre&gt;
          &lt;pre&gt;&lt;code&gt;# 영구 적용(배포 정책에 맞춰 관리)
# /etc/sysctl.conf 또는 /etc/sysctl.d/*.conf에 추가
vm.swappiness=20&lt;/code&gt;&lt;/pre&gt;
          &lt;pre&gt;&lt;code&gt;sudo sysctl -p&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;3) 모니터링 기준&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;&lt;code&gt;vmstat&lt;/code&gt;의 si/so가 지속 발생하면 알람&lt;/li&gt;
            &lt;li&gt;Swap used가 일정 임계치 이상이면 알람(예: 30%/50%)&lt;/li&gt;
            &lt;li&gt;OOM 로그(&lt;code&gt;dmesg&lt;/code&gt;, &lt;code&gt;/var/log/messages&lt;/code&gt;, &lt;code&gt;journalctl&lt;/code&gt;) 주기 점검&lt;/li&gt;
          &lt;/ul&gt;

          &lt;h3&gt;4) 운영 체크리스트&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;증설 전: 디스크 여유(&lt;code&gt;df -h&lt;/code&gt;), I/O 부하, 변경 윈도우 확인&lt;/li&gt;
            &lt;li&gt;증설 후: &lt;code&gt;swapon --show&lt;/code&gt;, &lt;code&gt;free -h&lt;/code&gt;, fstab 영구 적용 확인&lt;/li&gt;
            &lt;li&gt;사후: 메모리 상위 프로세스/배치 시간대 분석으로 재발 요인 제거&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;
      &lt;/div&gt;
    &lt;/article&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;Linux&quot;,
              &quot;item&quot;: &quot;https://example.com/category/linux&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;리눅스 SWAP 확인부터 스왑 메모리 증설까지&quot;,
              &quot;item&quot;: &quot;https://example.com/linux-swap-check-and-expand&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;TechArticle&quot;,
          &quot;headline&quot;: &quot;리눅스 SWAP 확인부터 스왑 메모리 증설까지&quot;,
          &quot;description&quot;: &quot;리눅스에서 현재 SWAP 사용량을 확인하고, 스왑 파일/스왑 파티션으로 안전하게 증설한 뒤 영구 적용까지 마무리하는 운영 절차를 정리했습니다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;datePublished&quot;: &quot;2026-03-10&quot;,
          &quot;dateModified&quot;: &quot;2026-03-10&quot;,
          &quot;author&quot;: {
            &quot;@type&quot;: &quot;Person&quot;,
            &quot;name&quot;: &quot;관리자&quot;
          },
          &quot;publisher&quot;: {
            &quot;@type&quot;: &quot;Organization&quot;,
            &quot;name&quot;: &quot;Tistory Blog&quot;
          },
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/linux-swap-check-and-expand&quot;
          }
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>지식 공유/Server</category>
      <category>Free</category>
      <category>fstab</category>
      <category>swap</category>
      <category>swapfile</category>
      <category>swapoff</category>
      <category>swapon</category>
      <category>vmstat</category>
      <category>리눅스</category>
      <category>스왑</category>
      <category>스왑메모리</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/508</guid>
      <comments>https://togethergrow.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-SWAP-%ED%99%95%EC%9D%B8%EB%B6%80%ED%84%B0-%EC%8A%A4%EC%99%91-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%A6%9D%EC%84%A4#entry508comment</comments>
      <pubDate>Tue, 10 Mar 2026 22:00:10 +0900</pubDate>
    </item>
    <item>
      <title>오라클에서 AP/WAS 접속 서비스 식별</title>
      <link>https://togethergrow.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4%EC%97%90%EC%84%9C-APWAS-%EC%A0%91%EC%86%8D-%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%8B%9D%EB%B3%84</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;오라클에서 AP/WAS 접속 서비스 식별하는 방법&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;오라클 DB에서 AP/WAS 같은 외부 서비스가 어떤 이름으로 접속하는지, V$SESSION·V$PROCESS·V$SESSION_CONNECT_INFO 중심으로 확인하는 실무 점검 절차를 정리했습니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;오라클,Oracle,V$SESSION,V$PROCESS,V$SESSION_CONNECT_INFO,AP,WAS,JDBC,리스너로그,세션분석,서비스식별&quot; /&gt;
  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;오라클에서 AP/WAS 접속 서비스 식별하는 방법&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;오라클 DB에서 AP/WAS 같은 외부 서비스가 어떤 이름으로 접속하는지, 세션 정보로 확인하는 실무 절차를 정리했습니다.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;오라클에서 AP/WAS 접속 서비스 식별하는 방법&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;V$SESSION·V$PROCESS·V$SESSION_CONNECT_INFO로 외부 서비스 접속을 식별하는 방법을 정리했습니다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;style&gt;
    .post-content{
      line-height:1.7;
      word-break:keep-all;
    }
    .post-content .container{
      max-width:860px;
      margin:0 auto;
      padding:0 16px;
    }
    .post-content h1{
      font-size:1.8rem;
      letter-spacing:-0.02em;
      margin:0 0 14px;
    }
    .post-content .lead{
      margin:0 0 18px;
      opacity:0.95;
    }
    .post-content section{
      margin:26px 0;
    }
    .post-content h2{
      font-size:1.25rem;
      margin:0 0 10px;
      letter-spacing:-0.01em;
    }
    .post-content h3{
      font-size:1.05rem;
      margin:18px 0 8px;
    }
    .post-content ul{
      margin:10px 0 0 18px;
      padding:0;
    }
    .post-content li{
      margin:6px 0;
    }
    .post-content .callout{
      border:1px solid rgba(0,0,0,0.12);
      border-radius:12px;
      padding:14px 14px;
      margin:12px 0 0;
      background:rgba(0,0,0,0.02);
    }
    .post-content .callout b{
      display:inline-block;
      margin-bottom:6px;
    }
    .post-content pre{
      margin:12px 0 0;
      padding:14px;
      border-radius:12px;
      overflow:auto;
      border:1px solid rgba(0,0,0,0.12);
      background:rgba(0,0,0,0.03);
    }
    .post-content code{
      font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace;
      font-size:0.92em;
    }
    .post-content .note{
      margin-top:10px;
      opacity:0.95;
    }
    .post-content .divider{
      height:1px;
      background:rgba(0,0,0,0.12);
      margin:18px 0 0;
    }
    .post-content .kpi{
      display:flex;
      flex-wrap:wrap;
      gap:10px;
      margin-top:10px;
    }
    .post-content .kpi .pill{
      border:1px solid rgba(0,0,0,0.12);
      border-radius:999px;
      padding:6px 10px;
      background:rgba(0,0,0,0.02);
      font-size:0.95rem;
    }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main&gt;
    &lt;article class=&quot;post-content&quot;&gt;
      &lt;div class=&quot;container&quot;&gt;
        &lt;header&gt;
          &lt;h1&gt;오라클에서 AP/WAS 접속 서비스 식별하는 방법&lt;/h1&gt;
          &lt;p class=&quot;lead&quot;&gt;
            데이터베이스에 붙는 AP/WAS(애플리케이션 서버)나 배치, 도구 접속을 구분하려면 &lt;b&gt;세션 메타데이터&lt;/b&gt;를 보는 게 가장 빠릅니다.&lt;br&gt;
            핵심은 “DB가 아는 정보(서버/프로그램/앱이 넘겨준 모듈)”를 조합해서 &lt;b&gt;어떤 서비스가 붙었는지&lt;/b&gt; 실무적으로 식별하는 것입니다.
          &lt;/p&gt;
        &lt;/header&gt;

        &lt;section&gt;
          &lt;h2&gt;개요&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;p class=&quot;note&quot;&gt;
            오라클 DB는 기본적으로 “정확히 어떤 WAS 서비스인지”를 100% 자동 판별하진 못합니다.&lt;br&gt;
            대신 아래 컬럼 조합으로 &lt;b&gt;거의 실무 수준의 식별&lt;/b&gt;이 가능합니다.
          &lt;/p&gt;

          &lt;div class=&quot;kpi&quot; aria-label=&quot;핵심 컬럼&quot;&gt;
            &lt;span class=&quot;pill&quot;&gt;&lt;b&gt;MACHINE&lt;/b&gt; 접속 서버명/호스트&lt;/span&gt;
            &lt;span class=&quot;pill&quot;&gt;&lt;b&gt;PROGRAM&lt;/b&gt; 클라이언트 프로그램&lt;/span&gt;
            &lt;span class=&quot;pill&quot;&gt;&lt;b&gt;MODULE&lt;/b&gt; 애플리케이션 모듈명&lt;/span&gt;
            &lt;span class=&quot;pill&quot;&gt;&lt;b&gt;ACTION&lt;/b&gt; 세부 기능명&lt;/span&gt;
            &lt;span class=&quot;pill&quot;&gt;&lt;b&gt;CLIENT_IDENTIFIER&lt;/b&gt; 사용자/시스템 식별값&lt;/span&gt;
            &lt;span class=&quot;pill&quot;&gt;&lt;b&gt;SERVICE_NAME&lt;/b&gt; DB 서비스명&lt;/span&gt;
          &lt;/div&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;실무 기준으로 보면&lt;/b&gt;&lt;br&gt;
            MODULE/ACTION/CLIENT_IDENTIFIER가 찍히는 환경이 가장 분석이 쉽습니다.&lt;br&gt;
            반대로 앱이 값을 넣지 않으면 PROGRAM이 “JDBC” 계열로만 보여서 서비스 식별이 어려워질 수 있습니다.
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;환경&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;ul&gt;
            &lt;li&gt;대상 DB: Oracle Database&lt;/li&gt;
            &lt;li&gt;주요 뷰: &lt;code&gt;V$SESSION&lt;/code&gt;, &lt;code&gt;V$PROCESS&lt;/code&gt;, &lt;code&gt;V$SESSION_CONNECT_INFO&lt;/code&gt;, (필요 시) &lt;code&gt;V$SQL&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;권한: 해당 뷰 조회 권한 필요(운영 환경에서는 계정/권한 정책에 따라 제한될 수 있음)&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;증상&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;ul&gt;
            &lt;li&gt;DB에 연결된 외부 서비스(AP/WAS/배치/툴)가 무엇인지 확인이 필요함&lt;/li&gt;
            &lt;li&gt;특정 DB 계정(APP 계정 등)이 “어느 서버에서 어떤 형태로” 사용되는지 추적해야 함&lt;/li&gt;
            &lt;li&gt;접속이 급증했는데, 어떤 서버/모듈 조합이 원인인지 빠르게 집계해야 함&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;1차 점검&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;h3&gt;1) 현재 접속 중인 사용자 세션 확인&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;SELECT
    s.sid,
    s.serial#,
    s.username,
    s.osuser,
    s.machine,
    s.program,
    s.module,
    s.action,
    s.client_identifier,
    s.status,
    s.logon_time,
    s.service_name
FROM
    v$session s
WHERE
    s.type = 'USER'
    AND s.username IS NOT NULL
ORDER BY
    s.logon_time DESC;&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;해석 포인트&lt;/b&gt;&lt;br&gt;
            MACHINE: “어느 서버/호스트에서 왔는지” 후보를 잡는 1순위&lt;br&gt;
            PROGRAM: JDBC/OCI/툴 접속(예: SQL*Plus, DBeaver 등) 구분&lt;br&gt;
            MODULE/ACTION: 앱이 넣어준 값이면 서비스 식별에 가장 유용
          &lt;/div&gt;

          &lt;h3&gt;2) JDBC/모듈 기반으로 AP/WAS 세션만 추리기&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;SELECT
    s.sid,
    s.serial#,
    s.username,
    s.machine,
    s.program,
    s.module,
    s.action,
    s.service_name,
    s.logon_time
FROM
    v$session s
WHERE
    s.type = 'USER'
    AND s.username IS NOT NULL
    AND (
        s.program LIKE '%JDBC%'
        OR s.module IS NOT NULL
    )
ORDER BY
    s.machine, s.logon_time;&lt;/code&gt;&lt;/pre&gt;

          &lt;p class=&quot;note&quot;&gt;
            운영 환경에서는 “툴 접속”과 “서버 풀링 접속”을 분리하는 것만으로도 원인 후보가 크게 줄어듭니다.
          &lt;/p&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;심화 분석&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;h3&gt;3) 어떤 서버/프로그램/모듈 조합이 많은지 집계&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;SELECT
    s.machine,
    s.program,
    s.module,
    COUNT(*) AS session_count
FROM
    v$session s
WHERE
    s.type = 'USER'
    AND s.username IS NOT NULL
GROUP BY
    s.machine,
    s.program,
    s.module
ORDER BY
    session_count DESC;&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;4) 세션(SID)과 DB 서버 OS 프로세스(SPID) 매핑&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;SELECT
    s.sid,
    s.serial#,
    s.username,
    s.machine,
    s.program,
    s.module,
    p.spid AS os_pid,
    s.status,
    s.logon_time
FROM
    v$session s,
    v$process p
WHERE
    s.paddr = p.addr
    AND s.type = 'USER'
    AND s.username IS NOT NULL
ORDER BY
    s.logon_time DESC;&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;5) 드라이버/접속 배너로 JDBC/OCI 등 접속 방식 확인&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;SELECT
    s.sid,
    s.serial#,
    s.username,
    s.machine,
    s.program,
    ci.network_service_banner
FROM
    v$session s
JOIN
    v$session_connect_info ci
    ON s.sid = ci.sid
WHERE
    s.type = 'USER'
    AND s.username IS NOT NULL
ORDER BY
    s.sid;&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;중요&lt;/b&gt;&lt;br&gt;
            일부 환경에서는 V$SESSION의 MACHINE이 IP가 아니라 호스트명/DNS/중계 서버명으로 찍힙니다.&lt;br&gt;
            “특정 IP”를 기준으로 찾고 싶다면, DB 뷰만으로 안 보이는 케이스가 있어 리스너 로그/네트워크 로그가 더 정확할 수 있습니다.
          &lt;/div&gt;

          &lt;h3&gt;6) 특정 DB 계정이 어떤 AP/WAS에서 쓰이는지 확인&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;SELECT
    s.sid,
    s.serial#,
    s.username,
    s.machine,
    s.program,
    s.module,
    s.action,
    s.client_identifier,
    s.status,
    s.logon_time
FROM
    v$session s
WHERE
    s.username = 'APPUSER'
ORDER BY
    s.logon_time DESC;&lt;/code&gt;&lt;/pre&gt;

          &lt;h3&gt;7) 실행 중인 SQL까지 같이 보기(필요 시)&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;SELECT
    s.sid,
    s.serial#,
    s.username,
    s.machine,
    s.program,
    s.module,
    s.action,
    s.sql_id,
    q.sql_text
FROM
    v$session s
LEFT JOIN
    v$sql q
    ON s.sql_id = q.sql_id
WHERE
    s.type = 'USER'
    AND s.username IS NOT NULL;&lt;/code&gt;&lt;/pre&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;복구&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;p class=&quot;note&quot;&gt;
            여기서 말하는 “복구”는 장애 조치라기보다, &lt;b&gt;원인 서비스(서버/모듈) 특정 후 즉시 통제&lt;/b&gt;에 초점을 둡니다.
          &lt;/p&gt;

          &lt;h3&gt;1) 현재 서비스 성격을 한 번에 파악하는 집계 쿼리&lt;/h3&gt;
          &lt;pre&gt;&lt;code&gt;SELECT
    s.username,
    s.machine,
    s.program,
    s.module,
    s.action,
    s.client_identifier,
    s.service_name,
    COUNT(*) AS cnt
FROM
    v$session s
WHERE
    s.type = 'USER'
    AND s.username IS NOT NULL
GROUP BY
    s.username,
    s.machine,
    s.program,
    s.module,
    s.action,
    s.client_identifier,
    s.service_name
ORDER BY
    cnt DESC;&lt;/code&gt;&lt;/pre&gt;

          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;즉시 조치 예시(운영 정책에 따름)&lt;/b&gt;&lt;br&gt;
            특정 MACHINE/MODULE 조합이 폭증했다면&lt;br&gt;
            1) 해당 AP/WAS 풀 상태 확인&lt;br&gt;
            2) 배치/스케줄러 중복 실행 여부 확인&lt;br&gt;
            3) 연결 풀(Connection Pool) 누수/재시도 폭주 여부 점검&lt;br&gt;
            4) 필요 시 해당 서비스의 접속 정책(방화벽/리스너/계정)으로 임시 차단
          &lt;/div&gt;
        &lt;/section&gt;

        &lt;section&gt;
          &lt;h2&gt;재발 방지&lt;/h2&gt;

          &lt;div class=&quot;divider&quot;&gt;&lt;/div&gt;

          &lt;h3&gt;1) 애플리케이션에서 MODULE/ACTION을 넣도록 표준화&lt;/h3&gt;
          &lt;div class=&quot;callout&quot;&gt;
            &lt;b&gt;권장 방향&lt;/b&gt;&lt;br&gt;
            애플리케이션에서 DB 접속 후 모듈/액션을 세팅하면, DB에서 서비스 식별이 압도적으로 쉬워집니다.&lt;br&gt;
            예: &lt;code&gt;DBMS_APPLICATION_INFO.SET_MODULE&lt;/code&gt; / &lt;code&gt;SET_ACTION&lt;/code&gt; 활용&lt;br&gt;
            (적용 방식은 프레임워크/드라이버에 따라 달라질 수 있으므로 개발 표준에 포함시키는 방식이 안전합니다.)
          &lt;/div&gt;

          &lt;h3&gt;2) MACHINE이 IP로 안 찍히는 환경 대비&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;NAT/프록시/게이트웨이/커넥션 풀링 구조에서는 “최종 사용자 IP”가 DB에 그대로 보이지 않을 수 있음&lt;/li&gt;
            &lt;li&gt;이 경우 “리스너 로그 + 앱 로그 + 네트워크 장비 로그”를 함께 보는 절차가 필요&lt;/li&gt;
            &lt;li&gt;관리자 입장에서는, DB 단에서 식별 가능한 값(MODULE/CLIENT_IDENTIFIER)을 강화하는 편이 유지보수 비용이 낮음&lt;/li&gt;
          &lt;/ul&gt;

          &lt;h3&gt;3) 점검 체크리스트(짧게)&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;접속 급증 시: &lt;code&gt;machine + program + module&lt;/code&gt; 집계로 1차 원인 후보 압축&lt;/li&gt;
            &lt;li&gt;특정 계정 이슈: &lt;code&gt;username = 'APPUSER'&lt;/code&gt; 형태로 세션을 먼저 고정&lt;/li&gt;
            &lt;li&gt;툴 접속 구분: PROGRAM 기준(예: SQL*Plus/GUI툴/JDBC 등)으로 분리&lt;/li&gt;
            &lt;li&gt;식별력 강화: 앱 표준으로 MODULE/ACTION/CLIENT_IDENTIFIER 세팅&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/section&gt;

      &lt;/div&gt;
    &lt;/article&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;Home&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;Oracle&quot;,
              &quot;item&quot;: &quot;https://example.com/category/oracle&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;오라클에서 AP/WAS 접속 서비스 식별하는 방법&quot;,
              &quot;item&quot;: &quot;https://example.com/oracle-identify-ap-was-sessions&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;TechArticle&quot;,
          &quot;headline&quot;: &quot;오라클에서 AP/WAS 접속 서비스 식별하는 방법&quot;,
          &quot;description&quot;: &quot;오라클 DB에서 AP/WAS 같은 외부 서비스가 어떤 이름으로 접속하는지, V$SESSION·V$PROCESS·V$SESSION_CONNECT_INFO 중심으로 확인하는 실무 점검 절차를 정리했습니다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;datePublished&quot;: &quot;2026-03-10&quot;,
          &quot;dateModified&quot;: &quot;2026-03-10&quot;,
          &quot;author&quot;: {
            &quot;@type&quot;: &quot;Person&quot;,
            &quot;name&quot;: &quot;관리자&quot;
          },
          &quot;publisher&quot;: {
            &quot;@type&quot;: &quot;Organization&quot;,
            &quot;name&quot;: &quot;Tistory Blog&quot;
          },
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/oracle-identify-ap-was-sessions&quot;
          }
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>지식 공유/DBMS</category>
      <category>AP</category>
      <category>JDBC</category>
      <category>oracle</category>
      <category>V$PROCESS</category>
      <category>v$session</category>
      <category>V$SESSION_CONNECT_INFO</category>
      <category>WAS</category>
      <category>리스너로그</category>
      <category>세션분석</category>
      <category>오라클</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/507</guid>
      <comments>https://togethergrow.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4%EC%97%90%EC%84%9C-APWAS-%EC%A0%91%EC%86%8D-%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%8B%9D%EB%B3%84#entry507comment</comments>
      <pubDate>Tue, 10 Mar 2026 21:30:22 +0900</pubDate>
    </item>
    <item>
      <title>대전 유성복합터미널 진입도로 확장 공사 착수</title>
      <link>https://togethergrow.tistory.com/entry/%EB%8C%80%EC%A0%84-%EC%9C%A0%EC%84%B1%EB%B3%B5%ED%95%A9%ED%84%B0%EB%AF%B8%EB%84%90-%EC%A7%84%EC%9E%85%EB%8F%84%EB%A1%9C-%ED%99%95%EC%9E%A5-%EA%B3%B5%EC%82%AC-%EC%B0%A9%EC%88%98</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ChatGPT Image 2026년 3월 7일 오후 02_59_29.png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4RMKP/dJMcaaj9Zj3/1F0zNHUL2estO7m8yBFlvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4RMKP/dJMcaaj9Zj3/1F0zNHUL2estO7m8yBFlvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4RMKP/dJMcaaj9Zj3/1F0zNHUL2estO7m8yBFlvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4RMKP%2FdJMcaaj9Zj3%2F1F0zNHUL2estO7m8yBFlvk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;대전시가 유성복합터미널(유성광역복합환승센터) 주변 상습 정체 완화를 위해 진입도로(임시 연결도로) 개설&amp;middot;확장 공사에 착수했습니다. 구간, 일정, 기대 효과, 교통 운영 방안까지 핵심을 자세히 정리합니다.&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;1024&quot; data-filename=&quot;ChatGPT Image 2026년 3월 7일 오후 02_59_29.png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;대전 유성복합터미널 진입도로 확장 공사 착수 정리&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;대전시가 유성복합터미널(유성광역복합환승센터) 주변 상습 정체 완화를 위해 진입도로(임시 연결도로) 개설·확장 공사에 착수했습니다. 구간, 일정, 기대 효과, 교통 운영 방안까지 핵심을 자세히 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;대전,유성복합터미널,유성광역복합환승센터,진입도로,도로확장,유성IC,구암교네거리,BRT,교통정체,임시도로&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;대전 유성복합터미널 진입도로 확장 공사 착수 정리&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;대전시가 유성복합터미널(유성광역복합환승센터) 주변 상습 정체 완화를 위해 진입도로(임시 연결도로) 개설·확장 공사에 착수했습니다. 구간, 일정, 기대 효과, 교통 운영 방안까지 핵심을 자세히 정리합니다.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;대전 유성복합터미널 진입도로 확장 공사 착수 정리&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;대전시가 유성복합터미널(유성광역복합환승센터) 주변 상습 정체 완화를 위해 진입도로(임시 연결도로) 개설·확장 공사에 착수했습니다. 구간, 일정, 기대 효과, 교통 운영 방안까지 핵심을 자세히 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;style&gt;
    .post-content{line-height:1.7; word-break:keep-all;}
    .post-content .wrap{max-width:920px; margin:0 auto; padding:0 4px;}
    .post-content h1{font-size:1.9rem; margin:0 0 14px;}
    .post-content h2{font-size:1.35rem; margin:28px 0 10px;}
    .post-content h3{font-size:1.1rem; margin:18px 0 8px;}
    .post-content p{margin:10px 0;}
    .post-content ul{margin:10px 0 10px 18px; padding:0;}
    .post-content li{margin:6px 0;}
    .post-content .callout{border:1px solid rgba(0,0,0,.12); border-radius:14px; padding:14px 14px; margin:14px 0;}
    .post-content .callout strong{display:inline-block; margin-bottom:6px;}
    .post-content .note{font-size:.95rem; opacity:.9;}
    .post-content .muted{opacity:.85;}
    .post-content table{width:100%; border-collapse:collapse; margin:12px 0; border:1px solid rgba(0,0,0,.12); border-radius:14px; overflow:hidden;}
    .post-content th,.post-content td{padding:10px; border-bottom:1px solid rgba(0,0,0,.08); vertical-align:top;}
    .post-content th{background:rgba(0,0,0,.03); text-align:left;}
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;post-content&quot;&gt;
    &lt;div class=&quot;wrap&quot;&gt;
      &lt;header&gt;
        &lt;h1&gt;대전 유성복합터미널 진입도로 확장 공사 착수 (내용 자세히)&lt;/h1&gt;
        &lt;p class=&quot;muted&quot;&gt;
          대전 유성권(유성IC~구암교네거리~구암역삼거리) 일대는 출퇴근 시간대 병목이 심한 대표 정체 구간으로 꼽힙니다.
          대전시는 유성복합터미널(유성광역복합환승센터) 접근성을 높이고 정체를 줄이기 위해 진입도로 개설·확장 공사에 착수했습니다.
        &lt;/p&gt;
      &lt;/header&gt;

      &lt;section&gt;
        &lt;h2&gt;핵심 요약&lt;/h2&gt;

        &lt;ul&gt;
          &lt;li&gt;목표: 유성복합터미널(유성광역복합환승센터) 주변 상습 정체 완화 및 접근성 개선&lt;/li&gt;
          &lt;li&gt;대상 권역: 현충원로·유성IC에서 구암교네거리·구암역삼거리 일원&lt;/li&gt;
          &lt;li&gt;방식: 장대교차로~박산로 구간에서 구암동 일원(청년주택 ‘다가온’ 인근 도로)로 연결되는 임시 성격의 연결도로를 개설해 교통량 분산&lt;/li&gt;
          &lt;li&gt;일정: 3월 초 착공, 5월 준공 목표(조기 준공 추진)&lt;/li&gt;
          &lt;li&gt;기대 효과(시 추정): 구암권 교통량 약 20% 이상 분산, 통행속도 약 30% 향상&lt;/li&gt;
        &lt;/ul&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;운영 관점 메모&lt;/strong&gt;
          &lt;span class=&quot;note&quot;&gt;
            실무 기준으로 보면 “도로를 새로 놓는 것”만큼 중요한 게 “차량을 어떻게 나눠 흘릴지”입니다.&lt;br&gt;
            이번 사업도 준공 이후 효과를 분석해 차량 유형별 유도 방식과 버스 동선을 조정하겠다는 점이 함께 제시됐습니다.
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;왜 지금 공사를 하나&lt;/h2&gt;

        &lt;h3&gt;1) 서북부권 상습 정체가 구조적으로 이어지는 구간&lt;/h3&gt;
        &lt;p&gt;
          유성IC와 구암교네거리, 구암역삼거리로 이어지는 축은 통행 수요가 집중되는 반면 회전·합류 지점이 많아 병목이 자주 발생합니다.
          대전시는 이 일대를 출퇴근 시간 평균 통행속도가 시속 10km 안팎까지 떨어질 수 있는 대표 정체 구간으로 설명했습니다.
        &lt;/p&gt;

        &lt;h3&gt;2) BRT 연결도로 ‘전체 완성’까지의 공백을 메우는 임시 해법&lt;/h3&gt;
        &lt;p&gt;
          유성복합터미널 연계 축에는 장기적으로 BRT 연결도로 사업이 추진되고 있지만, 전 구간이 완성되기 전까지 정체가 이어질 가능성이 큽니다.
          이번 진입도로 개설·확장은 그 공백 기간에 교통 혼잡을 선제적으로 낮추기 위한 ‘임시 성격의 연결도로’ 성격이 강조됩니다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;공사 구간과 형태&lt;/h2&gt;

        &lt;h3&gt;1) 정체 권역(영향 구간)&lt;/h3&gt;
        &lt;table&gt;
          &lt;thead&gt;
            &lt;tr&gt;
              &lt;th&gt;구분&lt;/th&gt;
              &lt;th&gt;설명&lt;/th&gt;
              &lt;th&gt;포인트&lt;/th&gt;
            &lt;/tr&gt;
          &lt;/thead&gt;
          &lt;tbody&gt;
            &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;현충원로·유성IC&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;유성권 진입·분산의 시작점 성격&lt;/td&gt;
              &lt;td&gt;유입 교통량 집중&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;구암교네거리&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;회전·합류 병목이 생기기 쉬운 지점&lt;/td&gt;
              &lt;td&gt;정체 체감이 큰 구간&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;구암역삼거리&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;도시철도·버스·터미널 접근 동선이 만나는 축&lt;/td&gt;
              &lt;td&gt;환승·접근 흐름과 연결&lt;/td&gt;
            &lt;/tr&gt;
          &lt;/tbody&gt;
        &lt;/table&gt;

        &lt;h3&gt;2) 임시 연결도로(개설 방식)&lt;/h3&gt;
        &lt;p&gt;
          대전시는 장대교차로~박산로 구간에서 구암동 일원(청년주택 ‘다가온’ 인근 도로)로 이어지는 연결도로를 개설해
          특정 교차로로 몰리는 차량을 우회·분산시키는 방식으로 정체를 줄이겠다는 구상입니다.
        &lt;/p&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;“확장”을 체감하는 지점&lt;/strong&gt;
          &lt;span class=&quot;note&quot;&gt;
            이번 사업은 단순히 차로를 넓히는 것만이 아니라,&lt;br&gt;
            병목 교차로로 몰리는 흐름 일부를 ‘새 동선’으로 분산해 체감 정체를 줄이는 데 초점이 있습니다.
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;일정과 추진 과정&lt;/h2&gt;

        &lt;h3&gt;1) 공사 일정&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;착공: 3월 초(3월 중)&lt;/li&gt;
          &lt;li&gt;준공 목표: 5월(조기 준공 목표)&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;2) 부지 활용 협의(추진 과정의 핵심 변수)&lt;/h3&gt;
        &lt;p&gt;
          사업 추진 과정에서 한국도로공사 소유 부지 일부를 활용해야 하는 이슈가 있었고,
          대전시는 협의를 통해 부지 사용에 대한 합의를 마친 뒤 2월 중 협약·사용허가 절차를 정리하고 공사를 시작하는 흐름을 제시했습니다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;교통 운영 계획: 차량을 어떻게 나눌까&lt;/h2&gt;

        &lt;h3&gt;1) 차량 유형별 유도(분산 전략)&lt;/h3&gt;
        &lt;p&gt;
          대전시는 신설되는 연결도로로 모든 차량을 한꺼번에 보내기보다,
          &lt;strong&gt;소형 차량은 신설 도로&lt;/strong&gt;를 이용하도록 유도하고 &lt;strong&gt;중·대형 차량은 기존 구암교네거리 방향&lt;/strong&gt;으로 안내해
          전체 흐름의 균형을 맞추겠다는 방향을 밝혔습니다.
        &lt;/p&gt;

        &lt;h3&gt;2) 준공 이후 ‘효과 분석 → 버스 동선 조정’ 가능성&lt;/h3&gt;
        &lt;p&gt;
          준공 뒤 차량 분산 효과를 정밀 분석한 다음,
          일부 BRT 노선의 진입 방향을 조정해 유성복합터미널에서 시외버스와 도시철도 등과의 환승 편의가 더 좋아지도록 운영을 다듬는 방안도 언급됩니다.
        &lt;/p&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;현장 체감 포인트&lt;/strong&gt;
          &lt;span class=&quot;note&quot;&gt;
            도로가 생겨도 안내 체계(표지, 신호 운영, 내비 데이터 반영)가 늦으면 분산 효과가 반감됩니다.&lt;br&gt;
            실제 사용 시에는 준공 직후 2~4주가 “혼선이 가장 큰 기간”이 될 수 있어, 안내 체계가 함께 정리되는지 확인하는 게 좋습니다.
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;기대 효과와 체크 포인트&lt;/h2&gt;

        &lt;h3&gt;1) 시가 제시한 정량 기대치&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;구암권 교통량 약 20% 이상 분산&lt;/li&gt;
          &lt;li&gt;통행속도 약 30% 향상&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;2) 실제 체감은 ‘교차로 운영’에서 갈린다&lt;/h3&gt;
        &lt;p&gt;
          도로 연결이 만들어내는 분산 효과는 결국 교차로 신호 체계, 회전·유턴 동선, 버스 정류장 주변 정차·끼어들기 관리에 의해 달라집니다.
          운영 환경에서는 준공 직후에 “어디서 다시 막히는지”가 빠르게 드러나므로, 지점별 추가 보완(신호, 차로 유도선, 표지)이 뒤따를 가능성이 큽니다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;자주 묻는 포인트&lt;/h2&gt;

        &lt;h3&gt;Q1. 공사 중 지나가기 더 막히는 것 아닌가&lt;/h3&gt;
        &lt;p&gt;
          공사 구간 주변에서는 차로 축소, 임시 신호 운영, 공사 차량 진출입으로 체감 정체가 일시적으로 늘 수 있습니다.
          특히 출퇴근 시간에는 우회 동선 안내를 미리 확인하고, 일정 초반 1~2주간은 이동시간 여유를 두는 편이 안전합니다.
        &lt;/p&gt;

        &lt;h3&gt;Q2. “임시도로”면 나중에 없어지나&lt;/h3&gt;
        &lt;p&gt;
          이번 사업은 장기 사업(연결도로·환승체계) 완성 전까지 병목을 완화하려는 성격이 강조됩니다.
          다만 준공 후 효과 분석 결과와 상위 도로망 계획에 따라 운영 방식(차량 유도, 버스 동선, 신호 체계)이 재조정될 수 있습니다.
        &lt;/p&gt;
      &lt;/section&gt;
    &lt;/div&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;홈&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;지역소식&quot;,
              &quot;item&quot;: &quot;https://example.com/local&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;대전&quot;,
              &quot;item&quot;: &quot;https://example.com/local/daejeon&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;BlogPosting&quot;,
          &quot;headline&quot;: &quot;대전 유성복합터미널 진입도로 확장 공사 착수 (내용 자세히)&quot;,
          &quot;description&quot;: &quot;대전시가 유성복합터미널(유성광역복합환승센터) 주변 상습 정체 완화를 위해 진입도로(임시 연결도로) 개설·확장 공사에 착수했습니다. 구간, 일정, 기대 효과, 교통 운영 방안까지 핵심을 자세히 정리합니다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;datePublished&quot;: &quot;2026-03-04&quot;,
          &quot;dateModified&quot;: &quot;2026-03-07&quot;,
          &quot;author&quot;: {
            &quot;@type&quot;: &quot;Person&quot;,
            &quot;name&quot;: &quot;관리자&quot;
          },
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/daejeon-yuseong-terminal-access-road&quot;
          }
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>일상 정보/대전 소식</category>
      <category>BRT</category>
      <category>교통정체</category>
      <category>구암교네거리</category>
      <category>대전</category>
      <category>도로확장</category>
      <category>유성ic</category>
      <category>유성광역복합환승센터</category>
      <category>유성복합터미널</category>
      <category>임시도로</category>
      <category>진입도로</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/506</guid>
      <comments>https://togethergrow.tistory.com/entry/%EB%8C%80%EC%A0%84-%EC%9C%A0%EC%84%B1%EB%B3%B5%ED%95%A9%ED%84%B0%EB%AF%B8%EB%84%90-%EC%A7%84%EC%9E%85%EB%8F%84%EB%A1%9C-%ED%99%95%EC%9E%A5-%EA%B3%B5%EC%82%AC-%EC%B0%A9%EC%88%98#entry506comment</comments>
      <pubDate>Sat, 7 Mar 2026 15:00:06 +0900</pubDate>
    </item>
    <item>
      <title>Oracle 19c RAC IP 변경 방법 정리</title>
      <link>https://togethergrow.tistory.com/entry/Oracle-19c-RAC-IP-%EB%B3%80%EA%B2%BD-%EB%B0%A9%EB%B2%95-%EC%A0%95%EB%A6%AC</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;Oracle 19c RAC IP 변경 방법 정리&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;Oracle 19c RAC에서 Public/VIP/SCAN/Interconnect IP를 변경할 때의 점검 순서, srvctl 변경 절차, DNS·hosts 반영, 롤백 포인트까지 운영 관점에서 단계별로 정리했습니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;Oracle 19c,RAC,IP 변경,VIP 변경,SCAN 변경,Clusterware,srvctl,oifcfg,Interconnect,Listener&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;Oracle 19c RAC IP 변경 방법 정리&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;Oracle 19c RAC에서 Public/VIP/SCAN/Interconnect IP를 변경할 때의 점검 순서, srvctl 변경 절차, DNS·hosts 반영, 롤백 포인트까지 운영 관점에서 단계별로 정리했습니다.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;Oracle 19c RAC IP 변경 방법 정리&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;Oracle 19c RAC에서 Public/VIP/SCAN/Interconnect IP를 변경할 때의 점검 순서, srvctl 변경 절차, DNS·hosts 반영, 롤백 포인트까지 운영 관점에서 단계별로 정리했습니다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://example.com/og-placeholder.jpg&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;style&gt;
    .post-content{line-height:1.7; word-break:keep-all;}
    .post-content .wrap{max-width:920px; margin:0 auto; padding:0 4px;}
    .post-content h1{font-size:1.9rem; margin:0 0 14px;}
    .post-content h2{font-size:1.35rem; margin:28px 0 10px;}
    .post-content h3{font-size:1.1rem; margin:18px 0 8px;}
    .post-content p{margin:10px 0;}
    .post-content ul{margin:10px 0 10px 18px; padding:0;}
    .post-content li{margin:6px 0;}
    .post-content .callout{border:1px solid rgba(0,0,0,.12); border-radius:14px; padding:14px 14px; margin:14px 0;}
    .post-content .callout strong{display:inline-block; margin-bottom:6px;}
    .post-content .note{font-size:.95rem; opacity:.9;}
    .post-content pre{overflow:auto; padding:12px 12px; border-radius:14px; border:1px solid rgba(0,0,0,.12); margin:12px 0;}
    .post-content code{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace; font-size:.92rem;}
    .post-content table{width:100%; border-collapse:collapse; margin:12px 0; border:1px solid rgba(0,0,0,.12); border-radius:14px; overflow:hidden;}
    .post-content th,.post-content td{padding:10px; border-bottom:1px solid rgba(0,0,0,.08); vertical-align:top;}
    .post-content th{background:rgba(0,0,0,.03); text-align:left;}
    .post-content .muted{opacity:.85;}
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;post-content&quot;&gt;
    &lt;div class=&quot;wrap&quot;&gt;
      &lt;header&gt;
        &lt;h1&gt;Oracle 19c RAC IP 변경 방법(상세)&lt;/h1&gt;
        &lt;p class=&quot;muted&quot;&gt;
          RAC IP 변경은 “OS 네트워크 반영 → 클러스터 네트워크 정의(oifcfg) → VIP/SCAN 리소스(srvctl) → 리스너/서비스 확인” 순서를 지키는 게 핵심입니다.
          실제 사용 시에는 변경 범위(Public/VIP/SCAN/Interconnect)를 명확히 나누고, 각 단계마다 롤백 포인트를 남겨야 장애 확산을 막을 수 있습니다.
        &lt;/p&gt;
      &lt;/header&gt;

      &lt;section&gt;
        &lt;h2&gt;개요&lt;/h2&gt;

        &lt;p&gt;
          Oracle 19c RAC 환경에서 “IP 변경”이라고 하면 보통 아래 중 하나(또는 복합)를 의미합니다.
          운영 환경에서는 범위를 섞어서 진행하면 리소스가 엉키기 쉬우니, 먼저 무엇을 바꾸는지 확정한 뒤 절차를 진행합니다.
        &lt;/p&gt;

        &lt;table&gt;
          &lt;thead&gt;
            &lt;tr&gt;
              &lt;th&gt;구분&lt;/th&gt;
              &lt;th&gt;무엇이 바뀌나&lt;/th&gt;
              &lt;th&gt;영향 범위&lt;/th&gt;
              &lt;th&gt;주요 변경 지점&lt;/th&gt;
            &lt;/tr&gt;
          &lt;/thead&gt;
          &lt;tbody&gt;
            &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Public IP&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;각 노드의 기본 통신 IP&lt;/td&gt;
              &lt;td&gt;노드 접속/일부 클러스터 통신&lt;/td&gt;
              &lt;td&gt;OS NIC, DNS/hosts, oifcfg(선택), 노드 host 해석&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;VIP&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;노드별 가상 IP(빠른 failover)&lt;/td&gt;
              &lt;td&gt;클라이언트 접속(접속 빠른 전환)&lt;/td&gt;
              &lt;td&gt;srvctl( vip/ listener ), DNS/hosts&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;SCAN&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;클라이언트 접속 대표 이름/주소(보통 3개 IP)&lt;/td&gt;
              &lt;td&gt;접속 경로 전체&lt;/td&gt;
              &lt;td&gt;DNS(권장), srvctl scan/scan_listener&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Interconnect(Private)&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;노드 간 내부 통신(캐시퓨전/하트비트 등)&lt;/td&gt;
              &lt;td&gt;클러스터 안정성/성능&lt;/td&gt;
              &lt;td&gt;OS NIC, oifcfg, 클러스터 통신 점검&lt;/td&gt;
            &lt;/tr&gt;
          &lt;/tbody&gt;
        &lt;/table&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;전제(강력 권장)&lt;/strong&gt;
          &lt;span class=&quot;note&quot;&gt;
            본 절차는 계획된 점검 창(downtime 또는 제한 서비스)을 전제로 합니다.&lt;br&gt;
            Public/VIP/SCAN/IP 변경은 “이름 해석(DNS/hosts) 불일치”가 가장 흔한 실패 원인입니다.&lt;br&gt;
            관리자 입장에서 보면, 변경 전/후의 해석 결과를 노드별로 기록해 두는 것이 가장 값진 보험입니다.
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;환경&lt;/h2&gt;

        &lt;p&gt;아래 항목을 변경 전 체크리스트로 고정해 두면 RAC IP 변경 작업의 재현성이 좋아집니다.&lt;/p&gt;

        &lt;h3&gt;1) 변경 범위/대상 정리&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;변경 대상: Public / VIP / SCAN / Interconnect 중 무엇인지 구분&lt;/li&gt;
          &lt;li&gt;변경 방식: 동일 서브넷 내 IP 변경인지, 서브넷 자체가 바뀌는지(라우팅/게이트웨이 포함)&lt;/li&gt;
          &lt;li&gt;이름 정책: 노드명/호스트명/VIP명/SCAN명은 그대로 두고 IP만 바꾸는지, 이름도 바꾸는지&lt;/li&gt;
          &lt;li&gt;DNS 사용 여부: SCAN은 &lt;strong&gt;DNS 기반&lt;/strong&gt;을 권장(가능하면 hosts 고정 회피)&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;2) 변경 전 백업(최소)&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;Grid/DB home의 네트워크 관련 설정 파일(배포/표준 절차에 따름)&lt;/li&gt;
          &lt;li&gt;현재 클러스터 리소스 상태 덤프(아래 명령 출력 저장)&lt;/li&gt;
        &lt;/ul&gt;

        &lt;pre&gt;&lt;code&gt;# Grid 사용자(예: grid)로
crsctl stat res -t
srvctl config vip -n &amp;lt;node1&amp;gt;
srvctl config vip -n &amp;lt;node2&amp;gt;
srvctl config scan
srvctl config scan_listener
srvctl config listener
oifcfg getif
olsnodes -n -i
&lt;/code&gt;&lt;/pre&gt;

        &lt;h3&gt;3) 변경값 매핑표(작업 표준)&lt;/h3&gt;
        &lt;p class=&quot;muted&quot;&gt;변경 작업 중 실수의 대부분이 “어느 IP를 어느 리소스에 넣어야 하는지”에서 발생합니다. 아래처럼 표로 고정해두면 안전합니다.&lt;/p&gt;

        &lt;table&gt;
          &lt;thead&gt;
            &lt;tr&gt;
              &lt;th&gt;항목&lt;/th&gt;
              &lt;th&gt;변경 전&lt;/th&gt;
              &lt;th&gt;변경 후&lt;/th&gt;
              &lt;th&gt;비고&lt;/th&gt;
            &lt;/tr&gt;
          &lt;/thead&gt;
          &lt;tbody&gt;
            &lt;tr&gt;
              &lt;td&gt;node1 Public&lt;/td&gt;
              &lt;td&gt;x.x.x.x&lt;/td&gt;
              &lt;td&gt;y.y.y.y&lt;/td&gt;
              &lt;td&gt;OS NIC / name 해석&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;td&gt;node1 VIP&lt;/td&gt;
              &lt;td&gt;x.x.x.x&lt;/td&gt;
              &lt;td&gt;y.y.y.y&lt;/td&gt;
              &lt;td&gt;srvctl vip&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;td&gt;SCAN1~3&lt;/td&gt;
              &lt;td&gt;x.x.x.x&lt;/td&gt;
              &lt;td&gt;y.y.y.y&lt;/td&gt;
              &lt;td&gt;DNS A 레코드 3개 권장&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;td&gt;Interconnect&lt;/td&gt;
              &lt;td&gt;10.x.x.x&lt;/td&gt;
              &lt;td&gt;10.y.y.y&lt;/td&gt;
              &lt;td&gt;oifcfg, MTU, 라우팅&lt;/td&gt;
            &lt;/tr&gt;
          &lt;/tbody&gt;
        &lt;/table&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;증상&lt;/h2&gt;

        &lt;p&gt;Oracle 19c RAC IP 변경 작업에서 자주 만나는 증상(실패 패턴)입니다.&lt;/p&gt;

        &lt;ul&gt;
          &lt;li&gt;VIP/SCAN 리소스가 OFFLINE 또는 INTERMEDIATE 상태로 남음&lt;/li&gt;
          &lt;li&gt;리스너는 떠 있는데 원격 접속이 안 되거나, 특정 노드로만 접속됨&lt;/li&gt;
          &lt;li&gt;노드 간 통신 지연/재부팅/eviction(특히 Interconnect 변경 시)&lt;/li&gt;
          &lt;li&gt;이름 해석이 노드마다 달라서 어떤 노드는 old IP로, 어떤 노드는 new IP로 해석&lt;/li&gt;
        &lt;/ul&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;핵심 포인트&lt;/strong&gt;
          &lt;span class=&quot;note&quot;&gt;
            RAC IP 변경이 실패할 때 “srvctl 명령 자체”보다 “DNS/hosts 불일치”가 원인인 경우가 더 많습니다.&lt;br&gt;
            따라서 증상 단계에서 바로 리소스를 재기동하기보다, 먼저 각 노드의 이름 해석부터 동일하게 맞추는 것이 빠릅니다.
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;1차 점검&lt;/h2&gt;

        &lt;h3&gt;1) 노드별 이름 해석 동일성 확인&lt;/h3&gt;
        &lt;p&gt;각 노드에서 동일한 결과가 나오는지 확인합니다(노드별로 모두 실행).&lt;/p&gt;
        &lt;pre&gt;&lt;code&gt;# root 또는 일반 사용자
getent hosts &amp;lt;node1-hostname&amp;gt;
getent hosts &amp;lt;node2-hostname&amp;gt;
getent hosts &amp;lt;node1-vip-name&amp;gt;
getent hosts &amp;lt;node2-vip-name&amp;gt;
getent hosts &amp;lt;scan-name&amp;gt;

# DNS 사용 환경이면 추가(툴 존재 시)
nslookup &amp;lt;scan-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

        &lt;h3&gt;2) NIC/라우팅/ARP 기본 점검&lt;/h3&gt;
        &lt;pre&gt;&lt;code&gt;ip addr
ip route
arp -n
&lt;/code&gt;&lt;/pre&gt;

        &lt;h3&gt;3) 클러스터 네트워크 인터페이스 정의 확인(oifcfg)&lt;/h3&gt;
        &lt;pre&gt;&lt;code&gt;# Grid 사용자
oifcfg getif
&lt;/code&gt;&lt;/pre&gt;

        &lt;p class=&quot;muted&quot;&gt;
          서브넷이 바뀌는 IP 변경이라면 여기에서 “public/cluster_interconnect” 매핑이 깨졌는지 먼저 확인합니다.
        &lt;/p&gt;

        &lt;h3&gt;4) 리소스 상태 빠른 확인&lt;/h3&gt;
        &lt;pre&gt;&lt;code&gt;crsctl stat res -t
&lt;/code&gt;&lt;/pre&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;작업 전 최소 체크&lt;/strong&gt;
          &lt;span class=&quot;note&quot;&gt;
            변경 전에는 반드시 VIP/SCAN/리스너가 ONLINE인지 확인하고 시작하세요.&lt;br&gt;
            이미 불안정한 상태에서 Oracle 19c RAC IP 변경을 하면, 변경 성공/실패 판단이 더 어려워집니다.
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;심화 분석&lt;/h2&gt;

        &lt;h3&gt;1) 변경 대상별 핵심 리소스 관계&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;Public IP: 노드 기본 통신 → OS 네트워크/hostname 해석이 우선&lt;/li&gt;
          &lt;li&gt;VIP: node별 VIP 리소스 → VIP가 떠야 노드 리스너가 정상 동작하기 쉬움&lt;/li&gt;
          &lt;li&gt;SCAN: scan 리소스 + scan_listener → 클라이언트 접속의 대표 진입점&lt;/li&gt;
          &lt;li&gt;Interconnect: cluster_interconnect → 지연/패킷 손실이 eviction으로 번질 수 있음&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;2) 로그/상태에서 확인할 것(요약)&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;VIP/SCAN 리소스가 어느 단계에서 실패하는지(이름 해석/바인딩/포트 등)&lt;/li&gt;
          &lt;li&gt;노드별로 동일한 NIC에 동일한 서브넷이 잡히는지&lt;/li&gt;
          &lt;li&gt;oifcfg에 등록된 인터페이스가 실제 OS 인터페이스와 일치하는지&lt;/li&gt;
        &lt;/ul&gt;

        &lt;p class=&quot;muted&quot;&gt;
          여기서는 “어떤 리소스가 왜 안 올라오는지”를 과하게 파고들기보다,
          IP 변경 작업에서는 &lt;strong&gt;이름 해석 + 인터페이스 매핑&lt;/strong&gt;을 먼저 정리하는 편이 성공률이 높습니다.
        &lt;/p&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;복구&lt;/h2&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;진행 순서(권장)&lt;/strong&gt;
          &lt;span class=&quot;note&quot;&gt;
            1) DNS/hosts 선반영(가능하면 TTL 고려) → 2) OS IP/NIC 반영 → 3) oifcfg 정리(필요 시) → 4) VIP/SCAN srvctl 변경 → 5) 리스너/서비스 확인&lt;br&gt;
            RAC IP 변경 작업은 “선행조건이 갖춰진 상태에서 srvctl을 실행”해야 재시도가 줄어듭니다.
          &lt;/span&gt;
        &lt;/div&gt;

        &lt;h3&gt;A. SCAN IP 변경(권장: DNS 기반)&lt;/h3&gt;
        &lt;p&gt;
          SCAN은 가능한 한 DNS에서 관리하는 것이 안정적입니다. SCAN 이름은 유지하고 A 레코드(IP 3개)를 변경하는 방식이 일반적입니다.
        &lt;/p&gt;
        &lt;ul&gt;
          &lt;li&gt;DNS에서 &lt;code&gt;&amp;lt;scan-name&amp;gt;&lt;/code&gt;의 A 레코드(보통 3개)를 변경&lt;/li&gt;
          &lt;li&gt;TTL이 남아있으면 클라이언트/노드별 캐시가 달라질 수 있으니 점검 창 전에 TTL을 줄이는 운영이 흔합니다&lt;/li&gt;
          &lt;li&gt;변경 후, 각 노드에서 &lt;code&gt;getent hosts &amp;lt;scan-name&amp;gt;&lt;/code&gt; 결과가 새 IP로 일치하는지 확인&lt;/li&gt;
        &lt;/ul&gt;

        &lt;p class=&quot;muted&quot;&gt;DNS 변경만으로 끝나는 경우도 있지만, 클러스터 리소스 재기동이 필요한 경우 아래를 순서대로 진행합니다.&lt;/p&gt;

        &lt;pre&gt;&lt;code&gt;# Grid 사용자
srvctl stop scan_listener
srvctl stop scan

# DNS 반영 확인 후
srvctl start scan
srvctl start scan_listener

srvctl status scan
srvctl status scan_listener
&lt;/code&gt;&lt;/pre&gt;

        &lt;h3&gt;B. VIP IP 변경(노드별)&lt;/h3&gt;
        &lt;p&gt;
          VIP는 노드별로 1개씩 존재합니다. VIP 이름은 유지하고 IP만 바꾸는 방식이 일반적이며, DNS/hosts에 VIP 이름이 새 IP로 해석되어야 합니다.
        &lt;/p&gt;

        &lt;h4&gt;1) 선행: VIP 이름 해석 반영&lt;/h4&gt;
        &lt;pre&gt;&lt;code&gt;# 각 노드에서 동일 결과 확인
getent hosts &amp;lt;node1-vip-name&amp;gt;
getent hosts &amp;lt;node2-vip-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

        &lt;h4&gt;2) srvctl로 VIP 수정(노드별 실행)&lt;/h4&gt;
        &lt;pre&gt;&lt;code&gt;# Grid 사용자
srvctl stop vip -n &amp;lt;node1&amp;gt;
srvctl modify vip -n &amp;lt;node1&amp;gt; -A &amp;lt;new_vip_ip&amp;gt;/&amp;lt;prefix&amp;gt;
srvctl start vip -n &amp;lt;node1&amp;gt;
srvctl status vip -n &amp;lt;node1&amp;gt;

srvctl stop vip -n &amp;lt;node2&amp;gt;
srvctl modify vip -n &amp;lt;node2&amp;gt; -A &amp;lt;new_vip_ip&amp;gt;/&amp;lt;prefix&amp;gt;
srvctl start vip -n &amp;lt;node2&amp;gt;
srvctl status vip -n &amp;lt;node2&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

        &lt;p class=&quot;note&quot;&gt;
          VIP 변경 직후에는 리스너도 연쇄 영향을 받을 수 있으니, VIP가 ONLINE인 것을 먼저 확인하고 리스너 상태를 확인합니다.
        &lt;/p&gt;

        &lt;pre&gt;&lt;code&gt;# Grid 사용자
srvctl status listener
srvctl stop listener
srvctl start listener
srvctl status listener
&lt;/code&gt;&lt;/pre&gt;

        &lt;h3&gt;C. Public IP 변경(노드 기본 IP)&lt;/h3&gt;
        &lt;p&gt;
          Public IP 변경은 OS 네트워크 변경이 핵심입니다. 여기서의 실수는 노드 접속 자체를 끊을 수 있으니,
          원격 콘솔(iLO/DRAC/VM 콘솔 등) 확보를 강하게 권장합니다.
        &lt;/p&gt;

        &lt;h4&gt;1) OS 네트워크 반영(예시 흐름)&lt;/h4&gt;
        &lt;ul&gt;
          &lt;li&gt;NIC 설정 파일/NetworkManager 프로파일에 새 IP/게이트웨이 반영&lt;/li&gt;
          &lt;li&gt;네트워크 재기동(운영 표준에 따라) 후 &lt;code&gt;ip addr&lt;/code&gt;, &lt;code&gt;ip route&lt;/code&gt; 확인&lt;/li&gt;
          &lt;li&gt;노드 hostname이 새 Public IP로 해석되는지 확인&lt;/li&gt;
        &lt;/ul&gt;

        &lt;pre&gt;&lt;code&gt;# 노드에서
hostname
getent hosts $(hostname)
ip addr
ip route
&lt;/code&gt;&lt;/pre&gt;

        &lt;h4&gt;2) 클러스터 관점 확인&lt;/h4&gt;
        &lt;pre&gt;&lt;code&gt;# Grid 사용자
olsnodes -n -i
crsctl stat res -t
&lt;/code&gt;&lt;/pre&gt;

        &lt;p class=&quot;muted&quot;&gt;
          Public IP의 서브넷이 바뀌면서 인터페이스 매핑이 달라지면 oifcfg 조정이 필요할 수 있습니다(다음 항목 참고).
        &lt;/p&gt;

        &lt;h3&gt;D. Interconnect(Private) IP/서브넷 변경&lt;/h3&gt;
        &lt;p&gt;
          Interconnect 변경은 RAC 안정성에 직접 영향을 줍니다. 패킷 손실/MTU 불일치/라우팅 오류가 eviction으로 번질 수 있어,
          변경 후에는 반드시 노드 간 지연/손실을 확인합니다.
        &lt;/p&gt;

        &lt;h4&gt;1) OS NIC 반영&lt;/h4&gt;
        &lt;ul&gt;
          &lt;li&gt;각 노드에 동일한 정책(MTU, bonding/teaming, VLAN 등) 적용&lt;/li&gt;
          &lt;li&gt;IP/서브넷 변경 후 인터페이스 업 상태 확인&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h4&gt;2) oifcfg 매핑 확인 및 조정(필요 시)&lt;/h4&gt;
        &lt;pre&gt;&lt;code&gt;# Grid 사용자
oifcfg getif
&lt;/code&gt;&lt;/pre&gt;

        &lt;p class=&quot;note&quot;&gt;
          인터페이스가 잘못 분류되어 있으면, 환경에 따라 아래처럼 재등록이 필요할 수 있습니다(명령 옵션은 환경에 맞게 적용).&lt;br&gt;
          이 단계는 표준 변경 절차서에 따라 “삭제 → 등록” 순서를 명확히 하고, 작업 전 출력값을 반드시 보관하세요.
        &lt;/p&gt;

        &lt;pre&gt;&lt;code&gt;# 예시(환경별로 다를 수 있음)
# oifcfg delif -global &amp;lt;ifname&amp;gt;
# oifcfg setif -global &amp;lt;ifname&amp;gt;/&amp;lt;subnet&amp;gt;:cluster_interconnect
# oifcfg setif -global &amp;lt;ifname&amp;gt;/&amp;lt;subnet&amp;gt;:public
&lt;/code&gt;&lt;/pre&gt;

        &lt;h4&gt;3) 변경 후 클러스터 상태 확인&lt;/h4&gt;
        &lt;pre&gt;&lt;code&gt;crsctl stat res -t
&lt;/code&gt;&lt;/pre&gt;

        &lt;h3&gt;E. 서비스/접속 최종 확인&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;각 노드 VIP가 ONLINE인지&lt;/li&gt;
          &lt;li&gt;SCAN/SCAN listener가 ONLINE인지&lt;/li&gt;
          &lt;li&gt;리스너가 정상 바인딩인지&lt;/li&gt;
          &lt;li&gt;애플리케이션 접속 문자열(특히 SCAN 기반)로 접속이 되는지&lt;/li&gt;
        &lt;/ul&gt;

        &lt;pre&gt;&lt;code&gt;# Grid 사용자
srvctl status vip
srvctl status scan
srvctl status scan_listener
srvctl status listener

# DB 사용자(또는 DB 홈에서)
srvctl status database -d &amp;lt;db_unique_name&amp;gt;
srvctl status service -d &amp;lt;db_unique_name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
      &lt;/section&gt;

      &lt;section&gt;
        &lt;h2&gt;재발 방지&lt;/h2&gt;

        &lt;h3&gt;1) DNS/hosts 운영 원칙을 고정&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;가능하면 SCAN은 DNS로만 관리(노드별 hosts 편차 제거)&lt;/li&gt;
          &lt;li&gt;VIP/노드명도 DNS로 일관되게 운영하거나, 불가피하면 hosts를 “배포 자동화”로 동일하게 유지&lt;/li&gt;
          &lt;li&gt;작업 전후에 &lt;code&gt;getent hosts&lt;/code&gt; 결과를 노드별로 저장해 변경 이력을 남김&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;2) 변경 리허설과 롤백 포인트&lt;/h3&gt;
        &lt;ul&gt;
          &lt;li&gt;변경 단계마다 “성공 판정 기준”을 문장으로 고정(예: VIP ONLINE 확인 후 다음 단계)&lt;/li&gt;
          &lt;li&gt;롤백은 “DNS 되돌림 + srvctl 되돌림 + OS 네트워크 되돌림”의 3축으로 준비&lt;/li&gt;
          &lt;li&gt;Oracle 19c RAC IP 변경은 재시도보다 “되돌리고 다시”가 더 빠른 경우가 많음&lt;/li&gt;
        &lt;/ul&gt;

        &lt;h3&gt;3) 표준 점검 커맨드 묶음 운영&lt;/h3&gt;
        &lt;p class=&quot;muted&quot;&gt;
          작업자 교체/야간 작업에서도 동일 결과를 보려면 점검 명령을 표준화하는 것이 중요합니다.
        &lt;/p&gt;

        &lt;pre&gt;&lt;code&gt;# 사전/사후 동일하게 실행(출력 저장)
getent hosts &amp;lt;scan-name&amp;gt;
getent hosts &amp;lt;node1-vip-name&amp;gt;
getent hosts &amp;lt;node2-vip-name&amp;gt;

oifcfg getif
olsnodes -n -i
crsctl stat res -t

srvctl status scan
srvctl status scan_listener
srvctl status vip
srvctl status listener
&lt;/code&gt;&lt;/pre&gt;

        &lt;div class=&quot;callout&quot;&gt;
          &lt;strong&gt;운영 관점 결론&lt;/strong&gt;
          &lt;span class=&quot;note&quot;&gt;
            RAC IP 변경은 “srvctl을 잘 치는 작업”이 아니라 “이름 해석과 인터페이스 정의를 정확히 맞추는 작업”입니다.&lt;br&gt;
            실무 기준으로 보면, 변경 전후의 해석 결과를 노드별로 증적화하는 것만으로도 장애 대응 시간이 크게 줄어듭니다.
          &lt;/span&gt;
        &lt;/div&gt;
      &lt;/section&gt;
    &lt;/div&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;홈&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;Oracle&quot;,
              &quot;item&quot;: &quot;https://example.com/oracle&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 3,
              &quot;name&quot;: &quot;RAC 네트워크&quot;,
              &quot;item&quot;: &quot;https://example.com/oracle/rac-network&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;TechArticle&quot;,
          &quot;headline&quot;: &quot;Oracle 19c RAC IP 변경 방법(상세)&quot;,
          &quot;description&quot;: &quot;Oracle 19c RAC에서 Public/VIP/SCAN/Interconnect IP를 변경할 때의 점검 순서, srvctl 변경 절차, DNS·hosts 반영, 롤백 포인트까지 운영 관점에서 단계별로 정리했습니다.&quot;,
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;datePublished&quot;: &quot;2026-03-07&quot;,
          &quot;dateModified&quot;: &quot;2026-03-07&quot;,
          &quot;author&quot;: {
            &quot;@type&quot;: &quot;Person&quot;,
            &quot;name&quot;: &quot;관리자&quot;
          },
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/oracle-19c-rac-ip-change&quot;
          }
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>지식 공유/DBMS</category>
      <category>Clusterware</category>
      <category>interconnect</category>
      <category>IP 변경</category>
      <category>listener</category>
      <category>oifcfg</category>
      <category>oracle 19c</category>
      <category>RAC</category>
      <category>SCAN 변경</category>
      <category>srvctl</category>
      <category>VIP 변경</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/505</guid>
      <comments>https://togethergrow.tistory.com/entry/Oracle-19c-RAC-IP-%EB%B3%80%EA%B2%BD-%EB%B0%A9%EB%B2%95-%EC%A0%95%EB%A6%AC#entry505comment</comments>
      <pubDate>Sat, 7 Mar 2026 14:38:48 +0900</pubDate>
    </item>
    <item>
      <title>[ORACLE] ORA-04030&amp;middot;ORA-27000&amp;middot;ORA-27001&amp;middot;ORA-27002 메모리 이슈</title>
      <link>https://togethergrow.tistory.com/entry/ORACLE-ORA-04030%C2%B7ORA-27000%C2%B7ORA-27001%C2%B7ORA-27002-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%9D%B4%EC%8A%88</link>
      <description>&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;ORA-04030·ORA-27000·ORA-27001·ORA-27002 메모리 이슈: 증상부터 복구·재발 방지까지&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;ORA-04030, ORA-27000/27001/27002는 DB 프로세스 메모리 할당 실패와 OS 자원 한계가 겹칠 때 자주 발생합니다. 환경 점검, 1차 조치, 심화 분석, 복구 및 재발 방지 체크리스트를 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;ORA-04030,ORA-27000,ORA-27001,ORA-27002,메모리할당실패,SGA,PGA,ulimit,공유메모리,재발방지&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:locale&quot; content=&quot;ko_KR&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;ORA-04030·ORA-27000·ORA-27001·ORA-27002 메모리 이슈: 증상부터 복구·재발 방지까지&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;메모리 할당 실패는 DB 파라미터뿐 아니라 OS 제한(ulimit, 공유메모리, tmpfs, swap)과 함께 봐야 합니다. 원인·분석·조치를 확장형 매뉴얼로 정리합니다.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://via.placeholder.com/1200x630.png?text=OG+Image+Replace+Me&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;ORA-04030·ORA-27000·ORA-27001·ORA-27002 메모리 이슈&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;DB/OS 메모리 한계가 맞물릴 때 발생하는 대표 오류의 점검·복구·재발 방지 체크리스트.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://via.placeholder.com/1200x630.png?text=OG+Image+Replace+Me&quot; /&gt;

  &lt;style&gt;
    .article-wrap{
      max-width: 900px;
      margin: 0 auto;
      padding: 0 16px;
      line-height: 1.7;
    }
    .article-wrap h1{
      font-size: 1.9rem;
      letter-spacing: -0.02em;
      margin: 0 0 14px;
    }
    .article-wrap .meta{
      font-size: 0.95rem;
      opacity: 0.85;
      margin: 0 0 22px;
    }
    .article-wrap section{ margin: 26px 0; }
    .article-wrap h2{
      font-size: 1.35rem;
      margin: 0 0 10px;
    }
    .article-wrap p{ margin: 10px 0; }
    .article-wrap ul{ margin: 10px 0 10px 18px; }
    .article-wrap li{ margin: 6px 0; }

    .article-wrap .callout{
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 14px;
      padding: 14px 14px;
      margin: 14px 0;
    }
    .article-wrap .callout strong{
      display: inline-block;
      margin-bottom: 6px;
    }

    .article-wrap .grid{
      display: grid;
      grid-template-columns: 1fr;
      gap: 10px;
      margin: 12px 0;
    }
    .article-wrap .card{
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 14px;
      padding: 12px 14px;
    }
    .article-wrap .card .t{ font-weight: 700; margin: 0 0 6px; }
    .article-wrap .card .d{ margin: 0; }

    .article-wrap .checklist{
      border: 1px dashed rgba(0,0,0,0.18);
      border-radius: 14px;
      padding: 14px 14px;
      margin: 14px 0;
    }

    .article-wrap pre{
      overflow: auto;
      padding: 12px 14px;
      border-radius: 14px;
      border: 1px solid rgba(0,0,0,0.12);
      margin: 12px 0;
    }
    .article-wrap code{
      font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace;
      font-size: 0.95em;
    }

    .article-wrap .mini{
      font-size: 0.95rem;
      opacity: 0.9;
    }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;header&gt;
      &lt;h1&gt;ORA-04030·ORA-27000·ORA-27001·ORA-27002 메모리 관련 이슈 (일반오류형 매뉴얼)&lt;/h1&gt;
      &lt;p class=&quot;meta&quot;&gt;구성: 개요 → 환경 → 증상 → 1차 점검 → 심화 분석 → 복구 → 재발 방지&lt;/p&gt;
    &lt;/header&gt;

    &lt;section&gt;
      &lt;h2&gt;개요&lt;/h2&gt;

      &lt;p&gt;
        ORA-04030, ORA-27000, ORA-27001, ORA-27002는 “메모리를 더 할당해야 하는데 실패했다”는 공통 흐름으로 묶이는 경우가 많습니다.
        다만 원인은 DB 내부 메모리(PGA/SGA) 부족뿐 아니라 OS 자원 제한(프로세스 제한, ulimit, 공유메모리, tmpfs, swap, 메모리 단편화)이 함께 작동하면서 발생합니다.
      &lt;/p&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;핵심 관점&lt;/strong&gt;&lt;br&gt;
        1) DB 파라미터만 늘려도 해결되지 않는 케이스가 많습니다.&lt;br&gt;
        2) 같은 “메모리 부족”이라도 &lt;em&gt;누가&lt;/em&gt;(어떤 프로세스/세션), &lt;em&gt;어디에&lt;/em&gt;(PGA/SGA/OS 영역), &lt;em&gt;어떤 순간에&lt;/em&gt;(피크 작업) 실패했는지부터 확정해야 합니다.&lt;br&gt;
        실무 기준으로 보면, “증상 재현 + OS/DB 동시 스냅샷”이 가장 빠른 길입니다.
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;환경&lt;/h2&gt;

      &lt;p class=&quot;mini&quot;&gt;
        아래 항목을 먼저 정리해두면 분석 시간이 크게 줄어듭니다(가능하면 장애 시점/직전 시점 기준).
      &lt;/p&gt;

      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;p class=&quot;t&quot;&gt;DB 측&lt;/p&gt;
          &lt;p class=&quot;d&quot;&gt;버전/패치 레벨, 인스턴스 메모리 모드(AMM/ASMM/수동), SGA/PGA 설정, 동시 접속/배치 스케줄&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;p class=&quot;t&quot;&gt;OS 측&lt;/p&gt;
          &lt;p class=&quot;d&quot;&gt;물리 메모리/스왑, 커널 공유메모리 파라미터, ulimit(프로세스/메모리/오픈파일), /dev/shm(tmpfs) 크기, HugePages 사용 여부&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;p class=&quot;t&quot;&gt;워크로드&lt;/p&gt;
          &lt;p class=&quot;d&quot;&gt;피크 시간대 SQL/리포트/ETL, 정렬·해시·병렬 작업 유무, 세션 폭증 이벤트(배치 중첩/장애 재시도)&lt;/p&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;증상&lt;/h2&gt;

      &lt;p&gt;
        장애 현장에서 자주 보는 패턴은 다음과 같습니다.
      &lt;/p&gt;

      &lt;ul&gt;
        &lt;li&gt;특정 배치/리포트/대량 정렬 작업 중 ORA-04030 발생 후 세션이 연쇄 실패&lt;/li&gt;
        &lt;li&gt;인스턴스 기동/증설 시점에 ORA-27000/27001/27002 계열과 함께 OS 에러 메시지가 동반&lt;/li&gt;
        &lt;li&gt;메모리 여유가 “있어 보이는데”도 특정 순간에만 실패(단편화, 공유메모리 한도, tmpfs 부족)&lt;/li&gt;
      &lt;/ul&gt;

      &lt;p class=&quot;mini&quot;&gt;예시 로그 형태(환경에 따라 문구는 달라질 수 있습니다):&lt;/p&gt;
      &lt;pre&gt;&lt;code&gt;ORA-04030: out of process memory when trying to allocate ...
ORA-27000: OS system dependent operation: ... failed with status: ...
ORA-27001: OS system dependent operation: ... failed
ORA-27002: out of memory
Linux-x86_64 Error: 12: Cannot allocate memory&lt;/code&gt;&lt;/pre&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;1차 점검&lt;/h2&gt;

      &lt;div class=&quot;checklist&quot;&gt;
        &lt;strong&gt;장애 즉시 확인(10~15분 내 가능)&lt;/strong&gt;&lt;br&gt;
        1) OS 메모리/스왑 여유: 급격한 스왑 인/아웃 또는 OOM 흔적이 있는지 확인&lt;br&gt;
        2) /dev/shm(tmpfs) 사용량: 공유 메모리/AMM 사용 시 특히 영향&lt;br&gt;
        3) ulimit 확인: 프로세스 메모리/가상메모리 제한, 오픈 파일 제한, 프로세스 수 제한&lt;br&gt;
        4) DB 동시성 급증: 세션/프로세스 폭증 여부(연결 폭주, 배치 중첩, 재시도 루프)&lt;br&gt;
        5) 최근 변경사항: 패치/파라미터 변경/배치 스케줄 변경/리소스 그룹 정책 변경
      &lt;/div&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;즉시 완화(서비스 영향 최소화)&lt;/strong&gt;&lt;br&gt;
        - 우선순위 낮은 배치/리포트 중지 또는 동시 실행 제한&lt;br&gt;
        - 메모리 급증 SQL(대량 정렬/해시) 임시 제어(작업 분할, 병렬 축소, 피크 시간 회피)&lt;br&gt;
        - 서버 메모리 고갈/스왑 폭증이면 “증상만” 막기 위해 재기동을 선택하는 경우도 있으나,&lt;br&gt;
        재발 방지를 위해 재기동 전후 스냅샷(메모리/ulimit/파라미터/세션)을 반드시 남겨야 합니다.
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;심화 분석&lt;/h2&gt;

      &lt;p&gt;
        1차 점검에서 “진짜 병목 지점”이 어디인지 가닥을 잡았다면, 아래 순서로 범위를 좁힙니다.
      &lt;/p&gt;

      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;p class=&quot;t&quot;&gt;A. 프로세스 메모리(PGA) 급증형&lt;/p&gt;
          &lt;p class=&quot;d&quot;&gt;
            정렬(sort), 해시 조인(hash join), 병렬 실행, 대량 집계에서 세션당 PGA가 폭증해 ORA-04030이 발생하는 유형입니다.&lt;br&gt;
            확인 포인트: 피크 시간대 대용량 작업/임시 작업 증가, 동시 실행 수, 세션별 메모리 사용 추이.
          &lt;/p&gt;
        &lt;/div&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;p class=&quot;t&quot;&gt;B. 인스턴스/공유 메모리(SGA·/dev/shm) 제약형&lt;/p&gt;
          &lt;p class=&quot;d&quot;&gt;
            기동 또는 메모리 확장 시점에 공유 메모리 확보가 실패하며 ORA-27000~27002가 동반되는 유형입니다.&lt;br&gt;
            확인 포인트: /dev/shm 크기 부족, 공유메모리 커널 한도, HugePages 구성, 메모리 단편화.
          &lt;/p&gt;
        &lt;/div&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;p class=&quot;t&quot;&gt;C. OS 제한(ulimit·프로세스·가상메모리) 트리거형&lt;/p&gt;
          &lt;p class=&quot;d&quot;&gt;
            물리 메모리는 남아도 “정책/제한” 때문에 할당이 막히는 유형입니다.&lt;br&gt;
            확인 포인트: 서비스 계정의 ulimit, systemd/컨테이너 제한, 프로세스 수/메모리 락(lock) 제한.
          &lt;/p&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;분석 팁(운영 환경 기준)&lt;/strong&gt;&lt;br&gt;
        - “메모리 여유가 있었는데 왜 실패했나?”는 단편화, 연속 메모리 요구, tmpfs 제한, HugePages/락 정책에서 답이 나오는 경우가 많습니다.&lt;br&gt;
        - 관리자 입장에서 가장 위험한 오해는 “DB 파라미터만 키우면 해결”이라고 단정하는 것입니다.
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;복구&lt;/h2&gt;

      &lt;p&gt;
        복구는 “원인 유형”에 맞춰 접근해야 합니다. 아래는 현장에서 자주 쓰는 조치들을 유형별로 묶은 것입니다.
      &lt;/p&gt;

      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;p class=&quot;t&quot;&gt;1) PGA 급증형 복구&lt;/p&gt;
          &lt;p class=&quot;d&quot;&gt;
            - 피크 작업 동시 실행 제한(배치 스케줄 분산, 큐잉 적용)&lt;br&gt;
            - 메모리 집약 SQL 튜닝(불필요한 정렬 제거, 인덱스/조인 전략 개선, 작업 분할)&lt;br&gt;
            - PGA 관련 목표치/상한을 운영 정책에 맞게 재조정(급격한 메모리 경쟁 완화)&lt;br&gt;
            - 병렬도(parallel) 과다 사용 시 축소 또는 시간대 분리
          &lt;/p&gt;
        &lt;/div&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;p class=&quot;t&quot;&gt;2) SGA·공유메모리 제약형 복구&lt;/p&gt;
          &lt;p class=&quot;d&quot;&gt;
            - /dev/shm(tmpfs) 크기 및 사용량 점검(AMM/공유메모리 의존 시 필수)&lt;br&gt;
            - HugePages 사용 시 페이지 수/락 정책 확인(설정 불일치 시 기동 실패 가능)&lt;br&gt;
            - 공유메모리 관련 커널 파라미터 및 OS 정책 재점검&lt;br&gt;
            - SGA 확장/변경이 원인이면 변경 전 설정으로 롤백 후 단계적 증설
          &lt;/p&gt;
        &lt;/div&gt;

        &lt;div class=&quot;card&quot;&gt;
          &lt;p class=&quot;t&quot;&gt;3) ulimit·정책 제한형 복구&lt;/p&gt;
          &lt;p class=&quot;d&quot;&gt;
            - DB 서비스 계정의 ulimit(가상메모리, memlock, 프로세스 수, 오픈 파일) 상향 조정&lt;br&gt;
            - systemd 서비스 유닛/컨테이너 리소스 제한(메모리/프로세스) 확인 및 수정&lt;br&gt;
            - 보안 정책(rlimits) 변경 시 재기동이 필요한 항목이 있는지 확인
          &lt;/p&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;주의&lt;/strong&gt;&lt;br&gt;
        “즉시 복구”를 위해 메모리를 크게 늘리는 조치는, 다른 워크로드를 압박해 더 큰 장애를 만들 수 있습니다.&lt;br&gt;
        실제 사용 시에는 DB/OS 전체 여유와 피크 패턴을 함께 보고 단계적으로 조정하는 것이 안전합니다.
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;재발 방지&lt;/h2&gt;

      &lt;div class=&quot;checklist&quot;&gt;
        &lt;strong&gt;재발 방지 체크리스트(운영 표준화)&lt;/strong&gt;&lt;br&gt;
        1) 피크 작업 관리: 배치 동시성 제한, 대용량 리포트 시간 분리, 재시도 정책(무한 재시도 금지)&lt;br&gt;
        2) 모니터링: 세션/프로세스 수, 정렬·임시 작업 증가, 스왑/oom 징후, /dev/shm 사용량 상시 관찰&lt;br&gt;
        3) 변경관리: 메모리 파라미터/OS 커널/ulimit 변경은 사전 검증(부하 테스트) 후 반영&lt;br&gt;
        4) 가드레일: 서비스 계정 ulimit 표준값 템플릿, systemd/컨테이너 리소스 제한 문서화&lt;br&gt;
        5) 장애 재현: 동일 SQL/배치로 재현 환경에서 메모리 사용 패턴을 수치로 확보(“감”이 아니라 데이터로 결론)
      &lt;/div&gt;

      &lt;p class=&quot;mini&quot;&gt;
        결론적으로 ORA-04030, ORA-27000/27001/27002는 단일 원인이라기보다 “DB 메모리 사용 패턴 + OS 자원 한계 + 동시성”의 조합으로 발생하는 경우가 많습니다.
        운영 환경에서는 스냅샷 기반으로 원인 유형을 먼저 확정한 뒤, 해당 레이어(DB/OS/워크로드)에 맞춘 조치를 적용하는 것이 가장 재발률이 낮습니다.
      &lt;/p&gt;
    &lt;/section&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;@id&quot;: &quot;https://example.com/#breadcrumb&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;홈&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;DB 오류 대응&quot;,
              &quot;item&quot;: &quot;https://example.com/db-errors/&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;TechArticle&quot;,
          &quot;@id&quot;: &quot;https://example.com/db-errors/ora-04030-27000-memory#article&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/db-errors/ora-04030-27000-memory&quot;
          },
          &quot;headline&quot;: &quot;ORA-04030·ORA-27000·ORA-27001·ORA-27002 메모리 관련 이슈: 증상부터 복구·재발 방지까지&quot;,
          &quot;description&quot;: &quot;ORA-04030, ORA-27000/27001/27002는 DB 프로세스 메모리 할당 실패와 OS 자원 한계가 겹칠 때 자주 발생합니다. 환경 점검, 1차 조치, 심화 분석, 복구 및 재발 방지 체크리스트를 정리합니다.&quot;,
          &quot;image&quot;: [
            &quot;https://via.placeholder.com/1200x630.png?text=OG+Image+Replace+Me&quot;
          ],
          &quot;inLanguage&quot;: &quot;ko-KR&quot;
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>지식 공유/DBMS</category>
      <category>ORA-04030</category>
      <category>ORA-27000</category>
      <category>ORA-27001</category>
      <category>ORA-27002</category>
      <category>PGA</category>
      <category>SGA</category>
      <category>ulimit</category>
      <category>공유메모리</category>
      <category>메모리할당실패</category>
      <category>재발방지</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/504</guid>
      <comments>https://togethergrow.tistory.com/entry/ORACLE-ORA-04030%C2%B7ORA-27000%C2%B7ORA-27001%C2%B7ORA-27002-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%9D%B4%EC%8A%88#entry504comment</comments>
      <pubDate>Wed, 4 Mar 2026 20:37:07 +0900</pubDate>
    </item>
    <item>
      <title>삼성 스마트TV 시청 데이터 수집 중단: 텍사스 합의로 &amp;lsquo;명시적 동의&amp;rsquo; 체계 전환</title>
      <link>https://togethergrow.tistory.com/entry/%EC%82%BC%EC%84%B1-%EC%8A%A4%EB%A7%88%ED%8A%B8TV-%EC%8B%9C%EC%B2%AD-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%88%98%EC%A7%91-%EC%A4%91%EB%8B%A8-%ED%85%8D%EC%82%AC%EC%8A%A4-%ED%95%A9%EC%9D%98%EB%A1%9C-%E2%80%98%EB%AA%85%EC%8B%9C%EC%A0%81-%EB%8F%99%EC%9D%98%E2%80%99-%EC%B2%B4%EA%B3%84-%EC%A0%84%ED%99%98</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ChatGPT Image 2026년 3월 4일 오후 08_31_37.png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tujjf/dJMcahjhoZv/uU2UUZlV5WclXRsyJYjLR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tujjf/dJMcahjhoZv/uU2UUZlV5WclXRsyJYjLR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tujjf/dJMcahjhoZv/uU2UUZlV5WclXRsyJYjLR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ftujjf%2FdJMcahjhoZv%2FuU2UUZlV5WclXRsyJYjLR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;삼성전자가 텍사스주와 합의하며 스마트TV ACR 기반 시청 데이터의 자동 수집&amp;middot;처리를 &amp;lsquo;명시적 동의&amp;rsquo; 없이는 중단하기로 했습니다. 다크 패턴 논란, 동의 화면 개선, 정책 변화의 의미를 정리합니다&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;1024&quot; data-filename=&quot;ChatGPT Image 2026년 3월 4일 오후 08_31_37.png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;삼성 스마트TV 시청 데이터 수집 중단: 텍사스 합의로 ‘명시적 동의’ 체계 전환&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;삼성전자가 텍사스주와 합의하며 스마트TV ACR 기반 시청 데이터의 자동 수집·처리를 ‘명시적 동의’ 없이는 중단하기로 했습니다. 다크 패턴 논란, 동의 화면 개선, 정책 변화의 의미를 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;삼성전자,스마트TV,ACR,시청데이터,명시적동의,개인정보보호,다크패턴,텍사스,맞춤형광고,프라이버시&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:locale&quot; content=&quot;ko_KR&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;삼성 스마트TV 시청 데이터 수집 중단: 텍사스 합의로 ‘명시적 동의’ 체계 전환&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;텍사스 합의로 삼성 스마트TV의 ACR 기반 시청 데이터 수집이 ‘명시적 동의’ 중심으로 전환됩니다. 논란의 배경과 산업 영향까지 정리합니다.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://via.placeholder.com/1200x630.png?text=OG+Image+Replace+Me&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;삼성 스마트TV 시청 데이터 수집 중단: 텍사스 합의로 ‘명시적 동의’ 체계 전환&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;삼성전자가 텍사스주와 합의하며 ACR 기반 시청 데이터 수집·처리를 명시적 동의 중심으로 바꿉니다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://via.placeholder.com/1200x630.png?text=OG+Image+Replace+Me&quot; /&gt;

  &lt;style&gt;
    .article-wrap{
      max-width: 860px;
      margin: 0 auto;
      padding: 0 16px;
      line-height: 1.7;
    }
    .article-wrap h1{
      font-size: 1.9rem;
      letter-spacing: -0.02em;
      margin: 0 0 14px;
    }
    .article-wrap .meta{
      font-size: 0.95rem;
      opacity: 0.82;
      margin: 0 0 22px;
    }
    .article-wrap section{
      margin: 26px 0;
    }
    .article-wrap h2{
      font-size: 1.35rem;
      margin: 0 0 10px;
    }
    .article-wrap p{
      margin: 10px 0;
    }
    .article-wrap ul{
      margin: 10px 0 10px 18px;
    }
    .article-wrap li{
      margin: 6px 0;
    }
    .article-wrap .callout{
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 14px;
      padding: 14px 14px;
      margin: 14px 0;
    }
    .article-wrap .callout strong{
      display: inline-block;
      margin-bottom: 6px;
    }
    .article-wrap .mini{
      font-size: 0.95rem;
      opacity: 0.9;
    }
    .article-wrap .grid{
      display: grid;
      grid-template-columns: 1fr;
      gap: 10px;
      margin: 12px 0;
    }
    .article-wrap .card{
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 14px;
      padding: 12px 14px;
    }
    .article-wrap .card .t{
      font-weight: 700;
      margin: 0 0 6px;
    }
    .article-wrap .card .d{
      margin: 0;
    }
    .article-wrap .checklist{
      border: 1px dashed rgba(0,0,0,0.18);
      border-radius: 14px;
      padding: 14px 14px;
      margin: 14px 0;
    }
    .article-wrap pre{
      overflow: auto;
      padding: 12px 14px;
      border-radius: 14px;
      border: 1px solid rgba(0,0,0,0.12);
      margin: 12px 0;
    }
    .article-wrap code{
      font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace;
      font-size: 0.95em;
    }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;header&gt;
      &lt;h1&gt;삼성 스마트TV 시청 데이터 수집 중단: 텍사스 합의로 ‘명시적 동의’ 체계 전환&lt;/h1&gt;
      &lt;p class=&quot;meta&quot;&gt;핵심 키워드: ACR · 시청 데이터 · 명시적 동의 · 다크 패턴 · 개인정보 보호&lt;/p&gt;
    &lt;/header&gt;

    &lt;section&gt;
      &lt;h2&gt;무슨 일이 있었나&lt;/h2&gt;

      &lt;p&gt;
        미국 텍사스주와 삼성전자가 스마트TV 시청 데이터 수집을 둘러싼 분쟁에서 합의에 도달했습니다.
        합의의 핵심은 단순합니다. &lt;strong&gt;텍사스 주민의 ‘명시적 동의’ 없이 ACR 기반 시청 데이터 수집·처리를 중단&lt;/strong&gt;한다는 것입니다.
      &lt;/p&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;이번 합의가 던지는 메시지&lt;/strong&gt;&lt;br&gt;
        “기본값 수집 + 뒤늦은 안내” 방식은 더 이상 안전하지 않습니다.&lt;br&gt;
        사용자 동의는 ‘형식’이 아니라 ‘이해 가능성’까지 포함한 설계 문제로 다뤄지고 있습니다.
      &lt;/div&gt;

      &lt;p class=&quot;mini&quot;&gt;
        쟁점은 자동 콘텐츠 인식(ACR) 기술이 TV 화면의 영상/음성 정보를 식별해 어떤 콘텐츠를 시청했는지 파악하고,
        그 결과를 맞춤형 광고 등으로 활용할 수 있는 구조라는 점입니다.
      &lt;/p&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;ACR(자동 콘텐츠 인식) 이해하기&lt;/h2&gt;

      &lt;p&gt;
        ACR은 화면에 표시되는 영상 또는 오디오 특징을 분석해 프로그램/콘텐츠를 식별하는 기술입니다.
        구현 방식은 다양할 수 있지만, 소송 내용에서는 &lt;strong&gt;화면 일부 캡처&lt;/strong&gt; 또는 &lt;strong&gt;오디오 분석&lt;/strong&gt; 등으로
        시청 프로그램을 식별하고 활용하는 방식이 문제로 지적됐습니다.
      &lt;/p&gt;

      &lt;div class=&quot;grid&quot;&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;p class=&quot;t&quot;&gt;수집되는 정보의 성격&lt;/p&gt;
          &lt;p class=&quot;d&quot;&gt;단순 기기 정보가 아니라, 개인의 취향·생활 패턴을 추정할 수 있는 시청 행태 데이터&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;p class=&quot;t&quot;&gt;주요 위험&lt;/p&gt;
          &lt;p class=&quot;d&quot;&gt;가정(거실)이라는 사적 공간에서의 행동 데이터가 광고·분석 체계로 편입될 가능성&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;p class=&quot;t&quot;&gt;핵심 논점&lt;/p&gt;
          &lt;p class=&quot;d&quot;&gt;‘충분히 명확한 사전 동의’가 있었는가, 사용자가 이해하기 쉬웠는가&lt;/p&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;법적 쟁점: 동의의 부재와 ‘다크 패턴’ 가능성&lt;/h2&gt;

      &lt;p&gt;
        텍사스주는 TV 제조사들이 ACR로 시청 정보를 수집·분석하면서
        사전에 충분하고 명확한 동의를 받지 않았다고 주장했습니다.
        법원은 초기 절차에서 “위법 행위가 있었을 상당한 이유”가 있다고 보며,
        삼성전자를 상대로 임시 금지명령을 내린 바 있습니다(이후 해제).
      &lt;/p&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;다크 패턴(dark pattern)이란&lt;/strong&gt;&lt;br&gt;
        사용자가 개인정보 처리 내용을 제대로 이해하기 어렵게 만들거나,&lt;br&gt;
        거부/설정 변경을 불리하게 설계해 사실상 동의를 유도하는 UI/흐름을 의미합니다.&lt;br&gt;
        운영 환경에서는 “약관 링크 제공”만으로는 방어가 어려울 수 있습니다.
      &lt;/div&gt;

      &lt;p class=&quot;mini&quot;&gt;
        텍사스주는 해당 행위가 기만적 상거래 금지법(DTPA) 위반이라고 봤고,
        삼성전자는 VIS(시청 정보 서비스)가 규정을 위반하지 않았다는 입장을 유지하면서도
        고지 방식과 동의 절차를 개선하기로 했습니다.
      &lt;/p&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;합의 내용의 실무 포인트&lt;/h2&gt;

      &lt;p&gt;
        합의 이후 삼성전자는 텍사스 내에서 ACR 기반 시청 데이터 수집·처리를 위해
        &lt;strong&gt;명확하고 눈에 잘 띄는 동의 화면&lt;/strong&gt;을 제공해야 하며,
        스마트TV 소프트웨어를 신속히 업데이트해 사용자가 &lt;strong&gt;수집 여부와 활용 방식&lt;/strong&gt;을 이해한 뒤 선택할 수 있게 해야 합니다.
        개인정보 처리방침도 보다 구체적이고 이해하기 쉬운 형태로 개정될 예정입니다.
      &lt;/p&gt;

      &lt;div class=&quot;checklist&quot;&gt;
        &lt;strong&gt;기업/제품팀이 바로 적용 가능한 체크&lt;/strong&gt;&lt;br&gt;
        1) ‘명시적 동의’는 옵트아웃이 아니라 옵트인 중심인지 점검하기&lt;br&gt;
        2) 동의 화면에서 “무엇을/어떻게/왜”를 한 화면에서 이해 가능하게 설계하기&lt;br&gt;
        3) 거부/철회/설정 변경 경로를 같은 난이도로 제공하기(숨김 금지)&lt;br&gt;
        4) 업데이트 이후에도 로그/정책/화면이 일치하는지 정합성 테스트하기
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;산업 영향: 다른 제조사에도 확산될까&lt;/h2&gt;

      &lt;p&gt;
        이번 소송에는 삼성전자 외에도 소니, LG전자, 하이센스, TCL 등이 포함된 것으로 알려졌습니다.
        텍사스 법무장관은 다른 제조사들도 동일 수준의 조치를 취해야 한다고 강조했습니다.
        아직까지 다른 업체들이 유사한 정책 변경을 공식적으로 발표했다는 내용은 확인되지 않았다는 점도 함께 언급됐습니다.
      &lt;/p&gt;

      &lt;p&gt;
        다만 흐름 자체는 분명합니다. 스마트TV는 인터넷 연결 가전이라는 점에서 일반 IT 서비스와 유사한 개인정보 책임이 따르고,
        특히 시청 행태 데이터는 민감한 추정이 가능해 &lt;strong&gt;동의 절차의 명확성&lt;/strong&gt;이 핵심 통제로 부상하고 있습니다.
      &lt;/p&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;사이버보안 관점에서 보는 ‘동의 설계’&lt;/h2&gt;

      &lt;p&gt;
        사용자 동의는 단순히 버튼 하나로 끝나는 문제가 아닙니다.
        어떤 데이터가, 어떤 방식으로, 어떤 목적으로 사용되는지 구체적으로 설명되고,
        사용자가 쉽게 설정을 바꿀 수 있어야 실질적인 통제가 됩니다.
      &lt;/p&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;실제 사용 시 가장 중요한 기준&lt;/strong&gt;&lt;br&gt;
        동의 화면이 법무 문서가 아니라 사용자 인터페이스로서 ‘이해 가능’해야 합니다.&lt;br&gt;
        실무 기준으로 보면, 동의 UX는 보안 통제의 일부이며 설계 결함은 리스크로 직결됩니다.
      &lt;/div&gt;

      &lt;p class=&quot;mini&quot;&gt;
        이번 합의는 “광고 기술과 개인정보 보호의 경계”를 다시 묻는 사례로,
        스마트TV 산업 전반의 개인정보 처리 관행에 영향을 줄 수 있는 선례가 될 가능성이 있습니다.
      &lt;/p&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;정리&lt;/h2&gt;

      &lt;p&gt;
        삼성전자의 텍사스 합의는 ACR 기반 시청 데이터 처리에 대해
        &lt;strong&gt;명시적 동의 중심 체계&lt;/strong&gt;로 방향을 명확히 했다는 점에서 의미가 큽니다.
        앞으로는 “수집 사실을 고지했다”는 수준을 넘어, 사용자가 실제로 이해하고 선택할 수 있게 만드는 설계가 요구될 것입니다.
      &lt;/p&gt;
    &lt;/section&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;@id&quot;: &quot;https://example.com/#breadcrumb&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;홈&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;프라이버시&quot;,
              &quot;item&quot;: &quot;https://example.com/privacy/&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;BlogPosting&quot;,
          &quot;@id&quot;: &quot;https://example.com/privacy/samsung-tv-acr-texas#post&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/privacy/samsung-tv-acr-texas&quot;
          },
          &quot;headline&quot;: &quot;삼성 스마트TV 시청 데이터 수집 중단: 텍사스 합의로 ‘명시적 동의’ 체계 전환&quot;,
          &quot;description&quot;: &quot;삼성전자가 텍사스주와 합의하며 스마트TV ACR 기반 시청 데이터의 자동 수집·처리를 ‘명시적 동의’ 없이는 중단하기로 했습니다. 다크 패턴 논란, 동의 화면 개선, 정책 변화의 의미를 정리합니다.&quot;,
          &quot;image&quot;: [
            &quot;https://via.placeholder.com/1200x630.png?text=OG+Image+Replace+Me&quot;
          ],
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;isPartOf&quot;: {
            &quot;@type&quot;: &quot;Blog&quot;,
            &quot;@id&quot;: &quot;https://example.com/#blog&quot;,
            &quot;name&quot;: &quot;Blog&quot;
          }
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>IT 소식 뉴스/IT 소식</category>
      <category>ACR</category>
      <category>개인정보보호</category>
      <category>다크패턴</category>
      <category>맞춤형광고</category>
      <category>명시적동의</category>
      <category>삼성전자</category>
      <category>스마트TV</category>
      <category>시청데이터</category>
      <category>텍사스</category>
      <category>프라이버시</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/503</guid>
      <comments>https://togethergrow.tistory.com/entry/%EC%82%BC%EC%84%B1-%EC%8A%A4%EB%A7%88%ED%8A%B8TV-%EC%8B%9C%EC%B2%AD-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%88%98%EC%A7%91-%EC%A4%91%EB%8B%A8-%ED%85%8D%EC%82%AC%EC%8A%A4-%ED%95%A9%EC%9D%98%EB%A1%9C-%E2%80%98%EB%AA%85%EC%8B%9C%EC%A0%81-%EB%8F%99%EC%9D%98%E2%80%99-%EC%B2%B4%EA%B3%84-%EC%A0%84%ED%99%98#entry503comment</comments>
      <pubDate>Wed, 4 Mar 2026 20:32:03 +0900</pubDate>
    </item>
    <item>
      <title>망분리도 안전지대가 아니다: 구조적 취약점 우회 공격 3가지 시나리오 정리</title>
      <link>https://togethergrow.tistory.com/entry/%EB%A7%9D%EB%B6%84%EB%A6%AC%EB%8F%84-%EC%95%88%EC%A0%84%EC%A7%80%EB%8C%80%EA%B0%80-%EC%95%84%EB%8B%88%EB%8B%A4-%EA%B5%AC%EC%A1%B0%EC%A0%81-%EC%B7%A8%EC%95%BD%EC%A0%90-%EC%9A%B0%ED%9A%8C-%EA%B3%B5%EA%B2%A9-3%EA%B0%80%EC%A7%80-%EC%8B%9C%EB%82%98%EB%A6%AC%EC%98%A4-%EC%A0%95%EB%A6%AC</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ChatGPT Image 2026년 3월 4일 오후 08_25_25.png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wXsoN/dJMcad2ajnZ/6EjTPxuFLhm7tJRQ6wG4L1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wXsoN/dJMcad2ajnZ/6EjTPxuFLhm7tJRQ6wG4L1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wXsoN/dJMcad2ajnZ/6EjTPxuFLhm7tJRQ6wG4L1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwXsoN%2FdJMcad2ajnZ%2F6EjTPxuFLhm7tJRQ6wG4L1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;망분리 환경에서도 내부&amp;middot;외부 취약점이 연결되는 순간 방어 체계가 무력화될 수 있습니다. 금융권 관점에서 공개된 3가지 공격 시나리오와 선제 대응 포인트를 정리합니다&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;1024&quot; data-filename=&quot;ChatGPT Image 2026년 3월 4일 오후 08_25_25.png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;!doctype html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;utf-8&quot; /&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;

  &lt;title&gt;망분리도 안전지대가 아니다: 구조적 취약점 우회 공격 3가지 시나리오 정리&lt;/title&gt;
  &lt;meta name=&quot;description&quot; content=&quot;망분리 환경에서도 내부·외부 취약점이 연결되는 순간 방어 체계가 무력화될 수 있습니다. 금융권 관점에서 공개된 3가지 공격 시나리오와 선제 대응 포인트를 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;keywords&quot; content=&quot;망분리,금융보안원,레드팀,모의해킹,취약점관리,접근제어솔루션,권한탈취,클라우드보안,인증토큰,데이터유출&quot; /&gt;

  &lt;meta name=&quot;robots&quot; content=&quot;index,follow,max-image-preview:large&quot; /&gt;

  &lt;meta property=&quot;og:type&quot; content=&quot;article&quot; /&gt;
  &lt;meta property=&quot;og:locale&quot; content=&quot;ko_KR&quot; /&gt;
  &lt;meta property=&quot;og:title&quot; content=&quot;망분리도 안전지대가 아니다: 구조적 취약점 우회 공격 3가지 시나리오 정리&quot; /&gt;
  &lt;meta property=&quot;og:description&quot; content=&quot;망분리 환경에서도 내부·외부 취약점이 연결되는 순간 방어 체계가 무력화될 수 있습니다. 공개된 3가지 시나리오와 선제 대응 포인트를 정리합니다.&quot; /&gt;
  &lt;meta property=&quot;og:image&quot; content=&quot;https://via.placeholder.com/1200x630.png?text=OG+Image+Replace+Me&quot; /&gt;

  &lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot; /&gt;
  &lt;meta name=&quot;twitter:title&quot; content=&quot;망분리도 안전지대가 아니다: 구조적 취약점 우회 공격 3가지 시나리오 정리&quot; /&gt;
  &lt;meta name=&quot;twitter:description&quot; content=&quot;망분리 환경에서도 취약점이 연결되는 순간 우회 공격이 가능해집니다. 3가지 시나리오와 대응 포인트를 정리합니다.&quot; /&gt;
  &lt;meta name=&quot;twitter:image&quot; content=&quot;https://via.placeholder.com/1200x630.png?text=OG+Image+Replace+Me&quot; /&gt;

  &lt;style&gt;
    .article-wrap{
      max-width: 860px;
      margin: 0 auto;
      padding: 0 16px;
      line-height: 1.7;
    }
    .article-wrap h1{
      font-size: 1.9rem;
      letter-spacing: -0.02em;
      margin: 0 0 14px;
    }
    .article-wrap .meta{
      font-size: 0.95rem;
      opacity: 0.8;
      margin: 0 0 22px;
    }
    .article-wrap section{
      margin: 26px 0;
    }
    .article-wrap h2{
      font-size: 1.35rem;
      margin: 0 0 10px;
    }
    .article-wrap p{
      margin: 10px 0;
    }
    .article-wrap ul{
      margin: 10px 0 10px 18px;
    }
    .article-wrap li{
      margin: 6px 0;
    }
    .article-wrap .callout{
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 14px;
      padding: 14px 14px;
      margin: 14px 0;
    }
    .article-wrap .callout strong{
      display: inline-block;
      margin-bottom: 6px;
    }
    .article-wrap .mini{
      font-size: 0.95rem;
      opacity: 0.9;
    }
    .article-wrap .kpi{
      display: grid;
      grid-template-columns: 1fr;
      gap: 10px;
      margin: 12px 0;
    }
    .article-wrap .kpi .card{
      border: 1px solid rgba(0,0,0,0.12);
      border-radius: 14px;
      padding: 12px 14px;
    }
    .article-wrap .kpi .card .t{
      font-weight: 700;
      margin: 0 0 6px;
    }
    .article-wrap .kpi .card .d{
      margin: 0;
    }
    .article-wrap .checklist{
      border: 1px dashed rgba(0,0,0,0.18);
      border-radius: 14px;
      padding: 14px 14px;
    }
    .article-wrap pre{
      overflow: auto;
      padding: 12px 14px;
      border-radius: 14px;
      border: 1px solid rgba(0,0,0,0.12);
      margin: 12px 0;
    }
    .article-wrap code{
      font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, monospace;
      font-size: 0.95em;
    }
  &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
  &lt;main class=&quot;article-wrap&quot;&gt;
    &lt;header&gt;
      &lt;h1&gt;망분리도 안전지대가 아니다: 구조적 취약점 우회 공격 3가지 시나리오 정리&lt;/h1&gt;
      &lt;p class=&quot;meta&quot;&gt;핵심 키워드: 망분리 · 구조적 취약점 · 우회 공격 · 레드팀 모의해킹&lt;/p&gt;
    &lt;/header&gt;

    &lt;section&gt;
      &lt;h2&gt;왜 지금 ‘망분리’가 다시 이슈인가&lt;/h2&gt;

      &lt;p&gt;
        금융권에서 널리 쓰이는 망분리는 “내부망과 외부망을 분리하면 안전하다”는 직관을 제공합니다.
        하지만 실제 공격은 한 지점의 취약점만으로 끝나지 않습니다. 서로 다른 구간의 약점이 체인처럼 연결되는 순간,
        분리되어 있던 경계가 사실상 우회 통로로 바뀔 수 있습니다.
      &lt;/p&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;핵심 메시지&lt;/strong&gt;&lt;br&gt;
        망분리 환경이라도 내부·외부의 취약점이 이어지면 ‘일식(Eclipse)’처럼 방어 사각지대가 드러날 수 있습니다.&lt;br&gt;
        실무 기준으로 보면, “망분리니까 괜찮다”는 가정 자체가 점검 항목이 되어야 합니다.
      &lt;/div&gt;

      &lt;p class=&quot;mini&quot;&gt;
        금융보안원 레드팀(RED IRIS)이 공격자 관점에서 망분리 환경을 분석하고 현실적인 침투 경로를 정리한 인사이트 리포트에서,
        내부 데이터 유출·업무망 침투·클라우드 경유 유출로 이어질 수 있는 시나리오를 공개했습니다.
      &lt;/p&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;공격 시나리오 3가지 한눈에 보기&lt;/h2&gt;

      &lt;div class=&quot;kpi&quot;&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;p class=&quot;t&quot;&gt;1) 내부 데이터 유출 (Operation Egress Chain)&lt;/p&gt;
          &lt;p class=&quot;d&quot;&gt;내부 PC/서버 장악 → 관리 취약점 악용 → 관리자 권한 탈취 → 외부 연결 허용 시스템을 이용해 은밀 유출&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;p class=&quot;t&quot;&gt;2) 업무망 침투 (Operation Ingress Chain)&lt;/p&gt;
          &lt;p class=&quot;d&quot;&gt;대외 공개 서버 취약점 → 서버 장악 → 연결 시스템을 발판으로 업무망 터널 구축 → 관리 권한 확보 후 다수 서버 제어&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;card&quot;&gt;
          &lt;p class=&quot;t&quot;&gt;3) 클라우드 경유 유출 (Operation Pivot Net)&lt;/p&gt;
          &lt;p class=&quot;d&quot;&gt;직원 PC 해킹 → 클라우드 자격증명(토큰 등) 탈취 → 클라우드 장악 → 업무망→클라우드 경로로 외부 유출&lt;/p&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;p&gt;
        공통점은 명확합니다. 망분리의 “경계”를 정면으로 뚫기보다,
        경계 주변에 존재하는 &lt;strong&gt;관리·운영·연결 지점&lt;/strong&gt;을 연결해 우회한다는 점입니다.
      &lt;/p&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;시나리오 1: 내부 데이터 유출(관리 취약점 체인)&lt;/h2&gt;

      &lt;p&gt;
        내부 단말이나 취약한 서버를 먼저 장악한 뒤, 여러 서버를 관리하는 접근제어/관리 솔루션의 관리 취약점을 노려
        관리자 권한을 확보하는 방식입니다. 이후 외부 통신이 일부 허용된 시스템(예: 메일 서버 등)을 은밀한 유출 통로로 활용할 수 있습니다.
      &lt;/p&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;관리자 입장에서 놓치기 쉬운 포인트&lt;/strong&gt;&lt;br&gt;
        “보안 솔루션을 도입했다”는 사실이 안전을 의미하지 않습니다.&lt;br&gt;
        관리 콘솔/에이전트/정책 배포 경로가 취약하면, 그 솔루션이 오히려 권한 상승의 발판이 됩니다.
      &lt;/div&gt;

      &lt;ul&gt;
        &lt;li&gt;접근제어 솔루션: 관리 인터페이스 접근 통제(대상/시간/행위), MFA 적용 여부&lt;/li&gt;
        &lt;li&gt;관리 계정: 최소권한, 계정 분리, 세션 기록/감사 로그 위변조 방지&lt;/li&gt;
        &lt;li&gt;유출 경로: 외부 통신 허용 시스템의 데이터 흐름 점검(메일/업데이트/연계 서버 등)&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;시나리오 2: 업무망 침투(대외 시스템 → 내부 이동)&lt;/h2&gt;

      &lt;p&gt;
        외부에서 접근 가능한 홈페이지/대외 시스템의 취약점을 이용해 서버를 장악한 뒤,
        해당 서버와 연결된 내부 시스템을 통해 업무망 내부로 이동하는 터널을 구축합니다.
        이후 업무망 관리 시스템 권한을 얻는다면, 내부 다수 서버를 제어할 수 있어 망분리 자체가 사실상 무력화될 수 있습니다.
      &lt;/p&gt;

      &lt;div class=&quot;checklist&quot;&gt;
        &lt;strong&gt;선제 점검 체크리스트&lt;/strong&gt;&lt;br&gt;
        1) 대외 서버의 취약점 패치/구성 점검이 “내부망 보안”과 직결되는지 인식하기&lt;br&gt;
        2) 대외→내부 연계 구간의 허용 포트/프로토콜을 최소화하고 예외를 문서화하기&lt;br&gt;
        3) 내부 이동(레터럴 무브먼트) 탐지: 비정상 터널링/세션 급증/관리 도구 오남용 지표를 탐지하기
      &lt;/div&gt;

      &lt;p class=&quot;mini&quot;&gt;
        특히 “연계 서버는 원래 연결돼 있으니 어쩔 수 없다”는 전제가 가장 위험합니다.
        연결이 불가피하다면, &lt;strong&gt;연결의 형태와 범위를 통제&lt;/strong&gt;하고 &lt;strong&gt;행위 기반으로 감시&lt;/strong&gt;해야 합니다.
      &lt;/p&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;시나리오 3: 클라우드 경유 유출(자격증명 탈취)&lt;/h2&gt;

      &lt;p&gt;
        클라우드 확산으로 업무망과 클라우드가 다양한 방식으로 연동됩니다.
        공격자는 클라우드 관리 권한이 있는 직원의 업무망 PC를 노려 인증 토큰 등 자격증명을 탈취하고,
        이를 이용해 클라우드 인프라를 장악한 뒤 “업무망 → 클라우드” 경로로 데이터를 외부로 반출할 수 있습니다.
      &lt;/p&gt;

      &lt;div class=&quot;callout&quot;&gt;
        &lt;strong&gt;클라우드에서 특히 치명적인 이유&lt;/strong&gt;&lt;br&gt;
        자격증명 유출은 “계정 1개” 문제가 아니라, 스토리지/백업/로그/키 관리까지 연쇄 손실로 이어질 수 있습니다.&lt;br&gt;
        토큰·키는 유출 시 피해 규모가 커서, 관리 체계 자체가 핵심 보안 통제입니다.
      &lt;/div&gt;

      &lt;ul&gt;
        &lt;li&gt;자격증명 보호: 장기 키 최소화, 단기 토큰/세션 관리, 키 로테이션 자동화&lt;/li&gt;
        &lt;li&gt;권한 설계: 역할 기반 최소권한, 고위험 권한은 조건부 승인/시간 제한&lt;/li&gt;
        &lt;li&gt;가시성: 클라우드 감사 로그(관리 이벤트/데이터 이벤트) 상시 수집 및 이상 징후 탐지&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;망분리 ‘보완’의 방향: 모의해킹 기반 선제 대응&lt;/h2&gt;

      &lt;p&gt;
        위 시나리오의 본질은 “한 번의 뚫림”이 아니라 “연결된 취약점의 조합”입니다.
        따라서 단일 솔루션 추가나 단발성 점검만으로는 부족할 수 있습니다.
        망분리를 유지하더라도, 공격자 관점의 실전형 모의해킹을 통해
        &lt;strong&gt;연계 지점·관리 권한·자격증명&lt;/strong&gt;을 중심으로 체인을 끊어내는 접근이 필요합니다.
      &lt;/p&gt;

      &lt;div class=&quot;checklist&quot;&gt;
        &lt;strong&gt;실행에 옮기기 좋은 우선순위&lt;/strong&gt;&lt;br&gt;
        1) 관리 시스템(접근제어/배포/자산/계정)부터 권한·접근·감사를 재점검하기&lt;br&gt;
        2) 대외 시스템과 내부 연계 구간의 “예외 연결”을 전수 조사하고 최소화하기&lt;br&gt;
        3) 클라우드 자격증명(토큰·키) 취급 기준을 문서화하고 자동화(회전/폐기/탐지)하기&lt;br&gt;
        4) 정기 모의해킹에서 “우회 시나리오”를 고정 과제로 두고 재발 방지 항목을 남기기
      &lt;/div&gt;

      &lt;p class=&quot;mini&quot;&gt;
        망분리라는 방어 개념은 유효하지만, 운영 환경에서는 “망분리 + 관리/연계/자격증명 통제”가 함께 갖춰져야 안전해집니다.
        결국 질문은 단순합니다. &lt;em&gt;우리 조직의 망분리는 ‘현실의 연결 지점’을 얼마나 정확히 통제하고 있는가&lt;/em&gt;입니다.
      &lt;/p&gt;
    &lt;/section&gt;

    &lt;section&gt;
      &lt;h2&gt;마무리&lt;/h2&gt;

      &lt;p&gt;
        망분리는 강력한 기본기이지만, 그것만으로 안전을 보장하지는 않습니다.
        내부 데이터 유출, 업무망 침투, 클라우드 경유 유출처럼 우회 공격은
        작은 취약점들이 연결될 때 현실적인 위협으로 바뀝니다.
      &lt;/p&gt;

      &lt;p&gt;
        핵심은 “망분리 맹신”을 벗어나, 공격자 관점에서 경계 주변을 점검하고 체인을 끊는 것입니다.
        레드팀 모의해킹과 취약점 관리 체계를 결합해, 망분리 환경에서도 지속적으로 보안 수준을 검증하는 운영이 필요합니다.
      &lt;/p&gt;
    &lt;/section&gt;

    &lt;script type=&quot;application/ld+json&quot;&gt;
    {
      &quot;@context&quot;: &quot;https://schema.org&quot;,
      &quot;@graph&quot;: [
        {
          &quot;@type&quot;: &quot;BreadcrumbList&quot;,
          &quot;@id&quot;: &quot;https://example.com/#breadcrumb&quot;,
          &quot;itemListElement&quot;: [
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 1,
              &quot;name&quot;: &quot;홈&quot;,
              &quot;item&quot;: &quot;https://example.com/&quot;
            },
            {
              &quot;@type&quot;: &quot;ListItem&quot;,
              &quot;position&quot;: 2,
              &quot;name&quot;: &quot;보안 인사이트&quot;,
              &quot;item&quot;: &quot;https://example.com/security/&quot;
            }
          ]
        },
        {
          &quot;@type&quot;: &quot;BlogPosting&quot;,
          &quot;@id&quot;: &quot;https://example.com/security/network-segmentation-eclipse#post&quot;,
          &quot;mainEntityOfPage&quot;: {
            &quot;@type&quot;: &quot;WebPage&quot;,
            &quot;@id&quot;: &quot;https://example.com/security/network-segmentation-eclipse&quot;
          },
          &quot;headline&quot;: &quot;망분리도 안전지대가 아니다: 구조적 취약점 우회 공격 3가지 시나리오 정리&quot;,
          &quot;description&quot;: &quot;망분리 환경에서도 내부·외부 취약점이 연결되는 순간 방어 체계가 무력화될 수 있습니다. 금융권 관점에서 공개된 3가지 공격 시나리오와 선제 대응 포인트를 정리합니다.&quot;,
          &quot;image&quot;: [
            &quot;https://via.placeholder.com/1200x630.png?text=OG+Image+Replace+Me&quot;
          ],
          &quot;inLanguage&quot;: &quot;ko-KR&quot;,
          &quot;isPartOf&quot;: {
            &quot;@type&quot;: &quot;Blog&quot;,
            &quot;@id&quot;: &quot;https://example.com/#blog&quot;,
            &quot;name&quot;: &quot;Blog&quot;
          }
        }
      ]
    }
    &lt;/script&gt;
  &lt;/main&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>IT 소식 뉴스/IT 소식</category>
      <category>권한탈취</category>
      <category>금융보안원</category>
      <category>데이터유출</category>
      <category>레드팀</category>
      <category>망분리</category>
      <category>모의해킹</category>
      <category>인증토큰</category>
      <category>접근제어솔루션</category>
      <category>취약점관리</category>
      <category>클라우드보안</category>
      <author>하루하루 IT 나누기</author>
      <guid isPermaLink="true">https://togethergrow.tistory.com/502</guid>
      <comments>https://togethergrow.tistory.com/entry/%EB%A7%9D%EB%B6%84%EB%A6%AC%EB%8F%84-%EC%95%88%EC%A0%84%EC%A7%80%EB%8C%80%EA%B0%80-%EC%95%84%EB%8B%88%EB%8B%A4-%EA%B5%AC%EC%A1%B0%EC%A0%81-%EC%B7%A8%EC%95%BD%EC%A0%90-%EC%9A%B0%ED%9A%8C-%EA%B3%B5%EA%B2%A9-3%EA%B0%80%EC%A7%80-%EC%8B%9C%EB%82%98%EB%A6%AC%EC%98%A4-%EC%A0%95%EB%A6%AC#entry502comment</comments>
      <pubDate>Wed, 4 Mar 2026 20:25:56 +0900</pubDate>
    </item>
  </channel>
</rss>