<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Saurabh Pandit </title>
    <description>The latest articles on DEV Community by Saurabh Pandit  (@cybermoranda).</description>
    <link>https://dev.to/cybermoranda</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4107802%2F8b03ff93-875a-4cbe-a171-69f7a9dce8b3.jpg</url>
      <title>DEV Community: Saurabh Pandit </title>
      <link>https://dev.to/cybermoranda</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cybermoranda"/>
    <language>en</language>
    <item>
      <title>I'm changing my logo</title>
      <dc:creator>Saurabh Pandit </dc:creator>
      <pubDate>Wed, 23 Sep 2026 01:11:49 +0000</pubDate>
      <link>https://dev.to/cybermoranda/im-changing-my-logo-2pob</link>
      <guid>https://dev.to/cybermoranda/im-changing-my-logo-2pob</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx0zgbw96qvr3inz75scp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx0zgbw96qvr3inz75scp.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I changed the CIDS logo. Here's why.&lt;br&gt;
During a brand review, I discovered that the previous logo had a strong visual resemblance to an existing stock design.&lt;br&gt;
Rather than taking that risk into the future, I chose to redesign it now.&lt;br&gt;
CIDS is meant to become a long-term cybersecurity platform, so its identity should have a foundation I can confidently build on.&lt;br&gt;
New logo. Same mission.&lt;br&gt;
CIDS — Security that thinks.&lt;/p&gt;

</description>
      <category>branding</category>
      <category>cybersecurity</category>
      <category>design</category>
    </item>
    <item>
      <title>How CIDS Should Handle Conflicting Security Signals.</title>
      <dc:creator>Saurabh Pandit </dc:creator>
      <pubDate>Sat, 19 Sep 2026 18:46:30 +0000</pubDate>
      <link>https://dev.to/cybermoranda/how-cids-should-handle-conflicting-security-signals-3bkd</link>
      <guid>https://dev.to/cybermoranda/how-cids-should-handle-conflicting-security-signals-3bkd</guid>
      <description>&lt;p&gt;A behavioral security system rarely receives perfectly consistent evidence.&lt;/p&gt;

&lt;p&gt;Imagine one session produces:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Network Signal
→ unusual request pattern

Identity Signal
→ authenticated legitimate user

Host Signal
→ no suspicious process activity

Behavior Signal
→ unusual endpoint enumeration

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now CIDS has a problem:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What should happen when different security signals disagree?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A simple security system might try to add all the scores together.&lt;/p&gt;

&lt;p&gt;But that can produce misleading conclusions.&lt;/p&gt;

&lt;p&gt;For CIDS, conflicting evidence should instead become part of the reasoning process.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Signals Are Evidence, Not Verdicts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A signal should answer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What did we observe?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;AUTH_FAILURE_BURST&lt;br&gt;
ENDPOINT_ENUMERATION&lt;br&gt;
RESTRICTED_PATH_ACCESS&lt;br&gt;
UNUSUAL_REQUEST_RATE&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It should not automatically answer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is this an attack?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That decision belongs to the higher-level correlation and risk layers.&lt;/p&gt;

&lt;p&gt;So the pipeline remains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Telemetry
   ↓
Normalization
   ↓
Security Signals
   ↓
Behavior Correlation
   ↓
Risk + Confidence
   ↓
Policy
   ↓
Response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This separation becomes particularly important when signals conflict.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;A Realistic Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Suppose a developer logs into an internal application.&lt;/p&gt;

&lt;p&gt;CIDS observes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Identity:&lt;br&gt;
Authenticated user&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;At the same time:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Behavior:&lt;br&gt;
50 endpoints accessed quickly&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Network:&lt;br&gt;
Unusual request frequency&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Host:&lt;br&gt;
No suspicious process activity&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There is no single obvious conclusion.&lt;/p&gt;

&lt;p&gt;The evidence looks like:&lt;/p&gt;

&lt;p&gt;┌───────────────┐&lt;br&gt;
             │ Authenticated │&lt;br&gt;
             │    Identity   │&lt;br&gt;
             └───────┬───────┘&lt;br&gt;
                     │&lt;br&gt;
                     │&lt;br&gt;
 ┌──────────────┐    │    ┌──────────────┐&lt;br&gt;
 │ Network      │────┼────│ Host         │&lt;br&gt;
 │ unusual      │    │    │ normal       │&lt;br&gt;
 └──────────────┘    │    └──────────────┘&lt;br&gt;
                     │&lt;br&gt;
             ┌───────▼───────┐&lt;br&gt;
             │   Behavior    │&lt;br&gt;
             │ enumeration   │&lt;br&gt;
             └───────────────┘&lt;/p&gt;

&lt;p&gt;The correct response isn't necessarily to ignore the suspicious signals.&lt;/p&gt;

&lt;p&gt;It also isn't necessarily to block the user.&lt;/p&gt;

&lt;p&gt;The system needs to preserve the conflict.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Contradiction Is Information&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is an important design principle.&lt;/p&gt;

&lt;p&gt;Suppose:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Signal A → suspicious&lt;br&gt;
Signal B → suspicious&lt;br&gt;
Signal C → normal&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Signal C doesn't necessarily cancel A and B.&lt;/p&gt;

&lt;p&gt;Instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Suspicious evidence
+
Contradictory evidence
        ↓
Risk assessment
        ↓
Confidence assessment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The contradiction itself can affect confidence.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Risk:
Elevated

Confidence:
Moderate

Reason:
Behavioral evidence is strong,
but supporting telemetry is inconsistent.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is much more informative than:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Risk = 82&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;Don't Simply Average Everything&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A tempting design would be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Network score = 80
Identity score = 20
Host score = 10
Behavior score = 90

Average = 50

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But averages can hide important relationships.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Behavior = highly suspicious&lt;br&gt;
Host = normal&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;doesn't necessarily mean:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;behavior suspicion is cancelled&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The host sensor might simply have insufficient visibility.&lt;/p&gt;

&lt;p&gt;Therefore, CIDS should distinguish between:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Negative evidence&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Missing / non-confirming evidence&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These are not the same thing.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;"Normal" Does Not Always Mean "Safe"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Suppose the host telemetry reports:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;No suspicious process activity&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That could mean:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;No suspicious process activity actually occurred.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The activity occurred somewhere the sensor cannot observe.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The behavior is purely application-level.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The relevant process telemetry arrived late.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Therefore:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;No suspicious host signal&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;should not automatically become:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Strong evidence of benign behavior&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The meaning depends on telemetry coverage.&lt;/p&gt;




&lt;p&gt;Evidence Coverage&lt;/p&gt;

&lt;p&gt;This suggests another useful concept:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Evidence
+
Coverage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"network"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"available"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"identity"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"available"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"host"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"partial"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"application"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"available"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the Risk Engine understands not only:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What evidence exists?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;but also:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How complete is the observation?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Signals
   +
Telemetry Coverage
   ↓
Risk + Confidence

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This can prevent CIDS from becoming overconfident when part of the system is blind.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Independent Evidence Is More Valuable&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Consider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Network detector
→ suspicious

Behavior detector
→ suspicious
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If both detectors are ultimately measuring the same HTTP request pattern, they may not represent independent evidence.&lt;/p&gt;

&lt;p&gt;But:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Network
+
Identity
+
Host
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;may provide different perspectives.&lt;/p&gt;

&lt;p&gt;This matters when combining signals.&lt;/p&gt;

&lt;p&gt;A mature Risk Engine should eventually understand the difference between:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;three signals&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;three independent pieces of evidence.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;They are not necessarily equivalent.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Signal Relationships&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CIDS can conceptually maintain relationships between signals:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AUTH_FAILURE_BURST
        │
        ├── related to
        ▼
ENDPOINT_ENUMERATION
        │
        ├── followed by
        ▼
RESTRICTED_PATH_PROBING
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the system is no longer just counting signals.&lt;/p&gt;

&lt;p&gt;It is reasoning about their relationship.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10 failed logins
        ↓
endpoint enumeration
        ↓
restricted path probing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is more meaningful than simply:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;3 suspicious signals&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;A Possible Signal Model&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A future CIDS signal could contain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;SecuritySignal&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;signal_type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;SignalType&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;severity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Severity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;confidence&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;f32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

    &lt;span class="n"&gt;session_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;SessionId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

    &lt;span class="n"&gt;source&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;SignalSource&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;timestamp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Timestamp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

    &lt;span class="n"&gt;evidence_refs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Vec&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;EventId&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

    &lt;span class="n"&gt;coverage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;TelemetryCoverage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact implementation is still part of the evolving CIDS backend.&lt;/p&gt;

&lt;p&gt;The important architectural property is that the Risk Engine receives structured evidence, not unexplained numbers.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Risk and Confidence Should React Differently&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Risk = high&lt;br&gt;
Confidence = low&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This could mean:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The potential behavior is concerning, but the available evidence is incomplete or conflicting.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Whereas:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Risk = high&lt;br&gt;
Confidence = high&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;could mean:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Multiple consistent sources strongly support the assessment.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This gives policy more information.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;High risk + high confidence
        ↓
stronger response may be permitted

High risk + low confidence
        ↓
additional observation / controlled response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact action should remain policy-driven.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;This Connects Directly to Adaptive Defense&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CIDS does not have to choose only:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ALLOW&lt;br&gt;
BLOCK&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A policy engine could consider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Monitor
Challenge
Rate-limit
Slow
Contain
Deception
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For conflicting evidence, a deployment might choose a less disruptive response while collecting additional telemetry.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Conflicting evidence
        ↓
Additional observation
        ↓
New telemetry
        ↓
Signal update
        ↓
Risk reassessment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The system gets another opportunity to make a better decision.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Deception Can Generate More Evidence&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This also connects to the CIDS deception architecture.&lt;/p&gt;

&lt;p&gt;Suppose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Behavior:
highly suspicious

Identity:
legitimate

Confidence:
moderate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of immediately taking the strongest response, policy could potentially use a controlled decoy in an environment where that is appropriate.&lt;/p&gt;

&lt;p&gt;If the session interacts with the decoy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Decoy interaction
       ↓
New telemetry
       ↓
New security signal
       ↓
Context update
       ↓
Risk reassessment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The response becomes another observation point.&lt;/p&gt;

&lt;p&gt;The purpose is defensive observation, not retaliation.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Don't Let AI Resolve the Conflict by Itself&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An AI analysis layer can eventually help explain conflicting evidence.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The session belongs to an authenticated user, but its request sequence resembles endpoint enumeration. Host telemetry currently provides no corroborating process-level evidence."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is useful.&lt;/p&gt;

&lt;p&gt;But the architecture should remain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Deterministic telemetry
        ↓
Structured signals
        ↓
Risk / confidence
        ↓
Policy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;with AI assisting explanation or analyst workflows.&lt;/p&gt;

&lt;p&gt;Not:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Raw logs
   ↓
AI
   ↓
BLOCK
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The latter makes the security decision much harder to test and audit.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Testing Conflicting Signals&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This feature should be tested deliberately.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Scenario 1: All signals agree&lt;/u&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Network → suspicious
Behavior → suspicious
Host → suspicious
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expected:&lt;/p&gt;

&lt;p&gt;consistent evidence&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Scenario 2: Signals conflict&lt;/u&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Network → suspicious
Behavior → suspicious
Host → normal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expected:&lt;/p&gt;

&lt;p&gt;conflict represented&lt;br&gt;
confidence adjusted according to policy/model&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Scenario 3: Telemetry missing&lt;br&gt;
&lt;/u&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Network → suspicious
Host → unavailable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expected:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;missing ≠ benign&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;u&gt;Scenario 4: One noisy detector&lt;/u&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Detector A → suspicious
Detector B → normal
Detector C → normal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expected:&lt;/p&gt;

&lt;p&gt;no automatic high-risk conclusion&lt;/p&gt;

&lt;p&gt;unless other evidence supports it.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Replay Testing&lt;/strong&gt;&lt;br&gt;
Conflicting-signal scenarios are excellent candidates for replay testing.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Recorded telemetry
       ↓
Normalizer
       ↓
Signal generation
       ↓
Conflict detection
       ↓
Risk assessment
       ↓
Expected result
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A regression test could contain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scenario"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"authenticated_endpoint_enumeration"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"expected"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"risk_state"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"elevated"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"confidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"moderate"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The actual values and policy semantics would need to be determined through implementation and testing rather than assumed in advance.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What Is Implemented vs. Planned?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The current CyberMoranda CIDS project has an MVP foundation and an evolving architecture around event normalization, session context, behavioral correlation, security signals, risk scoring, confidence, adaptive defense, and deception.&lt;/p&gt;

&lt;p&gt;The conflicting-signal reasoning described here is an architectural direction, not a claim that the current MVP already implements a production-grade evidence graph, independent-signal weighting, telemetry coverage modeling, or formally validated conflict-resolution algorithms.&lt;/p&gt;

&lt;p&gt;Those components need implementation and testing.&lt;/p&gt;

&lt;p&gt;The goal is to define the reasoning model before adding unnecessary complexity.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The Larger Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The idea fits into the broader CIDS pipeline:&lt;/p&gt;

&lt;p&gt;RAW TELEMETRY&lt;br&gt;
                         │&lt;br&gt;
                         ▼&lt;br&gt;
                 ┌──────────────┐&lt;br&gt;
                 │  Normalizer  │&lt;br&gt;
                 └──────┬───────┘&lt;br&gt;
                        ▼&lt;br&gt;
                ┌───────────────┐&lt;br&gt;
                │Session Context│&lt;br&gt;
                └───────┬───────┘&lt;br&gt;
                        ▼&lt;br&gt;
                ┌───────────────┐&lt;br&gt;
                │    Signals    │&lt;br&gt;
                └───────┬───────┘&lt;br&gt;
                        ▼&lt;br&gt;
               ┌─────────────────┐&lt;br&gt;
               │    Behavior     │&lt;br&gt;
               │   Correlation   │&lt;br&gt;
               └────────┬────────┘&lt;br&gt;
                        ▼&lt;br&gt;
              ┌───────────────────┐&lt;br&gt;
              │ Risk + Confidence │&lt;br&gt;
              └─────────┬─────────┘&lt;br&gt;
                        ▼&lt;br&gt;
                ┌──────────────┐&lt;br&gt;
                │    Policy    │&lt;br&gt;
                └──────┬───────┘&lt;br&gt;
                       ▼&lt;br&gt;
                  RESPONSE&lt;/p&gt;

&lt;p&gt;The key idea is that conflicting evidence does not break the pipeline.&lt;/p&gt;

&lt;p&gt;It becomes another property of the evidence that the system reasons about.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Final Thought&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Real security telemetry is messy.&lt;/p&gt;

&lt;p&gt;One sensor says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Suspicious.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Another says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Normal.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A third might say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I don't have enough information.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A mature security system shouldn't hide that disagreement.&lt;/p&gt;

&lt;p&gt;It should represent it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Signal
  ↓
Evidence
  ↓
Context
  ↓
Agreement / Conflict
  ↓
Risk
  ↓
Confidence
  ↓
Policy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That gives CIDS an important property:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Uncertainty becomes data instead of becoming a hidden assumption.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The goal isn't to make CIDS always certain.&lt;/p&gt;

&lt;p&gt;The goal is to make its uncertainty explicit, explainable, and testable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Think Before You Act.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>software</category>
      <category>security</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Designing a Telemetry Pipeline for CIDS: Turning Raw Activity Into Security Signals</title>
      <dc:creator>Saurabh Pandit </dc:creator>
      <pubDate>Fri, 11 Sep 2026 17:34:36 +0000</pubDate>
      <link>https://dev.to/cybermoranda/designing-a-telemetry-pipeline-for-cids-turning-raw-activity-into-security-signals-119d</link>
      <guid>https://dev.to/cybermoranda/designing-a-telemetry-pipeline-for-cids-turning-raw-activity-into-security-signals-119d</guid>
      <description>&lt;p&gt;A behavioral security system is only as good as the information it can observe.&lt;/p&gt;

&lt;p&gt;If the telemetry is incomplete, inconsistent, or impossible to correlate, the detection layer has to make decisions with missing context.&lt;/p&gt;

&lt;p&gt;For &lt;strong&gt;CyberMoranda CIDS&lt;/strong&gt;, this leads to an important architectural principle:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Don't send raw events directly to the risk engine. Normalize them first.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The telemetry pipeline is the layer that turns different observations into a consistent stream of security-relevant events.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The Problem With Raw Security Events&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Different components can produce completely different data.&lt;/p&gt;

&lt;p&gt;A network layer might observe:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;source IP&lt;br&gt;
destination&lt;br&gt;
port&lt;br&gt;
protocol&lt;br&gt;
request rate&lt;br&gt;
fingerprint&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;An application might produce:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;user&lt;br&gt;
endpoint&lt;br&gt;
HTTP method&lt;br&gt;
status code&lt;br&gt;
authentication result&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A host telemetry source might provide:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;process&lt;br&gt;
PID&lt;br&gt;
file&lt;br&gt;
socket&lt;br&gt;
system call&lt;br&gt;
parent process&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If every detector handles these formats independently, the architecture quickly becomes difficult to maintain.&lt;/p&gt;

&lt;p&gt;Instead, CIDS needs a common event model.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;A Normalized Event Model&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Conceptually, the pipeline looks like:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Network Telemetry ─────┐&lt;br&gt;
                       │&lt;br&gt;
Application Events ────┼──→ Event Normalizer&lt;br&gt;
                       │          │&lt;br&gt;
Host Telemetry ────────┘          ↓&lt;br&gt;
                            Canonical Event&lt;br&gt;
                                  ↓&lt;br&gt;
                           Session Context&lt;br&gt;
                                  ↓&lt;br&gt;
                          Security Signals&lt;br&gt;
                                  ↓&lt;br&gt;
                             Risk Engine&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
The normalizer should not decide whether something is malicious.&lt;/p&gt;

&lt;p&gt;Its job is to make the data consistent and usable.&lt;/p&gt;

&lt;p&gt;A conceptual event might look like:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;{&lt;br&gt;
  "event_type": "http_request",&lt;br&gt;
  "timestamp": "2026-09-09T16:00:00Z",&lt;br&gt;
  "source": {&lt;br&gt;
    "address": "example",&lt;br&gt;
    "fingerprint": "example"&lt;br&gt;
  },&lt;br&gt;
  "session_id": "session-123",&lt;br&gt;
  "request": {&lt;br&gt;
    "method": "GET",&lt;br&gt;
    "path": "/admin",&lt;br&gt;
    "status": 403&lt;br&gt;
  },&lt;br&gt;
  "metadata": {&lt;br&gt;
    "sensor": "application"&lt;br&gt;
  }&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The exact schema will evolve as CIDS develops.&lt;/p&gt;

&lt;p&gt;The important idea is that downstream components should not need to understand every individual telemetry source.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Preserve Evidence&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Normalization should not mean throwing information away.&lt;/p&gt;

&lt;p&gt;A dangerous mistake would be reducing an event immediately to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;SUSPICIOUS = true&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That destroys useful evidence.&lt;/p&gt;

&lt;p&gt;Instead, CIDS should preserve enough context to answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where did the event originate?&lt;/li&gt;
&lt;li&gt;When did it happen?&lt;/li&gt;
&lt;li&gt;Which session was involved?&lt;/li&gt;
&lt;li&gt;Which sensor produced it?&lt;/li&gt;
&lt;li&gt;What was actually observed?&lt;/li&gt;
&lt;li&gt;Which fields were inferred?&lt;/li&gt;
&lt;li&gt;How reliable is the observation?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That gives later stages more information to work with.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Event Time vs Processing Time&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Security systems also need to distinguish between two concepts:&lt;/p&gt;

&lt;p&gt;`Event Time&lt;br&gt;
   ↓&lt;br&gt;
When the activity actually happened&lt;/p&gt;

&lt;p&gt;Processing Time&lt;br&gt;
   ↓&lt;br&gt;
When CIDS received/processed the event`&lt;/p&gt;

&lt;p&gt;These aren't always identical.&lt;/p&gt;

&lt;p&gt;Network delays, buffering, dropped packets, overloaded collectors, or asynchronous processing can introduce differences.&lt;/p&gt;

&lt;p&gt;For behavioral analysis, this matters because sequences depend on time.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A → B → C&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;could be interpreted differently if the timestamps are wrong.&lt;/p&gt;

&lt;p&gt;So the telemetry layer should preserve timestamps carefully rather than treating them as an afterthought.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Correlation Is Where Telemetry Becomes Useful&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A single event is often weak evidence.&lt;/p&gt;

&lt;p&gt;A correlated sequence can be much more informative.&lt;/p&gt;

&lt;p&gt;Consider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Event 1
Failed login

      ↓

Event 2
Endpoint enumeration

      ↓

Event 3
Restricted path access

      ↓

Event 4
Abnormal request frequency
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The telemetry pipeline can associate these events with a common session or behavioral context.&lt;/p&gt;

&lt;p&gt;Then the detection layer can produce something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;h2&gt;
  
  
  Behavioral Signal
&lt;/h2&gt;

&lt;p&gt;AUTH_FAILURE_BURST&lt;br&gt;
ENDPOINT_ENUMERATION&lt;br&gt;
RESTRICTED_PATH_PROBE&lt;br&gt;
REQUEST_RATE_ANOMALY&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The Risk Engine can then evaluate the combined evidence.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;A Useful Separation of Responsibilities&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One architecture I'm working toward is:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;┌──────────────────────┐&lt;br&gt;
│      Telemetry       │&lt;br&gt;
│  "What was observed" │&lt;br&gt;
└──────────┬───────────┘&lt;br&gt;
           ↓&lt;br&gt;
┌──────────────────────┐&lt;br&gt;
│      Normalize       │&lt;br&gt;
│  "Make it consistent"│&lt;br&gt;
└──────────┬───────────┘&lt;br&gt;
           ↓&lt;br&gt;
┌──────────────────────┐&lt;br&gt;
│       Context        │&lt;br&gt;
│  "What is related?"  │&lt;br&gt;
└──────────┬───────────┘&lt;br&gt;
           ↓&lt;br&gt;
┌──────────────────────┐&lt;br&gt;
│      Detection       │&lt;br&gt;
│ "What looks unusual?"│&lt;br&gt;
└──────────┬───────────┘&lt;br&gt;
           ↓&lt;br&gt;
┌──────────────────────┐&lt;br&gt;
│        Risk          │&lt;br&gt;
│ "How concerning?"    │&lt;br&gt;
└──────────┬───────────┘&lt;br&gt;
           ↓&lt;br&gt;
┌──────────────────────┐&lt;br&gt;
│       Policy         │&lt;br&gt;
│ "What should happen?"│&lt;br&gt;
└──────────────────────┘&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Each layer has a different responsibility.&lt;/p&gt;

&lt;p&gt;That separation should make the backend easier to test and evolve.&lt;/p&gt;



&lt;p&gt;Reliability Matters&lt;/p&gt;

&lt;p&gt;Telemetry itself can fail.&lt;/p&gt;

&lt;p&gt;A collector can disconnect.&lt;/p&gt;

&lt;p&gt;An event can arrive late.&lt;/p&gt;

&lt;p&gt;A field can be missing.&lt;/p&gt;

&lt;p&gt;A sensor can produce duplicate observations.&lt;/p&gt;

&lt;p&gt;CIDS therefore shouldn't assume:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If an event is missing, nothing happened.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead, the system should know the quality of its observations.&lt;/p&gt;

&lt;p&gt;A future event model could include concepts such as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;source&lt;br&gt;
confidence&lt;br&gt;
timestamp&lt;br&gt;
sequence&lt;br&gt;
sensor&lt;br&gt;
schema_version&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This allows downstream components to reason about the reliability of their inputs.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;What About eBPF?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Host-level visibility is one of the areas I want to explore further for CIDS.&lt;/p&gt;

&lt;p&gt;eBPF can provide a powerful foundation for observing certain kernel-level activity without requiring a traditional kernel module.&lt;/p&gt;

&lt;p&gt;In a future CIDS telemetry architecture, host signals could flow through the same normalization boundary:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─ Network
                    │
                    ├─ Application
                    │
Telemetry Sources ──┼─ Host / eBPF
                    │
                    └─ Other Sensors
                           ↓
                    Event Normalizer
                           ↓
                    Common Event Model
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is an architectural direction, not a claim that every eBPF telemetry component is already production-ready in CIDS.&lt;/p&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Don't Let Telemetry Become the Bottleneck&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A behavioral system can generate a lot of data.&lt;/p&gt;

&lt;p&gt;If every raw event is stored forever and every component processes everything synchronously, scalability becomes a problem.&lt;/p&gt;

&lt;p&gt;A more scalable direction is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sensors
   ↓
Ingestion
   ↓
Normalization
   ↓
Event Stream
   ├── Session Correlation
   ├── Detection
   ├── Storage
   └── Observability
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allows different consumers to process the information they actually need.&lt;/p&gt;

&lt;p&gt;It also creates a cleaner path toward distributed deployments later.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Testing the Telemetry Layer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before trusting the Risk Engine, I want to be able to test the telemetry pipeline independently.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input Event
    ↓
Normalizer
    ↓
Expected Canonical Event`

Then:

`Multiple Events
    ↓
Session Correlator
    ↓
Expected Behavioral Sequence`

And finally:

`Telemetry
    ↓
Detection
    ↓
Expected Security Signal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes debugging much easier.&lt;/p&gt;

&lt;p&gt;If the final risk score is wrong, we can ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Was the telemetry wrong?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    ↓
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Was normalization wrong?&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    ↓
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Was correlation wrong?&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    ↓
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Was the signal wrong?&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    ↓
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Was the risk calculation wrong?&lt;/p&gt;

&lt;p&gt;Without these boundaries, every detection failure becomes difficult to diagnose.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What Is Built vs What Is Planned?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One principle I'm keeping throughout CIDS development is to separate the prototype from the target architecture.&lt;/p&gt;

&lt;p&gt;The existing MVP established the initial CIDS concept and basic defensive workflow.&lt;/p&gt;

&lt;p&gt;The broader telemetry architecture described here represents the engineering direction I'm building toward, including richer correlation, host telemetry, eBPF integration, and scalable event processing.&lt;/p&gt;

&lt;p&gt;I don't want to present architectural diagrams as if they were already production systems.&lt;/p&gt;

&lt;p&gt;The gap between:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“This is the design.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“This works reliably under real conditions.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;is where most of the engineering actually happens.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The Bigger Picture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The telemetry layer may not be the most visible part of CIDS.&lt;/p&gt;

&lt;p&gt;There is no flashy dashboard here.&lt;/p&gt;

&lt;p&gt;No giant threat score.&lt;/p&gt;

&lt;p&gt;No dramatic animation.&lt;/p&gt;

&lt;p&gt;But it may become one of the most important foundations of the system.&lt;/p&gt;

&lt;p&gt;Because behavioral detection depends on context.&lt;/p&gt;

&lt;p&gt;And context depends on good telemetry.&lt;/p&gt;

&lt;p&gt;The direction is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Observe
   ↓
Normalize
   ↓
Correlate
   ↓
Understand
   ↓
Evaluate
   ↓
Respond
   ↓
Learn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the foundation I'm continuing to build for CyberMoranda CIDS.&lt;/p&gt;

&lt;p&gt;Think Before You Act.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs8qelcul4dkuc8y6sg14.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs8qelcul4dkuc8y6sg14.jpg" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>security</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Beyond Block or Allow: Designing Adaptive Defense in CIDS.</title>
      <dc:creator>Saurabh Pandit </dc:creator>
      <pubDate>Tue, 08 Sep 2026 14:28:48 +0000</pubDate>
      <link>https://dev.to/cybermoranda/beyond-block-or-allow-designing-adaptive-defense-in-cids-na3</link>
      <guid>https://dev.to/cybermoranda/beyond-block-or-allow-designing-adaptive-defense-in-cids-na3</guid>
      <description>&lt;p&gt;Most security systems eventually have to answer a simple question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Allow or block?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That model is useful.&lt;/p&gt;

&lt;p&gt;But I think there is an interesting space between those two decisions.&lt;/p&gt;

&lt;p&gt;What if the system isn't completely certain that an activity is malicious?&lt;/p&gt;

&lt;p&gt;What if the behavior is suspicious, but blocking immediately would create unnecessary friction?&lt;/p&gt;

&lt;p&gt;And what if the system has enough evidence to know that something is wrong, but instead of simply terminating the interaction, it can safely contain it and gather more defensive intelligence?&lt;/p&gt;

&lt;p&gt;These questions led me to one of the core ideas behind CyberMoranda CIDS:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Adaptive Defense.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Detection Is Not the Same as Response&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CIDS separates these two decisions.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Behavior&lt;br&gt;
   ↓&lt;br&gt;
Detection&lt;br&gt;
   ↓&lt;br&gt;
Risk + Confidence&lt;br&gt;
   ↓&lt;br&gt;
Policy&lt;br&gt;
   ↓&lt;br&gt;
Response&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This distinction is important.&lt;/p&gt;

&lt;p&gt;The detection engine should not decide:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I found something suspicious, therefore BLOCK."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead, it should provide evidence.&lt;/p&gt;

&lt;p&gt;The policy engine decides what that evidence should mean for the environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Response Spectrum&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The response architecture I'm working toward looks like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;┌── Allow&lt;br&gt;
                    │&lt;br&gt;
                    ├── Monitor&lt;br&gt;
                    │&lt;br&gt;
Risk + Confidence ──┼── Slow / Challenge&lt;br&gt;
                    │&lt;br&gt;
                    ├── Contain&lt;br&gt;
                    │&lt;br&gt;
                    └── Deception&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These aren't simply five fixed risk levels.&lt;/p&gt;

&lt;p&gt;The actual response should depend on context, confidence, asset sensitivity, policy, and observed behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Not Block Immediately?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine a request pattern that is unusual but not conclusive.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Risk: HIGH&lt;br&gt;
Confidence: LOW&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Immediately blocking could be a bad decision.&lt;/p&gt;

&lt;p&gt;Instead, the system might increase observation:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Suspicious activity&lt;br&gt;
       ↓&lt;br&gt;
Increase monitoring&lt;br&gt;
       ↓&lt;br&gt;
Observe next actions&lt;br&gt;
       ↓&lt;br&gt;
Update context&lt;br&gt;
       ↓&lt;br&gt;
Re-evaluate risk&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This gives the system more evidence before taking a stronger action.&lt;/p&gt;

&lt;p&gt;That is the basic idea behind adaptive response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dynamic Friction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One concept I am particularly interested in is dynamic friction.&lt;/p&gt;

&lt;p&gt;Instead of applying the same delay to every suspicious request, the response can be influenced by the current context.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Low concern&lt;br&gt;
    ↓&lt;br&gt;
Normal response&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Moderate concern&lt;br&gt;
    ↓&lt;br&gt;
Additional observation&lt;/p&gt;

&lt;p&gt;High concern&lt;br&gt;
    ↓&lt;br&gt;
Controlled friction / challenge&lt;/p&gt;

&lt;p&gt;Very high confidence&lt;br&gt;
    ↓&lt;br&gt;
Containment&lt;/p&gt;

&lt;p&gt;The exact implementation and thresholds need to be validated through testing.&lt;/p&gt;

&lt;p&gt;I don't want arbitrary numbers to become part of the architecture simply because they looked good in an MVP.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deception as a Defensive Layer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Deception is another part of the CIDS design.&lt;/p&gt;

&lt;p&gt;The objective isn't to attack the attacker.&lt;/p&gt;

&lt;p&gt;It is to create a controlled environment where suspicious activity can be observed without exposing the real application or sensitive resources.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Suspicious Session&lt;br&gt;
       ↓&lt;br&gt;
Policy Evaluation&lt;br&gt;
       ↓&lt;br&gt;
Is Deception Appropriate?&lt;br&gt;
       ↓&lt;br&gt;
    Controlled&lt;br&gt;
    Deception&lt;br&gt;
       ↓&lt;br&gt;
Observe + Record&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The real application remains separated from the deceptive environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Could Deception Provide?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A controlled deception environment could help collect information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requested paths&lt;/li&gt;
&lt;li&gt;Request sequences&lt;/li&gt;
&lt;li&gt;Timing&lt;/li&gt;
&lt;li&gt;Interaction patterns&lt;/li&gt;
&lt;li&gt;Authentication attempts&lt;/li&gt;
&lt;li&gt;Tool/fingerprint signals&lt;/li&gt;
&lt;li&gt;Session behavior&lt;/li&gt;
&lt;li&gt;Commands or inputs attempted within the decoy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is defensive visibility, not retaliation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Honeytokens&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Another concept that fits naturally into this architecture is the use of honeytokens.&lt;/p&gt;

&lt;p&gt;A honeytoken is an intentionally placed piece of data designed to generate a signal when accessed or used unexpectedly.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Normal application&lt;br&gt;
       ↓&lt;br&gt;
Hidden defensive marker&lt;br&gt;
       ↓&lt;br&gt;
Unexpected access&lt;br&gt;
       ↓&lt;br&gt;
Security Signal&lt;br&gt;
       ↓&lt;br&gt;
Risk Evaluation&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A honeytoken event can become one piece of evidence within the broader behavioral model.&lt;/p&gt;

&lt;p&gt;It should not automatically mean:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Honeytoken → BLOCK&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Honeytoken&lt;br&gt;
    +&lt;br&gt;
Session Context&lt;br&gt;
    +&lt;br&gt;
Previous Behavior&lt;br&gt;
    ↓&lt;br&gt;
Risk Evaluation&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Again, context matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deception Should Not Become a Trap for Everyone&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is an important engineering constraint.&lt;/p&gt;

&lt;p&gt;A defensive deception mechanism must be isolated.&lt;/p&gt;

&lt;p&gt;It should not:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;expose real credentials&lt;/li&gt;
&lt;li&gt;provide access to production systems&lt;/li&gt;
&lt;li&gt;become an uncontrolled pivot point&lt;/li&gt;
&lt;li&gt;interact offensively with external systems&lt;/li&gt;
&lt;li&gt;create unnecessary risk for legitimate users&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The deception environment should be treated as an isolated security boundary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feedback Changes the System&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Another important part of the architecture is feedback.&lt;/p&gt;

&lt;p&gt;Suppose CIDS makes a decision:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Behavior&lt;br&gt;
   ↓&lt;br&gt;
Risk&lt;br&gt;
   ↓&lt;br&gt;
Contain&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Later, an analyst determines that the behavior was legitimate.&lt;/p&gt;

&lt;p&gt;That information shouldn't disappear.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Conceptually:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Detection&lt;br&gt;
    ↓&lt;br&gt;
Decision&lt;br&gt;
    ↓&lt;br&gt;
Outcome&lt;br&gt;
    ↓&lt;br&gt;
Analyst Feedback&lt;br&gt;
    ↓&lt;br&gt;
Policy / Detection Tuning&lt;/p&gt;

&lt;p&gt;This doesn't necessarily mean blindly training an AI model from every analyst action.&lt;/p&gt;

&lt;p&gt;It means the system should have a structured way to learn from operational outcomes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Bigger Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This brings the different CIDS components together:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Network / Host Telemetry&lt;br&gt;
                       ↓&lt;br&gt;
                Event Normalization&lt;br&gt;
                       ↓&lt;br&gt;
                  Session Context&lt;br&gt;
                       ↓&lt;br&gt;
                 Behavior Analysis&lt;br&gt;
                       ↓&lt;br&gt;
                  Signal Engine&lt;br&gt;
                       ↓&lt;br&gt;
                 Risk + Confidence&lt;br&gt;
                       ↓&lt;br&gt;
                  Policy Engine&lt;br&gt;
                       ↓&lt;br&gt;
               Adaptive Response&lt;br&gt;
                /      |       \&lt;br&gt;
             Allow   Monitor   Contain&lt;br&gt;
                                  ↓&lt;br&gt;
                              Deception&lt;br&gt;
                                  ↓&lt;br&gt;
                         Evidence / Audit&lt;br&gt;
                                  ↓&lt;br&gt;
                              Feedback&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The dashboard is simply a window into this system.&lt;/p&gt;

&lt;p&gt;The real product is the decision-making backend underneath it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Am Trying to Build&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I don't want CIDS to become another product that simply shows:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ATTACK DETECTED&lt;br&gt;
IP BLOCKED&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I want the system to answer a more useful set of questions:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What happened?&lt;/p&gt;

&lt;p&gt;Why does it look suspicious?&lt;/p&gt;

&lt;p&gt;How confident are we?&lt;/p&gt;

&lt;p&gt;What has this session been doing?&lt;/p&gt;

&lt;p&gt;What response is appropriate?&lt;/p&gt;

&lt;p&gt;What did we learn from the response?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the direction behind the adaptive defense architecture of CIDS.&lt;/p&gt;

&lt;p&gt;There is still a lot of engineering and validation ahead.&lt;/p&gt;

&lt;p&gt;The architecture is evolving.&lt;/p&gt;

&lt;p&gt;The prototype is only the beginning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Observe. Understand. Adapt. Defend.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CyberMoranda CIDS — Think Before You Act.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>network</category>
      <category>programming</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Designing the Risk Engine Behind CIDS</title>
      <dc:creator>Saurabh Pandit </dc:creator>
      <pubDate>Sun, 06 Sep 2026 23:33:58 +0000</pubDate>
      <link>https://dev.to/cybermoranda/designing-the-risk-engine-behind-cids-59mm</link>
      <guid>https://dev.to/cybermoranda/designing-the-risk-engine-behind-cids-59mm</guid>
      <description>&lt;p&gt;A security system can collect thousands of events.&lt;/p&gt;

&lt;p&gt;But collecting events is not the difficult part.&lt;/p&gt;

&lt;p&gt;The difficult part is deciding:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which events actually matter?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is where the Risk Engine becomes an important part of CyberMoranda CIDS.&lt;/p&gt;

&lt;p&gt;The purpose of the Risk Engine is not to simply assign a large number to suspicious activity.&lt;/p&gt;

&lt;p&gt;Its purpose is to combine security evidence, context, and behavior into a defensible risk decision.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;From Events to Risk&lt;/strong&gt;&lt;br&gt;
A simplified CIDS pipeline looks like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Incoming Activity&lt;br&gt;
       ↓&lt;br&gt;
Event Normalization&lt;br&gt;
       ↓&lt;br&gt;
Session Context&lt;br&gt;
       ↓&lt;br&gt;
Behavior Analysis&lt;br&gt;
       ↓&lt;br&gt;
Security Signals&lt;br&gt;
       ↓&lt;br&gt;
Risk Engine&lt;br&gt;
       ↓&lt;br&gt;
Policy Engine&lt;br&gt;
       ↓&lt;br&gt;
Response&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The Risk Engine sits between detection and response.&lt;/p&gt;

&lt;p&gt;That separation is intentional.&lt;/p&gt;

&lt;p&gt;Detection answers:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What looks suspicious?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Risk evaluation answers:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How concerning is the combined evidence?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Policy answers:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What should we do about it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Why a Single Score Isn't Enough&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A common mistake is to create something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Normal request     = +2&lt;br&gt;
Admin request      = +30&lt;br&gt;
Failed login       = +20&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and simply add everything together.&lt;/p&gt;

&lt;p&gt;That can work for a basic prototype, but it becomes problematic as the system grows.&lt;/p&gt;

&lt;p&gt;Consider:&lt;/p&gt;

&lt;p&gt;Failed login&lt;/p&gt;

&lt;p&gt;Five failed logins from a normal user might be suspicious.&lt;/p&gt;

&lt;p&gt;Five failed logins from a known security-testing environment might be completely expected.&lt;/p&gt;

&lt;p&gt;The same event can have different meanings depending on context.&lt;/p&gt;

&lt;p&gt;Therefore, CIDS needs more than a static point system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context Matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Risk Engine should eventually consider multiple dimensions:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;┌── Event Evidence&lt;br&gt;
                    │&lt;br&gt;
                    ├── Session History&lt;br&gt;
                    │&lt;br&gt;
                    ├── Behavioral Pattern&lt;br&gt;
                    │&lt;br&gt;
                    ├── Identity Context&lt;br&gt;
                    │&lt;br&gt;
                    ├── Asset Sensitivity&lt;br&gt;
                    │&lt;br&gt;
                    ├── Frequency / Timing&lt;br&gt;
                    │&lt;br&gt;
                    └── Previous Signals&lt;br&gt;
                              ↓&lt;br&gt;
                         Risk Engine&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This allows the system to reason about activity as a sequence rather than isolated events.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Signals Before Scores&lt;/strong&gt;&lt;br&gt;
One architectural decision I'm exploring is to standardize security signals before calculating the final risk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For example:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AUTH_FAILURE_BURST&lt;br&gt;
ENDPOINT_ENUMERATION&lt;br&gt;
RESTRICTED_PATH_PROBE&lt;br&gt;
REQUEST_RATE_ANOMALY&lt;br&gt;
FINGERPRINT_CHANGE&lt;br&gt;
SESSION_BEHAVIOR_SHIFT&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Each signal should have structured information such as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Signal&lt;br&gt;
 ├── type&lt;br&gt;
 ├── severity&lt;br&gt;
 ├── confidence&lt;br&gt;
 ├── timestamp&lt;br&gt;
 ├── source&lt;br&gt;
 ├── session&lt;br&gt;
 └── evidence&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This creates a cleaner boundary between detection and risk calculation.&lt;/p&gt;

&lt;p&gt;Instead of the detector saying:&lt;/p&gt;

&lt;p&gt;Risk = 74&lt;/p&gt;

&lt;p&gt;it can say:&lt;/p&gt;

&lt;p&gt;Signal:&lt;br&gt;
ENDPOINT_ENUMERATION&lt;/p&gt;

&lt;p&gt;Severity:&lt;br&gt;
HIGH&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Confidence:&lt;br&gt;
0.91&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Evidence:&lt;br&gt;
Multiple restricted endpoints accessed&lt;br&gt;
within a short session window.&lt;/p&gt;

&lt;p&gt;The Risk Engine can then combine that signal with other evidence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Risk and Confidence Are Different&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This distinction is important.&lt;/p&gt;

&lt;p&gt;Risk asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How dangerous could this behavior be?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Confidence asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How confident are we that our interpretation is correct?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These should not automatically be treated as the same value.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Risk:       High&lt;br&gt;
Confidence: Low&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;could mean:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The potential impact is significant, but the system doesn't have enough evidence yet.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That should potentially produce a different response from:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Risk:       High&lt;br&gt;
Confidence: High&amp;lt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is one reason I don't want CIDS to depend on a single arbitrary threshold.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Temporal Behavior&lt;/strong&gt;&lt;br&gt;
Another important component is time.&lt;/p&gt;

&lt;p&gt;Suppose a session produces:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;10:01  Login&lt;br&gt;
10:02  Failed authentication&lt;br&gt;
10:03  /robots.txt&lt;br&gt;
10:03  /admin&lt;br&gt;
10:04  /.env&lt;br&gt;
10:04  /internal&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Looking at each event independently loses information.&lt;/p&gt;

&lt;p&gt;Looking at the sequence reveals a behavioral pattern.&lt;/p&gt;

&lt;p&gt;So the Risk Engine needs access to temporal context.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Event A&lt;br&gt;
   ↓&lt;br&gt;
Event B&lt;br&gt;
   ↓&lt;br&gt;
Event C&lt;br&gt;
   ↓&lt;br&gt;
Event D&lt;br&gt;
   ↓&lt;br&gt;
Behavioral Pattern&lt;br&gt;
   ↓&lt;br&gt;
Risk Update&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is one of the areas where CIDS can move beyond simple rule matching.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Risk Should Decay Too&lt;/strong&gt;&lt;br&gt;
Risk shouldn't necessarily increase forever.&lt;/p&gt;

&lt;p&gt;If suspicious behavior stops, the system should eventually be able to reduce the active risk associated with a session.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Suspicious activity&lt;br&gt;
        ↓&lt;br&gt;
Risk increases&lt;br&gt;
        ↓&lt;br&gt;
No further suspicious activity&lt;br&gt;
        ↓&lt;br&gt;
Risk gradually decays&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This prevents an old event from permanently defining a session.&lt;/p&gt;

&lt;p&gt;The exact decay model needs to be tested rather than chosen arbitrarily.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explainability Is Mandatory&lt;/strong&gt;&lt;br&gt;
A security analyst shouldn't have to trust a mysterious number.&lt;/p&gt;

&lt;p&gt;If CIDS reports:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Risk: 91&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;the system should also be able to answer:&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Restricted endpoint probing&lt;/li&gt;
&lt;li&gt;Abnormal request frequency&lt;/li&gt;
&lt;li&gt;Authentication failure burst&lt;/li&gt;
&lt;li&gt;Suspicious session sequence&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Confidence: High&lt;/p&gt;

&lt;p&gt;This becomes especially important when automated responses are involved.&lt;/p&gt;

&lt;p&gt;Risk Should Not Directly Trigger Everything&lt;/p&gt;

&lt;p&gt;I want to keep another boundary inside CIDS:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Signals&lt;br&gt;
   ↓&lt;br&gt;
Risk&lt;br&gt;
   ↓&lt;br&gt;
Policy&lt;br&gt;
   ↓&lt;br&gt;
Response&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not:&lt;/p&gt;

&lt;p&gt;Risk &amp;gt; X&lt;br&gt;
   ↓&lt;br&gt;
BLOCK&lt;/p&gt;

&lt;p&gt;The policy layer should have the final authority over the response.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;High Risk + Low Confidence&lt;br&gt;
        ↓&lt;br&gt;
      Monitor&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;while:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;High Risk + High Confidence&lt;br&gt;
        ↓&lt;br&gt;
    Contain&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And a controlled deception policy could be applied where appropriate.&lt;/p&gt;

&lt;p&gt;This separation also makes CIDS easier to adapt to different environments.&lt;/p&gt;

&lt;p&gt;The Architecture I'm Building Toward&lt;/p&gt;

&lt;p&gt;The longer-term backend direction looks roughly like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Telemetry&lt;br&gt;
                   ↓&lt;br&gt;
            Event Normalizer&lt;br&gt;
                   ↓&lt;br&gt;
             Session Engine&lt;br&gt;
                   ↓&lt;br&gt;
           Behavior Analysis&lt;br&gt;
                   ↓&lt;br&gt;
             Signal Engine&lt;br&gt;
                   ↓&lt;br&gt;
              Risk Engine&lt;br&gt;
             /          \&lt;br&gt;
       Risk Score      Confidence&lt;br&gt;
             \          /&lt;br&gt;
              Policy Engine&lt;br&gt;
                   ↓&lt;br&gt;
            Response Engine&lt;br&gt;
             /     |      \&lt;br&gt;
          Allow  Monitor  Contain&lt;br&gt;
                            ↓&lt;br&gt;
                        Deception&lt;br&gt;
                   ↓&lt;br&gt;
              Audit / Feedback&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Additional telemetry sources such as host-level telemetry, eBPF and fingerprinting signals can feed into this architecture as the system evolves.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Hard Part&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The architecture is easy to draw.&lt;/p&gt;

&lt;p&gt;The real engineering challenge is proving that the Risk Engine works.&lt;/p&gt;

&lt;p&gt;That means testing questions such as:&lt;/p&gt;

&lt;p&gt;Does it detect meaningful behavioral changes?&lt;/p&gt;

&lt;p&gt;How many false positives does it produce?&lt;/p&gt;

&lt;p&gt;How quickly does risk change?&lt;/p&gt;

&lt;p&gt;Does risk decay appropriately?&lt;/p&gt;

&lt;p&gt;Can every decision be explained?&lt;/p&gt;

&lt;p&gt;What happens under high event volume?&lt;/p&gt;

&lt;p&gt;Can the system recover from failures?&lt;/p&gt;

&lt;p&gt;Can the scoring model be tuned without rewriting the detection engine?&lt;/p&gt;

&lt;p&gt;These are the questions I want CIDS to answer with experiments and measurable results.&lt;/p&gt;

&lt;p&gt;Not marketing claims.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where CIDS Is Going&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My current goal isn't to build a dashboard that simply displays:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Threat: HIGH&lt;br&gt;
Risk: 91&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I want to build the engine underneath it that can explain:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Why is this behavior suspicious?&lt;/p&gt;

&lt;p&gt;What evidence supports that conclusion?&lt;/p&gt;

&lt;p&gt;How confident is the system?&lt;/p&gt;

&lt;p&gt;What should happen next?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the direction I'm taking with the CIDS backend.&lt;/p&gt;

&lt;p&gt;Observe the behavior.&lt;br&gt;
Build the context.&lt;br&gt;
Evaluate the evidence.&lt;br&gt;
Then act.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;CyberMoranda CIDS — Think Before You Act.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>rust</category>
      <category>security</category>
      <category>cybersecurity</category>
      <category>saas</category>
    </item>
    <item>
      <title>Why CIDS Looks at Behavior, Not Just Individual Requests</title>
      <dc:creator>Saurabh Pandit </dc:creator>
      <pubDate>Sun, 06 Sep 2026 12:06:18 +0000</pubDate>
      <link>https://dev.to/cybermoranda/why-cids-looks-at-behavior-not-just-individual-requests-4j8g</link>
      <guid>https://dev.to/cybermoranda/why-cids-looks-at-behavior-not-just-individual-requests-4j8g</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgsuxb1o1cnv9naz9wvsy.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgsuxb1o1cnv9naz9wvsy.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;
Security systems are very good at answering one question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Is this request suspicious?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But sometimes that is not enough.&lt;/p&gt;

&lt;p&gt;An attacker does not always reveal their intent through a single request.&lt;/p&gt;

&lt;p&gt;The intent can emerge through a sequence of actions.&lt;/p&gt;

&lt;p&gt;That is one of the main ideas behind CyberMoranda CIDS.&lt;/p&gt;

&lt;p&gt;A Single Request Can Be Misleading&lt;/p&gt;

&lt;p&gt;Consider a normal-looking application request:&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;GET /admin&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
By itself, this may not be enough to classify the activity as malicious.&lt;/p&gt;

&lt;p&gt;Now consider the sequence:&lt;/p&gt;

&lt;p&gt;GET /login&lt;br&gt;
      ↓&lt;br&gt;
Multiple failed authentication attempts&lt;br&gt;
      ↓&lt;br&gt;
&lt;strong&gt;GET /robots.txt&lt;br&gt;
      ↓&lt;br&gt;
GET /admin&lt;br&gt;
      ↓&lt;br&gt;
GET /.env&lt;br&gt;
      ↓&lt;br&gt;
Multiple endpoint probes&lt;br&gt;
      ↓&lt;br&gt;
Abnormally high request frequency&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The individual requests are not the complete story.&lt;/p&gt;

&lt;p&gt;The sequence is the story.&lt;/p&gt;

&lt;p&gt;CIDS is being designed to preserve and analyze that context.&lt;/p&gt;

&lt;p&gt;From Events to Behavior&lt;/p&gt;

&lt;p&gt;A traditional event-based approach might look like:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Request&lt;br&gt;
   ↓&lt;br&gt;
Rule Match&lt;br&gt;
   ↓&lt;br&gt;
Allow / Block&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CIDS is being designed around:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Request&lt;br&gt;
   ↓&lt;br&gt;
Session Context&lt;br&gt;
   ↓&lt;br&gt;
Previous Activity&lt;br&gt;
   ↓&lt;br&gt;
Behavioral Signals&lt;br&gt;
   ↓&lt;br&gt;
Risk Evaluation&lt;br&gt;
   ↓&lt;br&gt;
Decision&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This means that the system doesn't have to make every security decision from a single isolated event.&lt;/p&gt;

&lt;p&gt;What Is a Behavioral Signal?&lt;/p&gt;

&lt;p&gt;A behavioral signal is an observable characteristic of activity that contributes evidence to a security decision.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;Authentication failures&lt;br&gt;
Endpoint enumeration&lt;br&gt;
Request frequency&lt;br&gt;
Restricted path access&lt;br&gt;
Session history&lt;br&gt;
Fingerprint changes&lt;br&gt;
Unusual request sequences&lt;/p&gt;

&lt;p&gt;Each signal can contribute different evidence.&lt;/p&gt;

&lt;p&gt;The important part is that the system should be able to explain the evidence.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;p&gt;Threat detected.&lt;br&gt;
Risk = 87&lt;/p&gt;

&lt;p&gt;CIDS should eventually be able to provide something closer to:&lt;/p&gt;

&lt;p&gt;Risk Score: 87&lt;/p&gt;

&lt;p&gt;Contributing signals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Repeated authentication failures&lt;/li&gt;
&lt;li&gt;Restricted endpoint probing&lt;/li&gt;
&lt;li&gt;Unusual request frequency&lt;/li&gt;
&lt;li&gt;Suspicious request sequence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Confidence: High&lt;br&gt;
Decision: Contain&lt;/p&gt;

&lt;p&gt;That makes the decision much easier for a security analyst to understand.&lt;/p&gt;

&lt;p&gt;Context Changes the Meaning of an Event&lt;/p&gt;

&lt;p&gt;Imagine an authenticated employee accessing:&lt;/p&gt;

&lt;p&gt;/api/profile&lt;/p&gt;

&lt;p&gt;That may be completely normal.&lt;/p&gt;

&lt;p&gt;The same identity suddenly starts doing:&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;/.env&lt;br&gt;
/admin&lt;br&gt;
/config&lt;br&gt;
/internal/&lt;/em&gt;&lt;br&gt;
**&lt;br&gt;
within a short period of time.&lt;/p&gt;

&lt;p&gt;The important question is no longer simply:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Is this user authenticated?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The better question becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Is this behavior consistent with the context of this session?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is where behavioral security becomes interesting.&lt;/p&gt;

&lt;p&gt;Risk Should Be Accumulated From Evidence&lt;/p&gt;

&lt;p&gt;CIDS is being designed around an incremental risk model rather than a single binary verdict.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;/p&gt;

&lt;p&gt;┌─ Signal A&lt;br&gt;
                    │&lt;br&gt;
Session ────────────┼─ Signal B&lt;br&gt;
                    │&lt;br&gt;
                    ├─ Signal C&lt;br&gt;
                    │&lt;br&gt;
                    └─ Historical Context&lt;br&gt;
                           ↓&lt;br&gt;
                     Risk Evaluation&lt;br&gt;
                           ↓&lt;br&gt;
                    Policy Decision&lt;/p&gt;

&lt;p&gt;The exact scoring model still needs to be tested and calibrated.&lt;/p&gt;

&lt;p&gt;That is important.&lt;/p&gt;

&lt;p&gt;A security system should not produce impressive-looking numbers without evidence behind them.&lt;/p&gt;

&lt;p&gt;Detection and Response Should Be Separate&lt;/p&gt;

&lt;p&gt;Another principle I'm following is to keep detection separate from response.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Behavior&lt;br&gt;
   ↓&lt;br&gt;
Detection&lt;br&gt;
   ↓&lt;br&gt;
Risk&lt;br&gt;
   ↓&lt;br&gt;
Policy&lt;br&gt;
   ↓&lt;br&gt;
Response&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Why?&lt;/p&gt;

&lt;p&gt;Because detecting suspicious behavior and deciding what to do about it are two different problems.&lt;/p&gt;

&lt;p&gt;One environment might want:&lt;/p&gt;

&lt;p&gt;**High Risk → Monitor&lt;/p&gt;

&lt;p&gt;Another might want:&lt;/p&gt;

&lt;p&gt;High Risk → Rate Limit&lt;/p&gt;

&lt;p&gt;Another might want:&lt;/p&gt;

&lt;p&gt;Critical → Contain**&lt;/p&gt;

&lt;p&gt;Separating these layers makes the system more adaptable.&lt;/p&gt;

&lt;p&gt;The Goal Isn't More Blocking&lt;/p&gt;

&lt;p&gt;This is probably the most important part.&lt;/p&gt;

&lt;p&gt;CIDS isn't being designed with the philosophy:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Block everything suspicious.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The objective is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Understand enough context to choose an appropriate defensive response.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That response could be monitoring.&lt;/p&gt;

&lt;p&gt;It could be rate limiting.&lt;/p&gt;

&lt;p&gt;It could be containment.&lt;/p&gt;

&lt;p&gt;And in controlled circumstances, it could involve deception.&lt;/p&gt;

&lt;p&gt;The system should remain defensive and should never retaliate against an attacker.&lt;/p&gt;

&lt;p&gt;Where This Goes Next&lt;/p&gt;

&lt;p&gt;Behavioral detection is only one layer.&lt;/p&gt;

&lt;p&gt;The larger CIDS architecture is moving toward combining:&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Network / Application Events&lt;br&gt;
          +&lt;br&gt;
Host Telemetry&lt;br&gt;
          +&lt;br&gt;
Fingerprint Signals&lt;br&gt;
          +&lt;br&gt;
Session Context&lt;br&gt;
          +&lt;br&gt;
Threat Intelligence&lt;br&gt;
          +&lt;br&gt;
Behavioral Analysis&lt;br&gt;
          ↓&lt;br&gt;
     Security Signals&lt;br&gt;
          ↓&lt;br&gt;
      Risk Engine&lt;br&gt;
          ↓&lt;br&gt;
     Policy Engine&lt;br&gt;
          ↓&lt;br&gt;
   Adaptive Response&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
The difficult part isn't drawing this architecture.&lt;/p&gt;

&lt;p&gt;The difficult part is building it, testing it, measuring it, and proving that it works without creating unacceptable false positives or performance problems.&lt;/p&gt;

&lt;p&gt;That's the part I'm working toward.&lt;/p&gt;

&lt;p&gt;CIDS is not finished.&lt;/p&gt;

&lt;p&gt;I'm building the foundation first.&lt;/p&gt;

&lt;p&gt;Observe the behavior.&lt;br&gt;
Understand the context.&lt;br&gt;
Then act.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;CyberMoranda CIDS — Think Before You Act.&lt;br&gt;
*&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  cybersecurity
&lt;/h1&gt;

&lt;h1&gt;
  
  
  threatdetection
&lt;/h1&gt;

&lt;h1&gt;
  
  
  security
&lt;/h1&gt;

&lt;h1&gt;
  
  
  rust
&lt;/h1&gt;

&lt;h1&gt;
  
  
  opensource
&lt;/h1&gt;

</description>
      <category>cybersecurity</category>
      <category>infosec</category>
      <category>security</category>
    </item>
    <item>
      <title>CyberMoranda CIDS: Building a Security System That Thinks Before It Acts</title>
      <dc:creator>Saurabh Pandit </dc:creator>
      <pubDate>Sat, 05 Sep 2026 20:00:12 +0000</pubDate>
      <link>https://dev.to/cybermoranda/cybermoranda-cids-building-a-security-system-that-thinks-before-it-acts-3604</link>
      <guid>https://dev.to/cybermoranda/cybermoranda-cids-building-a-security-system-that-thinks-before-it-acts-3604</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Furbjumwjxkopb9pc969s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Furbjumwjxkopb9pc969s.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8rvlncin8mo1gvril4l0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8rvlncin8mo1gvril4l0.jpg" alt=" " width="414" height="390"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnzc8ohswcv4wd83x9hg7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnzc8ohswcv4wd83x9hg7.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;
CIDS stands for Cognitive Intrusion Defense System.&lt;/p&gt;

&lt;p&gt;The idea started with a simple question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What if a security system could understand behavior before deciding how to respond?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Traditional security systems often make decisions from individual events, signatures, rules, or predefined patterns.&lt;/p&gt;

&lt;p&gt;But real attacks are not always a single event.&lt;/p&gt;

&lt;p&gt;Sometimes the intent becomes visible only when multiple actions are connected over time.&lt;/p&gt;

&lt;p&gt;That is where CIDS begins.&lt;/p&gt;

&lt;p&gt;The Core Philosophy&lt;/p&gt;

&lt;p&gt;Think Before You Act.&lt;/p&gt;

&lt;p&gt;CIDS is being designed around this pipeline:&lt;/p&gt;

&lt;p&gt;Observation&lt;br&gt;
     ↓&lt;br&gt;
Context&lt;br&gt;
     ↓&lt;br&gt;
Behavior&lt;br&gt;
     ↓&lt;br&gt;
Security Signals&lt;br&gt;
     ↓&lt;br&gt;
Risk + Confidence&lt;br&gt;
     ↓&lt;br&gt;
Decision&lt;br&gt;
     ↓&lt;br&gt;
Adaptive Response&lt;br&gt;
     ↓&lt;br&gt;
Feedback&lt;/p&gt;

&lt;p&gt;Instead of immediately treating every suspicious request as an attack, the system builds context around the behavior.&lt;/p&gt;

&lt;p&gt;The Backend Is the Product&lt;/p&gt;

&lt;p&gt;One thing I have become increasingly clear about while developing CIDS is that the dashboard is not the product.&lt;/p&gt;

&lt;p&gt;The security engine is the product.&lt;/p&gt;

&lt;p&gt;The backend needs to understand:&lt;/p&gt;

&lt;p&gt;What happened?&lt;/p&gt;

&lt;p&gt;Who/what generated the activity?&lt;/p&gt;

&lt;p&gt;What happened before it?&lt;/p&gt;

&lt;p&gt;Is this behavior normal for the session?&lt;/p&gt;

&lt;p&gt;Which security signals were triggered?&lt;/p&gt;

&lt;p&gt;How confident are we?&lt;/p&gt;

&lt;p&gt;What is the current risk?&lt;/p&gt;

&lt;p&gt;What response should the policy allow?&lt;/p&gt;

&lt;p&gt;This leads to a more structured architecture.&lt;/p&gt;

&lt;p&gt;Traffic / Host Telemetry&lt;br&gt;
          ↓&lt;br&gt;
     Event Normalizer&lt;br&gt;
          ↓&lt;br&gt;
     Session Context&lt;br&gt;
          ↓&lt;br&gt;
    Behavior Analysis&lt;br&gt;
          ↓&lt;br&gt;
     Signal Engine&lt;br&gt;
          ↓&lt;br&gt;
      Risk Engine&lt;br&gt;
          ↓&lt;br&gt;
     Policy Engine&lt;br&gt;
          ↓&lt;br&gt;
    Response Engine&lt;br&gt;
          ↓&lt;br&gt;
      Audit / Events&lt;/p&gt;

&lt;p&gt;Behavioral Detection&lt;/p&gt;

&lt;p&gt;The goal is not simply:&lt;/p&gt;

&lt;p&gt;Request → Rule → Block&lt;/p&gt;

&lt;p&gt;Instead, CIDS should be able to observe a sequence such as:&lt;/p&gt;

&lt;p&gt;Login&lt;br&gt;
   ↓&lt;br&gt;
Repeated authentication failures&lt;br&gt;
   ↓&lt;br&gt;
Endpoint enumeration&lt;br&gt;
   ↓&lt;br&gt;
Restricted path probing&lt;br&gt;
   ↓&lt;br&gt;
Abnormal request frequency&lt;/p&gt;

&lt;p&gt;Each individual event may not be enough to make a decision.&lt;/p&gt;

&lt;p&gt;Together, however, they can form a much stronger behavioral signal.&lt;/p&gt;

&lt;p&gt;Adaptive Defense&lt;/p&gt;

&lt;p&gt;CIDS is not designed around a single response.&lt;/p&gt;

&lt;p&gt;Depending on context and risk, the response layer can move through different levels:&lt;/p&gt;

&lt;p&gt;ALLOW&lt;br&gt;
  ↓&lt;br&gt;
MONITOR&lt;br&gt;
  ↓&lt;br&gt;
SLOW / CHALLENGE&lt;br&gt;
  ↓&lt;br&gt;
CONTAIN&lt;br&gt;
  ↓&lt;br&gt;
DECEPTION&lt;/p&gt;

&lt;p&gt;The purpose is defensive.&lt;/p&gt;

&lt;p&gt;CIDS will not hack back or retaliate against attackers.&lt;/p&gt;

&lt;p&gt;The goal is to protect the system while making malicious activity less useful.&lt;/p&gt;

&lt;p&gt;Where I Want to Take It&lt;/p&gt;

&lt;p&gt;The architecture is evolving toward several areas:&lt;/p&gt;

&lt;p&gt;Host-based telemetry&lt;/p&gt;

&lt;p&gt;eBPF-based observability&lt;/p&gt;

&lt;p&gt;JA4 and fingerprint-based signals&lt;/p&gt;

&lt;p&gt;Context-aware deception&lt;/p&gt;

&lt;p&gt;Honeytokens&lt;/p&gt;

&lt;p&gt;Feedback loops for detection tuning&lt;/p&gt;

&lt;p&gt;Standardized security signals and rules&lt;/p&gt;

&lt;p&gt;Event-driven processing&lt;/p&gt;

&lt;p&gt;Strong auditing&lt;/p&gt;

&lt;p&gt;Replay-based testing&lt;/p&gt;

&lt;p&gt;Performance and reliability testing&lt;/p&gt;

&lt;p&gt;These are part of the engineering direction, not claims that every component is already production-ready.&lt;/p&gt;

&lt;p&gt;From a Phone-Built MVP&lt;/p&gt;

&lt;p&gt;The first CIDS MVP was built with extremely limited resources.&lt;/p&gt;

&lt;p&gt;It was built on a phone.&lt;/p&gt;

&lt;p&gt;It is not the final system.&lt;/p&gt;

&lt;p&gt;But building that MVP proved something important to me:&lt;/p&gt;

&lt;p&gt;The idea could become a working system.&lt;/p&gt;

&lt;p&gt;Now I want to take that prototype much further.&lt;/p&gt;

&lt;p&gt;The next goal is not simply to make CIDS look impressive.&lt;/p&gt;

&lt;p&gt;The goal is to make its backend technically strong, explainable, testable, and scalable.&lt;/p&gt;

&lt;p&gt;I am still building.&lt;/p&gt;

&lt;p&gt;And I am documenting the journey as I go.&lt;/p&gt;

&lt;p&gt;CyberMoranda CIDS&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Think Before You Act.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  cybersecurity
&lt;/h1&gt;

&lt;h1&gt;
  
  
  rust
&lt;/h1&gt;

&lt;h1&gt;
  
  
  security
&lt;/h1&gt;

&lt;h1&gt;
  
  
  opensource
&lt;/h1&gt;

&lt;h1&gt;
  
  
  devops
&lt;/h1&gt;

&lt;h1&gt;
  
  
  cybermoranda
&lt;/h1&gt;

</description>
      <category>architecture</category>
      <category>cybersecurity</category>
      <category>security</category>
      <category>software</category>
    </item>
    <item>
      <title>Why CIDS?</title>
      <dc:creator>Saurabh Pandit </dc:creator>
      <pubDate>Sat, 05 Sep 2026 04:47:37 +0000</pubDate>
      <link>https://dev.to/cybermoranda/why-cids-p3g</link>
      <guid>https://dev.to/cybermoranda/why-cids-p3g</guid>
      <description>&lt;p&gt;Traditional security often focuses on what happened.&lt;br&gt;
CIDS focuses on how the behavior develops over time.&lt;br&gt;
A single request may look harmless. But when multiple actions form an unusual pattern, the context can tell a very different story.&lt;br&gt;
That is the problem I’m trying to solve with CIDS.&lt;br&gt;
Observe the behavior. Understand the context. Then act.&lt;/p&gt;

&lt;h1&gt;
  
  
  CyberSecurity #CIDS #CyberMoranda #ThreatDetection #BehavioralSecurity
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>CyberMoranda CIDS: Building a Security System That Thinks Before It Acts</title>
      <dc:creator>Saurabh Pandit </dc:creator>
      <pubDate>Thu, 03 Sep 2026 10:20:03 +0000</pubDate>
      <link>https://dev.to/cybermoranda/cybermoranda-cids-building-a-security-system-that-thinks-before-it-acts-55oh</link>
      <guid>https://dev.to/cybermoranda/cybermoranda-cids-building-a-security-system-that-thinks-before-it-acts-55oh</guid>
      <description>&lt;p&gt;I’m building CyberMoranda CIDS — Cognitive Intrusion Defense System, a behavior-based approach to cybersecurity.&lt;br&gt;
Instead of reacting to every request individually, CIDS aims to understand behavior, context, and intent before deciding how to respond.&lt;br&gt;
Observe → Understand → Assess → Adapt&lt;br&gt;
The project is still under development, but the goal is clear:&lt;br&gt;
Build security that thinks before it acts.&lt;br&gt;
CyberMoranda CIDS — Think Before You Act.&lt;/p&gt;

&lt;h1&gt;
  
  
  CyberSecurity #CIDS #CyberMoranda #CyberDefense #SecurityEngineering
&lt;/h1&gt;

</description>
      <category>architecture</category>
      <category>cybersecurity</category>
      <category>security</category>
    </item>
  </channel>
</rss>
