꿈을꾸는 파랑새

오늘은 지난 2021년 10월 13일에 있었던 보안 업데이트를 설치를 했을 때에 일부 사용자 0x00000709 또는 요소를 찾을 수 없음 는 인쇄를 시도할 때 오류가 표시되거나 네트워크 인쇄 서버로 인쇄할 수 없다고 하는 문제가 발생했어 보고가 되고 있습니다. 해당 문제는 Windows Print Spooler의 취약점을 악용하는 프린터 나이트메어(PrintNightmare)을 해결을 하려고 보안 업데이트를 진행을 했으나 해당 문제를 해결했지만, 네트워크 인쇄 서버로 인쇄하는 데 문제가 발생하고 있습니다.
해당 문제는 윈도우 10 1909 버전부터 윈도우 11 버전까지 영향을 미치는 문제입니다.
해결 방법은 간단합니다.
1. KB5006670 업데이트 제거
가장 쉬운 방법의 하나입니다. CMD를 관리자 권한으로 실행하고 나서 문제가 되는 업데이트를 제거하는 것입니다.
wusa /uninstall /kb:5006670
해당 업데이틀 제거를 하면 프린터 관련 문제는 해결되지만 그렇게 되면 74개의 보안 취약점에 노출되는 것입니다.
2.Win32spl.dll 바꾸기
다른 방법으로는 Win32spl.dll를 2021년 9월 버전으로 바꾸는 방법입니다. 즉 
C:\Windows\System32\Win32spl.dll 위치에 있는 파일을 dll을 9월 누적 업데이트가 설치된 버전 10.0.19041.1237로 교체를 하는 것입니다. 물론 해당 파일을 다른 컴퓨터에서 복사해 오는 방법이 있고 스크립트를 활용하는 방법도 있습니다. 스크립트 코드 다음과 같습니다

win32spl.dll 교체
win32spl.dll 교체

@echo off
REM 10.0.19041.1288 bad file comes from KB5006670

:_start

copy \\SERVERNAME\SHARE\spoolerfix\win32spl.dll.good C:\Windows\System32 /y

:wmicVersion pathToBinary [variableToSaveTo]
setlocal
set "item1=C:\Windows\System32\win32spl.dll"
set "item1=%item1:\=\\%"
set "item2=C:\Windows\System32\win32spl.dll.good"
set "item2=%item2:\=\\%"

for /f "usebackq delims=" %%a in (`"WMIC DATAFILE WHERE name='%item1%' get Version /format:Textvaluelist"`) do (
    for /f "delims=" %%# in ("%%a") do set "%%#")
set existver=%version%
set version=
for /f "usebackq delims=" %%a in (`"WMIC DATAFILE WHERE name='%item2%' get Version /format:Textvaluelist"`) do (
    for /f "delims=" %%# in ("%%a") do set "%%#")
set goodver=%version%
set version=
echo %existver%
echo %goodver%

IF %goodver%==%existver% echo "Files are same version" && goto _end
IF "%existver%"=="10.0.19041.1288" echo "Files are bad version" && goto _fixspooler
IF NOT %goodver%==%existver% echo "Files are different version" && goto _end

:_fixspooler
net stop spooler
timeout /t 3 /nobreak
Takeown /A /F C:\Windows\System32\win32spl.dll
icacls  "C:\Windows\System32\win32spl.dll" /grant builtin\administrators:F
icacls  "C:\Windows\System32\win32spl.dll" /grant SYSTEM:F
ren  C:\Windows\System32\win32spl.dll win32spl-%existver%.dll
copy  C:\Windows\System32\win32spl.dll.good C:\Windows\System32\win32spl.dll /Y
net start spooler
goto _end

:_end
exit

이고 아니면 첨부된 파일을 관리자 권한으로 실행하시면 됩니다. 먼저 win32spl.bat 에 대한 해쉬값은 다음과 같습니다.

win32spl.bat
0.00MB

파일명:win32spl.bat
사이즈:1,461 Bytes
작성일시:2021-10-17 00:28:13 (+09:00)
수정일시:2021-10-17 00:28:13 (+09:00)
접근일시:2021-10-17 00:28:13 (+09:00)
CRC32:22e565f5
MD5:6f5e1d728443ea9481a4403360f7da89
SHA-1:02b5e1c3eea426cc0d41bf17a9e7e4027845b059
SHA-256:70850a53cbfe701345118a35aa92a138beafdf609f1084505c08c44ce6e96aea
SHA-512:fd3615bda35165c10e115829479e03f24d06c73ad30ef73227474d05c372a817be96cfe26d9c243ae7dd38f2ecbf75b1a80db2d502fc52bead2d24d41df357ee
입니다.

3. 인쇄 서버에서 프린터 대기 열 다시 만들기 
인쇄 서버에서 프린터 대기 열 다시 만들기입니다. 일부 사용자들은 인쇄 서버에서 프린터를 제거하고 다시 설치하여 문제가 해결되었다고 보고가 있으며 프린터를 제거하고 관리자로 다시 설치하면 대기 열이 다시 작성되어 잠재적으로 인쇄가 다시 작동할 수 있습니다. 하지만, 새 프린터 대기 열을 사용하려면 워크스테이션을 재구성해야 할 수 있으며 해당 문제는 일부 조직에서는 매우 시간이 많이 소요되는 작업일 것입니다.
해당 방법을 통해서 프린터 오류 문제를 해결할 수가 있으면 일단 첫 번째 방법으로 보안 업데이트를 지우면 해결이 되겠지만, 나머지 보안 취약점에 노출되니 개인적으로 2,3번의 해결책으로 해결하는 것을 추천 드리겠습니다.

반응형
그리드형

공유하기

facebook twitter kakaoTalk kakaostory naver band