これはサンプルレポートです。対象の example.com は文書用に予約されたドメインで、実在するお客様のサイトではありません。判定そのものは本番と同一で、架空の観測データを実際の評価エンジンに通して作成しています。
概要 詳細
評価 2026/09/01 09:00 JST · 90 / A · カバレッジ 97% · 要対応 19 · 未検査 2 · 該当なし 5 · 適合 81
検査エンジン原文(英語)
no DS record: zone not DNSSEC signed
上昇幅: +2 点
対象 (全 1 件(未検査の対象を含む))
想定されるリスク:
署名が無い場合、利用者と権威サーバの間に位置する第三者(キャッシュ DNS、経路上の装置)が応答を差し替えることができます。接続先を攻撃者のホストへ誘導するだけでなく、ACME の検証応答を横取りして当該ドメインの正規の証明書を発行させることも可能です。
dnssec-policy default;)。dig +short DS example.com が値を返すこと、検証リゾルバに対する dig +dnssec example.com @1.1.1.1 が ad フラグを返すこと、および dnsviz.net で警告が表示されないことで行います。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.dnssec:example.com
この手順に出てくる example.com は記述例です。ご自身のドメイン名に読み替えてください(letsencrypt.org のように実在する第三者のホスト名も混ざっているため、機械的な置換はしていません)。
この手順に出てくる example.com は記述例です。ご自身のドメイン名に読み替えてください(letsencrypt.org のように実在する第三者のホスト名も混ざっているため、機械的な置換はしていません)。
example.com の応答が埋め込み元を制限していない
検査エンジン原文(英語)
framing is not restricted
上昇幅: +1 点
対象 (全 1 件(未検査の対象を含む))
リスク詳細
埋め込みを制限していないページは、攻撃者が用意した別のサイトに透明な枠として重ねられます。利用者は攻撃者のページを操作しているつもりで、実際にはこちらのページのボタンを押すことになります。決済の確定や権限の付与といった、一度の誤操作が取り返しのつかない操作ほど狙われます。
Content-Security-Policy: frame-ancestors 'none'(埋め込みを許さない場合)または frame-ancestors 'self'(自サイト内のみ)を設定します。X-Frame-Options: DENY または SAMEORIGIN も併記して構いません。add_header Content-Security-Policy "frame-ancestors 'none'" always;、Apache は Header always set Content-Security-Policy "frame-ancestors 'none'" です。curl -sI https://example.com | grep -iE 'frame-ancestors|x-frame-options' で行います。HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.headers:example.com
対象ホスト: 192.0.2.1(example.com・www.example.com)
192.0.2.1 で管理用ポート 22 が外部に開いている
検査エンジン原文(英語)
administrative ports open: [22]
上昇幅: 変動なし
対象 (全 1 件(未検査の対象を含む))
リスク詳細
SSH や管理画面にインターネット全体から到達できる状態では、認証情報への総当たり攻撃が常時発生します。使い回されたパスワードや脆弱なパスワードが 1 件でもあればシェルを奪取されます。また、ポートが開いているだけでもバナーからバージョンが判明し、既知の脆弱性を狙う手掛かりとなります。
ufw allow from 203.0.113.0/24 to any port 22 proto tcp を登録したうえで ufw deny 22 を追加しますが、その前に ufw status numbered で既存の無条件 ALLOW 22 を確認し、存在すれば ufw delete <番号> で削除してください。listen 127.0.0.1:8080; のように localhost に bind し、SSH トンネル経由で利用します。nmap -Pn -p 22,2222,3000,8080,8443,10000 <ip> を実行し、open ではなく filtered が返ることで行います。公開索引 Shodan InternetDB対象 192.0.2.1取得 2026/09/01 09:00 JST
索引は前回スキャン時点の記録で、いまの状態そのものではありません。 根拠 ID internetdb:internetdb.host:192.0.2.1
example.com の MX ホスト 1 件のうち、TLSA(DANE)レコードがあるのは 0 件
検査エンジン原文(英語)
no TLSA records for MX hosts
上昇幅: +1 点
対象 (全 1 件(未検査の対象を含む))
リスク詳細
SMTP の STARTTLS は、経路上の攻撃者が広告を除去すれば平文配送に引き下げられます。証明書を検証できない場合でも、多くの送信側はそのまま配送します。TLSA レコードが無い場合、送信側には「本来提示されるべき鍵」を照合する手段がありません。
_25._tcp.<mx ホスト名> に TLSA レコードを公開します。3 1 1 を用い、値は openssl x509 -in cert.pem -noout -pubkey | openssl pkey -pubin -outform DER | openssl dgst -sha256 で生成します。dig +dnssec TLSA _25._tcp.mx.example.com が ad フラグ付きで応答すること、Postfix であれば posttls-finger -c -L verbose mx.example.com が DANE 検証成功を報告することで行います。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.mail:example.com
example.com の apex にも www にも AAAA レコードが無く、IPv6 で到達できない
検査エンジン原文(英語)
no AAAA on apex or www
上昇幅: +1 点
対象 (全 1 件(未検査の対象を含む))
リスク詳細
AAAA レコードが無い場合、IPv6 のみのネットワークやモバイル網の利用者は事業者側の変換装置(CGNAT / 464XLAT)を経由して接続することになります。その装置は自社の管理外にあり、単一障害点であると同時に、全通信の観測点にもなります。
example.com. 300 IN AAAA 2001:db8::1)、サーバ側でも IPv6 で待ち受けます(nginx は listen [::]:443 ssl;、Apache は Listen [::]:443)。ufw status / ip6tables -S)。dig +short AAAA example.com と curl -6 -sI https://example.com で行います。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
DNS 応答対象 www.example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:www.example.com
検査エンジン原文(英語)
older breach source: [OldLeak]
上昇幅: +1 点
対象 (全 1 件(未検査の対象を含む))
リスク詳細
当該ドメインが漏えい元として記録されているということは、利用者の認証情報や個人情報がすでに流出していることを意味します。攻撃者はそのパスワードをログイン画面・VPN・管理画面に順に試行し、同時に個人情報を用いて同じ対象者への精度の高いフィッシングを仕掛けます。
Have I Been Pwned(漏えい索引)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID hibp:hibp.breaches:example.com
example.com に CAA レコードが無く、どの認証局でも証明書を発行できる
検査エンジン原文(英語)
no CAA record
上昇幅: 変動なし
対象 (全 1 件(未検査の対象を含む))
リスク詳細
CAA レコードが無い場合、世界中のいずれの公的認証局も当該ドメインの証明書を発行できます。数百社ある認証局のうち 1 社でもドメイン検証を誤れば、攻撃者は当該サイトを名乗れる正規の証明書を取得できます。
example.com. 3600 IN CAA 0 issue "letsencrypt.org" および example.com. 3600 IN CAA 0 iodef "mailto:security@example.com"。0 issuewild ";" も追加します。dig +short CAA example.com で行います。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
検査エンジン原文(英語)
DMARC p=quarantine
上昇幅: 変動なし
対象 (全 1 件(未検査の対象を含む))
リスク詳細
`p=none` は「SPF も DKIM も失敗したメールをそのまま配送してよい」と受信側に伝える指示です。すなわち、第三者が当該ドメインを名乗って、取引先や従業員の受信箱に請求書やパスワード再設定のメールを届けることができます。隔離または破棄は、強制ポリシーに設定して初めて実行されます。
p=reject へ変更することは避けてください。_dmarc の TXT レコードを段階的に引き上げます: v=DMARC1; p=quarantine; pct=25; rua=... → pct=100 → p=reject。dig +short TXT _dmarc.example.com が p=reject を返すこと、および次のレポートで正規送信元の拒否が増えていないことで行います。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.mail:example.com
検査エンジン原文(英語)
MTA-STS mode=testing
上昇幅: 変動なし
対象 (全 1 件(未検査の対象を含む))
リスク詳細
宣言のみでポリシーを取得できない、内容が壊れている、あるいは `testing` のままの状態は、送信側にとってはポリシーが無いことと同じです。暗号化を除去された接続や検証できない接続にそのまま配送が続きます。経路上の攻撃者にとって好都合な状態です。送信側が配送を停止するのは `mode: enforce` の場合のみです。
https://mta-sts.example.com/.well-known/mta-sts.txt を text/plain で応答します。mta-sts.example.com に対して有効なものが必要です(apex の証明書では検証されません)。version: STSv1、mode: enforce、MX ホストごとの mx: 行、max_age: 604800 です。mode: testing と TLS-RPT で 1〜2 週間運用し、記載漏れの MX が無いことを確認してから enforce に切り替えます(漏れがあるとそのホスト宛が不達となります)。_mta-sts TXT の id= を必ず更新し、送信側に再取得させます。curl -s https://mta-sts.example.com/.well-known/mta-sts.txt が mode: enforce を返し、dig +short MX example.com の全ホストが mx: 行に記載されていることで行います。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.mail:example.com
HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.mta_sts_policy:example.com
example.com のメールが単一の MX ホストにのみ配送されている
検査エンジン原文(英語)
mail is delivered to a single MX host
上昇幅: 変動なし
対象 (全 1 件(未検査の対象を含む))
リスク詳細
MX が 1 ホストのみの場合、そのホストが停止している間に届いたメールは、送信側の再送が尽きた時点で失われます。再送期間は送信側の設定次第であり、数時間で諦める実装もあります。取引先からの発注や、パスワード再設定の通知が、こちらの障害中に消えることになります。
example.com. IN MX 20 mx2.example.net. のように高い優先度値で追加します。dig +short MX example.com が 2 件以上の異なるホスト名を返すこと、および 1 台目を停止した状態で 2 台目へ配送されることで行います。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.mail:example.com
example.com の SPF が -all で終わっておらず、列挙外の送信元を拒否していない
検査エンジン原文(英語)
SPF soft fail (~all)
上昇幅: 変動なし
対象 (全 1 件(未検査の対象を含む))
リスク詳細
`~all` や `?all` は「列挙していない送信元から届いても、印を付けるだけで受け入れてよい」と伝えます。実際に多くの受信側は配送するため、なりすましメールは受信箱まで届きます。`-all` は「この一覧がすべてであり、それ以外は不正な送信元である」と明示する宣言です。
~all / ?all から -all に変更します。-all のみでは不達となる可能性があります。dig +short TXT example.com | grep spf1 が -all で終わること、および次の DMARC レポートで正規送信元の失敗が増えていないことで行います。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.mail:example.com
example.com に TLS-RPT の TXT レコード(_smtp._tls)が無い
検査エンジン原文(英語)
no TLS-RPT record
上昇幅: 変動なし
対象 (全 1 件(未検査の対象を含む))
リスク詳細
TLS-RPT が無い場合、送信側が当該 MX への STARTTLS に失敗しても、その事実は誰にも通知されません。攻撃者による STARTTLS の除去も、証明書の期限切れも、同じ「通知なき平文配送」として見過ごされます。MTA-STS や DANE の不具合を検知する手段が TLS-RPT です。
_smtp._tls.example.com に TXT レコードを公開します: v=TLSRPTv1; rua=mailto:tlsrpt@example.com(rua=https://... の投稿先も利用できます)。dig +short TXT _smtp._tls.example.com、および外部から自ドメイン宛のメールが流れた翌日以降に最初のレポートが届くことで行います。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.mail:example.com
example.com がスクリプトから読める Cookie を発行している: theme
検査エンジン原文(英語)
cookies readable by script (no HttpOnly): [theme]
上昇幅: 変動なし
対象 (全 1 件(未検査の対象を含む))
リスク詳細
HttpOnly の無い Cookie は、ページ上で動く JavaScript から読めます。スクリプトを 1 つ注入された時点で、セッション Cookie はそのまま外部へ送信されます。HttpOnly はその読み取りを止めるため、注入の被害がセッション奪取まで及ぶのを防ぎます。
session.cookie_httponly = 1、Express は cookie: { httpOnly: true }(既定で有効)、Rails は既定で付きます。HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.headers:example.com
example.com の応答にクロスオリジン分離のヘッダが揃っていない
検査エンジン原文(英語)
the page is not isolated from other origins
上昇幅: 変動なし
対象 (全 1 件(未検査の対象を含む))
リスク詳細
Cross-Origin-Opener-Policy が無い場合、`window.open` で開かれた側と開いた側は互いの window を参照でき、他サイトから開かれたページは操作の足がかりを与えます。Cross-Origin-Resource-Policy が無い場合、こちらの資源が他サイトのページに読み込まれ、Spectre 系の手法で内容を推測される余地が残ります。
Cross-Origin-Opener-Policy: same-origin と Cross-Origin-Resource-Policy: same-origin を付けます。add_header Cross-Origin-Opener-Policy "same-origin" always; と add_header Cross-Origin-Resource-Policy "same-origin" always; です。cross-origin を明示するか、対象を分けてください。same-origin-allow-popups とします。HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.headers:example.com
example.com の応答に Content-Security-Policy ヘッダが無い
検査エンジン原文(英語)
content-security-policy missing
上昇幅: 変動なし
対象 (全 1 件(未検査の対象を含む))
リスク詳細
CSP が無い場合、注入されたスクリプトはその種類を問わずページの全権限で実行されます。保存型 XSS、侵害されたサードパーティのタグ、サブドメイン乗っ取りのいずれでも同様です。Cookie も API 呼び出しも攻撃者のスクリプトから操作可能になります。
Content-Security-Policy-Report-Only: default-src 'self'; script-src 'self'; object-src 'none'; frame-ancestors 'none'; base-uri 'self'; report-uri /csp-report。'unsafe-inline' ではなく nonce で許可します。Content-Security-Policy に変更します。add_header Content-Security-Policy "..." always;、Apache は Header always set Content-Security-Policy "..." を用います。curl -sI https://example.com | grep -i content-security-policy が応答を返すこと、およびブラウザのコンソールに違反が表示されないことで行います。HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.headers:example.com
example.com の Permissions-Policy が未設定か、書式が妥当で無い
検査エンジン原文(英語)
Permissions-Policy is absent or malformed
上昇幅: 変動なし
対象 (全 1 件(未検査の対象を含む))
リスク詳細
このヘッダが無いと、ページに埋め込まれた第三者のフレームが、こちらのオリジンに与えられたカメラ・マイク・位置情報の許可をそのまま引き継げます。広告や解析のタグを 1 つ入れているだけで、その提供元が利用者に許可を求められる状態です。
Permissions-Policy: geolocation=(), camera=(), microphone=(), payment=() のように、機能ごとに空の許可リストを書きます。geolocation=(self) とします。add_header Permissions-Policy "geolocation=(), camera=(), microphone=()" always; です。curl -sI https://example.com | grep -i permissions-policy で行います。HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.headers:example.com
example.com の Referrer-Policy が未設定か、外部へ URL を送る値になっている
検査エンジン原文(英語)
Referrer-Policy is absent or permissive
上昇幅: 変動なし
対象 (全 1 件(未検査の対象を含む))
リスク詳細
このヘッダを設定していないか、緩い値にしていると、利用者が外部サイトへ移動するときに元の URL がそのまま送られます。URL にセッションのトークン、リセット用の鍵、検索語、社内システムのパスが含まれていれば、それが第三者のアクセスログに残ります。
Referrer-Policy: strict-origin-when-cross-origin を設定します。no-referrer を使います。unsafe-url と no-referrer-when-downgrade、origin-when-cross-origin は外部へ情報が出るため本項目では不合格とします。add_header Referrer-Policy "strict-origin-when-cross-origin" always; です。curl -sI https://example.com | grep -i referrer-policy で行います。HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.headers:example.com
example.com の HTTPS レコードに ECH の設定(ech=)が無い
検査エンジン原文(英語)
no ECH config in HTTPS records
上昇幅: 変動なし
対象 (全 1 件(未検査の対象を含む))
リスク詳細
ECH が無い場合、TLS の ClientHello に含まれる接続先ホスト名が平文で送信されます。通信内容が暗号化されていても、経路上の事業者・検閲装置・侵害されたルータは「誰がどのホストに接続したか」を把握でき、ホスト単位で遮断できます。
ech= を載せられるかを問い合わせます。ech= の値を HTTPS レコードに公開します。dig +short HTTPS example.com の出力に ech= が含まれることで行います。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.https:example.com
DNS 応答対象 www.example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.https:www.example.com
example.com の HTTPS レコードが HTTP/3(alpn=h3)を広告していない
検査エンジン原文(英語)
HTTP/3 not advertised
上昇幅: 変動なし
対象 (全 1 件(未検査の対象を含む))
リスク詳細
TCP のみの場合、経路上からの RST 注入や中間装置によるセッション切断で接続を妨害できます。QUIC はトランスポート層まで暗号化・認証されているため、外部からこの種の干渉ができません。DNS で広告しておけば、クライアントは Alt-Svc の往復を待たずに最初の接続から QUIC を利用できます。
example.com. 300 IN HTTPS 1 . alpn="h3,h2"。listen 443 quic reuseport; を listen 443 ssl; と並記し、http3 on; と add_header Alt-Svc 'h3=":443"; ma=86400' always; を設定したうえで、UDP/443 をファイアウォールで開放します(開放を忘れると通知なく TCP にフォールバックします)。dig +short HTTPS example.com に alpn="h3" が含まれること、および curl --http3 -sI https://example.com が応答することで行います。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.https:example.com
DNS 応答対象 www.example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.https:www.example.com
この実行では、収集上の問題は記録されていません。
検査エンジン原文(英語)
no malware-feed key is configured, so the feed could not be asked
上昇幅: 算出していません
理由: 公開情報からはこの項目を観測できませんでした。
対象 (全 1 件(未検査の対象を含む))
リスク詳細
サーバがマルウェアの配信元として記録されている場合、そこに置かれたファイルが実際に配布されています。多くは侵入した攻撃者が設置したもので、当該サーバは他者への攻撃の道具として使われている状態です。被害を受けるのは配布先の第三者であり、責任を問われるのは配信元です。
threat対象 example.com取得 2026/09/01 09:00 JST
根拠 ID threat:threat.intel:example.com
検査エンジン原文(英語)
no threat-intelligence key is configured, so the service could not be asked
上昇幅: 算出していません
理由: 公開情報からはこの項目を観測できませんでした。
対象 (全 1 件(未検査の対象を含む))
リスク詳細
Google Safe Browsing に登録されると、Chrome・Safari・Firefox のいずれでも、サイトを開こうとした利用者に赤い警告画面が出ます。利用者は本文に到達しません。検索結果からも外れ、広告も配信できなくなります。原因の多くは、改ざんされて誘導が仕込まれたページか、利用者投稿を通じた不正な内容の掲載です。
threat対象 example.com取得 2026/09/01 09:00 JST
根拠 ID threat:threat.intel:example.com
この手順に出てくる example.com は記述例です。ご自身のドメイン名に読み替えてください(letsencrypt.org のように実在する第三者のホスト名も混ざっているため、機械的な置換はしていません)。
検査エンジン原文(英語)
the page links to no document on this site
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
PDF や Office の文書には、作成者名、最終更新者、使用したソフトウェアとその版数、保存元のファイルパスが埋め込まれます。パスには社内のファイルサーバ名やアカウント名がそのまま入ります。攻撃者にとっては、標的とする個人の氏名と、社内の構成を知る手がかりです。
exiftool -all= file.pdf で除去します。この項目は根拠 ID を持っていません。
検査エンジン原文(英語)
the site links to no public code repository
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
公開リポジトリに設定ファイルを含めてしまうと、その中の資格情報は誰でも取得できます。リポジトリを非公開に切り替えても、履歴を書き換えても、既に取得された内容は無効になりません。公開リポジトリを機械的に走査して資格情報を集める仕組みは常時稼働しており、公開から利用までは数分です。
git filter-repo を使い、強制プッシュ後に共同作業者へ再クローンを依頼)。.gitignore に設定ファイルを加え、コミット前に走査する仕組み(gitleaks、git-secrets)を導入してください。この項目は根拠 ID を持っていません。
検査エンジン原文(英語)
no BIMI record published; BIMI is optional
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
BIMI は、受信側のメール一覧に自社のロゴを表示させる仕組みです。表示されることで、差出人が本物であることが受信者の目に見える形になります。レコードの書式が誤っていると表示されないため、なりすましとの見分けが付きにくいままになります。
default._bimi の TXT レコードに v=BIMI1; l=https://example.com/logo.svg; の形式で記載します。l= にはロゴの HTTPS の URL が必要です。p=quarantine 以上が要求されます。dig +short TXT default._bimi.example.com で行います。この項目は根拠 ID を持っていません。
検査エンジン原文(英語)
no report address outside this domain
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
DMARC の集計レポートを自ドメイン外の宛先に送るには、受け取る側のドメインが認可のレコードを公開している必要があります(RFC 7489 第 7.1 節)。無い場合、規格に従う受信側はレポートを送りません。宛先の記載は正しいのにレポートが 1 通も届かない、という形で現れます。
example.com._report._dmarc.<提供元のドメメイン> の TXT に v=DMARC1 です。dig +short TXT example.com._report._dmarc.<提供元のドメイン> で v=DMARC1 が返ることです。この項目は根拠 ID を持っていません。
検査エンジン原文(英語)
no Content-Security-Policy to assess
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
`unsafe-inline` は、ページに書き込まれたスクリプトの実行を許可します。これは CSP が防ごうとしている当のものです。`unsafe-eval` は文字列をコードとして評価する経路を残します。どちらかを含む CSP は、ヘッダとしては存在していても、注入されたスクリプトを止めません。
script-src 'nonce-<値>' として CSP に載せ、同じ値を <script nonce="<値>"> に書きます。unsafe-inline を無視するため、古いブラウザ向けに残しても実効性は下がりません。unsafe-eval は、eval や new Function を使っているライブラリを特定して置き換えます。curl -sI https://example.com | grep -i content-security-policy と、ブラウザの開発者ツールのコンソールに違反が出ないことで行います。この項目は根拠 ID を持っていません。
この手順に出てくる example.com は記述例です。ご自身のドメイン名に読み替えてください(letsencrypt.org のように実在する第三者のホスト名も混ざっているため、機械的な置換はしていません)。
検査エンジン原文(英語)
1 certificates in the public logs, covering 2 names from 1 issuers
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
自社のドメイン名で証明書が発行されると、その事実は証明書透明性ログに公開されます。逆に言えば、意図しない発行もそこに現れます。身に覚えの無い名前や発行元があれば、DNS の乗っ取りか、社内の誰かが把握されていない経路で取得したかのどちらかです。
CT ログ(crt.sh + Cert Spotter)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID crtsh:crtsh.certs:example.com
検査エンジン原文(英語)
none of the 15 variants checked is registered
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
アクセント付きのラテン文字や、数字の 0 と英字の o のように、画面上でほとんど区別の付かない文字があります。これらを 1 文字置き換えたドメインは、URL を目で確かめても本物と見分けが付きません。打ち間違いと違い、利用者の側に落ち度がありません。
dns-rep対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns-rep:dns.lookalike:example.com
検査エンジン原文(英語)
none of the 42 variants checked is registered
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
1 文字違いのドメインは、急いで入力した利用者が実際に辿り着く先です。そこに似せたサインイン画面を置けば、資格情報がそのまま渡ります。取引先を騙る請求書メールの差出人にも使われます。この項目は当該ドメインの欠陥では無く、周辺の状況の報告です。
dns-rep対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns-rep:dns.lookalike:example.com
検査エンジン原文(英語)
the certificates the server sends link up without a gap
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
サーバは、自身の証明書から信頼されたルート認証局まで辿れるだけの中間証明書を、握手の中で相手に渡す必要があります。渡していない場合、その中間証明書を手元に持っているブラウザでは通り、持っていない環境では失敗します。開発者の手元では再現せず、一部の利用者や、古い端末や、他社の連携システムだけが失敗するという形で現れます。
ssl_certificate には「サーバ証明書 → 中間証明書」の順に連結したものを指定してください。cert.pem では無く fullchain.pem がそれです。SSLCertificateChainFile、または同様に連結した SSLCertificateFile を使います。openssl s_client -connect example.com:443 -showcerts </dev/null の出力に、サーバ証明書に続いて中間証明書が並ぶことです。TLS 接続(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID tls:tls.probe:example.com
検査エンジン原文(英語)
1 valid certificates in CT logs
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
本項目の判定は Certificate Transparency ログの公開索引(crt.sh と Cert Spotter の 2 索引を突き合わせ)に基づきます。索引は高負荷時に空の応答を返すことがあり、その場合は「証明書が存在しない」ではなく「索引が回答しなかった」と解釈すべきです(2026-09-08 に、実在する有効な証明書がこの事象で検出されない例を確認しています)。索引に登録があるにもかかわらず有効なものが無い場合のみ要対応とし、索引が空の場合はデータ未取得として報告します。有効な証明書が無い、または名前が一致しない状態では、利用者はブラウザの警告を毎回無視して進むことになります。その運用が定着すると、経路上の攻撃者が用意した偽の証明書や平文通信への引き下げも「いつもの警告」として受け入れられてしまいます。
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -dates -ext subjectAltName。certbot --nginx -d example.com -d www.example.com、商用 CA であれば申請時に両方の名前を指定します。nginx -t && systemctl reload nginx を実行します。openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -dates -ext subjectAltName で両方の名前と将来の notAfter が表示されることをもって行います。CT ログ(crt.sh + Cert Spotter)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID crtsh:crtsh.certs:example.com
検査エンジン原文(英語)
newest certificate valid for 26510 more days
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
証明書が失効すると、すべてのブラウザと API クライアントが接続を拒否します。復旧を急ぐ現場では「一時的に証明書検証を無効にする」回避策が導入されがちで、その状態は経路上の攻撃者にとって好都合です。
systemctl list-timers | grep certbot でタイマの稼働を確認し、certbot renew --dry-run が成功することを確かめます。acme.sh --cron --home ~/.acme.sh が crontab に登録されていることを確認します。--deploy-hook "systemctl reload nginx" のようにフックで実施します。openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -enddate で残り期間が 14 日を大きく超えていることを確認してください。CT ログ(crt.sh + Cert Spotter)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID crtsh:crtsh.certs:example.com
検査エンジン原文(英語)
the certificate covers this host name
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
証明書に記載された名前が接続先のホスト名と一致しない場合、ブラウザは警告画面を出して通信を止めます。利用者はそこで引き返すか、警告を無視する習慣を身につけるかのどちらかです。後者が定着すると、本物の中間者攻撃の警告も同じように無視されます。
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -text | grep -A1 'Subject Alternative Name' で現在の記載を確認できます。certbot certonly -d example.com -d www.example.com のように、必要な名前をすべて -d で並べて取得し直します。TLS 接続(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID tls:tls.probe:example.com
検査エンジン原文(英語)
ECDSA key of 256 bits
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
鍵が短いほど、計算によって秘密鍵を求められる可能性が上がります。秘密鍵が割り出された場合、攻撃者はその名前で正規の通信を装えます。RSA 1024 ビットは既に実用的な危険域にあり、公開認証局は 2048 ビット未満を発行しません。
openssl genrsa -out key.pem 2048、または鍵長あたりの処理が軽い openssl ecparam -genkey -name prime256v1 -out key.pem を使います。certbot certonly --key-type ecdsa -d example.com で楕円曲線の鍵になります。TLS 接続(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID tls:tls.probe:example.com
検査エンジン原文(英語)
the stapled status says the certificate is not revoked
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
失効した証明書は、秘密鍵の漏えいか、誤発行か、そのいずれかが疑われたために取り消されたものです。取り消された鍵で通信を続けている場合、その鍵を持つ者は誰でも、こちらになりすませます。ブラウザの失効確認は失敗時に検証を省く実装が多く、利用者側では気づかれません。
TLS 接続(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID tls:tls.probe:example.com
検査エンジン原文(英語)
the certificate is issued by a separate authority
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
自己署名証明書は、その証明書自身が「これは正しい」と言っているだけで、第三者による裏付けがありません。ブラウザは警告を出し、利用者はそれを無視して進むことになります。その状態では、攻撃者が別の自己署名証明書に差し替えても、利用者には同じ警告としか見えません。
certbot --nginx -d example.com または certbot --apache -d example.com で取得と設定まで行えます。openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -issuer -subject で issuer と subject が別であることを確認します。TLS 接続(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID tls:tls.probe:example.com
検査エンジン原文(英語)
no internal-looking host names in the public certificates
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
証明書は発行された時点で証明書透明性ログに公開され、誰でも検索できます。`staging.example.com` や `jenkins.example.com` を公開証明書に含めると、社内システムの構成そのものが一覧として外部に渡ります。攻撃者にとっては、どこを狙うかを決めるための地図です。
https://crt.sh/?q=%25.example.com で確認できます。CT ログ(crt.sh + Cert Spotter)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID crtsh:crtsh.certs:example.com
検査エンジン原文(英語)
signed with SHA256-RSA
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
SHA-1 と MD5 は、異なる内容から同じ署名値を作る手口が実証済みです。攻撃者が同じ署名で通る別の証明書を用意できれば、認証局の裏付けを迂回できます。主要なブラウザは既にこれらの署名を拒否しています。
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -text | grep 'Signature Algorithm' で確認してください。TLS 接続(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID tls:tls.probe:example.com
検査エンジン原文(英語)
the chain reaches a trusted root
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
証明書の連鎖がブラウザの信頼するルート認証局まで届かない場合、証明書そのものが正規のものであっても検証は失敗します。原因の多くは中間証明書の設定漏れです。手元のブラウザでは通るのに一部の環境だけで警告が出る、という形で現れるため、気づかれないまま放置されがちです。
ssl_certificate に「サーバ証明書 → 中間証明書」の順で連結した fullchain を指定します。cert.pem ではなく fullchain.pem です。SSLCertificateChainFile、または同様に連結した SSLCertificateFile を使います。openssl s_client -connect example.com:443 -servername example.com </dev/null の出力末尾が Verify return code: 0 (ok) になることを確認してください。TLS 接続(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID tls:tls.probe:example.com
検査エンジン原文(英語)
all 2 name servers refuse a zone transfer
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
ゾーン転送を誰にでも許している場合、そのドメインのレコードが 1 回の問い合わせで丸ごと取得できます。公開していないつもりのホスト名、開発環境、内部システムの名前まで、一覧として渡ります。攻撃者は、どこに何があるかを推測する必要がなくなります。
allow-transfer { 203.0.113.53; }; をゾーンまたは options に記載し、可能であれば TSIG 鍵での認証を併用します。allow-axfr-ips を設定します。dig AXFR example.com @ns1.example.com が Transfer failed を返すことです。dns-auth対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns-auth:dns.authority:example.com
検査エンジン原文(英語)
the delegation matches the zone's NS records
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
レジストラに登録した委任先と、ゾーン自身が公開している NS レコードが食い違っている場合、解決の経路によって別のサーバに問い合わせが向かいます。古い側のサーバがまだ応答していれば、更新前の内容が返り続けます。応答が止まっていれば、そのサーバに当たった問い合わせは失敗します。いずれも「時々つながらない」という、原因の掴みにくい形で現れます。
dig +short NS example.com と、上位ゾーンへ直接問い合わせた dig +norecurse NS example.com @<上位の NS> の結果が一致することです。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
検査エンジン原文(英語)
name servers span 2 networks
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
権威 DNS が同じネットワークに固まっている場合、そのネットワークの障害や攻撃で全台が同時に応答を止めます。名前が引けなくなれば、Web もメールも到達しません。台数だけを増やしても、置き場所が同じであれば冗長にはなりません。
dig +short NS example.com の各ホストを dig +short で引き、返る IP アドレスが別のネットワークにあることを確認します。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
検査エンジン原文(英語)
2 name servers
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
権威サーバが 1 台のみの場合、そのサーバが停止した時点でドメイン全体の名前解決ができなくなります。乗っ取られた場合の影響はさらに大きく、A・MX・ACME のチャレンジ応答がすべて攻撃者の任意の値となり、正規の証明書まで発行される恐れがあります。
also-notify / allow-transfer を設定し、もう一方を type secondary; としてゾーン転送を構成します。dig +trace NS example.com の最後の委任(親 TLD の権威サーバが返す NS)に全サーバが並ぶこと、および各サーバへの dig SOA example.com @<ns> が同一のシリアルを返すことで行います。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
検査エンジン原文(英語)
none of the 2 name servers resolves for strangers
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
権威 DNS が誰の問い合わせにも再帰的に応答する場合、そのサーバは DNS リフレクション攻撃の増幅器として使われます。小さな問い合わせに大きな応答を返す性質を利用され、送信元を詐称された第三者へ大量の通信が向けられます。被害を受けるのは第三者ですが、送信元として記録されるのはこちらのサーバです。
options に recursion no; と allow-recursion { none; }; を記載します。dig @ns1.example.com example.org が REFUSED を返すことです。dns-auth対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns-auth:dns.authority:example.com
検査エンジン原文(英語)
SOA timers are within the usual range
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
SOA のタイマは、副の権威 DNS が主から情報を取り直す間隔と、取り直せない状態が続いたときに応答をやめるまでの猶予を決めます。expire が短すぎると、主が短期間止まっただけでゾーン全体が消えます。retry が refresh より長いと、失敗したあとの再試行が通常の更新より遅くなり、意図と逆になります。
dig +short SOA example.com の後半 4 つの数値で行います。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
検査エンジン原文(英語)
none of the 1 subdomains points at a claimable name
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
外部サービスを解約したあと、そのサービスを指す CNAME をゾーンに残していると、同じ名前を後から取得した者が、こちらのサブドメインで自由に内容を配信できます。証明書も取得できるため、鍵マークの付いた本物のドメインで偽のページが動きます。利用者にも、ブラウザにも、見分けは付きません。
https://crt.sh/?q=<サブドメイン> で確認します。dig +short <サブドメイン> が何も返さないことです。DNS 応答対象 api.example.com取得 2026/09/01 09:00 JST
根拠 ID dns-sub:dns.host:api.example.com
検査エンジン原文(英語)
an unregistered name does not resolve
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
ワイルドカードを置いたゾーンは、存在しない名前にも応答します。綴りを間違えた名前がそれらしく開いてしまうため、利用者は誤りに気づけません。攻撃者にとっては、任意の名前で証明書を取り、こちらのドメインで動く偽のページを用意する足がかりになります。
* のレコードを削除し、必要なホスト名を個別に定義します。dig +short random-name-check.example.com で引き、何も返らないことです。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
検査エンジン原文(英語)
the registration runs for another 26644 days
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
ドメインの登録が切れると、Web もメールも一斉に止まります。さらに、一定の期間を過ぎたドメインは第三者が取得できる状態になり、そこで発行された証明書と受信されたメールは、こちらの名前で行われたことになります。失効は設定の誤りでは無く、更新の失念で起きます。
whois example.com の Expiry Date です。rdap対象 example.com取得 2026/09/01 09:00 JST
根拠 ID rdap:rdap.domain:example.com
検査エンジン原文(英語)
the registration carries the transfer and delete locks
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
移転ロックが掛かっていない場合、レジストラの管理画面に侵入した者は、そのままドメインを別のレジストラへ移せます。移転が完了すると、こちらから取り戻す手続きは著しく困難になります。ドメインを失うことは、Web とメールと、その名前で発行される証明書のすべてを失うことです。
clientTransferProhibited)と削除ロック(clientDeleteProhibited)を有効にします。whois example.com の Domain Status です。rdap対象 example.com取得 2026/09/01 09:00 JST
根拠 ID rdap:rdap.domain:example.com
検査エンジン原文(英語)
no API specification is served at the checked paths
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
OpenAPI の定義や仕様の閲覧画面は、利用できる操作、引数、内部の識別子の形式を網羅した一覧です。公開を意図している場合は問題ありませんが、社内向けの API や管理用の操作まで同じ定義に含まれていることがあります。攻撃者にとっては、試すべき操作を列挙する手間が省けます。
http対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.probes:example.com
検査エンジン原文(英語)
no issues across indexed hosts
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
公開索引には、当該ホストのバージョン付き CPE が記録されています。これはホスト自身がバージョンを応答したためであり、攻撃者はそれを参照するだけで当該バージョンに有効な既知の脆弱性を絞り込めます。この影響は実際の修正適用状況とは無関係に生じます。索引は応答されたバージョンで CVE を突き合わせるため、修正済みのホストであっても「脆弱な nginx」の一覧に掲載され続け、その一覧が標的リストとして利用されます。
server_tokens off; を追加し、nginx -t && systemctl reload nginx を実行します。ServerTokens Prod と ServerSignature Off を設定します。smtpd_banner = $myhostname ESMTP とします。X-Powered-By 等のヘッダを除去します。curl -sI https://example.com | grep -i '^server:' がバージョンを含まないことで行います。この項目は根拠 ID を持っていません。
検査エンジン原文(英語)
no cross-domain policy file is served
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
`crossdomain.xml` は Flash と Silverlight のための設定で、いずれも提供が終了しています。`domain="*"` を含む場合、当時の実装では任意のサイトがこちらのドメインに対して資格情報付きの要求を行えました。現在のブラウザは読みませんが、ファイルが残っているということは、そのポリシーが必要だった時期の設定が見直されないまま残っているという意味です。
crossdomain.xml と clientaccesspolicy.xml を削除します。domain="*" を具体的なドメイン名に置き換えてください。curl -sI https://example.com/crossdomain.xml が 404 を返すことです。http対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.probes:example.com
検査エンジン原文(英語)
no issues across indexed hosts
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
Redis・Memcached・Elasticsearch・MongoDB は既定で認証を持ちません。インターネットから届く状態にした時点で、誰でも中身を読み書きできます。MySQL・PostgreSQL・SQL Server は認証こそありますが、公開されていれば総当たり攻撃の最初の標的になります。いずれも信頼できる内部ネットワークを前提に設計されたものです。
mysqld.cnf の bind-address = 127.0.0.1、PostgreSQL は postgresql.conf の listen_addresses = 'localhost'、Redis は redis.conf の bind 127.0.0.1 と protected-mode yes、Elasticsearch は elasticsearch.yml の network.host: 127.0.0.1、MongoDB は mongod.conf の net.bindIp: 127.0.0.1 です。nmap -Pn -p 1433,3306,5432,6379,9200,11211,27017 <ip> が open を返さないこと、およびアプリケーションから従来どおり接続できることの両方を確認します。この項目は根拠 ID を持っていません。
検査エンジン原文(英語)
the response is a configured site, not a stock page
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
サーバソフトウェアの初期ページが表示されるということは、その名前に対して誰も設定を行っていないという意味です。放置された仮想ホストは、更新の対象から外れたまま古い版で動き続けます。攻撃者にとっては、管理が行き届いていない入口を示す目印です。
server_name _; の既定サーバを用意し return 444; とし、Apache では最初の VirtualHost を同様の扱いにします。curl -sI https://example.com/ が想定した応答を返すことです。HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.headers:example.com
検査エンジン原文(英語)
no issues across indexed hosts
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
Jenkins・GitLab・Grafana・Kibana などの管理画面は、公開された時点で、そこに映る情報そのものが下調べの材料になります。多くは初期設定のまま匿名閲覧を許し、Jenkins のようにジョブ実行からホスト上のコマンド実行につながるものもあります。本項目は公開索引が記録した製品の指紋で判定するため、既定以外のポートに移していても検出されます。
grafana.ini の [auth.anonymous] enabled = false)。この項目は根拠 ID を持っていません。
検査エンジン原文(英語)
none of the checked directories lists its contents
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
索引ファイルの無いディレクトリで一覧表示が有効になっていると、そこに置いてある全ファイルの名前が見えます。作業用の控えや、公開する前の資料、命名から用途が分かる管理用のファイルまで、意図せず一覧に載ります。攻撃者にとっては、推測せずに中身を確かめられる場所です。
autoindex off; に戻します。Options から Indexes を外し、Options -Indexes とします。curl -s https://example.com/uploads/ | head が一覧を返さないことを確認してください。http対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.probes:example.com
検査エンジン原文(英語)
no issues across indexed hosts
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
FTP と Telnet は認証情報も本文も平文で流します。経路上にいる者は、そのまま利用者名とパスワードを読み取れます。TFTP には認証そのものがなく、ファイル名を知っていれば誰でも取得できます。いずれも暗号化された代替が広く使えるようになった現在、公開しておく理由がありません。
systemctl disable --now vsftpd や systemctl disable --now telnet.socket のように停止したうえで、ファイアウォールでも遮断します。nmap -Pn -p 21,23 <ip> と nmap -Pn -sU -p 69 <ip> が open を返さないことで行います。この項目は根拠 ID を持っていません。
検査エンジン原文(英語)
no issues across indexed hosts
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
Docker の API(2375、2376)と Kubernetes の API サーバ(6443)、kubelet(10250)は、いずれもホスト上で任意のコンテナを起動できる権限に直結します。とくに 2375 は暗号化も認証も持たないため、到達できる者はそのホストで実質的に root を取得できます。基盤全体が一度に奪われる経路です。
dockerd の -H tcp:// を外し、Unix ソケットのみで待ち受けます。--anonymous-auth=false で無効にします。nmap -Pn -p 2375,2376,6443,10250 <ip> が open を返さないことで行います。この項目は根拠 ID を持っていません。
検査エンジン原文(英語)
no issues across indexed hosts
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
待受が 1 つ増えるごとに、適用すべきパッチと、攻撃者がバージョンを照合できるバナーが 1 つ増えます。公開ポートが多いホストには、管理者が把握していないサービスが含まれていることが少なくありません。
ss -tulpn で実際に待ち受けているサービスを一覧化し、1 つずつ「停止する(systemctl disable --now <unit>)」「localhost または内部 NIC に bind する」「意図して公開する」のいずれかに分類します。ufw default deny incoming に必要なポートのみ allow を追加、クラウドでは列挙したポートのみのセキュリティグループ)。nmap -Pn --top-ports 1000 <ip> を各ホストに実行し、open が 10 以下であることをもって行います。この項目は根拠 ID を持っていません。
検査エンジン原文(英語)
no issues across indexed hosts
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
RDP と VNC がインターネットから届く状態は、認証情報の総当たり攻撃が常時発生することを意味します。RDP は過去に認証前の遠隔コード実行の脆弱性が繰り返し見つかっており、公開されているだけで危険が続きます。VNC は設定によっては認証なしで画面を渡します。
ufw allow from 203.0.113.0/24 to any port 3389 proto tcp を登録したうえで ufw deny 3389 を追加し、ufw status numbered で既存の無条件許可が残っていないか確認します。nmap -Pn -p 3389,5900 <ip> を実行し、open ではなく filtered が返ることで行います。この項目は根拠 ID を持っていません。
検査エンジン原文(英語)
none of the checked sensitive paths is served
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
`.git/config` が読める場合、リポジトリ全体を取得できることがあります。`.env` はデータベースの資格情報や API キーをそのまま含みます。いずれも配置の誤りで公開されるもので、攻撃者は自動化した走査で日常的にこれらを探しています。読まれた時点で、内部の資格情報が渡ったものとして扱う必要があります。
location ~ /\. { deny all; }、Apache は <FilesMatch "^\.">Require all denied</FilesMatch> です。http対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.probes:example.com
検査エンジン原文(英語)
no issues across indexed hosts
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
SMB はインターネットに向けて公開する設計ではありません。公開されていれば、共有の一覧と認証情報の総当たりを許し、過去には認証前に遠隔コード実行を許す脆弱性が広く悪用されました。ランサムウェアの侵入口として最も知られた経路の一つです。
nmap -Pn -p 139,445 <ip> が open を返さないことで行います。この項目は根拠 ID を持っていません。
検査エンジン原文(英語)
no issues across indexed hosts
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
SNMP v1 と v2c の community 文字列は平文で流れ、既定値の public が残っていることも珍しくありません。読めるだけでも、稼働しているプロセス、ネットワーク構成、機器の型番と版数が一覧で取得でき、次の攻撃の下調べがそのまま完了します。UDP のため、送信元を偽った増幅攻撃の踏み台にも使われます。
snmpd.conf の rocommunity 行を削除し、createUser と rouser で v3 の利用者を定義します。nmap -Pn -sU -p 161 <ip> が open を返さないことで行います。この項目は根拠 ID を持っていません。
検査エンジン原文(英語)
no issues across indexed hosts
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
本項目で示す CVE は、公開しているバナーのバージョンを公開索引が CVE データベースと機械的に突き合わせた結果です。この方法ではディストリビューションによるバックポート修正を判別できません。Ubuntu や Debian は修正を取り込んでもアップストリームのバージョン番号を変更しないため、修正済みのホストと未修正のホストは外部からは同一の文字列に見えます(実例: nginx 1.24.0-2ubuntu7.17 は CVE-2025-23419 と CVE-2023-44487 の修正を適用済みでありながら、両 CVE とも索引に掲載されていました)。ただし放置してよいわけではありません。同じ索引はそのまま標的リストとして利用され、索引に掲載される程度に知られた CVE には実証コードが出回っていることが一般的です。
dpkg -l <パッケージ> で導入バージョンを確認し、zcat /usr/share/doc/<パッケージ>/changelog.Debian.gz | grep CVE-XXXX-NNNNN に当該 CVE の修正記載があるか、その版が導入版以下であるかを確認します。rpm -q --changelog <パッケージ> | grep CVE-XXXX-NNNNN を用います。apt update && apt upgrade または dnf upgrade の後にサービスを再起動、コンテナであればイメージを更新して再デプロイ)。この項目は根拠 ID を持っていません。
検査エンジン原文(英語)
certificate lifetime 90 days
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
有効期間 1 年の証明書は、秘密鍵が漏えいした場合にその鍵が 1 年間使われ続ける可能性を意味します。失効(CRL/OCSP)は実運用では十分に機能せず、有効期間の短さが実質的に唯一の歯止めとなります。加えて CA/Browser Forum は有効期間の上限を段階的に 47 日まで短縮する方針であり、手作業による更新は近い将来、運用が困難になります。
--deploy-hook "systemctl reload nginx" のようにフックで行い、certbot renew --dry-run で無人更新の経路が機能することを確認します。openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -dates の notBefore と notAfter の差が 90 日以内であることで行います(自動化できていれば、将来の 47 日運用にもそのまま対応できます)。CT ログ(crt.sh + Cert Spotter)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID crtsh:crtsh.certs:example.com
検査エンジン原文(英語)
hybrid post-quantum key exchange accepted
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
現在記録された通信は、量子計算機が楕円曲線の鍵交換を解読できるようになった時点でまとめて復号される恐れがあります(いわゆる harvest now, decrypt later)。ハイブリッド鍵交換(X25519MLKEM768)を有効にすれば、現在の安全性を損なわずに、通信を記録しておく価値を失わせることができます。
X25519MLKEM768 を既定で提供します。ssl_ecdh_curve X25519MLKEM768:X25519:prime256v1; を指定します。openssl version で対応状況を確認してください。openssl s_client -connect example.com:443 -groups X25519MLKEM768 </dev/null がハンドシェイクに成功し、Negotiated TLS1.3 group: X25519MLKEM768 と表示されることで行います。TLS 接続(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID tls:tls.probe:example.com
検査エンジン原文(英語)
all prefixes RPKI valid
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
ROA が無い場合、BGP を運用する第三者が当該アドレス空間を自らのものとして広告し、通信を引き込むことができます。引き込んだ先で ACME の HTTP 検証に応答すれば、正規の証明書まで取得されます。RPKI invalid な経路を破棄する ISP が増えているため、ROA があればその広告は多くの経路で拒否されます。
RIPEstat(RPKI)対象 192.0.2.1取得 2026/09/01 09:00 JST
根拠 ID rpki:rpki.prefix:192.0.2.1
検査エンジン原文(英語)
no credential recognised in the 1 scripts read
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
ブラウザへ配信するスクリプトは、閲覧した誰もが全文を読めます。そこに API キーや秘密鍵が含まれていれば、公開したのと同じです。難読化しても、圧縮しても、読めることは変わりません。取り除いた時点で無効になるのではなく、読まれた時点で渡っています。
http対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.scripts:example.com
検査エンジン原文(英語)
robots.txt names no sensitive-looking path
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
`robots.txt` は誰でも読めるファイルです。ここに `Disallow: /admin/` と書くことは、検索結果に出さないための指示であって、アクセスを防ぐものではありません。むしろ、管理画面の場所を明示的に伝えることになります。攻撃者が最初に読むファイルの 1 つです。
robots.txt から削除します。X-Robots-Tag: noindex を付けるか、<meta name="robots" content="noindex"> を置きます。http対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.probes:example.com
検査エンジン原文(英語)
security.txt found
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
連絡先が公開されていない場合、脆弱性を発見した第三者は宛先を推測するほかなく、報告は届かないまま放置されるか、脆弱性がそのまま公表されます。連絡先が 1 つあるだけで、第三者より先に自社が把握できます。
https://example.com/.well-known/security.txt に RFC 9116 形式のテキストファイルを配置します。Contact: mailto:security@example.com と Expires:(1 年以内の RFC 3339 形式の日時)が必要です。Preferred-Languages: ja, en、方針があれば Policy: を記載します。Content-Type: text/plain; charset=utf-8 として応答してください。Expires を過ぎると無効扱いとなるため、更新を予定に組み込みます。curl -sI https://example.com/.well-known/security.txt が 200 と text/plain を返すことで行います。HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.security_txt:example.com
検査エンジン原文(英語)
the page advertises no source map
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
ソースマップは、圧縮されたスクリプトを元のコードに対応付けるための情報です。`sourcesContent` を含む形で公開すると、圧縮前のコードそのものが読めます。変数名、コメント、未公開の機能、内部の API の呼び出し方まで、開発時の内容がそのまま外部に渡ります。
sourcesContent を除いた形で出力します。devtool: false、Vite は build.sourcemap: false です。.map へのアクセスを Web サーバで拒否する)、必要なときに手元で対応付けます。sourceMappingURL が指す URL を開き、404 が返ることです。HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.headers:example.com
検査エンジン原文(英語)
DMARC pct absent, so the policy applies to all mail
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
`pct` は、DMARC の方針を適用するメールの割合を指定します。`pct=20` であれば、なりすましメールの 8 割は方針の対象外となり、`p=reject` を設定していても受信箱まで届きます。段階導入の途中であれば妥当な設定ですが、そのまま残っている場合、レポート上の見かけほど守られていません。
_dmarc の TXT レコードから pct を削除するか、pct=100 に変更します(pct を省略した場合の既定値が 100 です)。dig +short TXT _dmarc.example.com の出力に pct が無いか pct=100 であること、および次のレポートで正規送信元の拒否が増えていないことで行います。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.mail:example.com
検査エンジン原文(英語)
DMARC present
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
SPF と DKIM だけでは、それらに失敗したメールの取り扱いを受信側に指示できず、送信の実態も把握できません。DMARC が無いドメインは、なりすましの請求書やパスワード再設定メールが送られていても、その事実を検知する手段がありません。
_dmarc.example.com に TXT レコードを公開します: v=DMARC1; p=none; rua=mailto:dmarc@example.com; fo=1。_dmarc として TXT レコードを追加します。dig +short TXT _dmarc.example.com がこのレコードを返すことで行います。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.mail:example.com
検査エンジン原文(英語)
DMARC rua present
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
`rua` が無い場合、集計レポートは 1 通も届きません。誰が当該ドメインを名乗って送信しているのか、それがなりすましなのか、見落としていた正規の送信元なのかを判別できず、ポリシーを安全に強化する根拠が得られません。
_dmarc.example.com の TXT レコードに rua=mailto:dmarc@example.com を追加します(既存の v= と p= はそのまま維持)。v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; fo=1。example.com._report._dmarc.<別ドメイン> の TXT レコードで v=DMARC1 を公開しないと受信できません。dig +short TXT _dmarc.example.com に rua= が含まれること、および 1〜2 日以内に実際にレポートが届くことで行います。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.mail:example.com
検査エンジン原文(英語)
DMARC enforces on subdomains (subdomains inherit p=quarantine)
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
攻撃者は apex を騙る必要がありません。`billing.example.com` のような、実在しないサブドメインを差出人にすれば、受信者の目には同じ組織のメールとして映ります。`sp` を明示せず `p` も緩い場合、この経路には対策が及びません。
_dmarc の TXT レコードに sp=reject を追加します。dig +short TXT _dmarc.example.com に sp=reject が含まれること、および実在しないサブドメインからの試験送信が拒否されることで行います。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.mail:example.com
検査エンジン原文(英語)
MTA-STS declared
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
SMTP は STARTTLS が無い相手や証明書を検証できない相手にも平文で配送を続けるため、経路上の攻撃者は暗号化を除去してメールを読み書きできます。MTA-STS は暗号化の引き下げを送信側に拒否させる宣言ですが、DNS レコードが無ければ送信側はポリシーを取得しに来ません。
_mta-sts.example.com に TXT レコードを公開します: v=STSv1; id=20260905000000。id は任意の版番号で、ポリシーを変更した際には必ず更新します(更新しないと送信側はキャッシュを使い続けます)。https://mta-sts.example.com/.well-known/mta-sts.txt のポリシーファイルも必要です(mail.mtasts.policy を参照)。dig +short TXT _mta-sts.example.com で行います。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.mail:example.com
検査エンジン原文(英語)
every MX host has forward-confirmed reverse DNS
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
多くの受信側は、送信元 IP アドレスの逆引きが正引きで同じアドレスに戻るかを見て、正規のメールサーバかどうかを判断します。整合していない送信元は、迷惑メール扱いになるか、接続の時点で拒否されます。SPF や DKIM が整っていても、この段階で落ちます。
dig +short -x <IP> で名前が返り、dig +short <その名前> で元の IP に戻ることです。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.mail:example.com
検査エンジン原文(英語)
all 1 mail exchangers offer STARTTLS
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
STARTTLS を提供していない MX 宛のメールは、平文のまま経路を通ります。件名も本文も添付も、途中の中継点で読めます。取引先が送った請求書も、パスワード再設定の通知も同じです。送信側は暗号化を要求できず、平文で送るか送らないかしか選べません。
main.cf に smtpd_tls_security_level = may と smtpd_tls_cert_file / smtpd_tls_key_file を設定します。tls_certificate と tls_privatekey を設定します。openssl s_client -starttls smtp -connect mail.example.com:25 が握手を完了することです。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.mail:example.com
smtp対象 example.com取得 2026/09/01 09:00 JST
根拠 ID smtp:smtp.mx:example.com
検査エンジン原文(英語)
all 1 exchangers present a valid certificate
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
STARTTLS を提供していても、証明書の名前が合わない、期限が切れている、信頼された認証局に届かない場合、送信側は相手が本物かどうかを確かめられません。多くの送信側はそれでも配送します。暗号化はされますが、経路上の攻撃者が割り込んでも気づけない状態であり、暗号化の効果は大きく損なわれます。
dig +short MX example.com が返す名前)で証明書を取得し、SMTP のサービスに設定します。openssl s_client -starttls smtp -connect mail.example.com:25 の Verify return code が 0 であることです。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.mail:example.com
smtp対象 example.com取得 2026/09/01 09:00 JST
根拠 ID smtp:smtp.mx:example.com
検査エンジン原文(英語)
SPF costs 1 of the 10 permitted DNS lookups
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
受信側が SPF を評価する際に行う DNS 参照は 10 回までと定められています(RFC 7208 第 4.6.4 節)。超えた時点で評価は打ち切られ、記載内容にかかわらず SPF は機能しません。送信サービスを追加するたびに include が増えるため、気づかないうちに超えている例が多くあります。
ip4: の直接記載に置き換えると 1 回分が消えます。mail.example.com など)、apex の SPF を軽くします。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.mail:example.com
検査エンジン原文(英語)
SPF uses no ptr mechanism
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
ptr 機構は、受信側に送信元 IP の逆引きと、その結果に対する正引きを要求します。RFC 7208 第 5.5 節は、負荷の大きさと結果の不確かさを理由に、受信側には ptr を使わないよう、公開側には ptr を書かないよう求めています。逆引きを引けない受信側では該当の機構が無視されるため、正規の送信元が拒否される場合があります。
ip4:203.0.113.10 のように直接記載し、外部サービスであれば提供元が案内する include: を使います。dig +short TXT example.com | grep spf1 の出力に ptr が含まれないこと、および DMARC の集計レポートで正規送信元の SPF が pass のままであることを確認してください。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.mail:example.com
検査エンジン原文(英語)
SPF present
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
SPF が無い場合、受信側には「当該ドメインを名乗るメールが正規の送信基盤から送出されたものか」を判定する材料がありません。第三者が請求書・パスワード再設定・振込先変更のメールを当該ドメイン名で送信でき、それが通常どおり受信箱に届きます。
-all などの制限的な指定で閉じます。v=spf1 include:_spf.google.com include:sendgrid.net ip4:203.0.113.10 -all。include: / a / mx による DNS 参照の合計を 10 回以内に収めます。dig +short TXT example.com | grep spf1 が 1 本のみ返ること、および外部の受信側へテスト送信して Authentication-Results に spf=pass が表示されることで行います。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.mail:example.com
検査エンジン原文(英語)
exactly one SPF record
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
SPF レコードが 2 件以上ある場合、受信側はどちらかを選ぶのではなく、SPF の評価そのものを打ち切ります(RFC 7208 第 3.2 節の permerror)。個々の内容が正しくても、なりすまし対策としては機能していない状態です。原因の多くは、業務システムの追加時に既存レコードへ追記せず、新しい TXT レコードを足してしまうことにあります。
dig +short TXT example.com | grep spf1 で現在公開している SPF レコードをすべて取得します。include: ip4: ip6: a mx を重複を除いて 1 行にまとめ、末尾の all 機構は最も厳しいものを採用します。dig の出力が 1 行のみになること、および DMARC の集計レポートで正規送信元の SPF が pass に戻ることを確認してください。DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.host:example.com
DNS 応答対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns:dns.mail:example.com
検査エンジン原文(英語)
the domain is on none of the 1 lists asked
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
ドメイン名そのものが掲載されると、そのドメインを差出人とするメールも、本文中にその URL を含むメールも拒否されます。IP アドレスの掲載と違い、送信元を変えても回避できません。掲載の原因は、乗っ取られたサイトからの誘導や、なりすましメールの大量送信であることが多く、こちらが被害者である場合も掲載自体は行われます。
p=reject まで進めてください。dig +short example.com.dbl.spamhaus.org が何も返さないことです。dns-rep対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns-rep:dns.reputation:example.com
検査エンジン原文(英語)
no address is listed on any of the 1 lists asked
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
IP アドレスが評価情報の配布元に掲載されると、そのアドレスから送ったメールは相手に届かなくなります。多くの受信側が同じ一覧を参照しているため、影響は特定の相手に留まりません。掲載の原因は、踏み台にされた社内の端末、設定を誤った転送、解約後も残っていた仮想サーバなど、こちらの側にあることがほとんどです。
https://check.spamhaus.org/)に従ってください。dns-rep対象 example.com取得 2026/09/01 09:00 JST
根拠 ID dns-rep:dns.reputation:example.com
検査エンジン原文(英語)
all 1 external dependencies answer with a valid certificate
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
ページが読み込んでいる外部の資源が取得できない場合、そのスクリプトに依存する機能は動きません。証明書が検証できない場合、ブラウザは読み込み自体を拒否します。提供元の廃止や移転は予告なく起こり、こちらの手元では気づけません。古い依存先のドメインが失効し、別人に取得された事例もあります。
integrity 属性(web.sri)を付けておくと、提供元が入れ替わった際に実行を止められます。http対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.cdn:example.com
検査エンジン原文(英語)
the 1 recognised library versions are all at or above their advisory floor
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
古い版の JavaScript ライブラリには、公開済みの脆弱性が残っていることがあります。jQuery の古い版に含まれる問題のように、利用者の入力を扱う箇所でスクリプトの注入を許すものが典型です。ページを開いた利用者のブラウザ上で、こちらのサイトの権限で動作します。
integrity 属性も併せて入れ替えてください(web.sri)。http対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.scripts:example.com
検査エンジン原文(英語)
the page runs script from 1 external hosts: [cdn.example.net]
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
外部から読み込むスクリプトは、いずれもこちらのページで、こちらのサイトの権限で動きます。フォームの入力値を読むことも、表示を書き換えることもできます。広告や解析のタグは担当部署が個別に追加していることが多く、全体の一覧を誰も持っていない状態になりがちです。
script-src を一覧に限定すると、意図しない追加が起きた時点で止まります。HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.headers:example.com
検査エンジン原文(英語)
all 1 external resources are fetched over HTTPS
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
外部から読み込む資源を平文で取得すると、経路上の誰でも内容を差し替えられます。差し替えられるのはこちらのページで動くコードであり、利用者から見れば当社のサイトが行った処理です。提供元の信頼性以前の問題として、取得経路を保護する必要があります。
https:// にします。HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.headers:example.com
検査エンジン原文(英語)
no weak cipher suites
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
本項目で検出対象とするのは RC4・3DES・輸出グレード、および前方秘匿性の無いスイートで、いずれも既知の攻撃により解読またはダウングレードが可能です。経路上の攻撃者はセッションの内容を復元でき、前方秘匿性が無い場合は、後日サーバ鍵が漏えいした時点で記録済みの通信もまとめて復号されます。
ssl_protocols TLSv1.2 TLSv1.3; に加えて ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305; と ssl_prefer_server_ciphers off; を設定します。SSLCipherSuite に設定し、SSLHonorCipherOrder off とします。nginx -t で構文を検証してからリロードします。nmap --script ssl-enum-ciphers -p 443 example.com(または testssl.sh example.com)で上記以外のスイートが表示されないことで行います。TLS 接続(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID tls:tls.probe:example.com
検査エンジン原文(英語)
the negotiated suite has forward secrecy
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
前方秘匿性の無い鍵交換では、通信の内容がサーバの秘密鍵だけで復号できます。攻撃者が今日の通信を記録しておき、数年後に鍵を入手した時点で、記録したすべてを読めることになります。ECDHE は接続ごとに使い捨ての鍵を作るため、後から鍵が漏れても過去の通信は開けません。
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; と ssl_prefer_server_ciphers on; を設定します。SSLCipherSuite に同じ一覧を、SSLHonorCipherOrder on と併せて設定します。openssl s_client -connect example.com:443 </dev/null 2>/dev/null | grep -i cipher で ECDHE または TLS 1.3 のスイートが出ることです。TLS 接続(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID tls:tls.probe:example.com
検査エンジン原文(英語)
the server selects no compression even when it is offered
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
TLS の圧縮を有効にしていると、暗号化された通信の長さから中身を推測できます。CRIME と呼ばれる手法で、攻撃者が同じ接続に既知の文字列を混ぜながら長さの変化を観察すると、Cookie の値を 1 文字ずつ復元できます。暗号そのものは破られておらず、圧縮によって長さが情報を持ってしまうことが原因です。
openssl.cnf の Options に NoCompression を追加するか、サーバソフトウェアの設定で明示的に無効にしてください。openssl s_client -connect example.com:443 </dev/null 2>/dev/null | grep Compression が NONE を返すことです。TLS 接続(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID tls:tls.probe:example.com
検査エンジン原文(英語)
no obsolete TLS version accepted
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
TLS 1.0 と 1.1 は暗号強度と実装上の既知の弱点により、通信内容の解読や改ざんの足掛かりとなります。主要ブラウザはすでに接続を拒否しており、有効なまま残す利点はありません。
ssl_protocols TLSv1.2 TLSv1.3; に変更します(TLSv1 と TLSv1.1 を削除)。SSLProtocol -all +TLSv1.2 +TLSv1.3 とします。TLS 接続(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID tls:tls.probe:example.com
検査エンジン原文(英語)
the server states RFC 5746 secure renegotiation
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
再ネゴシエーションの仕組みには、当初の設計に不備がありました。攻撃者が先に接続を確立して任意のデータを送り込み、その後で利用者の接続を継ぎ足すと、利用者が送ったつもりの無い要求がサーバに届きます。RFC 5746 は、継ぎ足しの前後が同じ接続であることを確認する拡張を定めており、これを提示しないサーバは対応していないか、対応が古い版のままです。
openssl s_client -connect example.com:443 </dev/null 2>/dev/null | grep -i renegotiation が Secure Renegotiation IS supported を返すことです。TLS 接続(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID tls:tls.probe:example.com
検査エンジン原文(英語)
TLS 1.3 negotiated
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
TLS 1.3 は、危殆化した暗号スイートを仕様から削除し、鍵交換に前方秘匿性を必須としています。TLS 1.2 のみの構成は、それ自体が直ちに破られるわけではありませんが、設定の誤りが安全性の低下に直結する余地を残したままです。握手の往復も 1 回少なく、接続は速くなります。
ssl_protocols TLSv1.2 TLSv1.3; を設定します。SSLProtocol -all +TLSv1.2 +TLSv1.3 です。openssl s_client -connect example.com:443 -tls1_3 </dev/null が握手に成功することを確認します。TLS 接続(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID tls:tls.probe:example.com
検査エンジン原文(英語)
every cookie states a SameSite policy
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
SameSite は、他サイトからの要求に Cookie を添えるかどうかを決めます。指定が無い場合の既定はブラウザごとに異なり、版によっても変わってきました。攻撃者が用意したページから利用者のブラウザ経由で操作を実行させる手口(CSRF)は、この属性で大部分が塞がります。
SameSite=Lax を既定とします。SameSite=None; Secure とします。session.cookie_samesite = "Lax"、Express は cookie: { sameSite: 'lax' }、Rails は config.action_dispatch.cookies_same_site_protection = :lax です。curl -sI https://example.com | grep -i set-cookie で全行に SameSite が付くことです。HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.headers:example.com
検査エンジン原文(英語)
every cookie is set with Secure
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
Secure の無い Cookie は、平文の HTTP でも送信されます。HTTPS でしか公開していないつもりでも、同じドメインの `http://` へ画像 1 枚を読みに行かせるだけで、セッション Cookie が経路上に流れます。公衆無線や社内の中継点にいる者は、それを読むだけで利用者になりすませます。
session.cookie_secure = 1(php.ini)、Express は app.use(session({ cookie: { secure: true } }))、Rails は config.force_ssl = true で一括して有効になります。X-Forwarded-Proto を渡し、アプリ側で信頼する設定も併せて確認してください。curl -sI https://example.com | grep -i set-cookie で全行に Secure が付くことです。HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.headers:example.com
検査エンジン原文(英語)
an arbitrary Origin is not granted access
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
要求された Origin をそのまま許可として返す設定では、利用者が開いた任意のサイトが、こちらのサイトの応答を読めます。資格情報の許可を併せて返している場合、読めるのはログイン済みの応答です。利用者が別のタブで攻撃者のページを開いただけで、こちらの画面に出るはずの情報が持ち出されます。
Access-Control-Allow-Origin に、許可するオリジンを固定値で設定します。Access-Control-Allow-Credentials: true を付け、そのときワイルドカードは使えません。curl -sI -H 'Origin: https://example.invalid' https://example.com/ | grep -i access-control で、その Origin が返らないことです。http対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.probes:example.com
検査エンジン原文(英語)
the error page discloses no internals
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
例外のスタックトレースには、使用しているフレームワークとその版数、ファイルの絶対パス、内部のクラス名や関数名が並びます。データベースのエラーがそのまま出る場合は、テーブルの構造まで推測できます。攻撃者にとっては、次に何を試すかを決めるための情報です。開発時に有効にした表示が、本番に残っている例が多くあります。
display_errors = Off(php.ini)、Django は DEBUG = False、Rails は config.consider_all_requests_local = false、Laravel は APP_DEBUG=false です。http対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.probes:example.com
検査エンジン原文(英語)
strict-transport-security present
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
HSTS が無い場合、利用者がホスト名のみを入力した初回アクセスや古い `http://` リンクからの遷移は平文で送信されます。同一ネットワーク上の攻撃者はこれを横取りし、セッション全体を平文または自前の TLS プロキシに載せたまま維持できます。HSTS は一度成功した訪問以降、ブラウザに HTTP を使用させません。
Strict-Transport-Security: max-age=31536000; includeSubDomains を応答します(nginx は 443 を listen する server ブロック内で add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;、Apache は Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains")。max-age=0 を応答することで可能ですが、効果があるのは HTTPS で再訪したクライアントのみで、再訪しない利用者の設定は残ります。max-age=300 程度で開始し、全サブドメインに有効な証明書があることを確認してから 1 年に延長します。preload と hstspreload.org への登録はさらにその後に行います。curl -sI https://example.com | grep -i strict-transport-security で行います。HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.headers:example.com
検査エンジン原文(英語)
HSTS meets the preload requirements
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
HSTS は、ブラウザが一度その応答を受け取った後にしか効きません。初回のアクセスだけは平文の HTTP で出ていくため、その 1 回を経路上の攻撃者に奪われる余地が残ります。preload リストに載せると、ブラウザは最初のアクセスから HTTPS を強制します。
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload を設定します。includeSubDomains はすべてのサブドメインに及ぶため、HTTPS で提供していないサブドメインが 1 つでもあれば到達不能になります。max-age で一定期間運用し、問題が出ないことを確かめてから申請してください。HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.headers:example.com
検査エンジン原文(英語)
HTTP redirects to HTTPS
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
80 番ポートで応答しながらリダイレクトしない場合、攻撃者は利用者をセッション中ずっと平文のまま留め置くことができます。その間、認証情報も Cookie も読み取られ、ページの内容も改ざんされます。利用者からは通常どおり動作しているページに見えます。
server { listen 80; listen [::]:80; server_name example.com www.example.com; return 301 https://$host$request_uri; }。<VirtualHost *:80> 内で Redirect permanent / https://example.com/ または RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]。/.well-known/acme-challenge/ を除外し、HTTP のまま到達できるようにしておきます。curl -sI http://example.com が 301 と https:// の Location: を返すことで行います。HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.headers:example.com
検査エンジン原文(英語)
no writing or diagnostic method is open
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
TRACE は受け取った要求をそのまま返すメソッドで、条件が揃うと他のスクリプトから資格情報を読み出す経路になります。PUT や DELETE、WebDAV の各メソッドは、設定を誤ればファイルの書き換えや削除を許します。いずれも通常の Web サイトの提供には不要です。
if ($request_method !~ ^(GET|HEAD|POST)$) { return 405; } を書きます。TraceEnable off を設定し、WebDAV のモジュールを使っていなければ無効化します。curl -sI -X TRACE https://example.com/ が 405 または 501 を返すことです。http対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.probes:example.com
検査エンジン原文(英語)
every referenced resource is loaded over HTTPS
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
HTTPS のページが平文 HTTP で資源を読み込むと、その通信だけが保護されません。経路上の攻撃者は、読み込まれるスクリプトを差し替えてページ全体を制御できます。ブラウザはスクリプトや CSS の混在を既定で遮断するため、表示や機能が壊れる形でも現れます。
http:// を https:// に書き換えます。Content-Security-Policy: upgrade-insecure-requests を付けるとブラウザ側で HTTPS へ読み替えられますが、対応していない読み込み先では読めなくなるため、恒久策は参照の書き換えです。HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.headers:example.com
検査エンジン原文(英語)
no product version in the Server or X-Powered-By header
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
応答ヘッダに `nginx/1.24.0` のような版数が載っていると、攻撃者は公開されている脆弱性の一覧と突き合わせるだけで、試すべき攻撃を絞り込めます。版数を隠しても脆弱性は塞がりませんが、無差別な走査の対象から外れる効果はあります。
nginx.conf の http ブロックに server_tokens off; を記載します。apache2.conf に ServerTokens Prod と ServerSignature Off を記載します。X-Powered-By は、PHP であれば php.ini の expose_php = Off、Express であれば app.disable('x-powered-by') で止めます。curl -sI https://example.com | grep -iE 'server|x-powered-by' に版数が含まれないことを確認してください。HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.headers:example.com
検査エンジン原文(英語)
every cross-origin script and stylesheet states an integrity hash
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
外部から読み込むスクリプトは、提供元が差し替えれば、こちらのページで意図しない処理が動きます。提供元自身が侵害された事例も、その配信網が乗っ取られた事例もあります。integrity 属性を付けると、内容が指定した値と一致しない限りブラウザが実行を拒否します。
integrity="sha384-..." と crossorigin="anonymous" を付けます。openssl dgst -sha384 -binary file.js | openssl base64 -A で作れますが、多くの提供元が公開しています。.../lib@1.2.3/lib.js の形)と併せて使い、更新時は値も入れ替える手順にしてください。HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.headers:example.com
検査エンジン原文(英語)
X-Content-Type-Options is nosniff
上昇幅: 算出していません
対象 (全 1 件(未検査の対象を含む))
リスク詳細
このヘッダが無いと、ブラウザは応答の Content-Type を信用せず、中身から種類を推測します。利用者がアップロードした画像やテキストが、内容次第でスクリプトとして実行され得るということです。投稿機能やファイル置き場を持つサイトでは、これが保存型のスクリプト実行につながります。
X-Content-Type-Options: nosniff を付けます。add_header X-Content-Type-Options "nosniff" always; を追加し、nginx -t && systemctl reload nginx を実行します。Header always set X-Content-Type-Options "nosniff" です。location に add_header が 1 つでもあると server の add_header が全て無効になるため、該当する location がある場合はそこにも書きます。curl -sI https://example.com | grep -i x-content-type-options で行います。HTTP 応答(能動検査)対象 example.com取得 2026/09/01 09:00 JST
根拠 ID http:http.headers:example.com