Matrix/Lure/SDF-LR06

SDF-LR06

Supply Chain Decoys

expertDetection Value: criticalCost: moderateTime: 1-2 weeks⚙ Applications & Services

Description

Create fake supply chain artifacts including decoy code repositories, package registries, API endpoints, and vendor portals that attract adversaries conducting supply chain reconnaissance or attempting supply chain compromise.

Rationale

Supply chain attacks have become a major vector for sophisticated adversaries. By creating decoy supply chain infrastructure, you can detect adversaries who are probing your software supply chain, vendor relationships, or development pipelines before they can stage a supply chain compromise.

Supporting Basis

Author-derived extension

The sources establish honeytoken principles and software-supply-chain attack vectors; they do not evaluate defensive decoy packages, registries, or vendor artifacts.

These sources establish design lineage and scope. They do not validate this record's operational effectiveness, planning estimates, environment labels, or ATT&CK relationships.

Implementation Steps

1

Identify supply chain attack surfaces

Map your software supply chain: package dependencies, CI/CD pipelines, vendor integrations, and development infrastructure that adversaries might target.

2

Create decoy supply chain artifacts

Build fake package repositories, development environments, and vendor integration endpoints that appear to be part of your supply chain.

3

Populate with believable content

Add realistic code, configuration, and dependency information to decoy repositories. Include references that make them appear actively used.

4

Monitor for interaction

Track access attempts, clone operations, and authentication attempts against supply chain decoys.

Technical Implementation Examples(1)

Decoy Git Repository with Canary Tokens

Create a fake internal code repository that looks like a real application with embedded tracking

bash
#!/bin/bash
# create-decoy-repo.sh
# Creates a fake internal Git repository that looks like a real
# application codebase. Contains trap credentials and tracking.

REPO_DIR="/srv/git/internal-billing-api.git"
WORK_DIR=$(mktemp -d)

echo "[*] Creating decoy repository: internal-billing-api"

cd "$WORK_DIR"
git init internal-billing-api
cd internal-billing-api

# Create realistic project structure
mkdir -p src/{controllers,models,middleware} config test docs

# Application config with trap credentials
cat > config/production.json << 'CONFIG'
{
  "database": {
    "host": "prod-db-04.corp.internal",
    "port": 5432,
    "name": "billing_prod",
    "username": "billing_svc",
    "password": "B1ll1ng#Pr0d_2026!"
  },
  "redis": {
    "host": "cache-01.corp.internal",
    "port": 6379
  },
  "api_keys": {
    "stripe": "sk_live_51Hb2DECOY_NOT_REAL_KEY_abc123",
    "sendgrid": "SG.DECOY_KEY.not-a-real-sendgrid-key"
  }
}
CONFIG

# Realistic-looking application code
cat > src/controllers/billing.py << 'CODE'
"""Billing API controller - handles payment processing."""
from flask import Blueprint, request, jsonify
from models.invoice import Invoice
from middleware.auth import require_auth

billing_bp = Blueprint("billing", __name__)

@billing_bp.route("/api/v1/invoices", methods=["GET"])
@require_auth
def list_invoices():
    page = request.args.get("page", 1, type=int)
    invoices = Invoice.query.paginate(page=page, per_page=50)
    return jsonify([i.to_dict() for i in invoices.items])

@billing_bp.route("/api/v1/invoices/<int:id>/charge", methods=["POST"])
@require_auth
def charge_invoice(id):
    invoice = Invoice.query.get_or_404(id)
    result = invoice.process_payment()
    return jsonify(result), 200
CODE

cat > README.md << 'README'
# Internal Billing API

Production billing service for customer invoicing and payment processing.

## Quick Start
```bash
pip install -r requirements.txt
export FLASK_ENV=production
flask run --host=0.0.0.0 --port=5000
```

## Deployment
See docs/deployment.md for production deployment procedures.
Credentials are in config/production.json (DO NOT commit changes).
README

# Commit history to look authentic
git add -A
GIT_AUTHOR_DATE="2025-06-15T10:30:00" \
GIT_COMMITTER_DATE="2025-06-15T10:30:00" \
git commit -m "Initial project setup with billing API structure"

git add -A
GIT_AUTHOR_DATE="2026-01-20T14:22:00" \
GIT_COMMITTER_DATE="2026-01-20T14:22:00" \
git commit -m "Update production database credentials for Q1 rotation"

# Create bare repo for serving
git clone --bare "$WORK_DIR/internal-billing-api" "$REPO_DIR"
rm -rf "$WORK_DIR"

echo "[+] Decoy repository created at: $REPO_DIR"
echo "[!] Monitor for: git clone, git pull, and file access events"

MITRE ATT&CK Mappings

TechniqueTacticRelationship
T1195Supply Chain CompromiseInitial Accessdetects
T1199Trusted RelationshipInitial Accessdetects

Considerations

  • Supply chain decoys should reference real technology stacks and frameworks used by the organization to appear legitimate.
  • Be cautious about creating decoy packages that could accidentally be consumed by real development processes. Namespace and naming must prevent confusion.
  • This technique is most valuable against sophisticated adversaries targeting your organization through supply chain vectors.

Supported Environments

☁Amazon Web Services
☁Microsoft Azure
☁Google Cloud Platform
🔄Hybrid Environment

Tools & Resources

  • Git repository hosting
  • Package registry servers
  • CI/CD pipeline tools
  • API mock servers

Quick Stats

Phase
Lure
Difficulty
expert
Detection Value
critical
Cost
moderate
Time
1-2 weeks
ATT&CK Mappings
2