Skip to content

Archive

Cybersecurity

535 articles
Cybersecurity 05 Sep 2026 10 min read

Use Honeytokens to Detect Credential Misuse

Many security alerts begin with ordinary activity: a login, an API request, or a secret being read. The difficult question is whether that activity is legitimate. A real credential may be used by several expected systems, so a single use often provides weak evidence of compromise. A honeytoken changes that problem by creating an identity or credential that has no legitimate operational use. If something tries to use it, the event is unusual by design and can produce a high-signal alert.

Cybersecurity 05 Sep 2026 7 min read

Use a Pepper to Limit Offline Password Cracking

A strong password-hashing function protects stored passwords by making each password guess deliberately expensive. A unique salt ensures that equal passwords do not produce reusable precomputed results. But if an attacker steals the entire password database, the salts are normally there too. The attacker can still test guesses offline without contacting the application. A pepper adds a different kind of barrier: a secret value used when deriving or protecting password verifiers, but stored separately from the password database. If an attacker obtains only the database and not the pepper, the stolen hashes are less useful for offline guessing.

Cybersecurity 05 Sep 2026 10 min read

Treat Email Address Changes as Account-Control Changes

Changing an email address can look like an ordinary profile edit. In many applications, however, email is also a login identifier, a password-recovery destination, a security-notification channel, or all three. Replacing it can therefore change who is able to recover or control the account. If a stolen session is enough to replace the email address immediately, an attacker who temporarily controls that session may be able to redirect later recovery messages and make the legitimate user’s recovery path harder. If the application trusts the new address before proving that the user controls it, a typing mistake can create a similar lockout without any attacker.

Cybersecurity 05 Sep 2026 9 min read

Throttle Login Attempts Without Making Lockout a Weapon

A login endpoint must accept failed passwords. That necessary behavior also gives an attacker a place to make repeated guesses or test credentials stolen from another service. If attempts are effectively unlimited, automation turns each individual login failure into part of a much larger search. A tempting response is to lock an account after a small number of failures. That slows guessing against the account, but it creates another problem: anyone who knows the username may be able to trigger the lockout. A control intended to protect authentication can become a denial-of-service mechanism against legitimate users.

Cybersecurity 05 Sep 2026 9 min read

Store Passwords for Offline Attack Resistance

A login system needs to recognize a password later, but it does not need to recover the original password. That distinction should shape how passwords are stored. If an application stores plaintext passwords, reversible encrypted passwords, or fast general-purpose hashes, a database disclosure can turn into a much larger authentication problem. An attacker who obtains password verifiers can make guesses on their own hardware, without sending each attempt through the application’s login endpoint. Online rate limits no longer control that work.

Cybersecurity 05 Sep 2026 11 min read

Slow Down Automated Login Attacks

A password login endpoint has to accept attempts from people who sometimes mistype their passwords. The same property also gives automated clients a place to try many guesses. If the application processes every attempt at full speed, an attacker can repeatedly test passwords against one account or spread attempts across many accounts. A correct password hash does not solve this problem. Password hashing makes each password verification deliberately costly, but the server still has to decide how many online attempts it will accept. Without another control, the application may provide an attacker with a large number of guesses over time.

Cybersecurity 05 Sep 2026 9 min read

Rotate Encryption Keys Without Losing Access to Existing Data

Encrypting sensitive data creates a long-term dependency that is easy to overlook: the application must retain the right decryption capability for as long as the ciphertext remains useful. Replacing an encryption key without planning for that dependency can make old data unreadable. Keeping one key forever avoids that immediate problem but makes future key changes harder and can increase the amount of data tied to one key. The practical solution is key versioning. Each ciphertext records which key version protects it. New encryption uses the current key, while decryption can temporarily use older versions for data that has not yet been migrated.

Cybersecurity 05 Sep 2026 8 min read

Review and Expire Privileged Access Grants

A permission can be correct when it is granted and dangerous six months later. A developer changes teams, a migration ends, a vendor contract closes, or an emergency exception is forgotten. The authorization system still sees a valid grant even though the business reason for it has disappeared. This is privilege accumulation: access grows over time because adding permissions is part of normal work while removing them is easy to miss. The practical defense is to treat privileged access as something with a lifecycle, not a permanent fact. After reading this article, you should be able to design grants that can be reviewed, expired, and removed without depending on someone remembering every old exception.

Cybersecurity 05 Sep 2026 9 min read

Require Reauthentication Before Sensitive Account Changes

An authenticated session is evidence that a user authenticated at some earlier point. It is not proof that the legitimate account holder is still controlling the browser when a high-impact account change happens. That distinction matters when a session is left open on a shared device or its credential is exposed. A requester who can use the session may be able to change the account email, replace an authentication factor, or perform another action that makes later recovery harder. Ordinary session authentication alone gives the application no fresh signal before that change.

Cybersecurity 05 Sep 2026 8 min read

Require Fresh Authentication for Sensitive Actions

A valid login session is often enough to read ordinary account data or continue routine work. It should not automatically be enough for every action the account can perform. If an attacker obtains an authenticated session, or a user leaves an unlocked session unattended, a long-lived session can turn a temporary opportunity into permission to change a password, replace a recovery method, reveal a sensitive secret, or perform another high-impact operation. Requiring fresh authentication for selected actions reduces that risk by asking the application to verify the user again close to the moment of the sensitive operation.

Cybersecurity 05 Sep 2026 10 min read

Recheck Authorization at the Point of Use

An application can perform a correct authorization check and still allow an action that should no longer be permitted. The problem appears when the application checks authority, waits or performs other work, and only later changes protected state. During that gap, the facts that justified the decision can change. For example, a worker may confirm that a user can modify a project, queue the requested change, and apply it several seconds later. If the user’s project access is revoked before the worker runs, using the earlier decision can let revoked authority survive longer than intended.

Cybersecurity 05 Sep 2026 9 min read

Publish a security.txt That Researchers Can Trust

A vulnerability can be discovered before your monitoring detects it. When that happens, the person who found it needs a reliable way to reach the team that can investigate. If the only visible contact is a general support form, an abandoned mailbox, or a guessed employee address, a useful report can be delayed or lost. security.txt addresses this narrow problem. It is a machine-readable text file published at a well-known HTTPS location so a researcher can discover your vulnerability-reporting contact and related disclosure information without guessing.

Cybersecurity 05 Sep 2026 8 min read

Protect Security Logs from the Systems They Observe

Logs are most valuable during a security incident, exactly when the system producing them may no longer be trustworthy. If an attacker gains administrative control of an application server and its only audit trail is stored on that same server, the attacker may be able to alter or remove both the activity and the evidence of it. The defensive problem is therefore not just what to log. It is also who can change the log after it is created.

Cybersecurity 05 Sep 2026 10 min read

Prevent Log Injection with Structured Events

Security logs are useful only when their meaning survives the journey from an application to the people and systems that read them. If untrusted text can change where one event appears to end, create convincing fake fields, or confuse a downstream parser, an attacker may be able to make suspicious activity harder to interpret. This problem is commonly called log injection or log forging. It happens when data controlled by an external party is treated as part of the log format rather than as data inside a log event.

Cybersecurity 05 Sep 2026 8 min read

Prevent Dependency Confusion with Explicit Package Sources

A dependency declaration can look precise and still leave an important security question unanswered: where is this package allowed to come from? This matters when an organisation uses both private packages and a public package registry. If a package manager or build configuration can resolve the same package name from more than one source, an attacker may be able to publish a public package that competes with the intended private one. A build that selects the wrong source can then run attacker-controlled package code inside a trusted development or build environment.

Cybersecurity 05 Sep 2026 10 min read

Make Sensitive Operations Safe to Retry

A client sends a request to create a refund. The server completes the refund, but the response is lost when the connection closes. The client cannot tell whether the operation succeeded, so it retries. If the server treats the retry as a new operation, one uncertain network failure can become two refunds. The same pattern appears in credit transfers, invitation acceptance, provisioning, job submission, and other state-changing actions where repeating an effect has security or financial consequences.

Cybersecurity 05 Sep 2026 10 min read

Limit Secret Exposure in Process Memory

A secret can be well protected at rest and still become exposed after an application starts using it. A database password retrieved from a secret manager, a private key loaded for signing, or an access token received from an identity service usually has to exist somewhere in process memory before the program can act on it. That creates a different security problem from secret storage. If sensitive values remain readable in memory longer than necessary, appear in many copies, or are captured in diagnostic artifacts, a memory disclosure can reveal credentials that were never written intentionally to a file or log.

Cybersecurity 05 Sep 2026 9 min read

Keep Untrusted Paths Inside an Intended Directory

Applications often need to turn input into a file operation: download a report, store an attachment, load a template, or unpack an archive. A dangerous mistake is treating an input path as if it were only a name. Paths contain structure, and that structure can redirect the operation somewhere the application did not intend. If an application expects a file under one directory but lets untrusted input influence the resolved location, a path traversal flaw can expose or overwrite files outside that directory. The consequence depends on what the process can access: configuration, application data, credentials, or other users’ files may fall within reach.

Cybersecurity 05 Sep 2026 11 min read

Fail Closed When Authorization Cannot Be Evaluated

An application may have correct authorization rules and still lose its security boundary when the component that evaluates those rules fails. A policy service can time out. A role lookup can return an error. Configuration can be unavailable. A programmer can catch the exception and continue because keeping the application online seems preferable to rejecting the request. If that fallback grants access, an availability problem has become an authorization bypass. The application is no longer saying, “this principal is allowed.” It is saying, “I could not determine whether this principal is allowed, so I will allow the action anyway.”

Cybersecurity 05 Sep 2026 11 min read

Do Not Trust the Request Host for Security-Sensitive URLs

Applications sometimes need to create an absolute URL. A password-reset email, email-verification message, or security notification may need a link such as https://accounts.example.com/reset/... rather than a relative path. A tempting implementation takes the host name from the current HTTP request and combines it with the path. That is convenient, but it can quietly move a security decision into attacker-controlled input. If the deployment accepts an unexpected host value, the application may generate a valid security token inside a link pointing at the wrong site.

Cybersecurity 05 Sep 2026 9 min read

Design Recovery Codes as Backup Authenticators

Strong authentication creates a recovery problem: what happens when the user loses the device, key, or application that normally proves who they are? If recovery is much weaker than normal sign-in, an attacker can ignore the strong authenticator and target the fallback instead. If recovery is too difficult, legitimate users can permanently lose access. A recovery code is a secret generated in advance and kept by the user for this failure case. It acts as a backup authenticator: possession of the code can restore access when the normal authenticator is unavailable.

Cybersecurity 05 Sep 2026 11 min read

Design Encryption for Cryptographic Erasure

Deleting a database row or object does not necessarily remove every physical copy of its bytes. Storage systems may keep replicas, snapshots, backups, or blocks that are no longer visible through the application. When sensitive data must become inaccessible, finding and overwriting every copy can therefore be difficult. Encryption can change this problem. If data is encrypted under a key that can be reliably destroyed, destroying that key can make the remaining ciphertext infeasible to decrypt. This technique is called cryptographic erasure.

Cybersecurity 05 Sep 2026 10 min read

Block Common and Compromised Passwords at Creation

A password can satisfy a length rule and still be a poor authentication secret. A familiar phrase, a predictable pattern, or a password exposed in an earlier breach may be among the first values an attacker tries against many accounts. This creates a practical problem for applications that allow users to choose passwords: checking only syntax does not tell you whether the chosen value is already widely known or unusually easy to predict.

Cybersecurity 04 Sep 2026 8 min read

Verify Dependency Integrity Before Installation

A dependency declaration such as library = 2.4.1 tells a package manager which release you intend to use. It does not, by itself, prove that the bytes being installed are the same bytes you previously reviewed, tested, or approved. That distinction matters when dependencies cross a trust boundary. Packages may come through registries, mirrors, caches, proxies, build systems, or internal artifact stores. If unexpected bytes are accepted somewhere along that path, a familiar package name and version can create false confidence.