Será que a qualidade do Sistema Bancário Financeiro pode ser colocada em cheque?

 

Extra!! Extra!! É possível realizar o pagamento de um boleto bancário vencido no Internet Home Banking.

Extra!! Extra!! Boa parte das empresas que paga pela emissão do boleto bancário não sabe que isto é pode ocorrer.

Lá estava eu pagando boletos no Internet Home Banking da Nossa Caixa. De repente me deparei com um boleto vencido. Pensei!!! Não será possível pagar isto no Home Banking e muito menos no caixa eletrônico. Vou ter que ir ao banco amanhã pagar junto ao caixa. Peguei o próximo boleto, este, por sua vez, cobrava a minha fatura do cartão de crédito. Lembrei que há alguns meses consegui pagar o cartão após o vencimento e os juros foram cobrados na próxima fatura. Passei então analisar a seqüência numérica do boleto vencido e do que cobrava a fatura do cartão de crédito (veja os números).

Boleto vencido:

10493.11713  12653.032784  70000.003668 6 41680000004500

Boleto da fatura do cartão de crédito:   

23792.37205  65265.039217  25011.260004 7 00000000000000

Concluí que:

Os quatro últimos dígitos do boleto representam o valor a ser pago. Os quatro primeiros da quarta seqüência representam a data de vencimento (neste caso temos um exemplo claro de data Juliana – ou seja 4168 dias a partir de uma data pré-estabelecida).

A partir desta conclusão, resolvi zerar a quarta seqüência no momento do pagamento, neste caso o código digitado para o boleto vencido seria: 10493.11713  12653.032784  70000.003668 6 00000000000000

O clicar em confirma pagamento, o software emitiu a seguinte mensagem: seqüência inválida e posicionou o cursor sobre o dígito verificador (em nosso caso o número 6 que se encontra isolado). Bastava somente tentar inserir um dígito válido, mole… mole… Por meio sucessivas tentativas, descobri que o dígito que validava a seqüencia era o 5. Ao teclar confirma, acessei a próxima tela que me possibilitava inserir a data de vencimento e o valor. Inseri a data de 10 de março e o valor de 45 reais. Resultado: BOLETO PAGO (veja  a cópia do boleto e o recibo de pagamento no final do texto).

Passei então a testar os demais bancos que tenho conta (CEF e Santander). Todos se portaram da mesma maneira.

Fiz uma pesquisa junto aos empresários que tenho contato (por favor inclua no conjunto o cedente do boleto abaixo) e perguntei: O banco, quando contratado para emitir um boleto bancário, comunica que é possível efetuar o pagamento (via internet) em atraso e sem juros? 100% dos entrevistados (cerca de 20) responderam NÃO.

A partir do pagamento e da pesquisa questiono:

Será que o sistema bancário é seguro o bastante para possibilitar que qualquer pessoa possa manipulá-lo?

Os engenheiros de software que projetaram o pagamento eletrônico do boleto (via home banking) têm conhecimento sobre tal fato?

Se sim, por que então não comunicam as empresas credoras?

Se não, é possível afirmar que o problema poderia ser detectado na atividade de teste? Lembre-se que a atividade em questão seria crucial neste contexto.

Será que os problemas de segurança e a atividade de teste de software são discutidos nos bancos universitários?

Este erro coloca em cheque também a qualidade dos profissionais envolvidos com o desenvolvimento do internet home banking?

Será que existe um processo de produção de software institucionalizado para o desenvolvimento do software para automação do sistema bancário?

O sistema bancário possui infra-estrutura para viabilizar a solução deste problema? Se sim, qual seria a solução?

Qual a abrangência do problema: focamos o contexto sistêmico ou o contexto de software?

Por fim, ressalto que não tenho uma resposta exata para as questões apresentadas. Por favor, fique a vontade para propor soluções ou novas questões. Lembre-se que de 09 de março a 10 de maio, ao enviar um comentário para o blog, você estará concorrendo a uma assinatura da revista Engenharia de Software disponibilizada pelo grupo DevMedia. Confira as regras do concurso em: envie um comentário e concorra a assinatura gratuíta da revista engenharia de software.

Aproveito a oportunidade para convidar a todos a participar do Engenharia de Software Conference, lá teremos a oportunidade de discutir com pesquisadores e profissionais de mercado vários temas relacionados à área da engenharia de software (inclusive a questão do teste de software). Espero encontrar muitos de vocês neste evento.

 boletopagar

boletopago

 Referência

Padrão FEBRABAN para definição de código de barras.

Abraços

J. A.

fabri@femanet.com.br

15 Responses to “Será que a qualidade do Sistema Bancário Financeiro pode ser colocada em cheque?”

  1. Renato Matheus Says:

    Isso me faz lembrar uma pessoa que me disse que era hacker e me mostrou o porque, de fato ele ia no endereço do browser e mudava alguns digitos para voltar a fatura de um boleto X e olha que isso faz 3 anos.

  2. enthroned Says:

    Isto sempre foi assim, no caso fica sob responsabilidade da empresa cedente fazer o controle. Existem casos que até pagar com valor menor é possível.

    No caso do vencimento acredito que poderia ter um controle maior mesmo, mas o que dizer do usuário alterar o valor? Bloqueando isto também se fecha a possibilidade de fornecer desconto/abatimento para o cliente.

    Não vejo muita solução, no caso o cedente que deve ter um sistema comprometido em verificar e emitir relatórios dos pagamentos “errados”.

  3. João Ribeiro Says:

    Boas questões a serem pensadas! Que atire a primeira pedra quem nunca fez uma transação bancária ou um pagamento eletronico e não ficou com aquela pulguinha atrás da orelha. Isso porque o Brasil tem “um sistema bancário seguro”…., acho que o período de testes não foi satisfatório.

  4. Carlos Pedrotti Says:

    Eu já vi uma pessoa fazendo isso na minha frente, e faz tempo também, mudar o browser para emissão de boletos, e chegava sempre seus pedidos sem ele pagar… Está mais do que na hora de mudar isso, pois o Sistema Bancário é realmente algo muito sério.

  5. Não tenho experiência direta com o desenvolvimento destes sistemas, mas conheço alguns detalhes que podem ajudar a esclarecer. O boleto só é relacionado com a cobrança a que ele se refere de fato na instituição onde ele é emitido (se é que ele foi emitido… essa fraqueza tem outras conseqüências mais sérias).

    Por esse motivo, como a comunicação entre as instituições não é permanente (falhas na rede… acontecem o tempo todo), e seria muito inconveniente se você ficasse incapacitado de pagar o boleto no dia do vencimento por causa de uma dessas falhas, a instituição que recebe aceita qualquer código de barras, desde que ele passe em um teste (que você acabou de descobrir, o dígito verificador).

    A instituição onde você paga o boleto, especialmente se for diferente da instituição de origem, não tem condições de saber se o código de barras é real e se o boleto foi de fato emitido. Seu pagamento é registrado, com o código de barras que você forneceu, o depósito é feito no banco e conta identificados pelas três primeiras séries de números. Depois a instituição de origem (ou as vezes só o cliente final) confere se o código equivale a um boleto emitido. Se o código de barras não conferir, a transação é estornada em uma data posterior.

    Em seu caso, se não for pela data, pode ser que seu pagamento seja ou não seja aceito, dependendo do critério da instituição de origem para validar a cobrança. A terceira seqüência contém especificamente um identificador único da cobrança à qual o boleto se refere. A instituição pode conferir através das três primeiras séries + data de pagamento + valor pago (usual com cartões de crédito e cobranças de valor variável), ou pode conferir através do código de barras inteiro (que inclui data e valor, usual para as cobranças de valor fixo).

    Provavelmente, quando forem verificar a cobrança, a data será acusada, e o depósito será estornado. Mas é estranho o IHB ter aceito uma data no passado para pagamento. Só esperando para ver.

  6. Higor Montoro Says:

    As vezes segurança é apenas um sentimento, e não uma realidade.

  7. Faço isso a mais de 2 anos =D.

  8. Aprerentemente é um erro comum no calculo de verificação de digito verificador.
    O algoritmo poderia simplesmente verificar se existe uma sequência de números igual no ultimo campo e declarar como errado.
    Outra opção seria pegar os campos referente a data (os 4 primeiros do ultimo campo) e verificar se é uma data valida. Também é simples.

    Acredito que esse erro se mantem porque eles querem, não porque eles não sabem, impossivel depois de tanto tempo não terem percebido isso. Como já disse, já usei dessa artimanha a 2 anos atrás. Ainda mais sendo um erro de fácil solução.

    Vale lembrar que o algoritmo validador de CPF aceita um CPF com todos os números iguais (faça um teste com zeros). Alguns algoritmos já fazem o tratamento com relação a isso, mas a maioria não! Sempre que um site me pede o CPF no cadastro eu passo ZEROS e muitas vezes passa.

  9. João Carlos L. Pinto Says:

    Parece que quanto mais se reza mais assombração aparece. Preocupam-se em tornar mais seguro o “acesso” às transações bancária via web, criando senhas, frases e tokens para que dificultar que pessoas não autorizadas acessem os home bankings, porém, fica de lado uma questão “tão comprometedora” como essa exemplificada. Dessa forma qualquer pessoa “de bem” com bons conhecimentos pode ser seduzida pelas facilidades da quebra de segurança.
    E NÓS PAGAMOS TÃO CARO PELOS SERVIÇOS BANCÁRIOS NESTE PAÍS!!!

  10. Gostei do questionamento, vou levar adiante.. contudo fiquei com uma dúvida: Será que o impedimento tem algo com o sistema de compensação bancária e seus custos? Digo isso porque sei que existem procedimentos, formas e prazos adotas por bancos para compensação de valores e que tudo isso tem um custo.

    Quero crer que é só desinformação mas não afasto a possibilidade de “medida de segurança administrativa”.

  11. Carlos Alberto P. Araujo Says:

    Penso que você, naquele momento, conseguiu resolver um problema: “Pagar um boleto vencido no Internet Home Banking”, mas bem que poderia ter pago os juros/multa devidos ao seu credor. Mesmo porque os procedimentos de cartão de crédito são diferentes de outros fornecedores. E no boleto que você pagou creio que vinham especificados os valores de mora/multa. Vale muito como alerta a todos, principalmente empresários.

  12. Guto, ainda bem que você não é um cliente comum. O Sistema bancário está baseado na segurança e integridade das informações, se as pessoas param de confiar nele, o sistema quebra.

  13. Eu nunca tinha percebido esta questão da data de vencimento, mas há muito tempo já tinha percebido que o valor pago não é obrigatoriamente o que está no boleto, já que o cliente pode digitar o valor que quiser na hora de pagar, inclusive colocando o desconto, a multa e os juros que quiser.

    Neste caso, acho que cabe à Instituição que faz a cobrança conferir se os valores que recebeu estão corretos e tomar as ações cabíveis caso não estejam.

    Vocês notaram a observação no final do comprovante de pagamento?

    “Divergências entre os dados do documento e os dados informados, bem como os acréscimos legais por pagamentos em atraso, são de responsabilidade exclusiva do cliente, que responderá legalmente pelas consequências.
    O Banco reserva o direito de efetuar débito na conta corrente ou poupança do cliente, quando apuradas diferenças entre o valor pago e o valor efetivamente devido.”

    Ou seja, o cliente até pode pagar o valor errado ou na data errada, porém ele deverá arcar com as consequências quando a Instituição que fez a cobrança descobrir — a menos, é claro, que a Instituição não faça controle e não descubra nunca.

    Não tenho nenhuma informação oficial, mas acredito que isto não seja erro de análise ou testes, e sim uma característica desejada do sistema. Esta flexibilidade permite às Instituições utilizarem boletos para cobrança de valores que podem ser variáveis, por exemplo, que tenham um desconto dependendo de alguma condição, ou quem que paga pode pagar um valor maior se desejado, para contribuir com a Instituição que recebe (não faz muito sentido em uma transação comercial, mas boletos podem ser usados para muitas coisas).

    Agora, se as Instituições que contratam a emissão de boletos do Banco não são informadas destas características, realmente há algo errado, porém não é de engenharia de software e sim de marketing ou vendas…

  14. Oi Guto. O que você levantou não é necessariamente uma falha, os sistemas via internet não tem como ficar verificando com a instituição que emitiu o boleto sua vericidade (ainda…), e com isso tem que aceitar as informações que o usuário envia. Como citado acima pelo colega Gustavo, vemos um “contratinho” que deixa bem claro que o usuário é responsável pelas informações sobre o boleto.

    Agora quanto aos questionamentos, acredito que eles não dizem respeito somente aos softwares relacionados aos bancos.

    Em todo tipo de desenvolvimento de softwares estamos sujeitos a falhas, visto que somos humanos.

    Porém, por se tratar de algo tão crítico, qualquer falha levantada pode assustar muita gente, então, vale a pena questionar e pressionar para que o modelo de desenvolvimento aplicado em sistemas bancários seja mais eficiente, mas, mesmo assim, falhas são praticamente inevitáveis.

    Aproveitando: agora sim temos vários interlocutores, a discussão vai ser legal! :-)

    Abraços.

  15. Gilberto Says:

    É uma característica desejável. O cartão de crédito não informa o valor a pagar, porque você pode pagar qualquer coisa entre o mínimo e o total da fatura. Estranho eles não inserirem a data de vencimento no código de barras nesse caso.
    Os boletos permitem isso. Já paguei o que eu achei justo no boleto e fui brigar com a empresa; fui cobrado no boleto seguinte da diferença e briguei de novo. O sistema deles viu que não saldei o total e ficou me cobrando.
    Sempre desconfiei que a data era a parte fraca dos boletos. Já paguei coisa vencida simplesmente dizendo que a data de vencimento era outra quando apareceu o campinho de data lá pra eu preencher. Não tive problema, não paguei multa, nada…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: