<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Enterprise-Security on Zero-Entry</title>
    <link>https://zero-entry.co.za/tags/enterprise-security/</link>
    <description>Recent content in Enterprise-Security on Zero-Entry</description>
    <generator>Hugo -- 0.147.7</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 24 Apr 2026 14:26:40 +0400</lastBuildDate>
    <atom:link href="https://zero-entry.co.za/tags/enterprise-security/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Security Theatre in Enterprise Networks</title>
      <link>https://zero-entry.co.za/posts/security-theatre-in-enterprise-networks/</link>
      <pubDate>Thu, 19 Feb 2026 19:00:00 +0200</pubDate>
      <guid>https://zero-entry.co.za/posts/security-theatre-in-enterprise-networks/</guid>
      <description>Why security controls that look good on paper often fail under basic adversarial pressure - field notes from real assessments.</description>
      <content:encoded><![CDATA[<blockquote>
<p>Disclaimer: The examples below are anonymised and aggregated across multiple engagements. The goal is to highlight recurring patterns, not embarrass any specific organisation.</p></blockquote>
<p><img loading="lazy" src="/images/Pasted%20image%2020260219201318.png"></p>
<h1 id="security-theatre-field-notes-from-the-inside">Security Theatre: Field Notes from the Inside</h1>
<h2 id="the-scene">The Scene</h2>
<p>Most environments I assess are not wide open. They have firewalls, policies, and controls that look sensible on a slide deck.</p>
<p>The same weaknesses keep showing up anyway. Security gets implemented as a compliance checklist rather than an adversarial system.</p>
<p>That is security theatre: controls that exist, but fail under pressure.</p>
<p>It shows up in small things (a forgotten hyperlink), legacy things (Telnet still running), and complex things (multi-tenant routing edge cases that quietly break the idea of &ldquo;internal&rdquo;).</p>
<p>Most incidents do not start with a zero-day. They start with an assumption.</p>
<h2 id="the-meaning">The Meaning</h2>
<p>Security theatre is security that only works from one angle.</p>
<ul>
<li>It satisfies an audit requirement</li>
<li>It meets a policy statement</li>
<li>It was set up once and never re-validated</li>
<li>It relies on &ldquo;internal trust&rdquo; as a boundary</li>
</ul>
<p>It fails the moment an attacker does basic due diligence.</p>
<h3 id="real-security-vs-theatre">Real Security vs Theatre</h3>
<table>
  <thead>
      <tr>
          <th>Real security</th>
          <th>Security theatre</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Tested adversarially</td>
          <td>Signed off administratively</td>
      </tr>
      <tr>
          <td>Assumes compromise is possible</td>
          <td>Assumes trust is default</td>
      </tr>
      <tr>
          <td>Measured continuously</td>
          <td>Configured once</td>
      </tr>
      <tr>
          <td>Has clear ownership</td>
          <td>&ldquo;Someone&rdquo; owns it</td>
      </tr>
      <tr>
          <td>Breaks safely</td>
          <td>Breaks silently</td>
      </tr>
  </tbody>
</table>
<h2 id="a-simple-test">A Simple Test</h2>
<p>Rate each control against three questions:</p>
<ol>
<li>Is it verified? Not configured, but tested.</li>
<li>Is it monitored? Will you know when it fails?</li>
<li>Is it owned? Is someone accountable for its health?</li>
</ol>
<p>Two &ldquo;no&rdquo; answers means you do not have a control.</p>
<h2 id="field-notes">Field Notes</h2>
<h3 id="1-internal-rfc1918-space-leaking-other-peoples-infrastructure">1. &ldquo;Internal&rdquo; RFC1918 Space Leaking Other People&rsquo;s Infrastructure</h3>
<p>On one client network, we found a large number of devices in the <code>172.30.x.x</code> and <code>172.31.x.x</code> ranges. Normal enough.</p>
<p>The exposed services were not normal:</p>
<ul>
<li>Cisco IOS devices presenting known vulnerabilities</li>
<li>OpenSSH issues flagged, including severe exposure classes</li>
<li>SNMP responding with default community strings (<code>public</code>)</li>
<li>Telnet open in cleartext</li>
</ul>
<p>When we pulled device information over SNMP, the fingerprints did not match the client&rsquo;s environment. The devices looked like other organisations&rsquo; routers, visible from within this client&rsquo;s own network.</p>
<p>Whether it was a provider-side forwarding mistake, a multi-tenant routing bleed, or a design choice nobody fully understood, the problem is the same:</p>
<blockquote>
<p>&ldquo;Internal&rdquo; is a routing decision, not a security boundary.</p></blockquote>
<p>A network can be &ldquo;private&rdquo; on paper while being multi-tenant in practice. Technically not the client&rsquo;s fault. Still their problem.</p>
<p>The pessimistic outlook: unintended trust paths, lateral movement opportunities, messy incident response (&ldquo;is that ours?&rdquo; becomes a real question), and reputational fallout if the client network becomes a stepping stone into someone else&rsquo;s infrastructure.</p>
<h3 id="2-monitoring-interfaces-that-become-management-interfaces">2. Monitoring Interfaces That Become Management Interfaces</h3>
<p>SNMP is often justified as &ldquo;monitoring only.&rdquo;</p>
<p>In practice it provides device names, interfaces, routing hints, OS and platform fingerprinting, uptime, load, and depending on configuration, more. When SNMPv2c is exposed with default communities, &ldquo;monitoring&rdquo; becomes enumeration on demand.</p>
<p>The control exists (&ldquo;we have monitoring&rdquo;), but the threat model is absent (&ldquo;monitoring endpoints are high-value targets&rdquo;).</p>
<p>What to do instead:</p>
<ul>
<li>SNMPv3 with auth and privacy where possible</li>
<li>Strict ACLs so only the monitoring system can reach SNMP</li>
<li>Remove default communities, remove write communities unless there is a hard requirement</li>
<li>Continuous checks for <code>public</code>/<code>private</code> drift</li>
</ul>
<h3 id="3-telnet-in-2026">3. Telnet in 2026</h3>
<p>Telnet still appears internally more often than people admit. Rarely a deliberate decision. More often a leftover: legacy device, a &ldquo;temporary&rdquo; troubleshooting session, vendor defaults, a project that ended but the port stayed open.</p>
<p>What to do:</p>
<ul>
<li>Disable Telnet everywhere, policy plus validation</li>
<li>If legacy hardware makes that impossible, isolate it and treat it as hostile</li>
<li>Enforce SSH and modern cipher suites for all management</li>
<li>Log and alert on any Telnet session as a high-signal event</li>
</ul>
<h3 id="4-the-easiest-brand-hijack-is-a-broken-hyperlink">4. The Easiest Brand Hijack Is a Broken Hyperlink</h3>
<p>One of the more sobering findings I have seen had no CVE attached.</p>
<p>A client website linked to their social media profiles. The X and Instagram links pointed to accounts that did not exist. We registered the usernames the website was implicitly endorsing.</p>
<p>Any visitor clicking those links landed on an attacker-controlled profile that looked official by association. I was, briefly, the client&rsquo;s new social media manager.</p>
<p>The organisation likely had solid perimeter controls. Their public brand identity had an unguarded back door.</p>
<p>What to do:</p>
<ul>
<li>Treat web presence as an asset inventory: domains, handles, app store listings</li>
<li>Reserve key usernames even on platforms you do not actively use</li>
<li>Run a quarterly external exposure review with marketing and security together</li>
<li>Add a brand protection checklist to release processes</li>
</ul>
<h3 id="5-hidden-ssids-and-other-comforting-myths">5. Hidden SSIDs and Other Comforting Myths</h3>
<p>I have assessed environments where the guest Wi-Fi was modern and well-configured (WPA3), additional SSIDs existed as &ldquo;hidden,&rdquo; and those SSIDs still covered public areas: roads, car parks, the perimeter.</p>
<p>Hidden SSIDs do not stop discovery. The tooling is trivial and takes minutes. They stop casual users from seeing the network in a dropdown list.</p>
<p>What to do:</p>
<ul>
<li>Remove unused SSIDs entirely</li>
<li>Prefer WPA3-Enterprise (EAP) where feasible</li>
<li>Segment wireless properly: guest is not corporate, corporate is not infrastructure</li>
<li>Validate coverage from outside the perimeter</li>
</ul>
<h3 id="6-medium-findings-that-do-not-feel-medium">6. &ldquo;Medium&rdquo; Findings That Do Not Feel Medium</h3>
<p>Scanner outputs create a predictable behaviour pattern. Critical gets attention, high gets scheduled, medium gets ignored, info gets laughed off.</p>
<p>Some medium findings describe classes of weakness that become severe with real-world conditions: SSH weaknesses that matter under MITM conditions, management interfaces with brute-force exposure, patch states that are &ldquo;mostly fine&rdquo; but leave a few critical paths open.</p>
<p>Severity is a starting hypothesis, not a verdict. Two mediums can combine into a critical.</p>
<p>Prioritise weaknesses that enable credential capture, management access, or trust boundary crossing regardless of how the scanner scored them.</p>
<h3 id="7-logs-exist-but-meaning-does-not">7. Logs Exist, but Meaning Does Not</h3>
<p>On the blue side, I often see logging enabled but not operationally useful.</p>
<p>Suricata is a good example. It can generate excellent visibility, but without a workflow it becomes noise. The questions that matter are: what are our top external destinations, which internal hosts talk to unusual places, and what changed since last week.</p>
<p>&ldquo;We have monitoring&rdquo; becomes a checkbox, and the logs do not get reviewed.</p>
<p>What to do:</p>
<ul>
<li>Build simple, repeatable queries that surface top talkers, new domains, and rare destinations</li>
<li>Baseline normal behaviour and alert on deviations</li>
<li>Assign ownership: someone reviews signals and acts on them</li>
</ul>
<h2 id="why-this-happens">Why This Happens</h2>
<p>Most security theatre comes from normal organisational pressure:</p>
<ul>
<li>Compliance is measurable; security is contextual</li>
<li>Change control is painful, so legacy stays</li>
<li>Ownership is fragmented, so controls drift</li>
<li>Teams are stretched, so verification falls away</li>
<li>Perimeters look strong, so internal trust grows by default</li>
</ul>
<p>More tools will not fix this. Verification, ownership, and feedback loops will.</p>
<h2 id="breaking-the-cycle">Breaking the Cycle</h2>
<p><strong>This week:</strong></p>
<ul>
<li>Kill Telnet wherever it exists</li>
<li>Remove default SNMP communities, lock SNMP behind ACLs</li>
<li>Inventory and reserve public brand assets</li>
<li>Delete unused SSIDs, validate coverage beyond the perimeter</li>
<li>Review private ranges for routing weirdness and unintended reachability</li>
</ul>
<p><strong>The structural fix:</strong> a control is not done when it is configured. It is done when it is verified with adversarial thinking, monitored for failure, and owned with accountability.</p>
<p>If you cannot answer &ldquo;who owns this control,&rdquo; it is theatre waiting to fail.</p>
<h2 id="the-end">The End</h2>
<p>Security is not the number of controls you can list. It is the number that survive contact with an adversary.</p>
<p>If your &ldquo;internal&rdquo; network is only secure because everyone agrees to behave, that is not a network. It is a trust exercise.</p>
<h2 id="appendix-how-screwed-am-i">Appendix: How Screwed Am I?</h2>
<p>If any of these are true, you are looking at theatre:</p>
<ul>
<li>&ldquo;It&rsquo;s fine because it&rsquo;s internal&rdquo;</li>
<li>&ldquo;We enabled logging&rdquo; (but nobody reviews it)</li>
<li>&ldquo;We use SNMP for monitoring&rdquo; (but it&rsquo;s v2c and broadly reachable)</li>
<li>&ldquo;It&rsquo;s hidden&rdquo; (SSIDs, panels, directories)</li>
<li>&ldquo;We patched most of it&rdquo;</li>
<li>&ldquo;That&rsquo;s only a medium&rdquo;</li>
<li>&ldquo;We don&rsquo;t know who owns it&rdquo;</li>
</ul>
<p>Hunt the assumptions, not just the CVEs.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Security Controls That Only Exist on Paper</title>
      <link>https://zero-entry.co.za/posts/security-controls-that-only-exist-on-paper/</link>
      <pubDate>Sun, 18 Jan 2026 20:30:00 +0200</pubDate>
      <guid>https://zero-entry.co.za/posts/security-controls-that-only-exist-on-paper/</guid>
      <description>Enabled doesn&amp;#39;t mean active. Deployed doesn&amp;#39;t mean owned. A look at how security controls drift into uselessness and what actually keeps them working.</description>
      <content:encoded><![CDATA[<h1 id="the-illusion-of-security">The Illusion of Security</h1>
<p>Most environments aren&rsquo;t completely unsecured. Firewalls are enabled. Logging exists. Alerts are configured. From the outside it looks fine, maybe even responsible.</p>
<p>Controls aren&rsquo;t usually missing. They&rsquo;re inactive.</p>
<p>In recent work I&rsquo;ve seen environments where security features were technically enabled but effectively useless. Logs existed but nobody read them. Alerts fired and nobody came. Things broke and the outcome was the same either way.</p>
<p>An organisation&rsquo;s security is only as strong as the people interacting with it. The tooling matters less than whether someone looks at it. The architecture diagram matters less than whether someone notices when something breaks.</p>
<p>Controls that exist, but don&rsquo;t actually do anything.</p>
<h2 id="what-on-paper-actually-means">What &ldquo;On Paper&rdquo; Actually Means</h2>
<p>A control that exists on paper isn&rsquo;t badly designed or poorly intentioned. It meets one or more of these conditions:</p>
<ul>
<li>Enabled, but not enforced</li>
<li>Deployed, but not monitored</li>
<li>Producing logs that nobody checks</li>
</ul>
<p>Being enabled doesn&rsquo;t make something active. Being deployed doesn&rsquo;t mean anyone owns it.</p>
<p>This usually comes down to a preference for &ldquo;set it and forget it&rdquo; over &ldquo;observe and react.&rdquo; Once the checkbox is ticked, the control fades into the background, assumed to be working indefinitely. That assumption is where things go wrong.</p>
<h2 id="where-controls-drift">Where Controls Drift</h2>
<h3 id="detection-without-response">Detection Without Response</h3>
<p>Detection systems promise visibility. Alerts come in, someone investigates, action is taken.</p>
<p>In practice it works for a while. Dashboards get checked. Alerts are acknowledged. Then the noise builds. False positives pile up. A day goes by without anyone looking, then two. Eventually nobody is sure who owns the dashboard anymore.</p>
<p>Alerts become background noise. Data is still being generated, but nobody acts on it. An alert that nobody investigates isn&rsquo;t protection, it&rsquo;s a log entry.</p>
<h3 id="authentication-with-escape-hatches">Authentication With Escape Hatches</h3>
<p>Strong authentication controls get undermined by exceptions. Legacy devices that &ldquo;don&rsquo;t support it.&rdquo; Applications that need compatibility modes. Temporary workarounds that quietly become permanent.</p>
<p>Then there&rsquo;s the choice problem. Multiple authentication options enabled for convenience, some far weaker than others. The intention is resilience but the effect is dilution.</p>
<p>Attackers don&rsquo;t try to break the strongest path. They use the weakest one you left open &ldquo;just in case.&rdquo;</p>
<h3 id="segmentation-without-isolation">Segmentation Without Isolation</h3>
<p>Segmentation looks good in diagrams. Separate zones, clean boundaries, tidy rulesets.</p>
<p>In practice those boundaries collapse at shared services. DNS, authentication, file shares, and management interfaces punch holes through supposedly isolated segments. Rules get added to &ldquo;make things work&rdquo; and the isolation erodes quietly.</p>
<p>The network looks compartmentalised. When it matters, it behaves like a flat one.</p>
<h2 id="why-this-keeps-happening">Why This Keeps Happening</h2>
<p>Operational load is real. Security gets treated as a deployment task rather than a continuous process. Once a control is installed and doesn&rsquo;t cause immediate issues, it slides down the priority list. There&rsquo;s always something more urgent.</p>
<p>Environments accumulate controls without accumulating engagement.</p>
<h2 id="the-cost-of-paper-security">The Cost of Paper Security</h2>
<p>The biggest risk isn&rsquo;t failure. It&rsquo;s false confidence.</p>
<p>Teams believe they&rsquo;re protected because the tooling is there. Incidents take longer to detect. Root cause analysis gets harder. Attackers exploit the gaps between controls, not by breaking defences, but by walking through the parts nobody is watching.</p>
<h2 id="security-is-behaviour">Security Is Behaviour</h2>
<p>A control only exists if it changes outcomes.</p>
<p>If nothing reacts when it fails, nothing is protected. If no one owns it, it doesn&rsquo;t exist. If no human ever sees its output, it&rsquo;s noise.</p>
<p>Fewer controls that are actively observed beat a long list that only looks good in a report.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
