geedge.lantern.io
deployment confidence: high public

An internal operations manual documents the end-to-end workflow for turning an official government blocking/monitoring request ("来函") into a technical rule on the sapp-based filtering system: analysts capture live traffic with Wireshark/Chrome to derive the exact keyword (DNS qname, TLS SNI, HTTP Host+path, or email From/To/Subject/Content/ attachment), choose one of four match modes (exact/prefix/suffix/ substring), and push it as either a "JC" (监测, monitoring) or "GK" (阻断/禁止, blocking) rule; DNS rules operate via DNS spoofing, HTTP/SSL rules via keyword/SNI matching, and email rules match headers or body/attachment content.

判断是GK还是JC配置。如果为监测需求,下发监测类配置。如果为阻断、禁止需求,下发GK类配置。DNS规则:如果用户需要对网站进行GK,可以下发DNS欺骗规则。邮件头匹配位置包括:From/To/Subject。邮件体匹配位置包括:Content/AttachName/AttachContent。

Defense implications

productssappmaat
capabilitykeyword-filter-list

extracted_by: claude-sonnet-5 · added 2026-08-26 · id: 2026-gk-jc-rule-config-35de0f

Related findings

detection

The internal 'MAAT网络流处理配置统一描述框架' engineering manual (v3.1.20, author name redacted, 2021) documents MAAT's Redis-synced rule-compilation framework and its RuleScan/Hyperscan-based pattern-matching engine (libmaatframe.so / librulescan), and records that RuleScan's fast-scan feature caused a production outage on 2019-03-19 and has been disabled ever since.

detection

Internal MAAT engineering specification (v3.1.20, MESA Lab, revision history spanning 2014-2021) documents the config schema underlying sapp's rule-matching engine: per-rule action types (0=block/阻断, 1=monitor/监测, 2=whitelist/白名单), string/regex/IP/numeric/digest match types, and a geographic+ISP "tag" targeting system that lets the identical rule set be selectively activated per city district and carrier (e.g. Beijing/Chaoyang + China Telecom vs. Shanghai/Pudong), enabling narrowly-scoped rule rollout/testing before wider deployment.

deployment

An internal TSG operations/troubleshooting manual lays out TSG's full traffic pipeline (NIC -> mrzcpd/marsio capture driver -> sapp DPI engine -> firewall/proxy(KNI->TFE)/active-defense/WAN-NAT policy branches) and shows engineers using maat_redis_tool to pull the live Redis-synced blocking policy tables (TSG_SECURITY_COMPILE, TSG_OBJ_IP_ADDR, TSG_OBJ_APP_ID) and filter them by numeric policy/object ID to debug why a block rule isn't firing.

detection

Internal MAAT documentation lays out the rule-engine's config hierarchy (Region -> Group -> Compile, i.e. domain-config policy units combined by OR, grouped policy objects combined by AND/OR/NOT, up to 8 clauses per compiled policy) synced through a tree-structured Redis (one master, many replicas) with a live add/delete path, and names three engineers (names redacted) working on sapp with a planned future Rust rewrite. It also notes MAAT is deployed per-frontend-machine (not distributed) and that config changes take ~10 minutes to fully propagate.

detection

MESA Lab internal debugging notes give the concrete sapp/MAAT config paths and JSON rule schema used for IP-based blocking: /home/mesasoft/sapp_run/TF_conf/TF_tableinfo.conf defines an IP_REGION_INFO table type (ip_plus) with a do_blacklist flag, matched against src/dst IP+port ranges.

deployment

Side-by-side internal performance comparison across Xinjiang (China Mobile carrier deployment, hostname cmcc-xj-server1-sapp-244), Fujian (domestic), and Ethiopia (E21) explicitly references the same 'app_sketch_maat' diagnostic log format at all three sites, confirming the identical AppSketch app-fingerprinting stack is used for domestic Xinjiang surveillance and for the exported Ethiopia deployment.