The security scan of gaiaonline.com found 22 medium and low severity issues. No critical vulnerabilities were detected, but 8 issues should be addressed this week to harden your security posture. Detailed fix instructions are included for each finding.
Server accepts TLSv1.1 which is deprecated and insecure since 2020
Security scanners and compliance audits (PCI-DSS, SOC 2, cyber-insurance questionnaires, etc.) flag outdated TLS versions as a failing item, and major browsers are gradually moving toward blocking these connections entirely.
Example: A compliance auditor or cyber-insurance questionnaire runs an automated scan, flags the outdated TLS version as a failed control, and the business has to scramble to fix it before a policy renewal or contract can close.
Disable TLS 1.0 and 1.1 in your web server config. For Nginx: add 'ssl_protocols TLSv1.2 TLSv1.3;' to your server block. For Apache: set 'SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1' in ssl.conf. Then restart the server and verify at https://www.ssllabs.com/ssltest/
CWE-327 โ Use of a Broken or Risky Cryptographic Algorithm
The encryption method in use is outdated or weak enough that attackers can break it with modern tools.
Missing Strict-Transport-Security (HSTS) โ browsers aren't forced to always use HTTPS, leaving visitors open to downgrade attacks
An attacker on the same network as a visitor (public wifi, a compromised router, etc.) can trick their browser into using the insecure version of your site and intercept what they type โ raising the odds of stolen logins or payment details.
Example: An attacker on a shared network intercepts a visitor's first request (which defaults to HTTP) before the redirect happens, and silently serves them a fake version of the page instead of the real site.
Add the HSTS header to your web server. Nginx: add 'add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;' in your server block. Apache: add 'Header always set Strict-Transport-Security "max-age=31536000"' in your config. Cloudflare: SSL/TLS > Edge Certificates > enable HTTP Strict Transport Security.
CWE-319 โ Cleartext Transmission of Sensitive Information
Sensitive data is sent over the network unencrypted, so anyone monitoring the connection can read it.
Missing Content-Security-Policy (CSP) โ this site has no CSP defense-in-depth layer, so if any cross-site scripting weakness exists elsewhere it's easier to exploit; this finding on its own doesn't mean an XSS vulnerability exists on this site
CSP is a defense-in-depth browser control, not evidence of an active vulnerability by itself โ but if an attacker ever manages to slip malicious script onto your site through some other weakness (e.g. a vulnerable plugin or a comment field), a good CSP is often what stops that script from running and stealing customer data such as login sessions or payment details. Without it, that second layer of protection isn't there.
Example: A vulnerable comment form or compromised ad widget lets an attacker inject a script tag; with a properly scoped CSP in place, the browser would refuse to run it โ without CSP, that same injected script runs freely and can forward a visitor's session cookie to the attacker.
Add a Content-Security-Policy header, but roll it out carefully โ a misconfigured CSP can break legitimate scripts/styles on the site. Start by deploying it in Report-Only mode first, which reports violations without blocking anything: 'add_header Content-Security-Policy-Report-Only "default-src \'self\'; script-src \'self\'; object-src \'none\'; report-uri /csp-report";' Review the reports for a while to catch anything the policy would break, adjust the policy, then switch the header name to 'Content-Security-Policy' (without '-Report-Only') to start enforcing it. For WordPress or complex sites, use https://csp-evaluator.withgoogle.com to help build the policy.
CWE-693 โ Protection Mechanism Failure
A security safeguard that should be protecting the system is missing, disabled, or not strong enough.
Cookie 'gaia55_sid' is missing the Secure, SameSite flag(s). Observed attributes: path=/, domain=.gaiaonline.com, httponly.
This cookie's name suggests it may hold a session or authentication token, though its actual contents weren't inspected. If it does, a cookie missing these flags is easier to steal through cross-site scripting or to intercept over an unencrypted connection โ and a stolen session cookie can let an attacker impersonate that logged-in user without ever needing their password.
Example: A visitor on public wifi has their session cookie intercepted because it wasn't marked Secure, or a malicious ad script reads it directly because it wasn't marked HttpOnly โ either way, the attacker is now logged in as that user without ever seeing their password.
Add the missing flag(s) when setting this cookie: Secure (only send over HTTPS), HttpOnly (block JavaScript access), SameSite=Lax or Strict (limit cross-site sending). Most frameworks expose this as a one-line config option โ e.g. Flask: app.config['SESSION_COOKIE_SECURE']=True, SESSION_COOKIE_HTTPONLY=True, SESSION_COOKIE_SAMESITE='Lax'.
CWE-614, CWE-1275 โ Sensitive Cookie in HTTPS Session Without 'Secure' Attribute; Sensitive Cookie with Improper SameSite Attribute
The cookie isn't marked Secure, so a browser could send it over an unencrypted connection where it can be intercepted. The cookie's SameSite attribute isn't set to a safe value, making it easier for other sites to trick a visitor's browser into sending it in cross-site requests.
The path /server-status returns a restricted-access response (401/403) that is genuinely distinct from how this site handles random nonexistent paths โ this confirms *something* is being specially handled at this path, but the response contains no content confirming what it actually is โ this exposes internal server diagnostic information, not a login panel
This page reveals internal details about the server's configuration, active connections, or recent errors โ not something the general public should be able to see, and useful reconnaissance an attacker can use to plan a more targeted attack elsewhere on the site.
Example: An attacker reviews this page to learn internal server details, request patterns, or recent error messages, then uses that information to plan a more targeted attack elsewhere on the site instead of guessing blind.
Restrict access to /server-status by IP allowlist, or disable it entirely if not needed. Nginx: 'location ^~ /server-status { allow YOUR_IP; deny all; }'. Apache ('server-status'/'server-info'): add 'Require ip YOUR_IP' inside the relevant <Location> block, or remove the module if unused.
CWE-200 โ Exposure of Sensitive Information
The system reveals information to someone who shouldn't have access to it.
DMARC policy only applies to 10% of failing mail (pct=10) โ the rest is delivered as if DMARC weren't enforcing at all
The DMARC record looks like it's enforcing a real policy, but 'pct=10' means only 10% of mail that fails DMARC alignment is actually acted on โ the remaining 90% is delivered normally, so a spoofed email impersonating this business still has a real chance of reaching an inbox untouched.
Example: pct=10 means roughly 90 out of every 100 forged emails skip enforcement entirely and are delivered as if DMARC weren't configured, even though the policy itself says 'quarantine' or 'reject'.
pct= is meant as a gradual-rollout tool while confirming legitimate mail sources pass alignment โ once confident, raise it to 100 (or remove the tag entirely, since 100 is the default). Example: 'v=DMARC1; p=reject; pct=100; rua=mailto:dmarc@yourdomain.com'
CWE-290 โ Authentication Bypass by Spoofing
The login or identity check can be tricked by faking trusted information, letting an attacker in without real credentials.
DKIM key for selector 'dkim' appears to be approximately 1024 bits โ 1024-bit RSA keys are considered weak by modern standards and NIST has deprecated them. A well-resourced attacker could factor this key, breaking your email authentication.
A forged DKIM signature lets an attacker send phishing or fraud emails that cryptographically appear to come from your domain โ bypassing email filters that rely on DKIM as a trust signal, and making impersonation emails indistinguishable from your real ones.
Example: A security researcher demonstrated in a published study that 512-bit DKIM keys could be factored in under 72 hours using cloud computing resources costing less than $100 โ allowing anyone with that capability to forge valid email signatures for the affected domain.
Upgrade the DKIM key for selector 'dkim' to 2048 bits. Generate a new key through your email provider, update the DNS TXT record to the new public key, and retire the old 1024-bit key.
5 third-party script source(s) loaded without Subresource Integrity (SRI): a.pub.network, cdn1.gaiaonline.com, graphics.gaiaonline.com, sm1.selectmedia.asia, www.googletagmanager.com
If any of these third-party providers is ever compromised โ a real, recurring attack pattern called a 'watering hole' or supply-chain attack, where attackers hit a widely-trusted vendor instead of you directly โ the malicious code they inject would run on your site with no verification and no warning to you or your visitors.
Example: A widely-used analytics or widget provider gets compromised (a real, recurring attack pattern), and because the script loads without integrity verification, the malicious version executes on every visitor's browser with no warning to you or them.
Add integrity and crossorigin attributes to each third-party <script> tag, e.g. <script src="..." integrity="sha384-..." crossorigin="anonymous"></script>. Most CDNs (cdnjs, jsdelivr, unpkg) publish the correct hash on their site โ copy it directly.
CWE-353 โ Missing Support for Integrity Check
There's no way to verify that data wasn't altered in transit, so tampering would go unnoticed.
Cookie 'gaia55_tag' is missing the Secure, SameSite flag(s). Observed attributes: expires=Sun, 12-Sep-2027 09:38:55 GMT, path=/, domain=.gaiaonline.com, httponly.
This cookie's name doesn't clearly indicate it holds session or authentication data, so the practical impact depends on what value it actually stores โ anywhere from low-stakes (a UI preference) to more sensitive (tracking or personalization data). Missing these flags means whatever the cookie does hold is more exposed than it needs to be to interception or script access.
Example: whatever value 'gaia55_tag' holds could be read by an injected script (no HttpOnly) or intercepted on an unencrypted connection (no Secure) โ the actual severity depends on how sensitive that value turns out to be.
Add the missing flag(s) when setting this cookie: Secure (only send over HTTPS), HttpOnly (block JavaScript access), SameSite=Lax or Strict (limit cross-site sending). Most frameworks expose this as a one-line config option โ e.g. Flask: app.config['SESSION_COOKIE_SECURE']=True, SESSION_COOKIE_HTTPONLY=True, SESSION_COOKIE_SAMESITE='Lax'.
CWE-614, CWE-1275 โ Sensitive Cookie in HTTPS Session Without 'Secure' Attribute; Sensitive Cookie with Improper SameSite Attribute
The cookie isn't marked Secure, so a browser could send it over an unencrypted connection where it can be intercepted. The cookie's SameSite attribute isn't set to a safe value, making it easier for other sites to trick a visitor's browser into sending it in cross-site requests.
Cookie 'gaia55_prp' is missing the Secure, SameSite flag(s). Observed attributes: expires=Mon, 12-Oct-2026 09:38:55 GMT, path=/, domain=.gaiaonline.com, httponly.
This cookie's name doesn't clearly indicate it holds session or authentication data, so the practical impact depends on what value it actually stores โ anywhere from low-stakes (a UI preference) to more sensitive (tracking or personalization data). Missing these flags means whatever the cookie does hold is more exposed than it needs to be to interception or script access.
Example: whatever value 'gaia55_prp' holds could be read by an injected script (no HttpOnly) or intercepted on an unencrypted connection (no Secure) โ the actual severity depends on how sensitive that value turns out to be.
Add the missing flag(s) when setting this cookie: Secure (only send over HTTPS), HttpOnly (block JavaScript access), SameSite=Lax or Strict (limit cross-site sending). Most frameworks expose this as a one-line config option โ e.g. Flask: app.config['SESSION_COOKIE_SECURE']=True, SESSION_COOKIE_HTTPONLY=True, SESSION_COOKIE_SAMESITE='Lax'.
CWE-614, CWE-1275 โ Sensitive Cookie in HTTPS Session Without 'Secure' Attribute; Sensitive Cookie with Improper SameSite Attribute
The cookie isn't marked Secure, so a browser could send it over an unencrypted connection where it can be intercepted. The cookie's SameSite attribute isn't set to a safe value, making it easier for other sites to trick a visitor's browser into sending it in cross-site requests.
Cookie 'gaia55_ano' is missing the Secure, SameSite flag(s). Observed attributes: path=/, domain=.gaiaonline.com, httponly.
This cookie's name doesn't clearly indicate it holds session or authentication data, so the practical impact depends on what value it actually stores โ anywhere from low-stakes (a UI preference) to more sensitive (tracking or personalization data). Missing these flags means whatever the cookie does hold is more exposed than it needs to be to interception or script access.
Example: whatever value 'gaia55_ano' holds could be read by an injected script (no HttpOnly) or intercepted on an unencrypted connection (no Secure) โ the actual severity depends on how sensitive that value turns out to be.
Add the missing flag(s) when setting this cookie: Secure (only send over HTTPS), HttpOnly (block JavaScript access), SameSite=Lax or Strict (limit cross-site sending). Most frameworks expose this as a one-line config option โ e.g. Flask: app.config['SESSION_COOKIE_SECURE']=True, SESSION_COOKIE_HTTPONLY=True, SESSION_COOKIE_SAMESITE='Lax'.
CWE-614, CWE-1275 โ Sensitive Cookie in HTTPS Session Without 'Secure' Attribute; Sensitive Cookie with Improper SameSite Attribute
The cookie isn't marked Secure, so a browser could send it over an unencrypted connection where it can be intercepted. The cookie's SameSite attribute isn't set to a safe value, making it easier for other sites to trick a visitor's browser into sending it in cross-site requests.
Cookie 'hdr_town_name' is missing the Secure, SameSite flag(s). Observed attributes: Domain=.gaiaonline.com, Path=/, HttpOnly.
This cookie's name doesn't clearly indicate it holds session or authentication data, so the practical impact depends on what value it actually stores โ anywhere from low-stakes (a UI preference) to more sensitive (tracking or personalization data). Missing these flags means whatever the cookie does hold is more exposed than it needs to be to interception or script access.
Example: whatever value 'hdr_town_name' holds could be read by an injected script (no HttpOnly) or intercepted on an unencrypted connection (no Secure) โ the actual severity depends on how sensitive that value turns out to be.
Add the missing flag(s) when setting this cookie: Secure (only send over HTTPS), HttpOnly (block JavaScript access), SameSite=Lax or Strict (limit cross-site sending). Most frameworks expose this as a one-line config option โ e.g. Flask: app.config['SESSION_COOKIE_SECURE']=True, SESSION_COOKIE_HTTPONLY=True, SESSION_COOKIE_SAMESITE='Lax'.
CWE-614, CWE-1275 โ Sensitive Cookie in HTTPS Session Without 'Secure' Attribute; Sensitive Cookie with Improper SameSite Attribute
The cookie isn't marked Secure, so a browser could send it over an unencrypted connection where it can be intercepted. The cookie's SameSite attribute isn't set to a safe value, making it easier for other sites to trick a visitor's browser into sending it in cross-site requests.
The path /server-info returns a restricted-access response (401/403) that is genuinely distinct from how this site handles random nonexistent paths โ this confirms *something* is being specially handled at this path, but the response contains no content confirming what it actually is โ this exposes internal server diagnostic information, not a login panel
This page reveals internal details about the server's configuration, active connections, or recent errors โ not something the general public should be able to see, and useful reconnaissance an attacker can use to plan a more targeted attack elsewhere on the site.
Example: An attacker reviews this page to learn internal server details, request patterns, or recent error messages, then uses that information to plan a more targeted attack elsewhere on the site instead of guessing blind.
Restrict access to /server-info by IP allowlist, or disable it entirely if not needed. Nginx: 'location ^~ /server-info { allow YOUR_IP; deny all; }'. Apache ('server-status'/'server-info'): add 'Require ip YOUR_IP' inside the relevant <Location> block, or remove the module if unused.
CWE-200 โ Exposure of Sensitive Information
The system reveals information to someone who shouldn't have access to it.
Public IP 32.189.183.19 (hosted by Amazon.com, Inc.) has no abuse reports on AbuseIPDB in the last 90 days.
A clean IP reputation is a good sign โ no other indication needed here.
No action required.
Public IP 32.189.183.19 is registered to Amazon.com, Inc. โ network: AMAZO-4 โ block: 32.184.0.0 โ 32.207.255.255.
This is informational โ it tells you (and anyone else who looks it up) which hosting provider or network actually operates this IP. Useful for confirming you're hosted where you expect, or for context if the IP reputation check above flags anything.
No action required โ this is identifying information, not a vulnerability.
DMARC is already enforcing, so this domain qualifies for BIMI โ a verified logo shown next to emails in Gmail, Yahoo, and Apple Mail โ but no BIMI record is set up
This isn't a vulnerability โ it's a missed brand-trust opportunity. Since DMARC is already enforcing (a prerequisite most mailbox providers require), this domain could show a verified logo next to its emails in supporting inboxes, which can measurably improve open rates and make phishing look more out of place by comparison.
Example: two otherwise-identical marketing emails land in a Gmail inbox โ one from a sender with BIMI configured shows a verified brand logo next to it, the other shows a generic default icon indistinguishable from a spoofed sender.
Add a TXT record for 'default._bimi' with a value pointing to a hosted SVG logo, e.g. 'v=BIMI1; l=https://yourdomain.com/logo.svg'. Some mailbox providers (notably Gmail) also require a Verified Mark Certificate (VMC) โ a paid trademark-backed certificate โ before they'll display the logo; Apple Mail and Yahoo currently do not require one. This is optional and lower-priority than any HIGH/MEDIUM finding above.
/.htpasswd returned HTTP 403. This confirms the path exists, but access control prevented access โ it was not accessed.
/.htpasswd returned HTTP 403. This confirms the path exists, but access control prevented access โ it was not accessed.
No action needed if this is intentionally restricted. Confirm the credentials protecting it are strong and not left at a default.
/server-status returned HTTP 403. This confirms the path exists, but access control prevented access โ it was not accessed.
/server-status returned HTTP 403. This confirms the path exists, but access control prevented access โ it was not accessed.
No action needed if this is intentionally restricted. Confirm the credentials protecting it are strong and not left at a default.
/admin/ returned HTTP 200 with no authentication challenge. This confirms a login or admin entry point exists at this path.
/admin/ returned HTTP 200 with no authentication challenge. This confirms a login or admin entry point exists at this path.
Confirm this login is protected by a strong password and, ideally, multi-factor authentication. Consider IP-restricting it if it's only used by internal staff.
/internal/ returned HTTP 200, a real distinct response rather than the site's soft-404 page. This path isn't one a typical visitor would stumble onto by browsing the site normally, which is why it's worth a quick manual look โ but its existence alone isn't a vulnerability.
/internal/ returned HTTP 200, a real distinct response rather than the site's soft-404 page. This path isn't one a typical visitor would stumble onto by browsing the site normally, which is why it's worth a quick manual look โ but its existence alone isn't a vulnerability.
Open the path yourself and confirm it's meant to be public. If it's leftover debug/test/admin tooling that should have been removed, take it down or restrict it by IP allowlist. If it's intentional, no action needed.
/robots.txt is present and was used to seed additional path checks.
/robots.txt is present and was used to seed additional path checks.
No action needed โ robots.txt is meant to be public.
/sitemap.xml is present and was used to seed additional path checks.
/sitemap.xml is present and was used to seed additional path checks.
No action needed โ sitemap.xml is meant to be public.
No high-risk open ports were detected from the internet โ your firewall appears to be blocking dangerous services.