Translate

Mostrar mensagens com a etiqueta CICS Security. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta CICS Security. Mostrar todas as mensagens

terça-feira, 17 de fevereiro de 2026

🔥💀 COBOL SECURITY LAB — “SEU CICS SOB ATAQUE”

 

Bellacosa Mainframe lab seu cics sob ataque


🔥💀 COBOL SECURITY LAB — “SEU CICS SOB ATAQUE”

Hands-on prático com CICS + DB2 para aprender segurança na marra


☕ INTRODUÇÃO

Você não vai só aprender…

👉 você vai:

  • explorar vulnerabilidade
  • corrigir
  • validar

💣 exatamente como um atacante faria


🧪 LAB 1 — SQL INJECTION NO DB2

🎯 Objetivo

Mostrar como um COBOL pode ser vulnerável


💻 Código vulnerável

IDENTIFICATION DIVISION.
PROGRAM-ID. LOGIN.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-USER PIC X(20).
01 WS-PASS PIC X(20).

PROCEDURE DIVISION.

EXEC SQL
SELECT NAME INTO :WS-USER
FROM USERS
WHERE NAME = :WS-USER
AND PASSWORD = :WS-PASS
END-EXEC.

💣 Ataque

Input:

' OR '1'='1

💥 Resultado

👉 bypass de autenticação


✅ Correção

IF WS-USER NOT ALPHABETIC
DISPLAY "INVALID INPUT"
STOP RUN
END-IF.

💬 Insight

👉 validação é a primeira defesa


🧪 LAB 2 — BUFFER / TAMANHO DE INPUT

🎯 Objetivo

Evitar overflow e dados inválidos


💻 Problema

01 WS-NAME PIC X(10).

Input:

AAAAAAAAAAAAAAAAAAAAAAAAAAAA

💥 Resultado

👉 truncamento / corrupção


✅ Correção

IF LENGTH OF WS-NAME > 10
DISPLAY "INPUT TOO LONG"
END-IF.

🧪 LAB 3 — HARDCODED PASSWORD

🎯 Objetivo

Eliminar segredo no código


❌ Código

MOVE "DB123456" TO WS-PASS.

💣 Problema

👉 vazamento garantido


✅ Correção

  • usar RACF
  • usar external security

👉 RACF


🧪 LAB 4 — VALIDAÇÃO DE COMMAREA (CICS)

🎯 Objetivo

Proteger entrada CICS


💻 Código vulnerável

MOVE DFHCOMMAREA TO WS-DATA.

💣 Problema

👉 dados maliciosos


✅ Correção

IF EIBCALEN = 0
DISPLAY "NO DATA"
RETURN
END-IF.

🧪 LAB 5 — LOGGING SEGURO

🎯 Objetivo

Evitar vazamento de dados


❌ Errado

DISPLAY "PASSWORD: " WS-PASS.

💣 Problema

👉 senha em log


✅ Correção

DISPLAY "LOGIN ATTEMPT".

🧪 LAB 6 — CONTROLE DE ACESSO (RACF)

🎯 Objetivo

Simular autorização


💻 Exemplo

CALL 'RACROUTE' USING ...

💬 Resultado

👉 só usuários autorizados acessam


🧪 LAB 7 — INTEGRAÇÃO COM API (RISCO REAL)

🎯 Objetivo

Simular API via CICS


💣 Problema

👉 input externo não confiável


✅ Solução

  • validar JSON
  • sanitizar campos

🧪 LAB 8 — TRATAMENTO DE ERRO

🎯 Objetivo

Não expor sistema


❌ Errado

DISPLAY SQLCODE.

💣 Problema

👉 revela estrutura interna


✅ Correto

DISPLAY "ERROR OCCURRED".

🧪 LAB 9 — CONTROLE DE TRANSAÇÃO

🎯 Objetivo

Evitar inconsistência


💻 Uso

EXEC CICS SYNCPOINT
END-EXEC.

💬 Importante

👉 protege integridade


🧪 LAB 10 — SIMULAR ATAQUE REAL

🎯 Objetivo

Mentalidade hacker


💻 Faça

  • testar inputs inválidos
  • tentar bypass
  • observar comportamento

💥 Resultado

👉 descobrir falhas reais


🧠 VISÃO FINAL

Você fez:

  • ataque
  • defesa
  • validação

👉 isso é segurança real


💬 FRASE FINAL

“Mainframe não é seguro por ser forte…
é seguro quando você fecha as portas certas.”

sábado, 29 de março de 2014

☕🔥 ABEND S913 — O “MURO DE SEGURANÇA” DO z/OS

 

Bellacosa Mainframe e o abend s913

☕🔥 ABEND S913 — O “MURO DE SEGURANÇA” DO z/OS

Quando o Mainframe Diz:

“VOCÊ NÃO TEM AUTORIZAÇÃO PARA FAZER ISSO.”

Se existe um ABEND que faz TODO Junior Padawan descobrir que:

segurança no mainframe é levada MUITO a sério…

é o lendário:

🚨 S913

E normalmente ele aparece assim:

IEF450I JOBNAME STEP01 - ABEND=S913

ou:

ICH408I USER NOT AUTHORIZED

ou ainda:

IEC150I 913-38

E então começa o pânico:

“Mas o dataset existe!”
“O JCL está certo!”
“Funcionava ontem!”
“O RACF me odeia?”
“O z/OS acabou de me expulsar do castelo?”

☕ Respira.

Porque o S913 é um dos ABENDs MAIS IMPORTANTES para entender:

RACF

segurança z/OS

autorização

datasets protegidos

acesso batch

permissões

auditoria corporativa


🔥 O QUE É O S913?

O S913 é um:

🚨 SECURITY / AUTHORIZATION FAILURE

Traduzindo:

O z/OS NEGOU ACESSO A UM RECURSO.


☕ A FILOSOFIA DO S913

No mundo mainframe:

NADA É ACESSADO SEM AUTORIZAÇÃO.

Nem:

  • dataset

  • transação

  • programa

  • loadlib

  • tape

  • recurso CICS

  • DB2

  • spool


🔥 O GRANDE SEGREDO

O S913 normalmente NÃO é erro de COBOL.

É:

erro de segurança.


☕ ANALOGIA BELLACOSA MAINFRAME

Imagine um cofre bancário.

Você possui:

✅ crachá
✅ login
✅ senha

Mas tenta entrar numa área:

❌ sem autorização.

O segurança aparece imediatamente.

Isso é o:

☠️ S913


🔥 O VERDADEIRO VILÃO

🚨 RACF

Ou equivalentes:

  • ACF2

  • Top Secret


☕ O QUE É RACF?

Resource Access Control Facility

O guardião do z/OS.

Controla:

  • quem acessa

  • o quê

  • quando

  • como

  • com qual permissão


🔥 O MOMENTO EXATO DO S913

Fluxo:

Programa/JCL tenta acessar recurso
 ↓
SAF/RACF intercepta
 ↓
Valida permissão
 ↓
Acesso negado
 ↓
S913

☕ O CASO MAIS CLÁSSICO

DATASET SEM AUTORIZAÇÃO


🔥 EXEMPLO

//CLIENTE DD DSN=EMPRESA.FINANCEIRO.MASTER,
// DISP=SHR

Mas o usuário NÃO possui acesso.

Resultado:

💥 S913


☕ O MAINFRAME OLHA E DIZ

“VOCÊ NÃO TEM PERMISSÃO PARA VER ISSO.”


🔥 O IEC150I 913-38

Lenda clássica do z/OS.


☕ O QUE SIGNIFICA?

Frequentemente:

dataset authorization failure.


🔥 O ICH408I — A MENSAGEM SAGRADA

Essa é ouro puro.

Exemplo:

ICH408I USER(USER01) GROUP(GRP1)
NAME(USER TESTE)
EMPRESA.FINANCEIRO CL(DATASET)
INSUFFICIENT ACCESS AUTHORITY

Isso revela:

  • usuário

  • grupo

  • recurso

  • classe

  • nível negado


☕ O MAIOR ERRO DO PADAWAN

Ver:

S913

e recompilar COBOL.

Não.

O problema geralmente NÃO está no código.


🔥 O S913 E O DISP=OLD

Outro clássico.


☕ EXEMPLO

//ARQ DD DISP=OLD

Mas usuário só possui:

READ

Não possui:

UPDATE

Resultado:

☠️ S913


🔥 O S913 E O LOADLIB

Até executáveis possuem proteção.


☕ EXEMPLO

//STEPLIB DD DSN=EMPRESA.PROD.LOAD

Sem permissão de EXECUTE/READ:

💥 S913


🔥 O S913 E O CICS

No CICS isso aparece MUITO como:

NOTAUTH

AEY9

RACF violation


☕ O S913 E O DB2

Outro território sombrio.

Usuário tenta:

SELECT * FROM CLIENTES

Sem permissão.

DB2 chama RACF/segurança.

Resultado:

☠️ acesso negado.


🔥 O S913 E O JES2

Até o spool pode ser protegido.

Você tenta:

  • cancelar job

  • ver output

  • acessar SYSOUT

Sem autorização:

💥 S913


☕ O S913 E O FTP

Clássico enterprise.

Usuário tenta transferir:

dataset protegido

FTP recebe:

permission denied.

Origem real:

RACF.


🔥 COMO INVESTIGAR O S913 PASSO A PASSO


✅ PASSO 1 — PROCURE ICH408I

Essa mensagem é a Bíblia do S913.


✅ PASSO 2 — IDENTIFIQUE O RECURSO

Exemplo:

EMPRESA.ARQ.CLIENTE

✅ PASSO 3 — IDENTIFIQUE O TIPO DE ACESSO

Pergunte:

Tentou:

  • READ?

  • UPDATE?

  • ALTER?

  • EXECUTE?


✅ PASSO 4 — VERIFIQUE DISP


☕ DISP=SHR

Normalmente leitura.


☕ DISP=OLD

Controle exclusivo/update.


☕ DISP=MOD

Alteração.


🔥 PASSO 5 — FALE COM SEGURANÇA/RACF

Sim.

Mainframe é trabalho em equipe.


☕ O DUMP DO S913

Muitas vezes:

dump quase irrelevante.

Porque o erro é de autorização.

O ouro está nas mensagens:

  • ICH408I

  • IEC150I

  • IEFxxxx


🔥 O S913 E O “FUNCIONAVA ONTEM”

O clássico absoluto.


☕ O QUE ACONTECEU?

Talvez:

  • RACF mudou

  • grupo mudou

  • perfil mudou

  • dataset foi recatalogado

  • ACL alterada

  • migração ocorreu


🔥 O S913 FANTASMA

Outro terror real.

Job A cria dataset.

Job B tenta acessar.

Mas:

owner/permissão mudou.

Resultado:

💥 S913


☕ O S913 E O PROTECTED DATASETS

Datasets críticos costumam ser blindados:

  • folha salarial

  • financeiro

  • cartões

  • PIX

  • banking core

  • produção

O RACF leva isso MUITO a sério.


🔥 O S913 E O AUDITOR

Toda violação geralmente fica registrada.

Mainframe possui auditoria fortíssima.


☕ O S913 E O OPERADOR

Até operadores podem ter limites.

No z/OS:

privilégio é granular.


🔥 O S913 E O SURROGAT

Modo arquimago ativado.

Jobs submetidos em nome de outros usuários podem falhar por:

surrogate authorization.


☕ O S913 E O APF

Bibliotecas APF também possuem proteção pesada.


🔥 O SEGREDO DOS VETERANOS

Veteranos sempre perguntam:

“QUAL RECURSO FOI NEGADO?”

Porque o S913 é:

sintoma.

O alvo verdadeiro está na mensagem RACF.


☕ COMO EVITAR S913


✅ Validar permissões antes


✅ Revisar DISP


✅ Entender READ vs UPDATE


✅ Validar grupos RACF


✅ Revisar mudanças de segurança


✅ Evitar hardcode de datasets protegidos


✅ Trabalhar junto com equipe RACF


🔥 CURIOSIDADE HISTÓRICA

O S913 nasceu na era em que:

bancos começaram a depender totalmente do mainframe.

IBM percebeu cedo que segurança corporativa precisava ser:

rígida

auditável

centralizada

RACF virou um dos sistemas de segurança mais respeitados do mundo.


☕ EASTER EGG MAINFRAME

Veteranos brincam:

“S913 significa:

Você Tentou Entrar Onde Não Devia.”


🔥 O MAIOR ENSINAMENTO DO S913

Ele ensina algo profundo:

no z/OS, SEGURANÇA vem antes da conveniência.

Não importa:

  • se o programa funciona

  • se o JCL está perfeito

  • se o COBOL compilou

Sem autorização:

nada acontece.


☕ A VERDADE FINAL

O S0C7 pune dados inválidos.
O S0C4 pune memória inválida.
O S806 pune programas inexistentes.
O S878 pune fragmentação de storage.

Mas…

☕ O S913 É O MOMENTO EM QUE O z/OS OLHA PARA VOCÊ… E DECIDE QUE VOCÊ NÃO TEM PERMISSÃO PARA PASSAR PELO PORTÃO.