T09 · Insecure Skill Coding Practices
- Location
scripts/pptx_editing/ooxml/unpack.py:14- Finding
Unsafe extraction of untrusted Office archives
- Content
View full analysis
- Remediation
View remediation
None: root = destination.resolve() total_size = 0 max_entries = 10_000 max_total_size = 1_000_000_000 members = zf.infolist() if len(members) > max_entries: raise ValueError("Archive contains too many entries") for member in members: member_path = Path(member.filename) if member_path.is_absolute() or ".." in member_path.parts: raise ValueError(f"Unsafe archive path: {member.filename}") target = (root / member_path).resolve() if target != root and root not in target.parents: raise ValueError(f"Archive entry escapes destination: {member.filename}") total_size += member.file_size if total_size > max_total_size: raise ValueError("Archive exceeds expanded-size limit") for member in members: zf.extract(member, root) ``` Apply the same hardened helper consistently to every affected extraction site. ]]>
