Blog / Research & Insights

GovCERT-CH Blocked Filetypes: TLCTC Analysis & Restructured List

A strategic analysis of the GovCERT-CH blocked file extensions list through the lens of the TLCTC framework's three-tier model.

BK
Bernhard Kreinz
• • Loading read time...
Executive Summary

This document analyzes the GovCERT-CH blocked file extensions list through the lens of the TLCTC framework's three-tier model. The original list conflates fundamentally different threat mechanisms—a problem that leads to false confidence and misallocated control strategies.

Key Finding

The GovCERT-CH list mixes:

  • Tier 1 (pure #7): Native executables that ARE the threat
  • Tier 2 (#1→#7): Application-mediated formats that ENABLE the threat
  • Tier 3 (#2/#3→#7): Data formats that require parser BUGS to become threats

This conflation matters because each tier requires different control strategies.

The GovCERT-CH Original Categories

The original list uses these categories:

  • Archive files
  • Code files
  • Executables
  • Media files
  • Microsoft Office / OpenDocument
  • Other

TLCTC Critique: These categories are based on format function rather than threat mechanism. A more principled approach classifies by how the format achieves execution—which directly determines the appropriate control strategy.

TLCTC Three-Tier Restructured List

TIER 1: Native/Direct FEC (pure #7)

Threat Mechanism: The OS loader or runtime directly executes the file. The file IS the Foreign Executable Content. No intermediate application processing required.
Control Strategy: Block execution (application allowlisting, SmartScreen, email gateway blocking). The control question is: "Should this code be allowed to run?"
Attack Velocity: Fastest—execution occurs immediately upon invocation.

Windows PE Executables

Extension Description GovCERT Comment
.exeWindows executable✓Core FEC—must block
.dllDynamic link library✓Can be loaded/executed via rundll32, regsvr32
.comDOS command file✓Legacy but still functional
.scrScreensaver (executable)✓Actually a .exe with different extension
.sysSystem driver✓ (implicit)Kernel-level execution—MISSING from list
.ocxOLE Control Extension✓ActiveX controls—executable COM objects
.cplControl Panel extension✓ (via other lists)Executable DLL—MISSING from GovCERT
.drvDevice driver✗MISSING—add to blocklist
.efiEFI bootloader✗MISSING—firmware-level execution

Windows Script Files (Direct Interpreter Execution)

ExtensionDescriptionGovCERTComment
.batBatch file✓cmd.exe executes directly
.cmdWindows NT batch✓cmd.exe executes directly
.ps1PowerShell script✓PowerShell engine executes
.ps1xmlPowerShell XML script✓PowerShell format/type data
.ps2PowerShell v2 script✓Legacy PowerShell
.ps2xmlPowerShell v2 XML✓Legacy format
.psc1PowerShell console file✓Configures and launches PowerShell
.psc2PowerShell v2 console✓Legacy console file
.vbsVBScript✓wscript.exe/cscript.exe executes
.vbeEncoded VBScript✓Obfuscated VBS—same execution path
.jsJavaScript (Windows)✓JScript via wscript.exe
.jseEncoded JScript✓Obfuscated JS—same execution path
.wsWindows Script✓Windows Script Host file
.wscWindows Script Component✓COM scriptlet
.wsfWindows Script File✓Multi-language script container
.wshWindows Script Host settings✓Configures script execution
.mscMicrosoft Management Console✓ (via other)MISSING from GovCERT
.sctWindows Scriptlet✓ (via other)MISSING from GovCERT—COM scriptlet
.psd1PowerShell data file✗MISSING—module manifest
.psm1PowerShell module✗MISSING—importable module

Unix/Cross-Platform Scripts

ExtensionDescriptionGovCERTComment
.shShell script✓bash/sh executes directly
.bashBash script✓ (implicit)Shell execution
.cshC Shell script✓csh interpreter
.kshKorn Shell script✓ksh interpreter
.plPerl script✓Perl interpreter
.pyPython script✗MISSING—critical omission
.pycCompiled Python✗MISSING—bytecode execution
.pywPython (no console)✗MISSING—windowless Python
.rbRuby script✗MISSING—Ruby interpreter
.luaLua script✗MISSING—embedded scripting

Java/JVM & Windows Installer/Package

ExtensionDescriptionGovCERTComment
.jarJava Archive✓JVM executes bytecode
.classJava class file✓Compiled Java bytecode
.jnlpJava Web Start✓Launches Java applications
.warWeb application archive✗MISSING—server deployment
.earEnterprise archive✗MISSING—J2EE deployment
.msiWindows Installer✓msiexec.exe processes—executes
.mspWindows Installer Patch✓Patch package with execution
.mstMSI Transform✓Modifies MSI behavior
.msixModern Windows package✗MISSING—modern installer
.appxWindows Store package✗MISSING—UWP apps
.appxbundleApp bundle✗MISSING—multi-arch package

Shortcut/Reference Files (Execution Indirection)

ExtensionDescriptionGovCERTComment
.lnkWindows shortcut✓Critical—can execute anything
.urlInternet shortcut✓Can trigger protocol handlers
.pifProgram Information File✓DOS shortcut—legacy but dangerous
.scfShell Command File✓ (via other)MISSING—Explorer command file
.infSetup Information✓ (via other)MISSING—can execute via right-click
.applicationClickOnce manifest✗MISSING—.NET deployment
.appref-msClickOnce reference✗MISSING—app reference
.settingcontent-msSettings shortcut✗MISSING—CVE-2018-8414 vector

Platform-Specific Executables

ExtensionDescriptionGovCERTComment
.appmacOS application bundle✓macOS executable package
.dmgmacOS disk image✓Contains mountable filesystem
.pkgmacOS installer✗MISSING—macOS installer
.debDebian package✓Linux package with scripts
.rpmRed Hat package✓Linux package with scripts
.snapSnap package✗MISSING—Linux snap
.flatpakFlatpak package✗MISSING—Linux flatpak
.apkAndroid package✗MISSING—mobile execution
.ipaiOS application✗MISSING—iOS package

TIER 2: Application-Mediated FEC (#1 → #7)

Threat Mechanism: An application processes the file through its designed functionality (#1 Abuse of Functions), which then enables embedded code execution (#7). The file ENABLES execution through a legitimate feature.
Control Strategy: Disable the enabling feature (macros, scripting, active content). Multiple intervention points exist in the chain. The control question is: "Should this feature be enabled for this content?"
Attack Velocity: Intermediate—requires application to process file, then execute embedded content.

Microsoft Office (Macro-Enabled) & Legacy Formats

ExtensionDescriptionGovCERTComment
.docmWord macro-enabled✓VBA execution via macro engine
.xlsmExcel macro-enabled✓VBA + Excel-specific threats (XLM)
.pptmPowerPoint macro-enabled✓VBA execution
.potmPowerPoint macro template✓Template with macros
.dotmWord macro template✓Template with macros
.xltmExcel macro template✓Template with macros
.xlsbExcel binary workbook✗MISSING—binary format can contain macros
.xlamExcel add-in✗MISSING—auto-loading macro add-in
.ppamPowerPoint add-in✗MISSING—auto-loading add-in
.sldmPowerPoint macro slide✗MISSING—single slide with macros
.xlaExcel 97-2003 add-in✗MISSING—legacy add-in
.xllExcel DLL add-in✗CRITICAL MISSING—native code add-in
.docWord 97-2003PartialCan contain macros—often allowed
.xlsExcel 97-2003PartialCan contain macros + XLM
.pptPowerPoint 97-2003PartialCan contain macros
.rtfRich Text Format✗CAUTION—OLE embedding, CVE-2017-0199
.slkSymbolic Link (Excel)✗MISSING—SYLK macro execution
.iqyExcel Web Query✗MISSING—can execute code
.prnExcel print file✗MISSING—can be renamed SYLK
.difData Interchange Format✗MISSING—Excel formula injection

OpenDocument, HTML, PDF & Server-Side

ExtensionDescriptionGovCERTComment
.odtOpenDocument text✓ (partial)Can contain macros
.odsOpenDocument spreadsheet✓ (partial)Can contain macros
.odpOpenDocument presentation✓ (partial)Can contain macros
.ott/ots/otpOpenDoc templates✗MISSING—template with macros
.htaHTML Application✓mshta.exe processes—full system access
.mht/.mhtmlMIME HTML✓Single-file web archive with scripts
.htm/.htmlHTML files✗CONTEXT-DEPENDENT—local HTML can execute JS
.chmCompiled HTML Help✓ (via other)MISSING from GovCERT—embedded scripts
.svgScalable Vector Graphics✗MISSING—can contain JavaScript
.pdfPDF with JSPartialReader processes (#1) → JS executes (#7)
.fdf/.xfdfForms Data Format✗MISSING—can trigger PDF actions
.xdpXML Data Package✓Adobe form container
.asp/.aspxActive Server PagesPartialIIS processes—server execution
.php/.jspServer scripts✗MISSING—server execution

Database & Configuration Files with Execution

ExtensionDescriptionGovCERTComment
.mdbAccess database✓ (via other)MISSING—can contain VBA
.mdeCompiled Access✗MISSING—compiled Access with VBA
.accdbAccess 2007+✗MISSING—can contain macros
.accdeCompiled Access 2007+✗MISSING
.adp/.adeAccess project✓ (via other)Access Data Project
.regRegistry file✓ (via other)MISSING from GovCERT—modifies system
.vb/.basVB/BASIC source✓Can be compiled/run
.wmlWireless Markup✓WMLScript execution
.xbapXAML Browser App✓.NET browser application
.gadgetWindows Gadget✗MISSING—HTML/JS execution
.diagcabDiagnostic Cabinet✗MISSING—can execute scripts

TIER 3: Data Formats Requiring Parser Exploits (#2/#3 → #7)

Threat Mechanism: No designed execution capability. Code execution requires exploiting an implementation flaw (buffer overflow, heap corruption, integer overflow, etc.) in the parser, codec, or renderer.
Control Strategy: Patch parsers, sandbox processing, use memory-safe implementations. The control question is: "Is my parser implementation safe?" Blocking is defense-in-depth but does NOT address the root vulnerability.
CRITICAL INSIGHT: For Tier 3, an exhaustive blocklist is impossible. ANY file format with a parser is a potential attack surface. The GovCERT list's inclusion of these formats creates false confidence if blocking is seen as the primary control.

Image, Video, Audio & Documents

ExtensionDescriptionGovCERTComment
.jpg/.jpegJPEG image✓Parser exploits (CVE-2004-0200)
.pngPNG imagePartiallibpng vulnerabilities
.gif/.bmpGIF/Bitmap✓Parser exploits
.webpWebP image✗CVE-2023-4863—critical parser bug
.tiffTIFF image✗Complex format—many parser bugs
.svgSVG✗DUAL: can contain JS (Tier 2) + parser bugs
.emf/.wmfMetafiles✗MISSING—historic exploit vector
.heic/.avifHEIC/AVIF✗Modern formats—parser bugs exist
.mp4/.aviVideo✓Codec exploits
.mkv/.webmVideo✗Container/Codec exploits
.docx/.xlsxOffice (Non-Macro)✗Parser bugs (ZIP, XML, OLE)
.pdfPDF (no JS)PartialParser exploits without JS

Fonts, Archives & Serialization

ExtensionDescriptionGovCERTComment
.ttf/.otfFonts✗MISSING—font rasterizer exploits
.woffWeb fonts✗MISSING—browser font parsing
.zip/.rar/.7zArchives✓Parser exploits + can contain FEC
.tar/.gzUnix Archives✓Parser/Decompression bugs
.xzXZ compressed✓Also backdoor vector (XZ Utils)
.iso/.img/.vhdDisk Images✓Filesystem parser bugs
.zst/.lz4Modern Compression✗MISSING—modern compression
.jsonJSON data✗Parser bugs + deserialization
.yaml/.ymlYAML data✗DANGEROUS—deserialization exploits
.pickle/.pklPython pickle✗CRITICAL—arbitrary code execution

Missing File Types Summary

Critical Additions for Tier 1 (Must Block)

  • PowerShell modules: .psd1, .psm1
  • Python (increasingly common): .py, .pyc, .pyw, .pyz, .pyzw
  • Modern Windows/Deployment: .msix, .appx, .appxbundle, .application, .appref-ms, .settingcontent-ms
  • System & Script: .sys, .drv, .cpl, .efi, .msc, .sct, .scf, .inf
  • Mobile: .apk, .ipa

Critical Additions for Tier 2 (Should Block/Disable Feature)

  • Excel specifics: .xlsb, .xlam, .xla, .xll, .slk, .iqy, .dif
  • Access databases: .accdb, .accde, .mdb, .mde
  • Execution capable: .chm, .svg, .reg, .gadget, .diagcab
  • Server-side: .aspx, .asmx, .php, .jsp

Tier 3 Additions (Parser Vulnerability Surface)

  • Fonts: .ttf, .otf, .woff, .woff2, .eot
  • Modern Images: .webp, .heic, .heif, .avif
  • Legacy Vectors: .emf, .wmf
  • Serialization/Compression: .yaml, .yml, .pickle, .pkl, .zst, .lz4

The Fundamental Problem with the GovCERT Approach

The GovCERT-CH list, while operationally useful, exhibits several conceptual problems when analyzed through TLCTC:

  1. Conflation of Threat Mechanisms: Grouping by format category (archives, media) ignores that Tier 1 formats are dangerous BY DESIGN, Tier 2 are dangerous BY FEATURE, and Tier 3 are dangerous BY BUG.
  2. False Confidence Through Tier 3 Blocking: Blocking .jpg at the email gateway creates false confidence. Users still encounter images on websites, USB drives, etc. The real control is patching parsers (libjpeg, libpng).
  3. Incomplete Tier 1 Coverage: Missing critical FEC-capable formats like the Python ecosystem and modern Windows packages leaves gaping holes.
  4. No Contextual Differentiation: The list cannot express that .exe in a CI/CD pipeline is expected, while .exe in email is suspicious. TLCTC's boundary notation (||[context][@Source→@Target]||) enables this differentiation.

Recommended Control Strategy by Tier

For Tier 1 (Native FEC)

  • Block at email gateway — Essential
  • Application allowlisting — Prevents execution
  • SmartScreen/reputation — Warns on unknown
  • Code signing — Validates publisher

For Tier 2 (App-Mediated)

  • Disable macros by default — Breaks #1→#7
  • Protected View — Sandboxes before enabling
  • Block external macro formats
  • ASR rules — Blocks child processes

For Tier 3 (Parser Exploits)

  • Patch management — Primary control
  • Memory-safe languages — Long-term solution
  • Sandboxing — Contains exploitation
  • Extension blocking — Defense-in-depth only

Conclusion

The GovCERT-CH list is a valuable operational resource, but its effectiveness is limited by conceptual conflation. Organizations should:

  • Classify their blocklist by TLCTC tier to understand why each format is blocked.
  • Ensure complete Tier 1 coverage — these are the formats that matter most.
  • Implement Tier 2 feature controls — blocking alone is insufficient.
  • Recognize Tier 3 limitations — blocking is defense-in-depth, not the primary control.

The file extension is just a hint—the threat model is what matters.

References

  1. TLCTC V2.0 Whitepaper
  2. GovCERT-CH Blocked Filetypes: GitHub
  3. "The File Type Fallacy" — TLCTC Blog, January 2026
  4. Microsoft Common Attachment Filter
  5. Chrome Safe Browsing File Type Policies
  6. badfiles.ch aggregated data