☕ Um Café no Bellacosa Mainframe
Gostou do conteúdo? Ajude a manter o café quente, o COBOL compilando e o mainframe acordado. 😄
☕ Pague um café ao Bellacosa

Translate

Mostrar mensagens com a etiqueta DevSecOps. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta DevSecOps. Mostrar todas as mensagens

terça-feira, 25 de agosto de 2026

Do Z3R0 ao HERO — Quando o T-800 Auditou o Datacenter, Desconfiou de Igor e Descobriu que Red Team Não É Só Uma Caveira no Terminal

 

Bellacosa Mainframe e a auditoria do T800

☕ Um Café no Bellacosa Mainframe

Do Z3R0 ao HERO — Quando o T-800 Auditou o Datacenter, Desconfiou de Igor e Descobriu que Red Team Não É Só Uma Caveira no Terminal

Ou: o programador COBOL queria saber se era Blue ou Red, o Exterminador respondeu que primeiro ele precisava descobrir quem tinha UPDATE na tabela de pagamentos — e Igor, naturalmente, sugeriu colocar a senha no nome do dataset para não esquecê-la.

MODELO T-800 — STATUS: OPERACIONAL
MISSÃO ORIGINAL: localizar Sarah Connor.
MISSÃO ATUALIZADA: localizar o proprietário da conta técnica com privilégio excessivo.
AVISO: “HASTA LA VISTA, SEGREGAÇÃO DE FUNÇÕES INEXISTENTE.”

O universo da segurança da informação adora cores. Há o Red Team, que pensa como um adversário; o Blue Team, que protege, monitora e responde; e o Purple Team, que tenta impedir que os dois passem a reunião inteira discutindo quem ganhou a bandeirinha do CTF.

Mas, antes que alguém instale uma distribuição cheia de ferramentas, abra três terminais pretos e declare-se “hacker ético” no LinkedIn, convém uma pequena verdade digna de uma sala de máquinas: segurança não começa pelo ataque. Começa por compreender o sistema que se pretende proteger ou avaliar.

Para o programador COBOL iniciante, isso é quase uma boa notícia. Você já está entrando por uma porta que muita gente só encontra depois de anos: a porta dos processos críticos, dos dados que realmente importam, dos controles de acesso, dos jobs que não podem falhar e das mudanças que precisam deixar rastro. No mundo em que uma API moderna conversa com uma fila, que conversa com CICS, que conversa com Db2, que conversa com um batch de quarenta anos ainda pagando salário, ninguém pode tratar segurança como detalhe de rodapé.



1. O primeiro diagnóstico do T-800: Pentest, Red Team e Blue Team não são a mesma coisa

Um pentest é uma avaliação autorizada, normalmente com escopo definido, para encontrar e validar vulnerabilidades. Pode ser um portal, uma API, uma rede, um aplicativo móvel ou um ambiente cloud. A pergunta é direta: “que falhas existem aqui, qual o impacto e como corrigir?”

O Red Team vai além: simula, de forma controlada, um adversário tentando atingir um objetivo relevante para o negócio. Não está interessado em colecionar cinquenta alertas coloridos. Está interessado em testar uma hipótese: seria possível alguém alcançar um ativo crítico? Os controles perceberiam? A organização conteria a atividade a tempo?

Já o Blue Team vive no mundo real. Ele administra ou acompanha controles, investiga alertas, endurece configurações, gerencia vulnerabilidades, melhora logs, responde a incidentes e tenta impedir que o mês da empresa acabe em reunião de crise com jurídico, diretoria e café frio.

TimePergunta principalEntrega útil
Pentest“Que vulnerabilidades existem no escopo?”Achados priorizados, evidências e recomendações
Red Team“Um adversário plausível atingiria o objetivo?”Cadeia de risco simulada e avaliação de controles
Blue Team“Como prevenimos, detectamos e respondemos?”Controles, telemetria, investigação e recuperação
Purple Team“O que aprendemos juntos?”Correções testadas e detecções melhores

O Red não existe para humilhar o Blue. Se a operação termina com “entramos e vocês não viram”, mas ninguém melhora log, regra, privilégio ou processo, a empresa acabou de pagar por um trailer de filme, não por segurança.



2. O erro que termina em ABEND: ferramenta antes de fundamento

Ferramenta é multiplicador. Multiplica velocidade quando há conhecimento; multiplica confusão quando não há.

Um scanner pode apontar uma versão vulnerável. Isso ainda não responde se o serviço está exposto, se a função vulnerável está ativa, se há rota de rede, se o controle compensatório existe ou se o impacto é relevante. O profissional precisa validar a hipótese sem provocar dano.

É igual ao COBOL. Decorar READ, WRITE e PERFORM não torna ninguém dono do processamento. É preciso entender arquivo, chave, status, commit, lock, dados de entrada, regra de negócio e consequência de uma atualização. Segurança é a mesma conversa, apenas com o T-800 olhando por cima do ombro.

Os fundamentos indispensáveis são:

  • Redes: DNS, TCP/IP, HTTP/S, TLS, proxy, VPN, roteamento, portas e segmentação.

  • Sistemas operacionais: usuários, grupos, permissões, processos, serviços, logs, atualizações e administração.

  • Programação: lógica, variáveis, validação, tratamento de erro, bibliotecas, APIs e leitura de código.

  • Dados: modelagem, autenticação no banco, permissões, cópias, backups, trilhas de auditoria e mascaramento.

  • Identidade: autenticação não é autorização; saber quem entrou não responde ao que essa pessoa pode fazer.

  • Negócio: um ativo crítico não é necessariamente o servidor mais caro; pode ser uma tabela, uma interface, uma conta técnica ou uma etapa invisível do processo.

Curiosidade de sala de máquinas

O mainframe ensinou há décadas uma lição que a nuvem redescobre quase todo ano: controle de acesso é uma política, não uma tela de login. Um ID autenticado pode continuar perigosíssimo se tiver autoridade excessiva, grupos herdados, permissões antigas ou uso compartilhado. RACF não lê pensamentos, mas obriga a fazer a pergunta certa: quem tem acesso a quê, por qual motivo, e com qual registro?



3. A tríade CIA: não é agência secreta, embora Igor tivesse gostado da ideia

Segurança protege, no mínimo, três propriedades:

  • Confidencialidade: somente pessoas e processos autorizados veem a informação.

  • Integridade: dados e transações não são alterados indevidamente.

  • Disponibilidade: serviços e informações permanecem acessíveis quando necessários.

Pense num pagamento. Se alguém vê o dado de outro cliente, há quebra de confidencialidade. Se consegue alterar a conta favorecida, há quebra de integridade. Se o sistema de pagamentos fica indisponível no fechamento, há quebra de disponibilidade.

E o caso real quase sempre mistura tudo. Uma credencial comprometida pode permitir leitura indevida; a mesma conta, com privilégio demais, pode alterar uma regra; a tentativa de conter o problema pode derrubar um serviço. Segurança não é uma caixinha isolada. É o conjunto inteiro do processo sob pressão.



4. Red Team profissional: o atacante autorizado que sabe a hora de parar

O Red Team avalia caminhos, não apenas máquinas. Dependendo do escopo formal, pode testar exposição externa, aplicações, APIs, configurações, identidade, segmentação, processos, fornecedores e aspectos físicos. A palavra que mantém tudo do lado certo é autorização.

Antes de qualquer exercício sério devem existir regras de engajamento: objetivo, período, ativos permitidos, sistemas proibidos, limites de impacto, contatos de emergência, tratamento de evidências, dados que não podem ser acessados e critério de parada.

“Try harder” é excelente para o laboratório. Em produção, a tradução profissional é: pare quando a evidência já prova o risco. Não se demonstra que um backup está vulnerável apagando-o. Não se demonstra que dados pessoais podem ser acessados copiando uma base inteira. Não se demonstra indisponibilidade derrubando a folha de pagamento.

O objetivo é obter evidência mínima, confiável e reproduzível. O T-800 chama isso de eficiência. O jurídico chama de sobrevivência.

5. Blue Team: o turno da madrugada, os logs e a pergunta que ninguém queria receber

Blue Team não é um analista hipnotizado por um painel cheio de alertas. É uma combinação de capacidades: monitoramento, engenharia de detecção, resposta a incidentes, gestão de vulnerabilidades, hardening, segurança de endpoints, cloud, aplicações, identidade, backups e continuidade.

Uma defesa madura distingue quatro coisas:

  1. Evento: algo aconteceu; um login, uma alteração, uma conexão.

  2. Alerta: uma regra considerou o evento suspeito.

  3. Incidente: a investigação confirmou atividade indevida ou dano.

  4. Crise: o impacto ultrapassou a capacidade normal de resposta e exige coordenação executiva, legal ou operacional.

Confundir tudo gera dois desastres clássicos: pânico por qualquer alerta ou silêncio até a manchete chegar. Logs são fundamentais porque sem eles a organização fica discutindo memória e impressão. Com registros adequados, ela reconstrói fatos.

Para quem trabalha em z/OS, isso tem sabor familiar. SMF, RACF, logs de CICS, Db2 e auditorias não são burocracia arqueológica: são peças da história que você precisará contar quando algo parecer estranho.



6. Purple Team: quando o treinamento deixa de ser guerra civil

Purple Team é colaboração deliberada. O Red apresenta uma simulação autorizada ou um comportamento relevante; o Blue observa a telemetria, avalia se houve alerta, investiga e propõe melhoria. Depois ocorre reteste.

Exemplo: um exercício mostra que uma alteração sensível em uma conta técnica não gerou alerta útil. A correção pode envolver revisão de privilégio, registro adicional, regra de correlação, aprovação de mudança e um playbook para investigação. O reteste comprova se a defesa agora enxerga o comportamento.

Não importa qual ferramenta foi usada. Importa se a empresa consegue detectar o comportamento. É por isso que o MITRE ATT&CK é tão útil: ele fornece uma linguagem para falar de objetivos e técnicas adversárias sem reduzir a discussão a uma marca de ferramenta ou a um comando da moda.


7. O mapa de carreira: do Z3R0 ao profissional confiável

Não existe atalho, mas há sequência melhor que sair colecionando cursos.

Passo 1 — Aprenda o caminho dos dados

Entenda uma transação de ponta a ponta. Um navegador chama uma API; a API autentica o usuário, consulta uma base ou um serviço corporativo, grava um log e devolve uma resposta. Pergunte em cada etapa: onde há identidade? Onde há autorização? Onde há dado sensível? O que é registrado? Quem administra?

Passo 2 — Construa um laboratório isolado

Use apenas ambientes feitos para estudo ou sistemas próprios. Não precisa de um datacenter da Skynet. Uma máquina virtual, uma aplicação de treinamento, um serviço de logs e controles simples já permitem exercitar observação, documentação, correção e reteste.

Monte sempre os dois lados: uma aplicação ou serviço intencionalmente frágil e a visibilidade defensiva correspondente. A grande lição não é “como entrar”; é “que evidência isso deixou e como eu deveria ter percebido?”

Passo 3 — Aprenda aplicações e APIs

Aplicações modernas concentram falhas que scanners podem não compreender: autorização inadequada, regra de negócio frágil, exposição excessiva de dados, integração confusa e validação só no navegador.

Exemplo seguro: se uma pessoa autenticada consegue acessar uma fatura que não lhe pertence trocando apenas um identificador, o defeito é de autorização. O sistema confirmou “quem é você?”, mas esqueceu de confirmar “você pode ver isto?”. O remédio não é apenas esconder o campo na tela; é validar a permissão no servidor, registrar tentativas e revisar o modelo de acesso.

Passo 4 — Estude identidade, cloud e DevSecOps

Hoje o perímetro é móvel. Usuários acessam SaaS, APIs usam tokens, pipelines implantam infraestrutura e contas de serviço conversam com múltiplos sistemas. Um segredo exposto, uma permissão IAM excessiva ou uma conta técnica sem dono podem ser mais graves que uma porta aberta.

O bom profissional pergunta: qual identidade executa isso? Qual privilégio ela possui? O que aconteceria se fosse usada indevidamente? Onde está o log? Há rotação de segredo? Existe menor privilégio?

Passo 5 — Escolha uma profundidade, mantenha a largura

Você pode especializar-se em segurança ofensiva, SOC, resposta a incidentes, AppSec, GRC, cloud ou mainframe. O formato ideal é o “T”: profundidade em uma área, entendimento amplo das demais.

Um programador COBOL pode construir uma especialidade particularmente rara: segurança de aplicações e integrações híbridas. Quando a frente moderna conversa com CICS, Db2, MQ, IMS, batch e arquivos críticos, entender os dois lados é uma vantagem enorme. A porta de entrada pode ser uma API; o cofre pode estar no backend legado.



8. CVE não é automaticamente risco — e scanner não é oráculo

Uma CVE é identificação pública de uma vulnerabilidade. Ela pode ser importante, mas não substitui análise. Para priorizar, considere exposição, pré-requisitos, valor do ativo, controles existentes e impacto.

Uma falha moderada em um portal público que expõe dados pessoais pode ser mais urgente que uma falha crítica em ambiente isolado, sem rota de rede e sem uso da função vulnerável. Risco é a combinação de probabilidade e impacto, não um número piscando em vermelho.

O relatório útil traduz isso. Em vez de “corrigir vulnerabilidade”, ele diz que ativo foi afetado, por que importa, como o controle falhou, qual equipe pode corrigir, que medida temporária reduz risco e como retestar.



9. O artefato mais subestimado: o relatório

Um relatório ruim é uma coleção de prints com caveira. Um relatório bom é uma ponte entre segurança e mudança real.

Ele deve explicar o cenário, evidência, impacto plausível, controles esperados, lacuna observada, recomendação prática e prioridade. Deve falar para executivos sem esconder a parte técnica e falar para técnicos sem transformar a conclusão em poesia corporativa.

Por exemplo: “Revisar a autorização de alterações de favorecido, separar criação de aprovação, limitar privilégios da conta técnica, registrar mudanças críticas e retestar o fluxo.” Isso dá à empresa um caminho. “Melhorar a segurança” só dá vontade de pedir mais café.



Epílogo — O T-800 fecha o ISPF

Ao final da auditoria, Igor pergunta se Red Team significa usar vermelho no terminal. O T-800 olha para a tela, identifica uma conta compartilhada, três permissões herdadas e um backup nunca restaurado em teste. Depois responde, com a ternura de uma prensa hidráulica:

“A COR É IRRELEVANTE. A AUSÊNCIA DE EVIDÊNCIA, NÃO.”

Ser Blue, Red ou Purple não é escolher uma fantasia. É escolher uma responsabilidade. O Red testa se a defesa resiste; o Blue constrói e opera essa defesa; o Purple garante que o aprendizado não morra no relatório. E o profissional que começa em COBOL traz algo precioso para todos eles: a noção de que sistemas importam porque processos e pessoas dependem deles.

Estude fundamentos. Pratique somente em ambientes autorizados. Aprenda a ler código, logs, permissões e fluxos de negócio. Respeite escopo. Documente bem. E desconfie de toda conta técnica cujo responsável seja descrito como “sempre foi assim”.

Porque, como o T-800 aprendeu naquele turno no datacenter, o futuro não é uma guerra entre máquinas e humanos. É uma planilha de acessos sem dono, uma API sem autorização e Igor dizendo: “Doutor, eu deixei a senha em comentários para facilitar a manutenção.”





quarta-feira, 12 de agosto de 2026

A Causa de R$ 300 Milhões e o IF do Programador: quando uma decisão técnica aparentemente banal pode virar parte da Justiça

 

Bellacosa Mainframe e a causa de 300 milhoes e o if do programador

☕ Um Café no Bellacosa Mainframe

A Causa de R$ 300 Milhões e o IF do Programador: quando uma decisão técnica aparentemente banal pode virar parte da Justiça

🧑‍💻 IA judicial vista do chão da fábrica: requisitos, RAG, embeddings, chunking, logs, privilégios, fornecedores, insider risk e o dia em que o analista percebeu que aquele parâmetro escondido no YAML talvez fosse mais importante do que parecia

Imagine que você é analista de sistemas.

Nada de ministro.

Nada de desembargador.

Nada de grande escritório de advocacia.

Nada de reunião cinematográfica envolvendo uma mesa de mogno e quinze advogados discutindo uma causa bilionária.

Você está sentado diante de dois monitores.

São 14h37.

O Teams acabou de fazer aquele barulho que anuncia que alguém descobriu mais uma coisa “urgente”.

Existe um ticket aberto.

Uma história no backlog.

Uma especificação.

Talvez uma documentação no Confluence.

E uma frase aparentemente inocente:

“Implementar melhoria no mecanismo de recuperação semântica dos documentos processuais.”

Beleza.

Mais uma tarefa.

Você abre o código.

Encontra:

chunk_size: 1000
chunk_overlap: 150
top_k: 10
similarity_threshold: 0.72
reranking: true

Olha aquilo.

Toma um gole de café.

E começa a trabalhar.

Só existe um pequeno detalhe que talvez ninguém tenha colocado na User Story:

do outro lado daquele similarity_threshold pode existir uma causa de R$ 300 milhões.

Agora ficou interessante.

Porque no primeiro artigo desta série olhamos para o problema do ponto de vista do mercado jurídico.

Perguntamos:

Se conhecer melhor o comportamento de uma IA judicial pudesse produzir uma vantagem de apenas 1%, quanto essa informação poderia valer?

Agora vamos atravessar a parede.

Vamos entrar na fábrica.

Porque alguém precisa construir essa IA.

Alguém escolhe o modelo.

Alguém configura o banco.

Alguém define permissões.

Alguém cria os prompts.

Alguém decide o tamanho dos chunks.

Alguém implementa o ranking.

Alguém olha os logs.

Alguém possui acesso administrativo.

Alguém recebe o chamado às três da manhã quando tudo para.

E esse alguém pode ser simplesmente:

você.


⚠️ Isto continua sendo threat modeling

Antes que alguém derrube café no teclado:

este artigo não afirma que sistemas judiciais estejam sendo manipulados por técnicos, nem que programadores estejam vendendo informações, nem que determinada arquitetura seja utilizada por qualquer tribunal específico.

Estamos fazendo aquilo que profissionais de segurança deveriam fazer antes de colocar qualquer infraestrutura crítica em produção:

pensar como ela poderia falhar ou ser abusada.

Em mainframe fazemos isso há décadas.

Perguntamos:

Quem pode alterar este dataset?

Quem possui ALTER no RACF?

Quem consegue executar esta transação?

Quem consegue modificar esta PROC?

Quem pode alterar produção?

Quem lê o log?

Quem consegue apagar o log?

Então por que diante de IA deveríamos simplesmente escrever:

TRUSTED_AI=true

e ir embora?

😂

Não existe inteligência artificial mágica.

Existe software.

Existe infraestrutura.

Existem pessoas.

Existem privilégios.

Existem erros.

Existem incentivos.

Portanto:

AI SYSTEM
   =
CODE
+ DATA
+ MODEL
+ CONFIGURATION
+ INFRASTRUCTURE
+ PEOPLE
+ PROCESS

E qualquer veterano de produção sabe qual dessas variáveis costuma causar as histórias mais interessantes.


🏭 Bem-vindo ao chão da fábrica

Do ponto de vista executivo, talvez o projeto seja descrito assim:

“Solução baseada em Inteligência Artificial para aumentar eficiência na análise documental.”

Maravilhoso.

PowerPoint aprovado.

Seta azul.

Ícone de cérebro.

Nuvem.

Pessoa sorrindo.

ROI.

Transformação Digital.

Agora entregue isso para TI.

A arquitetura começa a ficar mais parecida com:

DOCUMENTOS
    |
    v
INGESTÃO
    |
    v
OCR / PARSER
    |
    v
NORMALIZAÇÃO
    |
    v
CHUNKING
    |
    v
EMBEDDINGS
    |
    v
VECTOR DATABASE
    |
    v
QUERY
    |
    v
RETRIEVAL
    |
    v
RERANKING
    |
    v
PROMPT
    |
    v
LLM
    |
    v
RESPOSTA / RESUMO
    |
    v
USUÁRIO HUMANO

Agora já não parece tão mágico.

Parece sistema.

E sistema possui parâmetros.


🧩 O maldito chunk_size

Imagine um processo gigantesco.

Milhares de páginas.

A IA não necessariamente despeja tudo de uma vez dentro de um modelo.

Documentos podem ser segmentados.

Chunks.

Pedaços.

Agora aparece uma decisão aparentemente técnica:

Qual será o tamanho do chunk?

500 tokens?

1.000?

2.000?

Onde quebramos?

Por página?

Por parágrafo?

Por seção?

Por estrutura semântica?

Mantemos overlap?

Quanto?

A pergunta parece pertencer ao Jira.

Só que pode haver uma consequência:

DOCUMENTO ORIGINAL

[ARGUMENTO]
[CONTEXTO]
[EXCEÇÃO]
[CONCLUSÃO]

Depois do processamento:

CHUNK 41
[ARGUMENTO]
[CONTEXTO...]

CHUNK 42
[...CONTEXTO]
[EXCEÇÃO]

CHUNK 43
[CONCLUSÃO]

E se a busca recuperar 41 e 43, mas não 42?

💥

A exceção desapareceu.

Não porque alguém censurou.

Não porque o modelo conspirou.

Não porque o advogado foi incompetente.

Porque:

top_k=2.

Bem-vindo ao Direito por configuração YAML.


🎛️ Parâmetro técnico também pode ser decisão de negócio

Essa é uma coisa que profissionais experientes aprendem dolorosamente.

Alguém diz:

“É só parâmetro técnico.”

Não.

Alguns parâmetros técnicos implementam política de negócio.

No banco:

MAX_TRANSACTION_VALUE

parece configuração.

Mas determina comportamento financeiro.

No WLM:

prioridade parece técnica.

Até você perceber quem recebe CPU quando tudo fica congestionado.

Num mecanismo de recuperação:

similarity_threshold=0.72

parece matemática.

Mas determina:

o que entra e o que fica fora.

E, dependendo do uso daquela informação posteriormente, isso pode ter consequência operacional.

Por isso o desenvolvedor precisa começar a perguntar:

Quem definiu 0,72?

Por quê?

Qual teste sustentou esse valor?

O que acontece com 0,70?

E 0,75?

Existe benchmark?

Existe documentação?

Existe aprovação?

Existe auditoria?

Porque daqui a três anos alguém pode perguntar:

“Por que este documento não apareceu?”

E a resposta não pode ser:

“Cara... acho que o Júnior colocou 0,72 porque no Stack Overflow alguém recomendou.”

😂


💰 Agora lembre dos R$ 300 milhões

É aqui que o desenvolvedor precisa entender o ambiente em que seu software existe.

Você pode estar trabalhando numa função que aparentemente altera 0,5% do comportamento de recuperação.

No laboratório:

irrelevante.

Num sistema de recomendação de receitas:

talvez irrelevante.

Num processo envolvendo R$ 300 milhões:

talvez não seja.

Isso não significa que aquele parâmetro determine uma decisão judicial.

Significa que precisamos analisar seriamente qualquer sistema que possa interferir em:

  • informação recuperada;

  • informação apresentada;

  • classificação;

  • priorização;

  • sumarização;

  • contexto oferecido ao usuário.

Porque existe diferença entre:

decidir

e

influenciar aquilo que estará disponível no momento da decisão.

Essa segunda categoria pode parecer muito mais inocente.

Nem sempre é.


🧑‍💻 “Mas eu só desenvolvo”

Ah.

Essa frase.

Todo veterano de TI conhece uma versão dela.

“Eu só desenvolvo.”

“Eu só mantenho.”

“Eu só cuido do banco.”

“Eu só faço deploy.”

“Eu só sou fornecedor.”

Até acontecer um incidente.

Então descobrimos que:

DESENVOLVEDOR
    ↓
possui acesso ao repositório

DEVOPS
    ↓
possui acesso ao pipeline

DBA
    ↓
possui acesso ao banco

CLOUD ADMIN
    ↓
possui acesso à infraestrutura

ML ENGINEER
    ↓
conhece o modelo

DATA SCIENTIST
    ↓
conhece os experimentos

SUPORTE
    ↓
enxerga logs

FORNECEDOR
    ↓
conhece arquitetura

ARQUITETO
    ↓
conhece tudo isso junto

De repente aparece uma pergunta desagradável:

Quem conhece informação suficiente para compreender como o sistema realmente se comporta?

E outra pior:

Quanto vale esse conhecimento fora da organização?


🕵️ Insider risk não significa “funcionário bandido”

Precisamos matar esse erro imediatamente.

Quando segurança fala de insider risk, não está dizendo:

“Nossos funcionários são criminosos.”

RACF não existe porque todo operador é ladrão.

Controle de acesso existe porque:

TRUST EVERYONE

é uma arquitetura de segurança ridícula.

Insider pode ser:

  • funcionário malicioso;

  • funcionário coagido;

  • credencial roubada;

  • funcionário enganado;

  • ex-funcionário;

  • terceiro;

  • fornecedor;

  • consultor;

  • conta administrativa esquecida;

  • erro humano.

E frequentemente o incidente mais espetacular começa com alguém perfeitamente honesto fazendo algo perfeitamente banal.


🔑 O problema da conta que pode tudo

Todo chão de fábrica conhece esta criatura mitológica:

a conta técnica eterna.

Criada em 2019.

Ninguém sabe quem pediu.

Está documentada numa planilha.

Possui privilégio demais.

Três sistemas dependem dela.

Ninguém ousa alterar porque:

“Vai saber o que quebra.”

😂

Agora coloque isso numa infraestrutura de IA.

Quem pode:

ALTER MODEL CONFIGURATION
ALTER SYSTEM PROMPT
ALTER RETRIEVAL SETTINGS
READ AUDIT LOGS
DELETE AUDIT LOGS
CHANGE EMBEDDING MODEL
CHANGE DATA SOURCE
MODIFY RERANKER
DEPLOY APPLICATION

Se a resposta for:

svc_ai_admin

temos outra pergunta:

quem consegue usar svc_ai_admin?

E se a resposta for:

“Ah... umas quinze pessoas.”

☕ Pegue mais café.

A reunião vai demorar.


🧱 Segregação de funções não ficou velha

IA parece moderna.

Os controles necessários são surpreendentemente antigos.

Quem desenvolve não deveria necessariamente aprovar sozinho.

Quem aprova não deveria necessariamente implantar sozinho.

Quem administra o sistema não deveria necessariamente conseguir apagar seus próprios rastros.

Mudanças críticas deveriam exigir controle apropriado.

Em outras palavras:

DEV
 ≠
APPROVER
 ≠
DEPLOYER
 ≠
AUDITOR

Bem-vindo novamente ao mainframe.

Nós já discutíamos isso quando “inteligência artificial” ainda fazia pessoas imaginarem HAL 9000.


📜 Configuration Management virou evidência

Imagine uma mudança:

- similarity_threshold: 0.72
+ similarity_threshold: 0.67

Quem alterou?

Quando?

Por quê?

Qual ticket?

Qual teste?

Quem aprovou?

Qual versão entrou em produção?

Quanto tempo permaneceu?

Quais consultas foram afetadas?

Conseguimos reproduzir o comportamento anterior?

Isso não é burocracia.

Em sistemas críticos:

configuração é evidência.

Git não é apenas ferramenta do desenvolvedor.

Pipeline não é apenas automação.

Log não é apenas coisa que enche disco.

Eles fazem parte da cadeia de responsabilidade.


📋 “Funciona na minha máquina” não será defesa

Imagine uma contestação futura:

“O sistema apresentou resultados diferentes para documentos juridicamente equivalentes.”

O desenvolvedor responde:

“Nos meus testes funcionava.”

😂

Parabéns.

Você acaba de invocar o espírito de dez mil incidentes de produção.

Sistemas de IA exigem testes que vão além do happy path.

Precisamos perguntar:

O que acontece se mudar a ordem dos parágrafos?

Se trocar sinônimos?

Se alterar formatação?

Se o documento for gigantesco?

Se possuir tabelas?

Se OCR errar?

Se houver rodapé repetitivo?

Se houver instruções adversariais dentro do documento?

Se uma jurisprudência aparecer citada de formas diferentes?

Se duas teses forem semanticamente semelhantes?

Isso é red teaming.


🔴 O Red Team precisa escrever petição também

Tradicionalmente, teste de software pergunta:

INPUT A → OUTPUT A
INPUT B → OUTPUT B

Para sistemas de IA, precisamos de testes mais perversos.

Pegue uma tese.

Crie cinco versões semanticamente equivalentes.

VERSÃO A
tradicional

VERSÃO B
simplificada

VERSÃO C
extremamente estruturada

VERSÃO D
ordem alterada

VERSÃO E
otimizada para recuperação

Agora execute.

Compare:

  • chunks recuperados;

  • ranking;

  • similaridade;

  • citações;

  • resumo;

  • resposta final.

Se pequenas alterações cosméticas provocarem diferenças enormes:

🚨

Não diga:

“LLM é assim mesmo.”

Investigue.


🎰 O desenvolvedor pode criar o gacha sem perceber

No artigo anterior brincamos com a ideia da:

Justiça Gacha.

O escritório rico desbloqueia:

SSR ALGORITHM WHISPERER +10

Mas existe uma pergunta anterior.

Quem construiu a mecânica do gacha?

Talvez ninguém deliberadamente.

Pode ter surgido simplesmente da soma de decisões locais:

um threshold aqui
+
um chunk ali
+
um ranking acolá
+
um prompt
+
um modelo
+
uma configuração
=
COMPORTAMENTO EMERGENTE

Esse é o tipo de coisa que assusta engenheiro experiente.

Não precisamos de vilão.

Precisamos apenas de complexidade.


📦 E o fornecedor?

Ahhh.

Agora chegamos à parte divertida.

Imagine que a instituição não construiu tudo.

Existe:

TRIBUNAL
   |
   +-- CONSULTORIA A
   |
   +-- CLOUD B
   |
   +-- MODELO C
   |
   +-- VECTOR DB D
   |
   +-- INTEGRADOR E
   |
   +-- SUPORTE F

Quem conhece a arquitetura completa?

Talvez ninguém.

Quem possui acesso?

Talvez gente demais.

Quem responde pelo comportamento final?

Excelente pergunta.

Esse problema não nasceu com IA.

Terceirização já produz cadeias complexas há décadas.

Mas IA acrescenta modelos, datasets, prompts, embeddings e serviços externos ao velho quebra-cabeça.


🧠 O prompt de sistema é código?

Essa discussão merece atenção.

Imagine:

Você é um assistente jurídico.
Analise os documentos recuperados...
Priorize...
Ignore...
Considere...
Resuma...

Isso não parece código tradicional.

Mas altera comportamento.

Então:

Quem pode modificá-lo?

Existe versionamento?

Code review?

Aprovação?

Testes?

Rollback?

Auditoria?

Se mudar uma frase do system prompt altera significativamente a saída, então aquela frase possui importância operacional.

Talvez devamos tratá-la com disciplina semelhante àquela aplicada a código.

PROMPT AS CODE

Bem-vindo ao próximo inferno do Change Management. 😂


🗃️ O log que ninguém pode apagar

Se um sistema influencia processos críticos, precisamos conseguir reconstruir acontecimentos.

Qual versão estava ativa?

Qual modelo?

Qual prompt?

Quais documentos foram recuperados?

Qual ranking?

Qual configuração?

Qual usuário fez a consulta?

Qual resposta foi apresentada?

Quais mudanças ocorreram antes?

Isso significa logs.

Mas existe um detalhe:

o administrador investigado não pode ser a única pessoa capaz de administrar os logs da investigação.

Parece óbvio.

Até você conhecer produção.

😂

Logs precisam possuir proteção adequada contra alteração, retenção definida, controles de acesso e auditoria.

Não porque presumimos culpa.

Porque precisamos de forensic readiness.


🧹 Garbage Collection humana

Existe outra coisa que ninguém gosta de fazer:

revogar acesso.

Projeto terminou.

Consultor saiu.

Funcionário mudou de equipe.

Fornecedor trocou.

Administrador mudou de função.

A conta continua.

Seis meses depois:

USER123
STATUS: ENABLED
LAST LOGIN: ???
PRIVILEGE: ADMIN

Quem é USER123?

“Acho que era o Marcelo.”

Quem é Marcelo?

“Terceirizado da consultoria antiga.”

😂😂😂

Meu querido.

REVOKE também é inteligência artificial.


💸 E finalmente: quanto vale aquilo que você sabe?

Essa talvez seja a pergunta que o profissional técnico raramente faz.

Você conhece:

  • arquitetura;

  • parâmetros;

  • vulnerabilidades;

  • comportamento;

  • limitações;

  • atalhos;

  • logs;

  • modelos;

  • integrações.

Normalmente isso é apenas:

conhecimento profissional.

Mas se determinado sistema participa de uma atividade com enorme valor econômico, algumas informações podem adquirir valor fora da organização.

Isso transforma documentação, configuração e conhecimento operacional em ativos de segurança.

E exige:

  • classificação;

  • least privilege;

  • need-to-know;

  • segregação;

  • monitoramento apropriado;

  • políticas de conflito;

  • gestão de terceiros.

Não porque o técnico seja suspeito.

Porque o conhecimento tornou-se valioso.


🧙‍♂️ O sysprog já conhece essa história

Existe algo deliciosamente antigo em tudo isso.

O pessoal do mainframe olha para:

Zero Trust
Privileged Access Management
Segregation of Duties
Immutable Logging
Change Management
Least Privilege

e pensa:

“Vocês inventaram nomes novos para coisas que meu RACF já discutia em 1987.”

😂

A IA judicial pode ser revolucionária.

Mas os fundamentos continuam reconhecíveis.

Quem acessa?

Quem altera?

Quem aprova?

Quem monitora?

Quem audita?

Quem consegue fazer sozinho?

Quem consegue apagar rastros?

Quem sabe informação que não deveria circular?

Essas perguntas sobreviveram a todas as gerações tecnológicas.


⚠️ Não coloque ética como requisito não funcional número 47

Outro perigo clássico:

REQUISITOS NÃO FUNCIONAIS

RNF01 Performance
RNF02 Disponibilidade
RNF03 Segurança
...
RNF47 Ética

😂

Não.

Quando um sistema participa de infraestrutura pública crítica, governança precisa entrar na arquitetura.

Não depois.

Não na apresentação.

Não na política corporativa que ninguém lê.

Na arquitetura.


🔥 O ticket de hoje pode virar a perícia de amanhã

Essa talvez seja a mensagem mais importante para quem está no chão da fábrica.

Você abre:

JIRA-84721

“Ajustar relevância da busca semântica.”

Parece pequeno.

Mas sistemas críticos possuem memória.

Daqui a três anos alguém pode perguntar:

Quem solicitou?

Quem implementou?

Quem aprovou?

Quais testes foram executados?

Por que esse valor?

Qual efeito foi observado?

Podemos reproduzir?

E aí existe uma diferença enorme entre:

"ajustamos porque parecia melhor"

e:

CHANGE-84721
Requisito: ...
Benchmark: ...
Teste adversarial: ...
Aprovação: ...
Deploy: ...
Resultado: ...
Rollback: ...

O segundo é chato.

O segundo salva carreiras.


☕ A pergunta que o analista deveria fazer

Quando receber aquele requisito:

“Implementar IA para auxiliar análise documental.”

não pergunte apenas:

“Qual modelo?”

Pergunte:

“Qual é a consequência se esse sistema estiver errado?”

Depois:

“Qual é a consequência se alguém descobrir como fazê-lo errar?”

E finalmente:

“Qual é a consequência se alguém descobrir como fazê-lo funcionar melhor para um usuário do que para outro?”

Essa terceira pergunta é a mais interessante.

Porque talvez o maior risco não seja a IA produzir uma resposta completamente absurda.

Isso todo mundo percebe.

O risco mais sofisticado é produzir uma diferença pequena, consistente e explorável.


🧑‍💻 Você não está construindo apenas software

Essa frase parece dramática.

E é deliberadamente.

Se você trabalha numa ferramenta de entretenimento, uma falha pode recomendar um filme ruim.

Se trabalha num e-commerce, uma falha pode ordenar produtos incorretamente.

Se trabalha num banco, pequenas decisões de software podem movimentar dinheiro.

Se trabalha numa infraestrutura pública crítica, pequenas decisões podem tocar direitos.

Por isso contexto importa.

O mesmo:

IF X > Y

pode ser irrelevante num sistema e crítico em outro.

Código não possui ética sozinho.

Contexto dá consequência ao código.


🧙‍♂️ O insider do século XXI talvez esteja sentado no seu squad

Não estou falando de criminoso.

Estou falando de conhecimento.

O desenvolvedor sabe uma coisa.

O DBA sabe outra.

O cientista de dados sabe outra.

O DevOps sabe outra.

O arquiteto consegue juntar algumas.

O fornecedor possui outras peças.

E alguém pode eventualmente possuir conhecimento suficiente para dizer:

“Eu sei como essa máquina lê.”

No século XX, informação privilegiada frequentemente significava:

“Eu sei antes.”

Na era dos dados:

“Eu tenho informação que você não possui.”

Na era algorítmica:

“Eu sei como você será classificado.”

Na era da IA:

“Eu sei como a máquina vai interpretar aquilo que você enviar.”

Quando essa interpretação participa de uma atividade economicamente valiosa, o conhecimento sobre ela também pode adquirir valor.


⚖️ E isso não é problema do jurídico

É nosso também.

Não adianta o jurídico criar uma política perfeita se:

admin/admin

continua funcionando.

Não adianta criar comissão de ética se ninguém versiona prompts.

Não adianta falar de transparência se ninguém consegue reproduzir a saída de três meses atrás.

Não adianta prometer imparcialidade se documentos semanticamente equivalentes produzem comportamentos radicalmente diferentes.

Não adianta colocar “Human in the Loop” no PowerPoint se o humano recebe apenas o resumo produzido pela máquina e nunca consegue enxergar como aquele resumo foi construído.

Governança precisa compilar.


☕ O último café antes do deploy

São 18h42.

Finalmente você terminou o ticket.

Pipeline verde.

Testes passaram.

Sonar feliz.

Container subiu.

Observabilidade funcionando.

O gerente pergunta:

“Podemos colocar em produção?”

Você olha novamente:

chunk_size: 1000
chunk_overlap: 150
top_k: 10
similarity_threshold: 0.72

Ontem aquilo era apenas configuração.

Hoje você percebe outra coisa.

Cada parâmetro representa uma decisão sobre como informação será encontrada, organizada e apresentada.

E naquele sistema informação pode participar de algo muito maior que software.

Você toma o último gole de café.

E antes de clicar em DEPLOY, faz uma pergunta que talvez devesse estar impressa em toda sala onde IA crítica é construída:

“Se alguém tivesse milhões de reais de incentivo para descobrir como explorar aquilo que estou colocando em produção, eu continuaria confortável com esta arquitetura?”

Se a resposta for sim:

deploy.

Se for não:

chame segurança.

Chame arquitetura.

Chame jurídico.

Chame governança.

Chame o Red Team.

E, pelo amor de Grace Hopper...

não coloque TODO: corrigir depois e mande para produção.

Porque naquela madrugada o ticket pode ser apenas JIRA-84721.

Daqui a alguns anos ele pode aparecer numa tela completamente diferente:

EVIDÊNCIA Nº 84721

☕🧙‍♂️⚖️💻

No mundo da IA crítica, o chão da fábrica também faz parte da governança.



☕ Um Café no Bellacosa Mainframe // Tribunal Digital

Justiça, Inteligência Artificial e Algoritmos: Quando o Código Entra no Tribunal

Seis processos imaginários para discutir problemas muito reais: decisões automatizadas, IA jurídica, vieses, responsabilidade, concursos, algoritmos opacos, milhões de reais em disputa e a pergunta inevitável — quem responde quando o IF decide?

> PAUTA DO PLENÁRIO
PROCESSO=HUMANO_VS_ALGORITMO
MATÉRIA=IA_JURÍDICA
VALOR_DA_CAUSA=INDETERMINADO
TRANSPARÊNCIA=QUESTIONADA
EXPLICABILIDADE=REQUIRED
HUMAN_IN_THE_LOOP=RECOMMENDED
STATUS=EM_JULGAMENTO
PROCESSO 001

Dick Vigarista, IA e o Concurso Pay-to-Win

Uma reflexão sobre concursos, inteligência artificial, assimetria tecnológica, vantagem competitiva e os limites entre ferramenta legítima, desigualdade e manipulação.

IA Ética Concurso
Autos digitais Processo 001
PROCESSO 002

O Golpe de Mestre Algorítmico

Quando decisões aparentemente objetivas escondem modelos, regras, prioridades e escolhas humanas por trás de uma interface matemática que parece neutra.

Algoritmo Risco Governança
Autos digitais Processo 002
PROCESSO 003

John Belushi, IA Jurídica e o Dia em que o Tribunal Encontrou o Algoritmo

Inteligência artificial aplicada ao Direito, automação de decisões, responsabilidade profissional e os riscos de transformar recomendação algorítmica em verdade jurídica.

IA Jurídica Tribunal Decisão
Autos digitais Processo 003
PROCESSO 004

A Causa de R$ 300 Milhões e o IF do Algoritmo

O que acontece quando centenas de milhões de reais podem depender de uma condição lógica, de um dado incorreto ou de uma decisão transformada em código?

R$ 300 milhões IF Auditabilidade
Autos digitais Processo 004
PROCESSO 005

A Causa de R$ 300 Milhões e o Algoritmo

Algoritmos entram definitivamente no território jurídico: cálculo, inferência, responsabilidade, transparência e a necessidade de explicar como uma máquina chegou à conclusão.

Algoritmo R$ 300 milhões Explicabilidade
Autos digitais Processo 005
PROCESSO 006

Better Call COBOL

Quando o processo jurídico encontra sistemas legados, regras de negócio históricas, programas COBOL, rastreabilidade e a necessidade de reconstruir tecnicamente o que realmente aconteceu.

COBOL Forense Mainframe
Autos digitais Processo 006

⚖️ Quando o algoritmo entra nos autos

Durante décadas, tribunais trabalharam essencialmente com documentos, testemunhos, perícias, cálculos, precedentes e interpretação humana. Agora existe um novo personagem na sala de audiência: o algoritmo.

Ele pode classificar documentos, calcular valores, localizar precedentes, sugerir decisões, identificar padrões e resumir milhares de páginas. O problema começa quando uma ferramenta deixa de auxiliar a decisão e passa a influenciar silenciosamente o resultado.

“Excelência, o algoritmo chegou a essa conclusão.”

A pergunta seguinte deveria ser: como?
01 Dados entram
02 Modelo processa
03 Algoritmo recomenda
04 Humano interpreta
05 Tribunal decide
06 Quem responde?

🤖 Automação

Velocidade, escala, pesquisa massiva, consistência, processamento documental e capacidade de analisar volumes impossíveis para uma única pessoa.

⚖

👨‍⚖️ Julgamento humano

Contexto, proporcionalidade, contraditório, responsabilidade, interpretação da prova e capacidade de justificar a decisão perante as partes.

📚 Justiça, IA, algoritmos e sistemas críticos

Esta coleção reúne análises do Bellacosa Mainframe sobre inteligência artificial aplicada ao Direito, responsabilidade algorítmica, automação judicial, decisões automatizadas, sistemas legados, COBOL, auditoria e grandes disputas financeiras.

  1. Dick Vigarista, IA e o Concurso Pay-to-Win — inteligência artificial, concursos, assimetria tecnológica, ética e vantagem competitiva.
  2. O Golpe de Mestre Algorítmico — algoritmos, decisões automatizadas, governança e falsa neutralidade matemática.
  3. John Belushi, IA Jurídica e o Dia em que o Tribunal Encontrou o Algoritmo — inteligência artificial no Judiciário, responsabilidade e decisão humana.
  4. A Causa de R$ 300 Milhões e o IF do Algoritmo — regras de negócio, lógica computacional, auditoria e riscos financeiros.
  5. A Causa de R$ 300 Milhões e o Algoritmo — explicabilidade, decisões algorítmicas, responsabilidade e sistemas críticos.
  6. Better Call COBOL — COBOL, mainframe, prova técnica, rastreabilidade e investigação de sistemas legados.
☕ BELLACOSA MAINFRAME // TRIBUNAL DIGITAL
“CÓDIGO EXECUTA. ALGORITMOS RECOMENDAM. MAS RESPONSABILIDADE PRECISA TER NOME.”

quinta-feira, 2 de abril de 2026

🔥💀 VOCÊ APRENDEU SEGURANÇA… MAS JÁ TESTOU SEU SISTEMA SOB ATAQUE?

 

Bellacosa Mainframe teste seu sistema sob ataque

🔥💀 VOCÊ APRENDEU SEGURANÇA… MAS JÁ TESTOU SEU SISTEMA SOB ATAQUE?

10 atividades práticas para sair da teoria e começar a proteger sistemas de verdade


☕ INTRODUÇÃO — A VERDADE QUE DÓI

Segurança não se aprende lendo.
👉 Se aprende quebrando sistema… e depois corrigindo.

Se você não praticar:

💣 você só vai descobrir o problema… quando o atacante descobrir primeiro.


🧪 ATIVIDADE 1 — ENCONTRE UM SQL INJECTION NO SEU PRÓPRIO SISTEMA

🎯 Objetivo

Pensar como atacante


💻 Faça isso

  • Pegue um input (API, tela, CICS, batch input)
  • Teste:
' OR 1=1 --

💥 Resultado esperado

👉 Se algo estranho acontecer… você tem vulnerabilidade


🧠 Versão COBOL

  • validar WS-FIELD
  • nunca confiar em input externo

💬 Comentário

“Se você não testar… alguém vai testar por você.”


🧪 ATIVIDADE 2 — REMOVA TODOS OS HARDCODED SECRETS

🎯 Objetivo

Eliminar o erro mais comum do mundo


💻 Procure no seu código

password
token
key
secret

💥 Se encontrar:

👉 você tem risco crítico


✅ Solução

  • usar Vault / RACF
  • variáveis externas

💬 Easter egg

👉 80% dos vazamentos começam assim


🧪 ATIVIDADE 3 — RODE UM SCAN DE SEGURANÇA

🎯 Objetivo

Ver o que você não vê


💻 Ferramentas

  • Snyk
  • SonarQube

💥 Resultado

👉 lista de vulnerabilidades reais


💬 Comentário

“Scanner não cria problema… só revela.”


🧪 ATIVIDADE 4 — EXPLORE UM XSS NA PRÁTICA

🎯 Objetivo

Ver o ataque funcionando


💻 Teste

<script>alert('XSS')</script>

💥 Resultado

👉 se executar → vulnerável


🧠 Versão real

  • portais corporativos
  • front-end conectado ao mainframe

🧪 ATIVIDADE 5 — ATUALIZE UMA DEPENDÊNCIA VULNERÁVEL

🎯 Objetivo

Entender SCA na prática


💻 Faça

  • rode scan
  • escolha uma lib vulnerável
  • atualize

💥 Resultado

👉 CVE desaparece


💬 Comentário

“Seu código pode estar perfeito… sua lib não.”


🧪 ATIVIDADE 6 — QUEBRE SEU PRÓPRIO LOGIN

🎯 Objetivo

Pensar como invasor


💻 Teste

  • inputs inválidos
  • SQL injection
  • brute force simples

💥 Resultado

👉 encontrar bypass


💬 Comentário

“Se login falha… todo sistema falha.”


🧪 ATIVIDADE 7 — IMPLEMENTE HEADERS DE SEGURANÇA

🎯 Objetivo

Blindar camada web


💻 Adicionar

  • Content-Security-Policy
  • HSTS
  • X-Frame-Options

💥 Resultado

👉 reduz ataque XSS e clickjacking


🧪 ATIVIDADE 8 — CRIPTOGRAFE UM ARQUIVO SENSÍVEL

🎯 Objetivo

Proteger dados em repouso


💻 Use OpenSSL

openssl enc -aes-256-cbc -salt -pbkdf2 -iter 2500

💥 Resultado

👉 arquivo ilegível sem senha


💬 Comentário

“Dado sem criptografia é dado público.”


🧪 ATIVIDADE 9 — CRIE UM MINI PIPELINE DE SEGURANÇA

🎯 Objetivo

Automação


💻 Simule

commit → scan → resultado → bloqueio

💥 Resultado

👉 segurança contínua


🧠 Versão mainframe

  • Jenkins + JCL + scan

🧪 ATIVIDADE 10 — FAÇA UM “ATAQUE CONTROLADO”

🎯 Objetivo

Pensar como hacker


💻 Faça

  • use OWASP ZAP
  • ataque sua própria aplicação

💥 Resultado

👉 visão real de risco


💬 Comentário

“Sistema seguro é sistema testado sob ataque.”


🧠 CONCLUSÃO — O DIFERENCIAL REAL

Depois dessas 10 atividades, você não é mais:

👉 um dev que escreve código

Você é:

👉 alguém que entende como o sistema quebra… e como evitar isso


💬 FRASE FINAL

“Segurança não é o que você implementa…
é o que sobrevive quando alguém tenta quebrar.”

 

Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

Vagner Renato Bellacosa trabalha com IBM Mainframe desde 1988 , é IBM Champion e especialista em COBOL, CICS, Db2, z/OS e IBM Z. Compartilha experiências profissionais, conhecimento técnico, história da computação e práticas do universo mainframe para aproximar novas gerações das tecnologias que sustentam empresas, bancos e governos ao redor do mundo.

IBM Champion IBM Z COBOL CICS Db2 z/OS Mainframe desde 1988
GitHub LinkedIn
Inicializando conteúdo...