javascript-surface-analyzer

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

JavaScript Surface Analyzer

JavaScript 表面分析器

Purpose

用途

Extract attacker-relevant intelligence from front-end code and convert it into testable hypotheses.
从前端代码中提取攻击者关注的情报,并将其转化为可测试的假设。

Inputs

输入

  • target_url
  • seed_pages
    (optional)
  • auth_context
    (optional)
  • target_url
  • seed_pages
    (可选)
  • auth_context
    (可选)

Workflow

工作流

Phase 1: Asset Enumeration

阶段1:资产枚举

  1. Collect static and dynamic script URLs.
  2. Expand via source maps and chunk manifests where available.
  3. Track script origin, load condition, and execution context.
  1. 收集静态和动态脚本URL。
  2. 若存在source map和chunk manifest,通过其扩展资产范围。
  3. 记录脚本来源、加载条件和执行上下文。

Phase 2: Artifact Extraction

阶段2:信息提取

  1. Endpoints, route builders, and API clients.
  2. Header/token construction logic.
  3. Feature flags, debug modes, hidden route toggles.
  4. Secret candidates and key material references.
  1. 端点、路由构造器和API客户端。
  2. 请求头/令牌构造逻辑。
  3. 功能开关、调试模式、隐藏路由触发器。
  4. 敏感信息候选对象和密钥材料引用。

Phase 3: Sink Analysis

阶段3:Sink分析

  1. DOM write sinks:
    innerHTML
    ,
    outerHTML
    , template insertion.
  2. Code execution sinks:
    eval
    ,
    Function
    ,
    setTimeout
    string usage.
  3. URL/navigation sinks: dynamic redirects, iframe/src assignments.
  4. Storage sinks: local/session storage of sensitive artifacts.
  1. DOM写入sink:
    innerHTML
    outerHTML
    、模板插入。
  2. 代码执行sink:
    eval
    Function
    setTimeout
    字符串用法。
  3. URL/导航sink:动态重定向、iframe/src赋值。
  4. 存储sink:敏感信息的本地/会话存储。

Phase 4: Controllability Assessment

阶段4:可控性评估

  1. Determine if attacker can influence source data.
  2. Trace sanitization or encoding at boundaries.
  3. Estimate exploit preconditions per sink.
  1. 判断攻击者是否可以影响源数据。
  2. 追踪边界处的消毒或编码逻辑。
  3. 评估每个sink的漏洞利用前置条件。

Phase 5: Follow-up Planning

阶段5:后续规划

  1. Create endpoint verification cases.
  2. Create DOM-XSS and open redirect probes.
  3. Create token misuse and privilege abuse checks.
  1. 创建端点验证用例。
  2. 创建DOM-XSS和开放重定向探测用例。
  3. 创建令牌误用和权限滥用检查用例。

Minimum Extraction Targets

最低提取指标

CategoryRequired Extraction
API surfacemethod + path hints + caller context
Secretskey/token candidates with confidence tag
Sinkssink type + source controllability
Hidden featuresflag name + activation condition
分类要求提取内容
API面请求方法 + 路径提示 + 调用方上下文
敏感信息带置信度标签的密钥/令牌候选
Sinksink类型 + 源可控性
隐藏功能开关名称 + 激活条件

Output Contract

输出规范

json
{
  "script_inventory": [],
  "endpoint_candidates": [],
  "secret_candidates": [],
  "sink_map": [],
  "hidden_features": [],
  "follow_up_tests": []
}
json
{
  "script_inventory": [],
  "endpoint_candidates": [],
  "secret_candidates": [],
  "sink_map": [],
  "hidden_features": [],
  "follow_up_tests": []
}

Constraints

约束条件

  • Treat secret candidates as sensitive.
  • Mark uncertainty for heavily obfuscated code.
  • 将敏感信息候选视为机密数据。
  • 对高度混淆的代码标记不确定性。

Quality Checklist

质量检查清单

  • Dynamic script loading is covered.
  • Sink report includes controllability.
  • Follow-up tests are concrete and scoped.
  • 覆盖动态脚本加载场景。
  • Sink报告包含可控性信息。
  • 后续测试具体且范围明确。

Detailed Operator Notes

详细操作说明

Static + Runtime Correlation

静态+运行时关联

  • Correlate bundled route constants with observed network calls.
  • Correlate feature flags with guarded code branches.
  • Correlate secret candidates with call-site usage.
  • 将打包后的路由常量与观测到的网络请求关联。
  • 将功能开关与受保护的代码分支关联。
  • 将敏感信息候选与调用位置的使用情况关联。

Sink Prioritization Heuristics

Sink优先级判定规则

  • Prioritize sinks fed by URL, query string, postMessage, or storage.
  • Prioritize sinks reachable pre-auth and in shared pages.
  • Prioritize sinks with partial sanitization or legacy wrappers.
  • 优先处理由URL、查询字符串、postMessage或存储提供数据的sink。
  • 优先处理授权前可访问、公共页面中存在的sink。
  • 优先处理仅有部分消毒逻辑或使用了旧封装的sink。

Obfuscation Strategy

混淆代码处理策略

  • Start with string table recovery and call-graph sketch.
  • Identify decoder/dispatcher stubs before deep tracing.
  • Mark unresolved obfuscated segments as explicit unknowns.
  • 从字符串表恢复和调用图绘制开始处理。
  • 在深度追踪前先识别解码器/调度器存根。
  • 将未解析的混淆片段明确标记为未知项。

Reporting Rules

报告规则

  • Include
    controllable_source
    for each sink candidate.
  • Include
    execution_context
    (HTML, attribute, JS string, URL).
  • Include follow-up payload family per sink.
  • 为每个sink候选添加
    controllable_source
    (可控源)信息。
  • 包含
    execution_context
    (执行上下文:HTML、属性、JS字符串、URL)。
  • 为每个sink匹配对应的后续payload类型。

Quick Scenarios

快速场景

Scenario A: Authorization Drift

场景A:权限漂移

  • Baseline with owned resource.
  • Replay with foreign resource identifier.
  • Repeat with role shift and fresh session.
  • Confirm read/write/delete differences.
  • 使用自有资源生成基准结果。
  • 使用外部资源标识符重放请求。
  • 切换角色并使用新会话重复请求。
  • 确认读/写/删除操作的权限差异。

Scenario B: Input Handling Weakness

场景B:输入处理缺陷

  • Send syntactically valid control payload.
  • Send semantically malicious variant.
  • Verify parser or execution side effect.
  • Re-test with content-type variation.
  • 发送语法合法的控制payload。
  • 发送语义恶意的变体payload。
  • 验证解析器或执行的副作用。
  • 更换Content-Type重新测试。

Scenario C: Workflow Bypass

场景C:工作流绕过

  • Execute expected state sequence.
  • Attempt out-of-order transition.
  • Attempt repeated action replay.
  • Confirm server-side state enforcement.
  • 执行预期的状态流转序列。
  • 尝试乱序状态跳转。
  • 尝试重复重放操作。
  • 确认服务端是否做了状态强制校验。

Conditional Decision Matrix

条件决策矩阵

ConditionActionEvidence Requirement
Endpoint found in code but not trafficcreate targeted trigger path for invocationcall-site + trigger proof
Secret candidate appears in multiple bundlesmap runtime use and scopeusage map with confidence
Sink appears sanitizedverify context-specific sanitizer matchsink-context trace
Obfuscated dispatcher controls routesrecover dispatcher map before sink triagedispatcher mapping artifact
Feature flag gates privileged behaviortest activation constraints and fallback pathsflag-state behavior diff
条件操作证据要求
代码中存在但流量中未出现的端点创建针对性的触发路径调用该端点调用位置 + 触发证明
多个打包产物中都出现的敏感信息候选映射运行时使用场景和范围带置信度的使用地图
看起来经过消毒的sink验证消毒逻辑是否匹配上下文sink上下文追踪记录
混淆调度器控制路由在sink分类前先恢复调度器映射表调度器映射构件
功能开关管控高权限行为测试激活约束和降级路径开关状态行为差异记录

Advanced Coverage Extensions

高级覆盖扩展

  1. Correlate source-map names with production minified call sites.
  2. Extract hidden API capabilities from autogenerated client stubs.
  3. Detect unsafe postMessage listeners and origin validation gaps.
  4. Detect dynamic import paths controlled by user data.
  5. Detect insecure local storage coupling to auth flows.
  1. 将source map中的名称与生产环境压缩后的调用位置关联。
  2. 从自动生成的客户端存根中提取隐藏的API能力。
  3. 检测不安全的postMessage监听器和来源校验漏洞。
  4. 检测由用户数据控制的动态import路径。
  5. 检测授权流程耦合本地存储的不安全场景。