
Check Point Trusted Access Review를 수행하기 위한 로컬 웹 앱입니다. 이 스캐너는 CVE-2026-16232, CVE-2026-62144 및 CVE-2026-62145 관련 구성 문제를 찾기 위해 특별히 제작되었습니다. 이 도구는 Check Point가 만들거나 지원하지 않으며, 사용자는 본인의 책임 하에 사용해야 합니다.
가능한 한 빨리 공급업체 패치를 반드시 적용하십시오.
신뢰할 수 있는 Check Point Management API 명령을 사용하여 Check Point Trusted Access Review를 수행하기 위한 로컬 웹 앱입니다. 대부분의 검사는 검토 전용입니다. 사용 가능한 수정 조치는 명시적 운영자 승인이 있어야만 수행됩니다.
이 스캐너는 CVE-2026-16232(https://support.checkpoint.com/results/sk/sk185169), CVE-2026-62144(https://support.checkpoint.com/results/sk/sk185152), CVE-2026-62145(https://support.checkpoint.com/results/sk/sk185153) 관련 구성 문제를 찾기 위해 특별히 제작되었습니다.
이 도구를 사용하면 ANY 사용을 스캔하고 수정할 수 있으며, 잠재적인 악의적 행위자를 찾기 위해 로그를 스캔할 수도 있습니다.
이 도구는 Check Point가 만들거나 지원하지 않으며, 사용에 따른 책임은 사용자 본인에게 있습니다.
Node.js, npm, Git 또는 소스 코드를 설치하고 싶지 않은 사용자를 위해 dist/에서 사전 빌드된 버전을 제공합니다:
dist/windows-x64/에는 독립 실행형 .exe와 그에 해당하는 ZIP이 포함되어 있습니다.dist/macos-apple-silicon/.app자체 포함 릴리스에는 Node.js 런타임, 웹 인터페이스, 백엔드, 직접 PDF 보고서 생성기가 포함됩니다. 이들은 127.0.0.1에만 바인딩되고, 포트 4000을 우선 사용하며, 필요 시 4001, 4002 및 더 높은 포트를 자동으로 시도하고, 선택된 로컬 URL을 기본 브라우저에서 엽니다.
GitHub의 경우, 플랫폼 ZIP(선택적으로 Windows .exe 포함)을 GitHub Release 자산으로 게시하십시오. 사용자가 자체 포함 릴리스를 실행하기 위해 node_modules나 소스 트리를 다운로드할 필요는 없습니다. 아티팩트 레이아웃은 dist/README.md를 참조하십시오.
현재 앱은 Check Point Gateway and Management Hardening Administration Guide에 맞춰져 있습니다.
이 도구는 Check Point가 만들거나 지원하지 않으며, 사용에 따른 책임은 사용자 본인에게 있습니다.
이 앱은 로컬에서 실행되고, Check Point Security Management Server 또는 MDS에 로그인하여 사용 가능한 Management API 증거를 스캔하고 가이드에 맞춘 강화 검사를 제시합니다. 대부분의 검사는 검토 전용이며, 구체적인 수정 작업은 명시적으로 구현된 경우에만 제공되며 운영자 승인이 필요합니다. 네트워크 설계 검토, Gaia Portal, Gaia API, SSH/Clish, ID 공급자 설정 또는 대역 외 관리 검사가 필요한 검사는 수동 검증으로 표시됩니다.
이 스캐너는 현재 다음 강화 가이드 영역을 다룹니다:
MDS 환경에서는 로그인 양식에서 MDS Scan을 활성화합니다. 그러면 중요한 두 개의 필드가 표시됩니다:
run-script 검사에 사용되는 실제 MDS 객체 이름을 지정합니다. 로그인 호스트가 MDS IP이고 선택한 API 도메인이 CMA/도메인인 경우, run-script 같은 명령은 MDS IP나 CMA/도메인 IP가 아닌 MDS 객체 이름을 대상으로 해야 하므로 이 필드가 필요합니다.MDS Scan이 활성화되면 앱은 두 개의 Check Point Management API 세션을 생성합니다:
run-script 명령에만 사용됩니다. 이는 관리 서버 인터페이스/기본 경로 검색, Gaia 관리자 설정, Gaia 비밀번호 정책, SNMP, 관리 서버 syslog 전달 등 MDS 서버 운영 체제 자체를 검사할 때 필요합니다.mgmt_cli 용어로, 도메인 검사는 --domain "<Domain>"을 포함하는 명령처럼 동작하며, MDS 호스트 검사는 글로벌 MDS 컨텍스트에서 실행되는 mgmt_cli -r true run-script targets.1 "<Global MDS Object Name>" ...처럼 동작합니다.
일부 MDS 검사는 의도적으로 둘 이상의 관리 평면을 평가합니다. 예를 들어 Restrict Administrative Source IP Addresses는 MDS/글로벌 관리 호스트 IP와 선택한 Domain/CMA IP를 모두 평가합니다. 각 IP에 대해 선택한 도메인에서 일치하는 객체를 확인하고, 해당 IP를 포함하는 네트워크 객체 및 주소 범위를 확인하며, 해당 객체를 포함하는 그룹을 추적한 다음 이를 참조하는 액세스 규칙을 수집합니다. 일치하는 도메인 규칙이 Global Policy 상위 레이어 아래에 있으면 앱은 Placeholder for domain rules까지 Global 액세스 규칙베이스를 읽고 해당 Global 규칙을 GLOBAL RULES 마커와 함께 동일한 Policy Package 증거 테이블에 포함합니다.
Smart-1 Cloud의 경우 로그인 양식에서 Smart-1 Cloud context URL을 활성화하고 컨텍스트 경로와 함께 Management 호스트를 입력합니다. 예:```text tenant-name.maas.checkpoint.com/context-id/web_api
앱은 해당 경로를 유지하고 다음 주소로 API 요청을 보냅니다:```text
https://tenant-name.maas.checkpoint.com/context-id/web_api/<command>
이는 mgmt_cli Smart-1 Cloud 컨텍스트 구조와 일치합니다:```bash
mgmt_cli -m tenant-name.maas.checkpoint.com --session-id --context context-id/web_api <cli_command>
**Smart-1 Cloud context URL**이 활성화되면 고객 소유 Management Server Gaia 객체에 직접 액세스해야 하는 검사는 건너뜁니다. 실제로 이는 **Management Plane Protection** 검사(예: **Protect Management Server Behind A Firewall**, **Restrict Administrative Source IP Addresses**)를 제거합니다. 관리 서버가 Check Point에서 호스팅되고 테넌트 도메인에 일반적인 고객 관리 Gaia 객체로 존재하지 않기 때문입니다.
검사 요약에는 현재 검사 시간과 해당 검사를 실행한 Management API 사용자 이름을 포함하여 로컬 앱이 기록한 이전 검사가 표시됩니다. 이 기록은 메모리에 유지되며 로컬 Node 프로세스가 다시 시작되면 초기화됩니다.
### 대규모 환경 모드
로그인 양식에는 MDS 또는 대규모 멀티 게이트웨이 환경을 위한 **대규모 환경 모드**가 포함되어 있습니다. 이 모드는 검사를 건너뛰거나 증거 수집을 변경하지 않습니다. 전체 검사 중 동시 API 요청과 Gaia `run-script` 작업을 제한하여 Management API에 대한 검사 부하를 낮춥니다.
기본 표준 검사 동작:
- Management API 수집 명령은 로컬 Node 프로세스가 예약하는 대로 최대한 빠르게 실행됩니다.
- Gaia `run-script` 수집은 `RUN_SCRIPT_CONCURRENCY`로 제한되며 기본값은 `8`입니다.
- 관리자 마지막 로그인 감사 쿼리는 `show-logs`를 사용하며 `SHOW_LOGS_CONCURRENCY`로 직렬화됩니다. 기본값은 `1`입니다.
- `show-task` 폴링은 폴링 시도 사이에 `750 ms`를 기다립니다.
대규모 환경 모드 동작:
- Management API 검사 호출은 `LARGE_ENV_API_CONCURRENCY`로 제한되며 기본값은 `10`입니다.
- Gaia `run-script` 수집은 `LARGE_ENV_RUN_SCRIPT_CONCURRENCY`로 제한되며 기본값은 `3`입니다.
- `show-logs` 관리자 마지막 로그인 조회는 병렬 감사 검색 부하를 피하기 위해 `SHOW_LOGS_CONCURRENCY`로 계속 직렬화됩니다.
- `show-task` 폴링은 `LARGE_ENV_TASK_POLL_INTERVAL_MS` 간격을 기다리며 기본값은 `1250 ms`입니다.
- Gaia `run-script` 작업 출력 폴링은 `TASK_POLL_ATTEMPTS`를 사용하며 기본값은 `20`입니다. 이는 Smart-1 Cloud 또는 원격 게이트웨이가 디코딩된 `show-task details-level full` 출력이 준비되기 전에 `run-script` 요청을 수락할 때 유용합니다.
- Security Gateway Stealth Rule 검사는 대규모 환경 모드 및 Smart-1 Cloud 모드에서 `show-access-rulebase`를 먼저 사용합니다. 이는 게이트웨이당 `where-used details-level full` 호출 하나를 피하며, 대규모/MDS/Smart-1 Cloud 환경에서는 비용이 많이 들거나 시간 초과될 수 있습니다.
이 값들은 로컬 백엔드를 시작하기 전에 환경 변수로 조정할 수 있습니다.```sh
LARGE_ENV_API_CONCURRENCY=8 LARGE_ENV_RUN_SCRIPT_CONCURRENCY=2 LARGE_ENV_TASK_POLL_INTERVAL_MS=1500 TASK_POLL_ATTEMPTS=20 TASK_POLL_INTERVAL_MS=1000 SHOW_LOGS_CONCURRENCY=1 CP_LOG_API_TIMEOUT_MS=120000 CP_VPN_API_TIMEOUT_MS=120000 VPN_COMMUNITY_PAGE_LIMIT=50 npm start
관리자 마지막 로그인 확인은 SmartConsole 감사 로그인을 administrator:<name> AND SmartConsole AND "Log In"과 동일한 필터로 조회합니다. CP_LOG_API_TIMEOUT_MS는 이러한 show-logs 요청의 제한 시간을 일반 Management API 호출과 별도로 제어합니다.
CVE IKE VPN 커뮤니티 확인은 show-vpn-communities-star 및 show-vpn-communities-meshed를 VPN_COMMUNITY_PAGE_LIMIT(기본값 50)으로 페이지 단위로 조회하며, CP_VPN_API_TIMEOUT_MS(기본값 120000 ms)를 사용합니다. 이렇게 하면 Smart-1 Cloud 및 MDS 스캔 시 한 번의 호출로 매우 큰 details-level full VPN 커뮤니티 페이로드를 요청하지 않습니다.
운영 중인 MDS 환경, 바쁜 관리 서버, 또는 수십 개의 게이트웨이가 배포된 환경을 스캔할 때 이 모드를 사용하십시오. 이 경우 fwm / Management API 응답성을 보호하는 것이 절대적으로 가장 빠른 스캔 시간보다 더 중요합니다.
일부 확인은 자동화된 고위험 조건이 없더라도 운영자 검토가 필요합니다. SmartConsole 신뢰 클라이언트, 관리자 계정, 관리자 비밀번호 / 유휴 시간 제한 / 만료 / 잠금 정책 확인은 검토됨으로 표시할 수 있습니다. 동일한 로그인 세션에서는 상태가 검토됨으로 변경됩니다. 새 로그인은 상태를 검토 필요로 되돌리며, 마지막 검토 승인은 로그인한 Management API 사용자 이름 및 타임스탬프와 함께 계속 표시됩니다.
관리자 비밀번호 / 유휴 시간 제한 / 만료 / 잠금 정책 확인의 경우 운영자는 수정 필요 상태에서도 해당 확인을 검토됨으로 표시할 수 있습니다. 앱은 해당 검토를 기록하기 전에 운영자가 Check Point에서 권장하지 않는 설정을 수락하고 있음을 경고합니다.
상단 요약은 수정 필요 및 수정 권장 결과를 하나의 수정 필요 개수로 결합합니다.
http://...로 입력하지 마십시오. 그러면 Check Point API 로그인이 평문 HTTP를 통해 전송됩니다.http://127.0.0.1:4000의 로컬 백엔드와 통신하며, 해당 포트가 사용 중이면 다음 사용 가능한 로컬 포트를 사용합니다.백엔드는 다음 Check Point Management API 명령을 프록시합니다:
loginlogoutshow-trusted-clientsdelete-trusted-clientshow-api-settingsset-api-settingspublishdiscardshow-administratorsdelete-administratorshow-default-administrator-settingsset-default-administrator-settingsshow-smart-console-idle-timeoutset-smart-console-idle-timeoutshow-login-restrictionsshow-cp-password-requirementsset-cp-password-requirementsshow-simple-gatewaysshow-global-propertiesset-global-propertiesrun-scriptshow-taskinsights/v3.0/show-suggestions-summaryinsights/v3.0/show-suggestions보안 기능 사용 확인은 각 관리 대상 게이트웨이에 대해 Gaia run-script를 실행합니다.```sh
mgmt_cli run-script script-name "show license" targets.1 "GATEWAY_OBJECT_NAME" script "clish -c 'show license status'" --format json
mgmt_cli show-task task-id "" details-level full --format json
앱은 `task-details[].responseMessage`를 디코딩하고, 라이선스 기능/날짜 행에서 `FW`, `VPN`, `IPS`, `URLF`와 같은 알려진 블레이드 코드를 추출하며, 최상위 기능 라인(`FW`, `VPN`, `IA`)의 영구 내장 블레이드 코드도 포함합니다. `3950-2Y`와 같은 어플라이언스/모델/기간 접미사는 무시되며, 알려진 블레이드 코드는 `IPS`, `URL Filtering`, `Anti-Bot`처럼 사람이 읽을 수 있는 블레이드 이름으로 변환됩니다. 증거는 게이트웨이별로 그룹화되어 간결한 `License Feature`, `Expiration Date`, `Enabled/Disabled` 테이블로 표시됩니다. 활성화 상태는 `show gateways-and-servers details-level full`의 `network-security-blades`에서 읽어오며, 누락된 블레이드 키는 비활성화된 것으로 처리됩니다. Advanced DNS Security는 일반 게이트웨이 블레이드 플래그로 노출되지 않으므로 할당된 Threat Profile에서 수동 확인이 필요하다고 표시됩니다.
SmartConsole 신뢰할 수 있는 클라이언트 검사는 다음에 해당하는 명령을 실행합니다:```sh
mgmt_cli -r true show trusted-clients --domain "System Data" details-level full --format json
웹앱은 Management API 도메인 System Data에 로그인하여 신뢰할 수 있는 클라이언트의 name, type, 및 유형별 IP 데이터를 가져와 증거 테이블에 표시합니다. 반환된 객체의 type이 any로 설정된 경우 검사 결과를 수정 필요로 표시합니다.
신뢰할 수 있는 클라이언트 객체의 type이 any로 설정된 경우, 앱은 첫 번째 수정 작업을 제공합니다. 해당 객체의 실제 uid를 조회하여 다음 명령과 동등한 작업을 실행합니다:```sh
mgmt_cli delete trusted-client uid "" --domain "System Data"
mgmt_cli publish --domain "System Data"
삭제 명령 후 게시가 실패하면, 앱은 동일한 `System Data` 세션에서 `discard`를 시도하여 게시되지 않은 변경으로 객체가 잠긴 상태로 남지 않도록 합니다.
신뢰할 수 있는 클라이언트 증거 테이블을 통해 운영자는 반환된 신뢰할 수 있는 클라이언트 객체를 하나 이상 선택하여 웹앱에서 삭제할 수도 있습니다. 앱은 선택한 `uid` 값을 현재 `show-trusted-clients` 출력과 대조하여 검증한 후, 다음에 해당하는 명령을 실행합니다:```sh
mgmt_cli delete trusted-client uid "<selected-trusted-client-uid>" --domain "System Data"
mgmt_cli publish --domain "System Data"
선택된 클라이언트가 여러 개인 경우, delete 명령은 선택된 각 uid에 대해 한 번씩 실행된 다음 단일 publish가 수행됩니다. 변경이 시작된 후 delete 또는 publish가 실패하면 앱은 동일한 System Data 세션에서 discard를 시도합니다.
암시적 규칙 로깅 검사는 다음에 해당하는 작업을 실행합니다:```sh mgmt_cli -r true show global-properties details-level full --format json
웹앱은 반환된 `firewall` 객체 내부의 모든 키/값 쌍을 가져와 테이블에 표시합니다. `log-implied-rules`가 `false`이면 검사는 **수정 필요**로 표시되고, 행에는 다음과 동일한 작업을 실행하는 인라인 수정 버튼이 제공됩니다:```sh
mgmt_cli set global-properties firewall.log-implied-rules true
mgmt_cli publish
Management API Access 검사는 다음에 해당하는 작업을 실행합니다.```sh mgmt_cli -r true show api-settings --domain "System Data" --format json
웹앱은 `accepted-api-calls-from` 값을 표시합니다. 값이 `all ip addresses`인 경우, 검사는 **시정 필요**로 표시되며 다음과 같은 조치를 제공합니다:```sh
mgmt_cli set api-settings accepted-api-calls-from "all ip addresses that can be used for gui clients" --domain "System Data" --format json
mgmt_cli publish --domain "System Data"
API 액세스가 이미 GUI 클라이언트로 제한된 경우, 검사는 검토를 위해 신뢰할 수 있는 클라이언트 증거 테이블을 표시합니다.
Policy Insights 검사는 읽기 전용 Access Control Insights 호출을 실행합니다:```sh mgmt_cli insights/v3.0/show-suggestions-summary --method POST --format json mgmt_cli insights/v3.0/show-suggestions --method POST --format json
상세 제안 요청은 `unused-objects`, `tighten-rule`, `delete-disabled-rule`, `zero-hits-rule`로 필터링되며, 첫 페이지 한도는 50개의 제안입니다.
관리자 계정 검토는 다음에 해당하는 작업을 실행합니다:```sh
mgmt_cli -r true show-administrators --domain "System Data" details-level full --format json
웹앱은 이 수집 단계에서 Management API 도메인 System Data에 로그인한 다음, Name, Permission Profile Name, Authentication-Method, expiration-date가 포함된 증거 테이블을 표시합니다. 만료 값은 iso-8601에서 사람이 읽을 수 있는 날짜와 시간으로 변환됩니다. expiration-date 키가 없는 관리자는 Never로 표시됩니다.
MFA 및 IdP(Identity Provider) 통합 검사는 show default-administrator-settings를 사용하여 기본 authentication-method를 표시한 다음, show-administrators를 사용하여 authentication-method가 check point password 또는 os password인 관리자를 나열합니다. 기본 방법이나 관리자가 암호 기반 인증을 사용하는 경우 검사는 Remediation Recommended로 표시됩니다. 운영자는 섹션을 검토됨으로 표시할 수 있으며, 동일한 검토자 기록 패턴이 표시됩니다. 이 검사에는 SmartConsole 및 외부 IdP SAML 구성 안내가 포함된 설정 도움말 버튼이 있습니다.
관리자 계정 테이블에서 운영자는 반환된 하나 이상의 관리자 개체를 선택하여 웹앱에서 삭제할 수 있습니다. 앱은 선택한 uid 값을 현재 show-administrators 출력과 대조하여 검증한 후 다음에 해당하는 명령을 실행합니다:```sh
mgmt_cli delete administrator uid "" --domain "System Data"
mgmt_cli publish --domain "System Data"
여러 관리자를 선택한 경우, 삭제 명령은 선택된 각 `uid`에 대해 한 번씩 실행된 후 단일 publish가 수행됩니다. 변경이 시작된 후 삭제 또는 publish가 실패하면 앱은 동일한 `System Data` 세션에서 `discard`를 시도합니다.
관리자 비밀번호, 유휴 시간 제한, 만료 및 잠금 정책 확인은 다음에 해당하는 작업을 실행합니다:```sh
mgmt_cli show default-administrator-settings --domain "System Data" --format json
mgmt_cli show smart-console-idle-timeout --domain "System Data" --format json
mgmt_cli show login-restrictions --domain "System Data" --format json
mgmt_cli show cp-password-requirements --domain "System Data" --format json
웹앱은 반환된 설정을 Setting, Value, State 테이블로 표시합니다. 기본 관리자 만료가 never로 설정된 경우, SmartConsole 유휴 시간 초과가 비활성화된 경우, 관리자 계정 잠금이 비활성화된 경우, 자동 잠금 해제가 비활성화된 경우, 또는 min-password-length가 10 미만인 경우는 수정이 필요한 것으로 표시됩니다.
기본 관리자 인증 방법이 check point password인 경우, State 열은 MFA 또는 외부 Identity Provider를 지원하는 인증 방법을 사용할 것을 권장합니다.
기본 관리자 만료의 경우, State 열은 반환된 만료 세부 정보를 표시합니다. 형식화된 expiration-date 값, 또는 유형이 expiration-period일 때 expiration-period에 expiration-period-time-units 값을 더한 값입니다.
기본 관리자 만료가 never로 설정된 경우, 앱은 권장 수정 조치를 제공합니다. 앱은 다음에 해당하는 명령을 실행합니다:```sh
mgmt_cli set default-administrator-settings expiration-type "expiration period" expiration-period "4" expiration-period-time-units "months" --domain "System Data" --format json
mgmt_cli publish --domain "System Data"
설정 변경 후 게시(publish)가 실패하면, 앱은 동일한 `System Data` 세션에서 `discard`를 시도하여 게시되지 않은 변경 사항으로 인해 설정이 잠긴 상태로 남지 않도록 합니다.
SmartConsole 유휴 시간 초과(idle timeout)가 비활성화되면, 앱은 권장 해결 조치를 제안합니다. 이는 다음 명령과 동일한 작업을 실행합니다:```sh
mgmt_cli set smart-console-idle-timeout enabled true timeout-duration "10" --domain "System Data" --format json
mgmt_cli publish --domain "System Data"
유휴 시간 제한 변경 후 게시가 실패하면, 앱은 동일한 System Data 세션에서 discard를 시도합니다.
최소 암호 길이가 10 미만인 경우, 앱은 권장 수정 조치를 제공합니다. 이는 다음과 같은 작업을 실행합니다:```sh
mgmt_cli set cp-password-requirements min-password-length "10" --domain "System Data" --format json
mgmt_cli publish --domain "System Data"
비밀번호 요구 사항 변경 후 게시가 실패하면, 앱은 동일한 `System Data` 세션에서 `discard`를 시도합니다.
## 설치 및 실행
소스에서 실행하려면 Node.js 18 이상과 `package.json`에 선언된 npm 종속성이 필요합니다. 독립 실행형 릴리스 사용자는 Node.js, npm 또는 Git이 필요 없습니다.
### macOS에서 소스로 설치
1. [nodejs.org](https://nodejs.org/) 또는 Homebrew에서 Node.js 18 이상을 설치합니다. ```sh
brew install node
nodejs.org에서 Node.js 18 이상을 설치합니다.
프로젝트 ZIP을 다운로드하여 압축을 풀거나, Git for Windows로 리포지토리를 클론합니다. ```powershell git clone cd "Check Point Trusted Access Review"
의존성을 설치하고 로컬 앱을 시작하세요. ```powershell npm install npm start
브라우저에서 앱을 엽니다. ```text http://127.0.0.1:4000
기본적으로 앱은 127.0.0.1:4000을 선호하며, 포트가 사용 중이면 자동으로 위쪽으로 이동합니다. 특정 포트를 요구하려면:
macOS:```sh PORT=4500 npm start
Windows PowerShell:```powershell
$env:PORT = "4500"
npm start
그런 다음 엽니다:```text http://127.0.0.1:4500
## 문제 해결
서버는 터미널에 요청 진단 정보를 출력합니다. 성공적인 로그인 시도는 다음과 유사한 줄을 표시합니다:```text
Local API request requestId=abc12345 route=/api/login
Login request received target=https://mgmt.example.com/web_api/login user=admin
Check Point API request starting command=login target=https://mgmt.example.com/web_api/login
브라우저에 요청 ID가 포함된 로그인 오류가 표시되지만 패킷 캡처에 관리 서버로의 외부 연결 시도가 보이지 않는 경우, 터미널의 target= 값과 패킷 캡처 필터를 비교하세요.
Local API request 줄이 전혀 없다면 브라우저가 로컬 백엔드에 연결되지 않은 것입니다. 앱이 실행 중인지, 올바른 로컬 URL을 열었는지 확인하세요.