
Conjunto automatizado de scripts para detectar e corrigir o CVE-2025-46295 substituindo JARs vulneráveis do Apache Commons em instalações do FileMaker Server, com suporte a dry-run, backup e rollback.
O FileMaker Apache Commons JAR Replacer é uma solução de automação que aborda a CVE-2025-46295 substituindo arquivos JAR vulneráveis do Apache Commons em instalações do FileMaker Server. Em vez de atualizar todo o FileMaker Server, esta solução segue a orientação oficial da Claris para substituir apenas os arquivos JAR vulneráveis commons-text e commons-lang3 por versões atualizadas.
Para a maioria dos utilizadores, faça o download da versão mais recente em vez de compilar a partir do código-fonte:
Aceda à página de Releases
Faça o download do ficheiro adequado para a sua plataforma:
filemaker-jar-replacer-windows.zipfilemaker-jar-replacer-macos.tar.gzfilemaker-jar-replacer-ubuntu.tar.gzExtraia e execute - Consulte as notas de lançamento para instruções detalhadas de extração e utilização
Os ficheiros JAR afetados apenas são instalados quando o Web Publishing Engine é ativado pela primeira vez.
Este substituidor de JAR fornece scripts específicos para cada plataforma:
replace-filemaker-jars-windows.ps1)replace-filemaker-jars-macos.sh)replace-filemaker-jars-ubuntu.sh)IMPORTANTE: Antes de fazer qualquer alteração no seu FileMaker Server, execute o script com a opção --dry-run para verificar se o seu servidor está vulnerável e ver quais alterações seriam feitas.
# Execute o PowerShell como Administrador
# Mostra ajuda e opções disponíveis
.\replace-filemaker-jars-windows.ps1 -Help
# Verifique se o seu servidor está vulnerável (PRIMEIRO PASSO RECOMENDADO)
.\replace-filemaker-jars-windows.ps1 -DryRun
# Aplique a correção de segurança (apenas após revisar os resultados do dry-run)
.\replace-filemaker-jars-windows.ps1
# Execute com privilégios sudo
# Mostra ajuda e opções disponíveis
sudo ./replace-filemaker-jars-macos.sh --help
# Verifique se o seu servidor está vulnerável (PRIMEIRO PASSO RECOMENDADO)
sudo ./replace-filemaker-jars-macos.sh --dry-run
# Aplique a correção de segurança (apenas após revisar os resultados do dry-run)
sudo ./replace-filemaker-jars-macos.sh
# Execute com privilégios sudo
# Mostra ajuda e opções disponíveis
sudo ./replace-filemaker-jars-ubuntu.sh --help
# Verifique se o seu servidor está vulnerável (PRIMEIRO PASSO RECOMENDADO)
sudo ./replace-filemaker-jars-ubuntu.sh --dry-run
# Aplique a correção de segurança (apenas após revisar os resultados do dry-run)
sudo ./replace-filemaker-jars-ubuntu.sh
A opção --dry-run é a forma mais segura de:
Execute sempre com --dry-run primeiro para entender o que o script fará no seu sistema.
filemaker-jar-replacer/
├── README.md # Este ficheiro
├── replace-filemaker-jars-windows.ps1 # Script Windows PowerShell
├── replace-filemaker-jars-macos.sh # Script macOS Bash
├── replace-filemaker-jars-ubuntu.sh # Script Ubuntu Bash
├── scripts/
│ ├── windows/
│ │ └── modules/ # Módulos PowerShell para operações JAR
│ ├── macos/
│ │ └── modules/ # Módulos de funções Bash para operações JAR
│ ├── ubuntu/
│ │ └── modules/ # Módulos de funções Bash para operações JAR
│ └── shared/ # Utilitários e modelos partilhados
├── config/
│ ├── logging-config.json # Configuração de registo
│ └── jar-replacement-config.json # Configuração de substituição de JAR
├── tests/ # Conjunto de testes (BATS e Pester)
├── logs/ # Ficheiros de registo (criados durante a execução)
└── backups/ # Ficheiros de backup JAR (criados durante a execução)
Pode configurar o atualizador usando variáveis de ambiente:
# Credenciais do FileMaker Server
export FILEMAKER_USERNAME="admin"
export FILEMAKER_PASSWORD="your_secure_password"
# Caminhos personalizados (opcional)
export FILEMAKER_INSTALL_PATH="/custom/path/to/filemaker"
export BACKUP_DIRECTORY="/custom/backup/path"
Crie um ficheiro .env no diretório do script:
# Ficheiro .env (deve ter permissões 600)
FILEMAKER_USERNAME=admin
FILEMAKER_PASSWORD=your_secure_password
BACKUP_DIRECTORY=/custom/backup/path
Importante: Garanta que o ficheiro .env tem permissões restritivas (600) por segurança.
Se o script automatizado falhar, siga estes passos manuais para substituir os ficheiros JAR vulneráveis:
# Usando fmsadmin (recomendado)
& "C:\Program Files\FileMaker\FileMaker Server\Database Server\fmsadmin.exe" stop wpe -u admin -p password
# Ou usando serviços
Stop-Service "FileMaker Server Web Publishing Engine"
# Usando fmsadmin (recomendado)
sudo "/Library/FileMaker Server/Database Server/bin/fmsadmin" stop wpe -u admin -p password
# Ou usando launchctl
sudo launchctl stop com.filemaker.wpe
# Usando fmsadmin (recomendado)
sudo "/opt/FileMaker/FileMaker Server/Database Server/bin/fmsadmin" stop wpe -u admin -p password
# Ou usando systemctl
sudo systemctl stop filemaker-wpe
$jarPath = "C:\Program Files\FileMaker\FileMaker Server\Web Publishing\publishing-engine\jwpc-tomcat\webapps\ROOT\WEB-INF\lib"
$backupPath = "C:\Temp\jar-backup-$(Get-Date -Format 'yyyyMMdd-HHmmss')"
New-Item -ItemType Directory -Path $backupPath
Copy-Item "$jarPath\commons-text-*.jar" $backupPath
Copy-Item "$jarPath\commons-lang3-*.jar" $backupPath
JAR_PATH="/Library/FileMaker Server/Web Publishing/publishing-engine/jwpc-tomcat/webapps/ROOT/WEB-INF/lib" # macOS
# JAR_PATH="/opt/FileMaker/FileMaker Server/Web Publishing/publishing-engine/jwpc-tomcat/webapps/ROOT/WEB-INF/lib" # Ubuntu
BACKUP_PATH="/tmp/jar-backup-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$BACKUP_PATH"
cp "$JAR_PATH"/commons-text-*.jar "$BACKUP_PATH/"
cp "$JAR_PATH"/commons-lang3-*.jar "$BACKUP_PATH/"
Transfira os seguintes ficheiros JAR do Apache Commons:
Verifique as somas de verificação em relação às somas de verificação oficiais do Apache Commons.
$jarPath = "C:\Program Files\FileMaker\FileMaker Server\Web Publishing\publishing-engine\jwpc-tomcat\webapps\ROOT\WEB-INF\lib"
# Remover ficheiros JAR antigos
Remove-Item "$jarPath\commons-text-*.jar"
Remove-Item "$jarPath\commons-lang3-*.jar"
# Copiar novos ficheiros JAR
Copy-Item "commons-text-1.11.0.jar" $jarPath
Copy-Item "commons-lang3-3.18.0.jar" $jarPath
JAR_PATH="/Library/FileMaker Server/Web Publishing/publishing-engine/jwpc-tomcat/webapps/ROOT/WEB-INF/lib" # macOS
# JAR_PATH="/opt/FileMaker/FileMaker Server/Web Publishing/publishing-engine/jwpc-tomcat/webapps/ROOT/WEB-INF/lib" # Ubuntu
# Remover ficheiros JAR antigos
sudo rm "$JAR_PATH"/commons-text-*.jar
sudo rm "$JAR_PATH"/commons-lang3-*.jar
# Copiar novos ficheiros JAR
sudo cp commons-text-1.11.0.jar "$JAR_PATH/"
sudo cp commons-lang3-3.18.0.jar "$JAR_PATH/"
# Definir permissões adequadas
sudo chown fmserver:fmsadmin "$JAR_PATH"/commons-*.jar # Ajustar proprietário conforme necessário
sudo chmod 644 "$JAR_PATH"/commons-*.jar
# Usando fmsadmin (recomendado)
& "C:\Program Files\FileMaker\FileMaker Server\Database Server\fmsadmin.exe" start wpe -u admin -p password
# Ou usando serviços
Start-Service "FileMaker Server Web Publishing Engine"
# Usando fmsadmin (recomendado)
sudo "/Library/FileMaker Server/Database Server/bin/fmsadmin" start wpe -u admin -p password
# Ou usando launchctl
sudo launchctl start com.filemaker.wpe
# Usando fmsadmin (recomendado)
sudo "/opt/FileMaker/FileMaker Server/Database Server/bin/fmsadmin" start wpe -u admin -p password
# Ou usando systemctl
sudo systemctl start filemaker-wpe
Se o script automatizado falhar, siga estes passos manuais:
net stop "FileMaker Server"
sudo launchctl stop com.filemaker.fms
sudo service fmshelper stop
net start "FileMaker Server"
sudo launchctl start com.filemaker.fms
sudo service fmshelper start
logs\filemaker-jar-replacer-windows.loglogs/filemaker-jar-replacer-macos.loglogs/filemaker-jar-replacer-ubuntu.logEste projeto inclui conjuntos de testes abrangentes para todas as plataformas, garantindo fiabilidade e segurança.
O projeto utiliza diferentes estruturas de teste para cada plataforma:
macOS (usando Homebrew):
brew install bats-core
Ubuntu/Debian:
# Instalar via gestor de pacotes
sudo apt update
sudo apt install bats
# Ou instalar a versão mais recente a partir do código-fonte
git clone https://github.com/bats-core/bats-core.git
cd bats-core
sudo ./install.sh /usr/local
Instalação Manual (qualquer sistema Unix-like):
git clone https://github.com/bats-core/bats-core.git
cd bats-core
sudo ./install.sh /usr/local
O Pester vem pré-instalado com o PowerShell 5.1+ e Windows PowerShell, mas pode querer atualizar para a versão mais recente:
# Verificar versão atual
Get-Module -Name Pester -ListAvailable
# Instalar/Atualizar para a versão mais recente (PowerShell 5.1+)
Install-Module -Name Pester -Force -SkipPublisherCheck
# Para PowerShell Core (7+)
Install-Module -Name Pester -Scope CurrentUser
# Executar ficheiro de teste BATS específico (Linux/macOS)
bats tests/backup-creation.bats
bats tests/version-detection.bats
# Executar ficheiro de teste Pester específico (Windows)
Invoke-Pester tests/windows/Integration.Tests.ps1
Invoke-Pester tests/windows/Utilities.Tests.ps1
# Executar todos os testes BATS (Linux/macOS)
bats tests/*.bats
# Executar todos os testes Pester (Windows)
Invoke-Pester tests/windows/
O conjunto de testes inclui:
Os testes criam ambientes temporários isolados e não afetam o seu sistema ou instalação do FileMaker. No entanto, alguns testes podem exigir:
Este substituidor de JAR é fornecido como está para abordar a CVE-2025-46295. Utilize de acordo com o seu contrato de licença do FileMaker Server e os termos de licença do Apache Commons.