T09 · Insecure Skill Coding Practices
- Location
scripts/oss_direct_access_diagnosis.py:1597- Finding
Unscoped Recursive ACL Remediation Can Publicly Expose Private Objects
- Content
View full analysis
Vulnerability Details
File Location:
scripts/oss_direct_access_diagnosis.py:1597-1604
Additional Locations:SKILL.md:155,220;references/ec-0003-00000005-bisection.md:76-87
Vulnerability Type: Unsafe permission-changing remediation guidance
Risk Level: HighTechnical Analysis
When an anonymous probe receives HTTP 403 on a non-private bucket and
GetObjectAclidentifies a private object ACL, the Skill recommends changing the ACL todefault. It also suggests adding the recursive-roption for a batch of objects:python elif verdict == "object_acl_private_403": next_action = ( "EC 0003-00000005 cause-1 CONFIRMED: the object carries " "its own private ACL on a public-read bucket -- reset it " "to inherit the bucket ACL manually (ossutil set-acl " "oss://<BUCKET>/<OBJECT_KEY> default; add -r for a batch " "of affected objects), then re-test the link.")The referenced procedure supplies the corresponding bucket-wide recursive command:
bash ossutil set-acl oss://<BUCKET>/<OBJECT_KEY> default -e oss-cn-<REGION>.aliyuncs.combash ossutil set-acl oss://<BUCKET>/ default -r -e oss-cn-<REGION>.aliyuncs.comResetting an object ACL to
defaultcauses it to inherit the bucket ACL. If the bucket ispublic-read, an object that was intentionally private becomes anonymously readable. The recursive command targets the bucket root and may therefore alter every matching object rather than only the object whose ACL was diagnosed.This behavior also conflicts with the stated read-only boundary in
SKILL.md:28, which prohibits generating commands for ACL or configuration changes. Although the Skill does not execute the command itself, it presents the mutation as the recommended next action without a mandatory object inventory, dry run, effective-permission preview, scope constraint, or explicit disclosure confirmation.No evidence indicates that this inconsistency is inten ...[truncated 1756 chars]
- Remediation
View remediation
Remediation Suggestions
- Remove executable
ossutil set-aclcommands from the Skill output and referenced documentation to preserve the declared read-only boundary. - Do not recommend
-ror any bucket-root recursive ACL operation as a default remediation. - Limit guidance to the exact object for which
GetObjectAclconfirmed an explicit private ACL. - Before suggesting any ACL change, clearly display:
- the current object ACL;
- the bucket ACL that would be inherited;
- whether the resulting object would become anonymously readable;
- the exact object key and affected scope.
- Require separate, explicit user confirmation for each permission-changing operation. Batch remediation should require an independently reviewed object manifest and a second confirmation.
- Prefer console-oriented explanatory guidance rather than copy-paste mutation commands.
- If an external remediation tool is introduced, provide a dry-run mode that lists every affected object and its before/after effective access.
- Add regression checks ensuring that read-only diagnostic output never emits mutating OSS commands, including
set-acl, recursive ACL changes,Put*, orDelete*operations.
- Remove executable
