A Noite de 14 a 15 de Abril: Minha Resposta Pessoal à Desconexão do SMED

A Noite de 14 a 15 de Abril: Minha Resposta Pessoal à Desconexão do SMED

Um desenvolvedor compartilha sua experiência e soluções para lidar com a interrupção do SMED, o sistema de troca de informações entre órgãos governamentais russos. O artigo aborda as falhas na integração, a importância da auditoria e as implicações legais da indisponibilidade do sistema.

MundiX News·13 de maio de 2026·10 min de leitura·👁 7 views

ghostjima 25 minutos atrás A Noite de 14 a 15 de Abril: Minha Resposta Pessoal à Desconexão do SMED Complexo 7 minutos 626 Rust * Finanças em TI Segurança da Informação * Visão geral Da caixa de areia Eu soube da desconexão não pelas notícias. De manhã, um conhecido de um pequeno banco me escreveu: “tudo caiu, os passaportes não estão sendo verificados, o online parou”. Naquele momento, eu estava terminando de escrever o tratamento de erros em smev4-rs , uma crate Rust para trabalhar com SMED 4. Coincidência, coincidência. As primeiras horas foram gastas para entender o que estava acontecendo. O Ministério da Digitalização disse que o transporte estava em ordem. As reclamações vieram tanto de quem estava no SMED 3 quanto de quem estava migrando para o SMED 4. Então, o problema não estava na versão do protocolo. Paralelamente, nos chats dos desenvolvedores começou o que eu chamaria de “depuração coletiva em voz alta”. As pessoas postavam os status de seus sistemas, testavam diferentes endpoints, comparavam códigos de resposta. Alguns tinham 403, outros 503 sem corpo, outros tinham solicitações simplesmente penduradas. Isso por si só foi informativo: tal dispersão com uma falha simultânea indicava que o problema não estava na camada de transporte. Quando ficou claro que o Ministério do Interior havia fechado o acesso aos seus dados como operador do GIS, algo estalou na minha cabeça: este é exatamente o cenário para o qual eu estava escrevendo uma clara diferenciação de tipos de erros nas últimas semanas. E não porque eu previa abril. É que quando você se integra com dados estatais por muito tempo, você entende que “SMED está fora do ar” e “o Ministério do Interior fechou o acesso” são situações completamente diferentes com consequências diferentes. O primeiro se conserta sozinho, o segundo não. Logo após esses eventos de abril, escrevi sobre o que especificamente está errado nas integrações típicas e como eu pensei sobre isso no processo de desenvolvimento da minha crate. Por que tudo parou, embora o transporte estivesse funcionando O SMED 4, em comparação com a terceira versão, fez uma coisa boa: introduziu um modelo centralizado de gerenciamento de acesso baseado em funções. Controle detalhado sobre quem e a quais dados tem acesso. Para segurança, isso é correto. Efeito colateral: uma ação administrativa do lado do proprietário dos dados leva ao fato de que todas as mais de 500 organizações conectadas perdem o acesso de forma síncrona. Não é preciso quebrar nada no transporte. Configuração na interface, e pronto. Este não é um bug do SMED 4, é uma consequência de sua arquitetura. E é preciso viver com isso ao projetar a integração. A situação legal sobre a qual poucas pessoas falam Enquanto os eventos se desenrolavam, reli a Regulamentação do Banco Central 444-P. O item 2.2 da regulamentação e a carta explicativa do Banco Central de dezembro de 2023 dizem diretamente: para verificar um passaporte em relação às informações do Ministério do Interior durante a identificação remota, existe apenas uma maneira legal - SMED. Simplesmente não existem outros sistemas abertos com o status legal necessário. ESIA é a identificação do usuário, não a verificação do documento. O site do Ministério do Interior é um serviço de referência, não é adequado para os fins da Lei Federal 115. Os agregadores comerciais não criam uma base legal suficiente. Ou seja, na ausência de SMED, o banco fisicamente não pode cumprir o requisito da lei e, ao mesmo tempo, não tem alternativa legal. Situação ruim. Em 20 de abril, alguns bancos receberam acesso de volta. Eram bancos que conseguiam confirmar a presença de um certificado FSTEC de acordo com os novos requisitos. Em 1º de março de 2026, entrou em vigor a Ordem FSTEC nº 117. Ela expandiu os requisitos de proteção para sistemas que recebem dados de sistemas de informação estatais. Como a base de dados do Ministério do Interior é um sistema de informação estatal, os bancos conectados a ela também devem cumprir os requisitos. O Ministério do Interior usou isso como base para a desconexão. O que especificamente quebra nas integrações Conversei com várias equipes após o incidente. O problema comum é um: qualquer erro de um serviço externo é compactado em um único status. Algo deu errado, escrevemos no log “smev error”, seguimos em frente. Para relatórios regulatórios, isso é uma catástrofe. Porque “403 do Ministério do Interior como resultado de uma decisão administrativa” e “503 porque o agente está sobrecarregado” são eventos fundamentalmente diferentes. Eles têm um caminho de degradação diferente, um significado diferente para conformidade, uma linha diferente no registro de auditoria. Uma das equipes com quem conversei descobriu isso em 15 de abril: eles tiveram um “erro de serviço”, começaram a reiniciar os agentes, incomodar o suporte de seu fornecedor e só depois de algumas horas descobriram que o problema não era deles. Durante todo esse tempo, havia a mesma linha ilegível nos logs. Em smev4-rs , eu resolvi isso por meio de um tipo separado. O classificador aceita o status HTTP e a presença do cabeçalho Retry-After e retorna um enum: let reason = UnavailableReason::from_http_status(403, false); // ProviderAccessDenied — o proprietário fechou o acesso

let reason = UnavailableReason::from_http_status(503, true); // QuotaOrRateLimit — 503 com Retry-After = limite, e não degradação

let reason = UnavailableReason::from_http_status(503, false); // ServiceDegraded — simplesmente ruim No tratamento de erros do cliente, isso se parece com: match xml { Ok(body) => { /* tudo bem */ } Err(SmevError::Unavailable { reason }) => { // aqui caem 403, 423, 429, 503 // reason contém a classe de erro e o status log_incident("provider_unavailable", &reason); route_to_fallback(); } Err(SmevError::Timeout) => { log_incident("transport_timeout", "polling_limit_reached"); route_to_manual_queue(); } Err(SmevError::Payload(msg)) if msg.contains("not found or expired") => { // o ticket expirou — este não é um problema de disponibilidade // este é o gerenciamento de sessão no lado do código de chamada log_incident("ticket_expired", &msg); } Err(e) => { log_incident("unexpected_error", &e.to_string()); } } 404 é tratado separadamente: um ticket expirado é retornado como SmevError::Payload , porque esta é outra classe de problema. SMED 3 e SMED 4 retornam dados diferentes Este é um detalhe sobre o qual eu quase não vi uma explicação normal em lugar nenhum. SMED 3, ao verificar um passaporte (tipo de informação MVDR23), retorna três campos: status, código do motivo da invalidade, data a partir da qual o passaporte se tornou inválido. SMED 4 (vitrine rfp_check) retorna apenas o status. Isso significa que a organização que migrou para SMED 4 e desativou o SMED 3 perdeu dois campos. E os campos são significativos: “o passaporte é inválido porque um novo foi emitido” e “o passaporte é inválido porque está na base de dados de roubados”. Estas são situações muito diferentes com ações diferentes. Sem o código do motivo, a diferença é indistinguível. Eu pensei sobre isso ao projetar o roteador. Ainda não existe no smev4-rs (planejado para o futuro), mas arquitetonicamente é correto manter ambas as versões sob uma única interface: SMED 4 como o canal principal, SMED 3 para dados estendidos conforme necessário. Auditoria de tentativas em caso de falha Uma coisa que o dia 15 de abril revelou com força: muitas organizações não têm um registro de que a tentativa de verificação foi sequer feita. E a Lei Federal 115 não se interessa apenas pelo resultado bem-sucedido. Ao verificar, você precisa provar que o banco tentou cumprir o requisito. Mesmo que o serviço externo não tenha respondido. Isso significa: idealmente, você deve ter um log com um carimbo de data/hora de cada tentativa, um hash da solicitação e o motivo da falha. Não “o sistema caiu às 2:15”, mas “tentativa de verificação às 2:15:43.219, status ProviderAccessDenied, redirecionado para a fila manual”. A diferença é que o segundo é uma prova, o primeiro é apenas um log. Em smev4-rs , existem duas opções com auditoria. Simples, para uma tentativa: let fingerprint = SmevClient::request_fingerprint(canonical_request_bytes);

let (result, audit) = client .poll_response_audited(ticket, fingerprint) .await;

// audit é criado independentemente do resultado // com Unavailable — marcador SMEV_UNAVAILABLE // com Timeout — SMEV_TIMEOUT // em caso de sucesso — hash da resposta

persist_audit_entry(&audit).await?; E para uma série de tentativas em uma sessão, com uma cadeia contínua: let nonce = SmevClient::request_fingerprint(canonical_request_bytes);

let (result1, audit1) = client .poll_response_chained(ticket1, nonce, None) .await;

// o segundo se refere ao primeiro let (result2, audit2) = client .poll_response_chained(ticket2, nonce, Some(&audit1)) .await; Cada registro contém o hash do anterior. Inserir ou remover um registro sem violar a cadeia é impossível. Isso é especialmente importante quando você leva artefatos para verificação. O hash da solicitação é calculado a partir de uma representação canônica sem dados pessoais em sua forma explícita. Isso não é apenas privacy-by-design, mas também prático: armazenar a prova de exatamente o que foi solicitado, sem armazenar os próprios dados. Sobre desduplicação e dinheiro A Resolução do Governo nº 1687 introduziu a tarifação do SMED em novembro de 2025. Além disso, o Ministério do Interior quer uma tarifa separada para seus dados. Os valores específicos ainda estão em processo regulatório, mas a direção é clara. Solicitações duplicadas com qualquer tarifação resultam em custos adicionais. request_fingerprint na crate dá um hash BLAKE3 determinístico dos bytes de entrada. A mesma solicitação, o mesmo hash. Pode ser usado como uma chave de cache: let key = SmevClient::request_fingerprint(canonical_request_bytes);

if let Some(cached) = cache.get(&key, ttl_secs) { return Ok(cached); }

let result = client .poll_response_with_config(ticket, config) .await?;

cache.set(&key, &result, ttl_secs); A lógica é simples: uma solicitação real na verificação inicial, sessões repetidas são retiradas do cache. Isso se pagará rapidamente quando uma tarifa aparecer. Sobre rastreamento O cliente registra através do traço padrão tracing . Se você já tem tracing-subscriber , funciona simplesmente: DEBUG smev4_rs: starting SMEV queue polling ticket="tkt_abc" max_attempts=12 WARN smev4_rs: SMEV provider unavailable ticket="tkt_abc" status=503 reason=ServiceDegraded DEBUG smev4_rs: SMEV queue response ready ticket="tkt_xyz" attempts=3 aviso para indisponibilidade e timeouts. Esses eventos devem acionar alertas, e não apenas cair no fluxo padrão de logs de depuração. Separatamente sobre a certificação FSTEC Após 20 de abril, ficou claro: o certificado FSTEC deixou de ser apenas um pedaço de papel para o serviço de segurança. Tornou-se uma condição para o acesso a uma função crítica. A Ordem nº 117 mudou o modelo: agora este não é um projeto único, mas um processo contínuo com o recálculo de indicadores e prazos rígidos para a eliminação de vulnerabilidades (críticas em 24 horas). Para as equipes que estão acostumadas a atualizar o certificado a cada poucos anos, este é um ritmo operacional diferente. Os bancos que tinham um certificado atualizado receberam acesso de volta em 20 de abril. O restante continua parado. No final A falha de acesso em abril de 2026 não é um evento único. Em 2021, o Ministério do Interior anunciou o fechamento do arquivo offline de passaportes. Em 2023, fechou. Em 2026, fechou temporariamente o acesso SMED. O padrão é o mesmo: a dependência de processos críticos do circuito estatal, que não tem obrigações contratuais de garantir a continuidade para os consumidores. Este é um fato arquitetônico que precisa ser levado em consideração ao projetar. Crate smev4-rs com a implementação sobre a qual escrevi, é publicado em crates.io sob Apache-2.0: smev4-rs . O código-fonte está disponível no GitHub . Se alguém estiver trabalhando com SMED em Rust, dê uma olhada, ficarei feliz com o feedback. Fontes Bancos perderam o acesso ao serviço de verificação de passaportes do Ministério do Interior · Kommersant, 16 de abril de 2026 Bancos perderam o acesso aos dados de passaporte dos clientes através da base de dados do Ministério do Interior · RBC, 16 de abril de 2026 Os maiores bancos recuperaram o acesso à verificação de passaportes de clientes · Kommersant, 20 de abril de 2026 Documentos voltaram à circulação · Kommersant, 20 de abril de 2026 Mensagem de informação FSTEC nº 240/22/1492 · GARANT Ordem FSTEC nº 117 Resolução do Governo nº 1687 444-P e SMED · ConsultorPlus Descrição do serviço SMED 3+4 · Quorum Tags: smed fstec bancos fintech arquitetura 115-fz segurança da informação rust Hubs: Rust Finanças em TI Segurança da Informação 0 0 0 1 Karma @ghostjima Usuário Assinar Habr Carreira Fluxo de Back-end disponível 24 horas por dia, 7 dias por semana, graças ao apoio dos amigos do Habr Habr Cursos para desenvolvedores back-end PUBLICIDADE Prática, Hexlet, SkyPro, cursos do autor — reunimos todos e pedimos descontos. Resta escolher! Ir Ir para o fluxo de back-end Comentar Melhores do dia Semelhante Mostrar os melhores de todos os tempos

🛡️⚡

Pare de pesquisar. Comece a hackear.

O MundiX é seu copiloto de pentest com IA: comandos exatos, análise de outputs e próximo passo na kill chain — em segundos.

Testar grátis por 7 dias →

Sem cartão para começar · Planos a partir de R$49/mês

📤 Compartilhar & Baixar

🧰 Ferramentas recomendadas

Divulgação: alguns links são patrocinados. Podemos receber comissão se você comprar — sem custo extra para você. Só indicamos o que faz sentido para a comunidade.

Aprendendo Kali Linux: Teste de segurança, pentest e hacking ético

Aprendendo Kali Linux: Teste de segurança, pentest e hacking ético

Com centenas de ferramentas pré-instaladas, a distribuição Kali Linux facilita o trabalho de os profissionais de segurança começarem a fazer testes de segurança rapidamente. No entanto, com mais de 600 ferramentas em seu arsenal, o Kali Linux também pode ser desafiador. A nova edição deste prático livro abrange as atualizações nas ferramentas e inclui uma melhor abordagem da análise forense e da engenharia reversa. Ric Messier, autor, não fica apenas no teste de segurança, mas também faz uma abordagem sobre a execução de análise forense, incluindo a análise em disco e na memória, assim como alguma análise básica de malware. • Explore as diversas ferramentas disponíveis no Kali Linux • Entenda o valor do teste de segurança e examine os tipos de teste disponíveis • Aprenda os aspectos básicos do pentest em todo o ciclo de vida do ataque • Instale o Kali Linux em vários sistemas, tanto físicos quanto virtuais • Descubra como usar diferentes ferramentas destinadas à segurança • Estruture um teste de segurança baseado nas ferramentas do Kali Linux • Estenda as ferramentas do Kali para criar técnicas de ataque avançadas • Use o Kali Linux para ajudar a criar relatórios quando o teste terminar “A abordagem concisa, clara e baseada na experiência adotada por Ric Messier para a introdução do Kali Linux e dos testes de cibersegurança é incomparável. Este livro é uma leitura excelente e acessível para iniciantes e um recurso valioso para qualquer pessoa.” —Alexander Arlt, Consultor sênior de segurança, Google

Ver na Amazon
Gshield 2 em 1 Hub Extensor Conector USB-C + USB-A e Adaptador de Rede Ethernet LAN RJ45 com 3 Entradas USB 3.0 até 5 Gbps em Liga de Alumínio para Computador e Notebook, Cinza

Gshield 2 em 1 Hub Extensor Conector USB-C + USB-A e Adaptador de Rede Ethernet LAN RJ45 com 3 Entradas USB 3.0 até 5 Gbps em Liga de Alumínio para Computador e Notebook, Cinza

Compatível com portas USB-C e USB-A, ideal para ampliar a conectividade de dispositivos como MacBook Pro e outros com portas USB-C. Inclui um adaptador USB-A extra, proporcionando uma conexão Ethernet estável e veloz de até 1 Gbps, perfeita para filmes, jogos online e videoconferências. Oferece três portas USB 3.0 com velocidades de transferência de até 5 Gbps, permitindo conectar mouse, teclado, discos rígidos e outros periféricos. Fabricado em alumínio durável, garantindo longa vida útil e resistência ao uso diário. Design compacto e leve, ideal para viagens de negócios e uso diário, facilitando o transporte e armazenamento. Funciona com Windows 10/8.1/8, Mac OS e Chrome OS, oferecendo versatilidade incomparável para diversas necessidades de conectividade. Assegura uma conectividade estável e rápida, perfeita para tarefas exigentes como transferência de dados, streaming e mais.

Ver na Amazon
Hacking APIs: Breaking Web Application Programming Interfaces

Hacking APIs: Breaking Web Application Programming Interfaces

Hacking APIs is a crash course on web API security testing that will prepare you to penetration-test APIs, reap high rewards on bug bounty programs, and make your own APIs more secure. You'll learn how REST and GraphQL APIs work in the wild and set up a streamlined API testing lab with Burp Suite and Postman. Then you'll master tools useful for reconnaissance, endpoint analysis, and fuzzing, such as Kiterunner and OWASP Amass. Next, you'll learn to perform common attacks, like those targeting an API's authentication mechanisms and the injection vulnerabilities commonly found in web applications. You'll also learn techniques for bypassing protections against these attacks. In the book's nine guided labs, which target intentionally vulnerable APIs, you'll practice: Enumerating APIs users and endpoints using fuzzing techniques Using Postman to discover an excessive data exposure vulnerability Performing a JSON Web Token attack against an API authentication process Combining multiple API attack techniques to perform a NoSQL injection Attacking a GraphQL API to uncover a broken object level authorization vulnerability

Ver oferta
Gray Hat Hacking: The Ethical Hacker's Handbook, Sixth Edition

Gray Hat Hacking: The Ethical Hacker's Handbook, Sixth Edition

Up-to-date strategies for thwarting the latest, most insidious network attacks This fully updated, industry-standard security resource shows, step by step, how to fortify computer networks by learning and applying effective ethical hacking techniques. Based on curricula developed by the authors at major security conferences and colleges, the book features actionable planning and analysis methods as well as practical steps for identifying and combating both targeted and opportunistic attacks. Gray Hat Hacking: The Ethical Hacker's Handbook, Sixth Edition clearly explains the enemy's devious weapons, skills, and tactics and offers field-tested remedies, case studies, and testing labs. You will get complete coverage of Internet of Things, mobile, and Cloud security along with penetration testing, malware analysis, and reverse engineering techniques. State-of-the-art malware, ransomware, and system exploits are thoroughly explained. Fully revised content includes 7 new chapters covering the latest threats Includes proof-of-concept code stored on the GitHub repository Authors train attendees at major security conferences, including RSA, Black Hat, Defcon, and B-Sides

Ver na Amazon
Bloqueador USB de privacidade de porta USB para PC, notebook, bloco de laptop,

Bloqueador USB de privacidade de porta USB para PC, notebook, bloco de laptop,

Proteção de privacidade aprimorada: protege o link de transmissão de dados para evitar roubo de informações, fornecendo proteção de segurança robusta que protege a privacidade do usuário durante transferências de arquivos e garante uma conexão segura para interações de dispositivos sem preocupações em vários ambientes Uso a longo prazo: a camada protetora resistente ao desgaste, combinada com um corpo de metal resistente, oferece gerenciamento de calor confiável e qualidade duradoura durante o uso diário Entrega eficiente de energia: a tecnologia de chip inteligente garante a identificação automática dos requisitos de energia, fornecendo carregamento eficiente alinhando-se com vários protocolos de carregamento rápido para maior conveniência Proteção contra sobrecarga: evitando riscos de sobrecarga, este bloqueador de dados USB protege a vida útil da bateria e garante um desempenho estável, mantendo um fluxo estável de energia para melhorar a longevidade do dispositivo de forma eficaz Prático de transportar: com atenção à portabilidade, este bloqueador de dados USB oferece um design compacto que é leve e fácil de transportar, melhorando a conveniência do usuário e operação eficiente

Ver na Amazon

📩 Newsletter MundiX

Receba novidades de cibersegurança + um checklist de pentest grátis. Sem spam.

Ao assinar você concorda em receber e-mails. Cancele quando quiser.