Application security feature

Runtime threat signals

Otukan runtime threat signals record which check fired, when, on which build and platform, so your team can triage, set policy and escalate with evidence.

  • Android
  • iOS
  • Flutter
  • React Native
Tampering in the field is met at the structured signals boundary before it reaches the appTampering in the fieldStructured signalsYour app
  • One clear record

    Each signal names the check, its result, the moment in the journey, the build and the platform, so nobody has to guess what fired.

  • Ready for decisions

    Severity and a detection label travel with the record, so your policy, your analysts and your backend read it the same way.

  • Decided on your server

    The record reaches your backend with the request it describes, so the final decision sits where an attacker on the device cannot reach it.

What a runtime signal captures

Pick a condition to see how Otukan detects it, how the app responds and which record your team receives.

Instrumentation in the process

  1. Detect

    Otukan finds an instrumentation toolkit or an injected library running inside the app's own process.

  2. Respond

    The app records, warns, restricts or ends the session, following the rule for that moment in the journey.

  3. Report

    A record naming the instrumentation check, whether it fired at launch, sign-in or a sensitive action, and the build it fired on.

Debugger on a release build

  1. Detect

    Otukan notices a debugger or tracer attached to a build that was shipped to a store.

  2. Respond

    Sensitive steps pause or the session closes, as your rule for that flow sets.

  3. Report

    A debugging record with the OS version, so your team can tell lab noise from a field attempt.

Signing identity mismatch

  1. Detect

    Otukan compares the running app's code, resources and signing identity with the release you shipped.

  2. Respond

    A modified copy is kept away from the flows you protect.

  3. Report

    An integrity record that lets your backend refuse requests from the altered copy.

Modified operating system

  1. Detect

    Android root checks and iOS jailbreak checks, each built for its own platform, report a system that no longer enforces its security model.

  2. Respond

    High-value flows step up or narrow; low-risk screens stay open.

  3. Report

    A platform-specific record that is never relabelled across Android and iOS.

Virtual hardware

  1. Detect

    Otukan recognises emulators and virtualised environments running the app instead of a physical phone.

  2. Respond

    Onboarding, sign-in or payment can be limited on emulated sessions, flow by flow.

  3. Report

    An environment record that helps separate scripted traffic from real customers.

Inside an Otukan runtime signal

Every part of the record answers a question your team will ask during triage.

  • Structured record

    A consistent set of fields for every check, so signals from different builds and platforms can be compared and counted.

  • Journey moment

    Each record states whether the check ran at launch, at sign-in or before a sensitive action you marked.

  • Severity levels

    Every check maps to a small, documented severity scale, so a developer-device signal never looks like tampering on a payment.

  • Detection label

    Records start as detections and can be promoted to confirmed attack or business incident once evidence agrees.

  • Privacy-lean fields

    Technical facts about the app and the check only; names, contact details, message content and precise location never enter a record.

  • Pseudonymous identity

    An install identifier links repeated signals from one app instance without a name, phone number or email address.

You choose the response

Set a response for each user flow. Start by observing, then tighten flow by flow as the signals prove themselves.

Observe

Signal sent to your backend

Rolling out a new policy and measuring real-world signals.

Warn

This device looks modified. Continue with care.

Conditions some genuine users create, such as developer settings.

Restrict

Payments are unavailable on this device.

Payments, stored data and account changes.

Terminate

Session closed for your security.

Clear tampering on a high-risk flow.

How a signal is produced

  1. Check fires

    A runtime check in the protected app sees a condition at launch, sign-in or a sensitive action.

  2. Record is built

    Otukan writes the check, result, moment, build, platform, OS version, severity and a timestamp.

  3. Response applies

    The app follows the rule you set for that check in that flow.

  4. Backend receives it

    The record reaches your server with the request, where the attacker cannot change the decision.

  5. Team reviews trends

    Your analysts read the same record in threat monitoring, investigation and your SOC tools.

Free for app publishers

Check your app's exposure

A passive review of your published app by an Otukan engineer. No files, no access to your systems. Findings go by email to the verified publisher.

You finish the request on the next page.

Evaluate runtime threat signals by what each one lets you decide. An Otukan-protected app creates a structured signal every time a runtime check fires: which check, what it found, the moment in the journey, the app build, platform, OS version, a pseudonymous install identifier, a severity level and a timestamp. A strong signal is precise enough to drive a response rule, consistent enough to count over time and lean enough to pass a privacy review. This page covers the signal itself for Android, iOS, Flutter and React Native apps. Trend views, case handling and SIEM delivery each have their own page.

The signal contract

A runtime signal is a contract between the app, your backend and your analysts. If one of them reads a field differently, triage slows down. Otukan fixes the structure so that every check, on every build, produces the same shape of record.

What each record holds

FieldWhat it holdsWhy your team needs it
CheckThe runtime check that fired, such as instrumentation or signing identityTells an analyst what was observed without reading code
ResultWhat the check foundSeparates a clear finding from a partial one
MomentLaunch, sign-in or a sensitive action you markedShows whether the condition was present before money or data moved
BuildThe app version and build that produced the recordTies the signal to a release you can reason about
Platform and OS versionAndroid or iOS, and the system versionKeeps comparisons within one platform
Install identifierA pseudonymous value for the app instanceLinks repeated signals without naming the person
SeverityA level from a small, documented scaleLets the policy and the SOC rank signals the same way
TimestampWhen the check ranOrders signals against backend and fraud logs

Android and iOS stay separate

Each platform exposes different information to an app, so Otukan builds its checks per platform and names them accordingly. An Android root finding is reported as root; an iOS jailbreak finding is reported as jailbreak. A record is never relabelled to make the two look alike, which keeps your counts honest.

From signal to operations

A record only earns its place if someone acts on it. Otukan designs signals around three uses: triage by an analyst, input to the app’s response rule, and escalation when a pattern looks like a real attack.

SituationTriage questionResponse inputEscalation
One debugger record on an internal test deviceIs this our own lab?Keep observe on internal buildsNone
Instrumentation at sign-in across many new installsIs a toolkit being used against login?Restrict sign-in for affected installsSecurity team reviews the pattern
Signing identity mismatch on a paymentIs a modified copy in circulation?Keep the copy away from paymentsSecurity and fraud teams open a case
Root records rising on one Android versionNew system image or new tooling?Hold the current rule while you checkOnly if backend evidence agrees

Triage

Severity and the journey moment let an analyst sort a queue quickly. A high-severity record before a transfer outranks a low-severity record at launch on a browsing screen.

Policy input

Records show how often a check fires on your real users. That rate is what tells you whether a flow can move from observe to warn, restrict or terminate. Policy design is covered on threat response.

Escalation

A single record is a lead. When several records and backend evidence point the same way, the detection is promoted to a confirmed attack and the owning team takes the case. Case handling is covered on threat investigation workflows.

Data handling

Detection comes before confirmation

Otukan labels every record as a detection first. It becomes a confirmed attack when signals and backend evidence agree, and a business incident when users, money or data are affected. That order keeps one noisy device from starting an incident response.

What stays out of a record

Runtime signals describe the app and the check, not the person. Names, phone numbers, email addresses, message content, contacts, precise location and file contents are never part of a record.

Retention and access

How long records are kept, and who may link an install identifier to an account, is agreed with you before collection starts. Data flows are documented for your privacy reviewers. Data handling is covered on data privacy.

Proving it on your app

Before a rollout, Otukan and your engineers prove each signal three ways: reproduce the behaviour in an authorised lab and confirm the record, repeat the journey on a legitimate device and confirm silence, then run install, update, sign-in and your most sensitive flow again. Results are recorded with devices, OS versions and the reviewer.

For an evaluation checklist, see the runtime threat signals solution guide. Backend handling of these records is covered on handling runtime threat signals. For the wider picture, return to mobile app threat monitoring.

Common questions

  • What makes a runtime threat signal useful to a security team?

    Three things: it says exactly which check fired, it says when in the user journey that happened, and it carries enough build and platform context to be counted against other signals. Otukan records all three in the same structure for every check, so your analysts can trend, filter and escalate without reading the app's code or asking engineering what a signal means.

  • How do we test signal quality before enforcing anything?

    Start every new check in observe mode. With your engineers, Otukan reproduces the behaviour in an authorised lab and confirms the record, runs the same journey on a legitimate device and confirms it stays quiet, then repeats install, update, sign-in and your most sensitive flow. Once real-user rates look as expected, you move the flow to a stricter response.

  • Do runtime signals contain personal data?

    They are built to avoid it. A record holds technical facts about the app and the check, plus a pseudonymous install identifier. Names, phone numbers, email addresses, message content, contacts, precise location and file contents stay out. Retention and who can link an identifier to an account are agreed with you before any collection starts.

  • Can our backend act on a signal in the same request?

    Yes. Otukan attaches the signal to the login or transaction request it relates to, so your server can refuse the request, ask for a stronger factor or let it through with a note. The decision then sits on your side of the connection, away from a device the attacker may control.

On the mobile engineering team?

How protection fits your build, signing and release, platform by platform.

Make every runtime check count

Tell us the platforms and app framework, where runtime signals should land today and which flows matter most. We do not ask for binaries, signing keys, production credentials or user data.

Or request a technical demo