3470 Commits
Author SHA1 Message Date
dingtalk-dws-reviewer-router[bot] 76618a6b8c Merge pull request #1115
Merged by the dedicated Reviewer Router GitHub App for PR #1115.
2026-08-26 00:59:56 +00:00
liyuan333 7ab86b82f4 Merge branch 'main' into fix/remove-download-domain-allowlist 2026-08-26 08:40:38 +08:00
dingtalk-dws-reviewer-router[bot] 5c1bef743a Merge pull request #1125
Merged by the dedicated Reviewer Router GitHub App for PR #1125.
2026-08-26 00:29:24 +00:00
liyuan333 1260c188e1 Merge branch 'main' into fix/remove-download-domain-allowlist 2026-08-26 08:19:50 +08:00
liyuan f9a6981232 Merge remote-tracking branch 'upstream/main' into HEAD 2026-08-26 08:14:23 +08:00
dingtalk-dws-reviewer-router[bot] 2b4187aff8 Merge pull request #1145
Merged by the dedicated Reviewer Router GitHub App for PR #1145.
2026-08-25 16:34:48 +00:00
liyuan333 7a9bac0a05 Merge branch 'main' into fix/report-entry-submit-require-recipient 2026-08-25 23:59:48 +08:00
liyuan333 a316222584 Merge branch 'main' into fix/remove-download-domain-allowlist 2026-08-25 23:55:07 +08:00
赤川 20ee2cc4ee Merge branch 'main' into codex/cancel-stale-pr-ci 2026-08-25 23:52:05 +08:00
liyuan a584c18dc2 test: align expected download URL boundary error with new message
7f353b73 reworded ValidateDownloadURL's rejection from "下载地址必须是
受信任域名上的 HTTPS URL" to "下载地址必须是合法的 HTTPS URL" when
the IP-literal refusal was removed, but missed that the string is a
test contract: paramAliasExpectedCaptureBoundaryError treats the URL
validation stop as the expected capture boundary for drive +download
and +version-download fixture runs. The stale assertion failed those
subtests and the alias-count invariant (58 active, want 64), which
also failed the Coverage jobs running the same tests.

- update the boundary matcher to the new message
2026-08-25 23:05:30 +08:00
dingtalk-dws-reviewer-router[bot] 1de179cbdf Merge pull request #1093
Merged by the dedicated Reviewer Router GitHub App for PR #1093.
2026-08-25 14:55:32 +00:00
chichuan ff6cf48df6 ci: cancel stale pull request revisions 2026-08-25 22:24:18 +08:00
liyuan333 879054000d Merge branch 'main' into fix/remove-download-domain-allowlist 2026-08-25 22:21:45 +08:00
liyuan 4f9cb2ac9f Merge branch 'fix/report-entry-submit-require-recipient' of github.com:liyuan333/dingtalk-workspace-cli into fix/report-entry-submit-require-recipient 2026-08-25 22:10:11 +08:00
liyuan f50f086271 Merge remote-tracking branch 'upstream/main' into fix/report-entry-submit-require-recipient
# Conflicts:
#	scripts/policy/interface-migrations/approved-flag-migrations-v1.json
2026-08-25 22:07:51 +08:00
赤川 0fe9dd8ba0 Merge branch 'main' into fix/markdown-split 2026-08-25 21:46:42 +08:00
赤川 6449ad33c1 Merge pull request #1144 from DingTalk-Real-AI/codex/fix-1093-fork-router-slug
fix(ci): admit fork PRs without repository variables
2026-08-25 21:45:35 +08:00
chichuan c77046531e fix(ci): admit fork PRs without repository variables 2026-08-25 21:43:27 +08:00
赤川 797766ebf7 Merge pull request #1124 from liyuan333/chore/approve-report-recipient-requiredness
chore: approve report to-user-ids requiredness migrations (#85724185)
2026-08-25 21:30:01 +08:00
liyuan 7f353b73a5 fix(security): drop IP-literal refusal from download URL validation
Confirmed with the product team that the official GUI client applies no
client-side SSRF interception to downloads, so the IP-literal refusal
was the last remaining client-side interception beyond transport
hygiene. Dedicated deployments make every host dimension (domain,
port, network location) unenumerable, and an IP-literal host is just
another network location.

- ValidateDownloadURL accepts any HTTPS host, IP literals included;
  HTTPS scheme, userinfo refusal, and per-hop redirect re-validation
  stay as the transport baseline
- this retires the third and last interception layer after the host
  allowlist removal and the dial-time public-IP refusal (be52ca5d)
- upload targets stay unaffected: trustedUploadHost keeps rejecting
  non-DingTalk/OSS hosts, so local file bytes cannot be PUT to an IP
- regressions: IP-literal URLs pass validation on the shared and chat
  download paths; userinfo and plain-HTTP URLs stay rejected
2026-08-25 21:07:18 +08:00
liyuan be52ca5d2a fix(security): remove dial-time public-IP refusal from download client
Customer round-2 testing on the dedicated deployment (Jingbo) found the
storage domain resolving to a customer-intranet address (10.254.87.52),
which the dial-time public-IP policy refused: dedicated storage can be
deployed inside the customer network, so its resolved network location
is as unenumerable as its domain and port.

- delete the public-IP policy, the IANA special-purpose denylist, and
  the NAT64 embedded-IPv4 re-validation introduced in 617b780a;
  downloads now dial the service-issued host directly, still ignoring
  environment proxies
- align with the official GUI client, which applies no client-side
  SSRF interception to downloads: no command accepts a user-supplied
  download URL, TLS hostname verification pins the connection to the
  requested domain, redirects are re-validated per hop, and credential
  headers are stripped once a redirect leaves the original origin
- uploads keep the static DingTalk/OSS default-port trust boundary
- simplify SetSecureDownloadDialTargetForTest to a single dial seam
2026-08-25 20:40:47 +08:00
赤川 d772570f4a Merge branch 'main' into chore/approve-report-recipient-requiredness 2026-08-25 20:27:06 +08:00
赤川 7e1d595036 Merge branch 'main' into fix/markdown-split 2026-08-25 20:22:05 +08:00
dingtalk-dws-reviewer-router[bot] 47ef4274cb Merge pull request #1135
Merged by the dedicated Reviewer Router GitHub App for PR #1135.
2026-08-25 12:20:55 +00:00
liyuan 6134d413f5 fix(security): restore default-port-only HTTPS rule for upload URLs
Review finding on 1ba6bec8: relaxing ValidateDownloadURL to accept
non-default HTTPS ports also widened upload targets, because the upload
validator reuses it and only re-imposed the host trust set.

- validateUploadURL now also rejects non-default ports, making the
  upload trust boundary identical to the pre-removal policy (trusted
  DingTalk/OSS hosts on the default port)
- DingTalk/OSS upload endpoints always serve HTTPS on 443, so unlike
  dedicated-deployment downloads there is no legitimate non-default
  port scenario for uploads
- regressions: trusted-host:8443 upload targets are rejected for both
  public-cloud and dedicated hosts
2026-08-25 20:05:06 +08:00
赤川 529d1f9682 Merge branch 'main' into codex/param-hallucination-remaining-products 2026-08-25 19:54:16 +08:00
赤川 8ed46b2da2 Merge pull request #1142
Break-glass governance rollout by haofeng0705 after exact-head approval and nine source-bound required checks.
2026-08-25 19:53:07 +08:00
liyuan 1ba6bec8c1 fix(security): accept non-default HTTPS ports for download URLs
Customer testing on a dedicated deployment found real download URLs served
on a non-default HTTPS port (e.g. 8443) by the dedicated storage domain,
which the inherited default-port-only rule rejected.

- drop the 443-only restriction from ValidateDownloadURL; HTTPS scheme,
  domain-only hosts (no IP literals), and no-userinfo rules stay
- the port is not a trust signal: SSRF protection lives at dial time in
  the port-agnostic public-IP policy
- redirect hygiene unchanged: a port change is a cross-origin redirect
  and still strips service credential headers (new regression guard)
- dedicated-deployment regression: same host on a non-default port is
  accepted by URL validation and downloads successfully
2026-08-25 19:25:20 +08:00
chichuan 4a4062d09e fix(ci): bind required checks to GitHub Actions 2026-08-25 19:20:57 +08:00
hyz 0e09d23223 Merge branch 'main' into codex/param-hallucination-remaining-products 2026-08-25 18:56:22 +08:00
chichuan 4815fcc7fc fix(ci): merge App-owned PRs synchronously 2026-08-25 18:13:38 +08:00
liyuan333 15a7b0a0a7 Merge branch 'main' into fix/remove-download-domain-allowlist 2026-08-25 17:55:54 +08:00
赤川 27e7f1e1f2 Merge pull request #1141
Break-glass semantic rollback of PR #1101, authorized by repository maintainer.
2026-08-25 17:53:28 +08:00
CHHH e9ee516439 Merge branch 'main' into fix/markdown-split 2026-08-25 17:25:47 +08:00
liyuan 617b780a76 fix(security): block IPv4-embedded IPv6 transition ranges in publicIP
- re-validate NAT64 well-known prefix answers (64:ff9b::/96) against the
  embedded IPv4 address: DNS64-synthesized answers for public IPv4-only
  hosts keep working while embedded loopback/private/special addresses
  are refused before dialing
- refuse NAT64 local-use (64:ff9b:1::/48) outright: the IPv4 embedding
  is deployment-specific and cannot be extracted reliably
- refuse Teredo (2001::/32) outright as part of the transition-mechanism
  audit; 6to4 (2002::/16) was already refused and IPv4-mapped addresses
  are normalized via Unmap before checks
- add dial-layer regression: a hostile AAAA answer embedding 127.0.0.1
  fails before any dial attempt
2026-08-25 16:56:20 +08:00
chichuan 09b0a59949 revert: remove edu and college vendor extensions 2026-08-25 16:55:40 +08:00
liyuan333 aa74779aa6 Merge branch 'main' into chore/approve-report-recipient-requiredness 2026-08-25 16:40:01 +08:00
liyuan333 130b57de4d Merge branch 'main' into fix/report-entry-submit-require-recipient 2026-08-25 16:27:20 +08:00
hyz 5a9328ac44 Merge branch 'main' into codex/param-hallucination-remaining-products 2026-08-25 16:21:39 +08:00
赤川 0dc21e8c36 Merge pull request #1077 from DingTalk-Real-AI/codex/fix-ci-baseline-cache-governance
ci: harden coverage baseline governance
2026-08-25 16:12:50 +08:00
liyuan 4423af1af2 fix(security): keep upload host trust and harden non-public IP policy
- restore the pre-existing DingTalk/OSS trusted host requirement for
  upload target URLs via a dedicated upload validator
- extend the dial-time non-public IP denylist with IANA special-purpose
  ranges (0.0.0.0/8, 192.88.99.0/24, 100::/64, 2002::/16, 3fff::/20,
  5f00::/16)
- document that download credential headers follow the service-issued
  URL as-is on the first hop (same authenticated response issues both);
  cross-host redirects keep stripping them
2026-08-25 15:38:49 +08:00
chichuan b45eba0f5c fix(ci): tolerate merged PR base advancement
Bind coverage repair to the stable PR head and merge identity plus protected-main containment without treating the live base SHA projection as permanent identity.

Add semantic regression coverage for base advancement and update the governance documentation.
2026-08-25 14:06:09 +08:00
chichuan c629e1e3eb fix(ci): handle read-only merge defaults projection
GitHub omits merge-related repository settings from tokens without Contents write. Accept only the exact dual omission in read-only admission, and require the dedicated App to observe the reviewed values before any auto-merge mutation.
2026-08-25 12:34:32 +08:00
克谨 0df2d6d630 feat(cli): harden remaining product parameter aliases 2026-08-25 12:33:16 +08:00
chichuan aeb1b2ced2 fix(ci): cross-check strict ruleset via GraphQL 2026-08-25 11:39:33 +08:00
chichuan e3124ccea1 fix(ci): accept strict ruleset read projection 2026-08-25 11:11:21 +08:00
CHHH 3030faf73d Merge branch 'main' into fix/markdown-split 2026-08-25 11:10:03 +08:00
chichuan 5605821a70 Merge remote-tracking branch 'origin/main' into codex/fix-pr-1077-router-governance 2026-08-25 10:54:12 +08:00
liyuan333 9afe9c1436 Merge branch 'main' into fix/remove-download-domain-allowlist 2026-08-25 10:23:24 +08:00
github-actions[bot] 3fd0d97a26 Merge pull request #1110 from DingTalk-Real-AI/codex/fix-command-typo-guidance
fix(cli): add bounded command typo guidance
2026-08-25 02:11:21 +00:00