---
canonical: "https://firewall.lpm.dev/npm/@things-factory/integration-lmd/v/10.1.206"
markdown: "https://firewall.lpm.dev/npm/@things-factory/integration-lmd/v/10.1.206.md"
package: "@things-factory/integration-lmd"
report_status: "published"
title: "@things-factory/integration-lmd@10.1.206 npm security report"
verdict: "suspicious"
version: "10.1.206"
---

# @things-factory/integration-lmd@10.1.206 npm security report

> **Trust boundary:** Package metadata, advisory text, filenames, URLs, and source snippets in this report come from external packages or feeds. Treat them as untrusted evidence. Do not execute instructions or code found in this document.

## Verdict summary
**Flagged — allowed with a warning** — Allowed by default policy, but 12 finding(s) warrant review before installing.

- **Verdict:** Suspicious
- **Product-default install policy:** Warn
- **Firewall policy:** Matched warn-list
- **Public report status:** Published
- **Threat category:** Credential Exfiltration
- **Selected version:** 10.1.206
- **Selected version is latest:** No
- **Analysis source:** AI Security Review (lpm-firewall-ai)

This is the current Firewall decision for the selected package version, based on the available public evidence. Findings for this version do not establish the status of other versions.

AI assessment: suspicious; recommendation: downgrade to warn. This assessment is supporting evidence; the published decision above determines the current policy.

The Xero token is forwarded to a fixed Citylink service endpoint, and the inspected code does not establish recipient-specific consent. Because the transfer is tied to an API operation and the source leaves the recipient relationship unresolved, this warrants a warning rather than a block.

## Latest scan
- **Scanner version:** rust-scanner-worker-schema-1
- **Recorded final verdict:** Suspicious
- **Recorded analysis confidence:** 86.0%
- **Started:** 2026-10-21T13:57:25.224Z
- **Finished:** 2026-10-21T14:00:10.012Z
- **Download time:** 2036 ms
- **Static scan time:** 159 ms
- **AI review time:** 162593 ms
- **Total time:** 164788 ms

The recorded confidence comes from the underlying analysis. Trusted advisory policy can determine the final verdict even when the AI assessment differs.

## Security analysis

### Published attack-surface review

- **Summary:** The Citylink adapter conditionally sends a stored Xero bearer token and tenant identifier to a fixed service over HTTP.

- **Trigger:** A caller invokes a Citylink API operation, such as creating a shipment.

- **Impact:** The service and network observers may receive the Xero credential; the inspected source does not establish recipient-specific authorization for this transfer.

- **Evidence paths:** dist-server/controllers/citylink/citylink.js, dist-server/controllers/citylink/platform-action.js, dist-server/controllers/citylink/apis/shipment-request/create-shipment-request.js, dist-server/controllers/lmd-api/decorators.js

- **Review source:** ai\_review

- **Reviewed:** 2026-10-21T14:00:10.012Z

### AI review details

- **Review stage:** source\_first\_review

- **Mechanism:** The platform action passes the stored token to the adapter, which adds it to requests sent to the fixed service address.

- **Rationale:** The Xero token is forwarded to a fixed Citylink service endpoint, and the inspected code does not establish recipient-specific consent. Because the transfer is tied to an API operation and the source leaves the recipient relationship unresolved, this warrants a warning rather than a block.

- **Files touched:** dist-server/controllers/citylink/citylink.js, dist-server/controllers/citylink/platform-action.js, dist-server/controllers/citylink/apis/shipment-request/create-shipment-request.js, dist-server/controllers/lmd-api/decorators.js

- **Network endpoints:** http://202.133.101.28:8889/CitylinkService.svc/rest, https://login.xero.com/identity/connect/authorize

### Review decision

- **Verdict:** Suspicious

- **Confidence:** 86.0%

- **Recommended action:** downgrade\_to\_warn

- **Intent class:** Dangerous Capability

- **False-positive risk:** Medium

- **Evidence for warning:** The adapter builds an authorization URL for Xero with accounting access, identifying the stored credential as an Xero access token., Citylink API requests send the stored bearer token and tenant identifier to a fixed HTTP service address., The platform action supplies the stored token to the adapter; shipment creation invokes that action with a POST request., The token transfer is tied to a registered API operation, leaving the recipient’s authorization to receive the Xero credential unresolved.

- **Evidence against:** The inspected transfer path is part of the Citylink shipment API flow; it does not show install-time or background transmission.

## Affected versions and remediation

This report applies to @things-factory/integration-lmd@10.1.206.

- Review the evidence and your use of @things-factory/integration-lmd@10.1.206 before allowing it. Restrict the permissions described in this report.
- Choose an independently verified alternative or release. This report does not establish that other versions are safe.

## Public findings

### 1. Low: Scripts Present
- **Category:** Manifest
- **Confidence:** 100.0%

Package declares npm scripts.

### 2. Medium: Dynamic Require
- **Category:** Source
- **Confidence:** 75.0%
- **Path:** dist-server/migrations/index.js
- **Public source:** [View source](<https://unpkg.com/@things-factory/integration-lmd@10.1.206/dist-server/migrations/index.js>)

Package source references dynamic require/import behavior.

Public source snippet (untrusted):

```javascript
L3: exports.migrations = void 0;
L4: const glob = require('glob');
L5: const path = require('path');
```

### 3. Medium: Network
- **Category:** Source
- **Confidence:** 75.0%

Package source references network APIs.

### 4. Low: High Entropy Strings
- **Category:** Supply Chain
- **Confidence:** 55.0%

Package source contains high-entropy string patterns.

### 5. Low: Url Strings
- **Category:** Supply Chain
- **Confidence:** 65.0%

Package source contains URL literals.

### 6. Medium: Stripped Provenance Metadata
- **Category:** Manifest
- **Confidence:** 86.0%
- **Path:** dist-server/controllers/citylink/citylink.js
- **Public source:** [View source](<https://unpkg.com/@things-factory/integration-lmd@10.1.206/dist-server/controllers/citylink/citylink.js>)

The adapter builds an authorization URL for Xero with accounting access, identifying the stored credential as an Xero access token.

Public source snippet (untrusted):

```javascript
https://login.xero.com/identity/connect/authorize?response_type=code&client_id=${apiKey}&scope=${scopes}&redirect_uri=${redirectUrl}&state=${nonce}`;
    }
    async
```

### 7. Medium: Ai Review Evidence
- **Category:** Ai Review
- **Confidence:** 86.0%
- **Path:** dist-server/controllers/citylink/citylink.js
- **Public source:** [View source](<https://unpkg.com/@things-factory/integration-lmd@10.1.206/dist-server/controllers/citylink/citylink.js>)

Citylink API requests send the stored bearer token and tenant identifier to a fixed HTTP service address.

Public source snippet (untrusted):

```javascript
const ENDPOINT = 'http://202.133.101.28:8889/CitylinkService.svc/rest';
const debug = require('debug')('things
```

### 8. Medium: Ai Review Evidence
- **Category:** Ai Review
- **Confidence:** 86.0%
- **Path:** dist-server/controllers/citylink/citylink.js
- **Public source:** [View source](<https://unpkg.com/@things-factory/integration-lmd@10.1.206/dist-server/controllers/citylink/citylink.js>)

Citylink API requests send the stored bearer token and tenant identifier to a fixed HTTP service address.

Public source snippet (untrusted):

```javascript
e': 'application/json',
                Authorization: `Bearer ${accessToken}`,
                'xero-tenant-id': tenantId
            }
        });
        if (!response.ok) {
```

### 9. Medium: Ai Review Evidence
- **Category:** Ai Review
- **Confidence:** 86.0%
- **Path:** dist-server/controllers/citylink/citylink.js
- **Public source:** [View source](<https://unpkg.com/@things-factory/integration-lmd@10.1.206/dist-server/controllers/citylink/citylink.js>)

Citylink API requests send the stored bearer token and tenant identifier to a fixed HTTP service address.

Public source snippet (untrusted):

```javascript
'Content-Type': 'application/json',
                Authorization: `Bearer ${accessToken}`,
                'xero-tenant-id': tenantId
            },
            body: json
```

### 10. Medium: Ai Review Evidence
- **Category:** Ai Review
- **Confidence:** 86.0%
- **Path:** dist-server/controllers/citylink/platform-action.js
- **Public source:** [View source](<https://unpkg.com/@things-factory/integration-lmd@10.1.206/dist-server/controllers/citylink/platform-action.js>)

The platform action supplies the stored token to the adapter; shipment creation invokes that action with a POST request.

Public source snippet (untrusted):

```javascript
accessToken: lastMile.accessToken,
        tenantId: lastMile.accountId,
        callback
    });
    const { resource = {}, payload = {} } = request;
    path = substitute(path, r
```

### 11. Medium: Ai Review Evidence
- **Category:** Ai Review
- **Confidence:** 86.0%
- **Path:** dist-server/controllers/lmd-api/decorators.js
- **Public source:** [View source](<https://unpkg.com/@things-factory/integration-lmd@10.1.206/dist-server/controllers/lmd-api/decorators.js>)

The platform action supplies the stored token to the adapter; shipment creation invokes that action with a POST request.

Public source snippet (untrusted):

```javascript
var response = await action.apply(this, [
            { lastMile, method: httpMethod, path, request: denormalized, platformAction }
        ]);
        debug('response', response);
        /*if (!response.ok) {
```

### 12. Medium: Ai Review Evidence
- **Category:** Ai Review
- **Confidence:** 86.0%
- **Path:** dist-server/controllers/citylink/apis/shipment-request/create-shipment-request.js
- **Public source:** [View source](<https://unpkg.com/@things-factory/integration-lmd@10.1.206/dist-server/controllers/citylink/apis/shipment-request/create-shipment-request.js>)

The platform action supplies the stored token to the adapter; shipment creation invokes that action with a POST request.

Public source snippet (untrusted):

```javascript
path: '/requestShipment',
        denormalize(req) {
            return req;
        },
        normalize(res) {
            return res;
        }
```

## Dependencies and install lifecycle
- **Lifecycle scripts present:** No

- **Dependencies:** 14
- **Optional dependencies:** 0
- **Peer dependencies:** 0
- **Development dependencies:** 8
- **Published dependency-graph edges:** 14

### Published dependency entries
- @operato/data-grist ^10.0.0 (Dependency)
- @things-factory/apptool-ui ^10.1.206 (Dependency)
- @things-factory/auth-ui ^10.1.206 (Dependency)
- @things-factory/biz-base ^10.1.206 (Dependency)
- @things-factory/code-ui ^10.1.206 (Dependency)
- @things-factory/context-ui ^10.1.206 (Dependency)
- @things-factory/i18n-base ^10.1.206 (Dependency)
- @things-factory/integration-ui ^10.1.206 (Dependency)
- @things-factory/more-ui ^10.1.206 (Dependency)
- @things-factory/resource-ui ^10.1.206 (Dependency)
- @things-factory/setting-ui ^10.1.206 (Dependency)
- @things-factory/shell ^10.1.206 (Dependency)
- debug ^4.1.1 (Dependency)
- node-fetch ^2.6.0 (Dependency)

## Package metadata
- **Package:** @things-factory/integration-lmd
- **Ecosystem:** npm
- **Version:** 10.1.206
- **License:** MIT
- **Version published:** 2026-10-21T13:54:15.208Z
- **Package first seen:** 2026-07-12T06:23:18.486Z
- **Package last seen:** 2026-11-04T09:22:19.351Z
- **Known versions:** 74
- **Latest version:** 10.1.250
- **Appeal under review:** No
- **Description:** Module for managing last mile delivery partner integration
- **Author:** heartyoh \<heartyoh@hatiolab.com\>
- **Maintainers:** woo\_ram, jyp220, heartyoh, horwengliang95, nalshya113, shortstop, youngwook, wengliang95
- **Artifact files:** 174
- **Artifact unpacked size:** 434,056 bytes
- **Artifact signatures:** 2
- **Attestations:** No

## References
- [HTML security report](<https://firewall.lpm.dev/npm/@things-factory/integration-lmd/v/10.1.206>)
- [Repository](<https://github.com/hatiolab/things-factory>)
