Atruvia hustet beim Saldenabruf

NP-Portal

Betreff:

Re: Atruvia hustet beim Saldenabruf

 ·  Gepostet: Gestern um 09:32 Uhr  ·  #187958
Ich hatte gestern Abend in java.security unter jdk.tls.disabledAlgorithms "ChaCha20, ChaCha20-Poly1305" hinzugefügt.

Hat aber nix gebracht. Heute Nacht wieder bei 7 (von ca.1000) Konten der Fehler mit javax.crypto.AEADBadTagException: Tag mismatch

hibiscus

Betreff:

Re: Atruvia hustet beim Saldenabruf

 ·  Gepostet: Gestern um 13:04 Uhr  ·  #187961
Waren die Stacktraces die selben? Vielleicht hat die Cipher-Abschaltung nicht richtig geklappt?

NP-Portal

Betreff:

Re: Atruvia hustet beim Saldenabruf

 ·  Gepostet: Gestern um 13:44 Uhr  ·  #187962
ich sehe unglücklicherweise keinen vollen Stack Trace, sondern nur das, was hbci4java mir mit HBCIExecStatus .toString() zurückgibt.

Code
2026-09-17 04:37:09,220 CEST NpBankTool SEVERE cb.HBCI.error()
Dialog for '2664264046':
DIALOG-INIT:
3060:Bitte beachten Sie die enthaltenen Warnungen/Hinweise.
3920:Zugelassene TAN-Verfahren für den Benutzer p:946 (4: DialogInit.ProcPrep)
3076:Starke Kundenauthentifizierung nicht notwendig. (5: DialogInit.TAN2Step7)
0901:*PIN gültig. (4: DialogInit.ProcPrep)
0020:*Dialoginitialisierung erfolgreich (4: DialogInit.ProcPrep)
DIALOG-MSG #1:
javax.crypto.AEADBadTagException: Tag mismatch!
DIALOG-END:
0010:Nachricht entgegengenommen.
0100:Dialog beendet.


Und das sieht genauso aus wie zuvor.

Hätte ich eine Chance, mehr Traces aus hbci4java herauszukitzeln? Dann können wir vielleicht das Problem eingrenzen.

hibiscus

Betreff:

Re: Atruvia hustet beim Saldenabruf

 ·  Gepostet: Gestern um 14:30 Uhr  ·  #187963
Die Exceptions kriegst du eigentlich über deinen HBCICallback in der log-Funktion.

NP-Portal

Betreff:

Re: Atruvia hustet beim Saldenabruf

 ·  Gepostet: Gestern um 15:49 Uhr  ·  #187964
Ah ja, ich sehe, da kommt sogar ein StackTraceElement mit. Dann werde ich mal damit heute Nacht das Log vollballern ...

Raimund Sichmann

Betreff:

Re: Atruvia hustet beim Saldenabruf

 ·  Gepostet: Gestern um 22:11 Uhr  ·  #187965
Zitat geschrieben von infoman

@Raimund
Ein Portal darf für den Abruf von Kontoumsätzen grundsätzlich auch FinTS nutzen. XS2A ist nicht automatisch vorgeschrieben, nur weil es sich um ein Portal handelt.
Bei Zahlungsauslösungen ist dagegen XS2A bzw. die entsprechende PSD2-Schnittstelle relevant.

wir haben aber die Problematik ja bereits ganz am Anfang angerissen forum/topic.php?t=26689
(PS: DATEV UO macht es ja auch so, unterschiedliche Zugangswege = XS2A und FinTS - vormals gab es nur HBCI/FinTS)
ja, der Thread beschreibt das Problem, stützt aber doch meine Meinung und ich bin auch ziemlich sicher, das anders gelernt zu haben. Meines Wissens dürfen Drittdienstleister FinTS seit PSD2 nur dann zum Umsatzabruf von Zahlungskonten nutzen, wenn das über XS2A nicht angeboten wird. In deinem Beispiel nutzt die DATEV FinTS z.B. für die Einreichung von Lastschriften, für den Abruf von Zahlungskonten aber durchweg XS2A, wobei alles über FinAPI als Dienstleister läuft. Das Thema hat natürlich nichts mit dem Problem hier zu tun, aber wenn Rechenzentralen oder Banken hier aufmerksam mitlesen, kann das durchaus problematisch werden für NP-Portal.
Edit: Falls Diskussionsbedarf besteht, können wir das in dem verlinkten Thread gerne weiterführen.

NP-Portal

Betreff:

Re: Atruvia hustet beim Saldenabruf

 ·  Gepostet: Heute um 10:44 Uhr  ·  #187968
Sind ja nur 5,7 MB Logfile geworden.
(wegen dem StackTraceElement hatte ich schon Bedenken, ich bekäme für jede Zeile einen Aufruf des log()-Callback)

Es gibt 2 Varianten von Fehlern.

1. Variante: Ich konnte einen HBCIHandler erzeugen, es knallt erst beim Abruf der Umsätze.
Code

2026-09-18 04:35:00,958 CEST NpBankTool INFO cb.HBCI.log()
org.kapott.hbci.exceptions.HBCI_Exception: error while sending message to HBCI server
        at org.kapott.hbci.comm.CommPinTan.ping(CommPinTan.java:157)
        at org.kapott.hbci.comm.Comm.pingpong(Comm.java:72)
        at org.kapott.hbci.manager.HBCIKernelImpl.rawDoIt(HBCIKernelImpl.java:348)
        at org.kapott.hbci.manager.HBCIDialog.doJobs(HBCIDialog.java:287)
        at org.kapott.hbci.manager.HBCIDialog.doIt(HBCIDialog.java:467)
        at org.kapott.hbci.manager.HBCIHandler.execute(HBCIHandler.java:545)
        at cb.HBCI.doKonto(HBCI.java:461)
        at cb.HBCI.run(HBCI.java:390)
        at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: javax.net.ssl.SSLException: (bad_record_mac) Tag mismatch!
        at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:133)
        at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:383)
        at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:326)
        at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:321)
        at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:123)
        at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1509)
        at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1424)
        at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:455)
        at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:426)
        at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:596)
        at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:190)
        at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:142)
        at org.kapott.hbci.comm.CommPinTan.ping(CommPinTan.java:147)
        ... 8 more
Caused by: javax.crypto.AEADBadTagException: Tag mismatch!
        at java.base/com.sun.crypto.provider.GaloisCounterMode$GCMDecrypt.doFinal(GaloisCounterMode.java:1493)
        at java.base/com.sun.crypto.provider.GaloisCounterMode.engineDoFinal(GaloisCounterMode.java:447)
        at java.base/javax.crypto.Cipher.doFinal(Cipher.java:2515)
        at java.base/sun.security.ssl.SSLCipher$T13GcmReadCipherGenerator$GcmReadCipher.decrypt(SSLCipher.java:1933)
        at java.base/sun.security.ssl.SSLSocketInputRecord.decodeInputRecord(SSLSocketInputRecord.java:264)
        at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:181)
        at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:111)
        ... 16 more

2026-09-18 04:35:00,959 CEST NpBankTool INFO cb.HBCI.log()
aborting current loop because of errors
        org.kapott.hbci.manager.HBCIDialog.doJobs(HBCIDialog.java:327)

2026-09-18 04:35:01,112 CEST NpBankTool SEVERE cb.HBCI.error()
Dialog for '635860603':
DIALOG-INIT:
3060:Bitte beachten Sie die enthaltenen Warnungen/Hinweise.
3920:Zugelassene TAN-Verfahren für den Benutzer p:946 (4: DialogInit.ProcPrep)
3076:Starke Kundenauthentifizierung nicht notwendig. (5: DialogInit.TAN2Step7)
0901:*PIN gültig. (4: DialogInit.ProcPrep)
0020:*Dialoginitialisierung erfolgreich (4: DialogInit.ProcPrep)
DIALOG-MSG #1:
javax.crypto.AEADBadTagException: Tag mismatch!
DIALOG-END:
0010:Nachricht entgegengenommen.
0100:Dialog beendet.


2. Variante : Es knallt schon im Konstruktor des HBCIHandler
Code

2026-09-18 05:02:55,040 CEST NpBankTool INFO cb.HBCI.log()
org.kapott.hbci.exceptions.HBCI_Exception: error while sending message to HBCI server
  at org.kapott.hbci.comm.CommPinTan.ping(CommPinTan.java:157)
  at org.kapott.hbci.comm.Comm.pingpong(Comm.java:72)
  at org.kapott.hbci.manager.HBCIKernelImpl.rawDoIt(HBCIKernelImpl.java:348)
  at org.kapott.hbci.manager.HBCIKernelImpl.rawDoIt(HBCIKernelImpl.java:176)
  at org.kapott.hbci.dialog.AbstractRawHBCIDialog.sendData(AbstractRawHBCIDialog.java:126)
  at org.kapott.hbci.dialog.AbstractRawHBCIDialog.execute(AbstractRawHBCIDialog.java:99)
  at org.kapott.hbci.manager.HBCIInstitute.fetchBPD(HBCIInstitute.java:276)
  at org.kapott.hbci.manager.HBCIInstitute.register(HBCIInstitute.java:373)
  at org.kapott.hbci.manager.HBCIHandler.registerInstitute(HBCIHandler.java:282)
  at org.kapott.hbci.manager.HBCIHandler.<init>(HBCIHandler.java:167)
  at org.kapott.hbci.manager.HBCIHandler.<init>(HBCIHandler.java:116)
  at cb.HBCI.run(HBCI.java:338)
  at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: javax.net.ssl.SSLException: (bad_record_mac) Tag mismatch!
  at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:133)
  at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:383)
  at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:326)
  at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:321)
  at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:123)
  at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1509)
  at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1424)
  at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:455)
  at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:426)
  at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:596)
  at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:190)
  at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:142)
  at org.kapott.hbci.comm.CommPinTan.ping(CommPinTan.java:147)
  ... 12 more
Caused by: javax.crypto.AEADBadTagException: Tag mismatch!
  at java.base/com.sun.crypto.provider.GaloisCounterMode$GCMDecrypt.doFinal(GaloisCounterMode.java:1493)
  at java.base/com.sun.crypto.provider.GaloisCounterMode.engineDoFinal(GaloisCounterMode.java:447)
  at java.base/javax.crypto.Cipher.doFinal(Cipher.java:2515)
  at java.base/sun.security.ssl.SSLCipher$T13GcmReadCipherGenerator$GcmReadCipher.decrypt(SSLCipher.java:1933)
  at java.base/sun.security.ssl.SSLSocketInputRecord.decodeInputRecord(SSLSocketInputRecord.java:264)
  at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:181)
  at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:111)
  ... 20 more
  org.kapott.hbci.manager.HBCIUtils.log(HBCIUtils.java:1637)

2026-09-18 05:02:55,159 CEST NpBankTool INFO cb.HBCI.log()
org.kapott.hbci.exceptions.CanNotParseMessageException: 
  at org.kapott.hbci.comm.Comm.pingpong(Comm.java:124)
  at org.kapott.hbci.manager.HBCIKernelImpl.rawDoIt(HBCIKernelImpl.java:348)
  at org.kapott.hbci.manager.HBCIKernelImpl.rawDoIt(HBCIKernelImpl.java:176)
  at org.kapott.hbci.dialog.AbstractRawHBCIDialog.sendData(AbstractRawHBCIDialog.java:126)
  at org.kapott.hbci.dialog.HBCIDialogEnd.sendData(HBCIDialogEnd.java:95)
  at org.kapott.hbci.dialog.AbstractRawHBCIDialog.execute(AbstractRawHBCIDialog.java:99)
  at org.kapott.hbci.manager.HBCIInstitute.fetchBPD(HBCIInstitute.java:283)
  at org.kapott.hbci.manager.HBCIInstitute.register(HBCIInstitute.java:373)
  at org.kapott.hbci.manager.HBCIHandler.registerInstitute(HBCIHandler.java:282)
  at org.kapott.hbci.manager.HBCIHandler.<init>(HBCIHandler.java:167)
  at org.kapott.hbci.manager.HBCIHandler.<init>(HBCIHandler.java:116)
  at cb.HBCI.run(HBCI.java:338)
  at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: org.kapott.hbci.exceptions.ParseErrorException: reststring in DialogEndAnonRes.MsgHead: 
  at org.kapott.hbci.protocol.MultipleSyntaxElements.initData(MultipleSyntaxElements.java:476)
  at org.kapott.hbci.protocol.MultipleSyntaxElements.init(MultipleSyntaxElements.java:539)
  at org.kapott.hbci.protocol.MultipleSEGs.init(MultipleSEGs.java:76)
  at org.kapott.hbci.protocol.factory.MultipleSEGsFactory.createMultipleSEGs(MultipleSEGsFactory.java:61)
  at org.kapott.hbci.protocol.MSG.parseNewChildContainer(MSG.java:187)
  at org.kapott.hbci.protocol.SyntaxElement.parseAndAppendNewChildContainer(SyntaxElement.java:457)
  at org.kapott.hbci.protocol.SyntaxElement.initData(SyntaxElement.java:388)
  at org.kapott.hbci.protocol.SyntaxElement.init(SyntaxElement.java:452)
  at org.kapott.hbci.protocol.MSG.init(MSG.java:171)
  at org.kapott.hbci.protocol.factory.MSGFactory.createMSG(MSGFactory.java:92)
  at org.kapott.hbci.protocol.factory.MSGFactory.createMSG(MSGFactory.java:78)
  at org.kapott.hbci.protocol.factory.MSGFactory.createMSG(MSGFactory.java:73)
  at org.kapott.hbci.comm.Comm.pingpong(Comm.java:121)
  ... 12 more
Caused by: org.kapott.hbci.exceptions.ParseErrorException: reststring in DialogEndAnonRes.MsgHead.SegHead: 
  at org.kapott.hbci.protocol.MultipleSyntaxElements.initData(MultipleSyntaxElements.java:476)
  at org.kapott.hbci.protocol.MultipleSyntaxElements.init(MultipleSyntaxElements.java:539)
  at org.kapott.hbci.protocol.MultipleDEGs.init(MultipleDEGs.java:104)
  at org.kapott.hbci.protocol.factory.MultipleDEGsFactory.createMultipleDEGs(MultipleDEGsFactory.java:61)
  at org.kapott.hbci.protocol.SEG.parseNewChildContainer(SEG.java:140)
  at org.kapott.hbci.protocol.SyntaxElement.parseAndAppendNewChildContainer(SyntaxElement.java:457)
  at org.kapott.hbci.protocol.SyntaxElement.initData(SyntaxElement.java:388)
  at org.kapott.hbci.protocol.SyntaxElement.init(SyntaxElement.java:452)
  at org.kapott.hbci.protocol.SEG.init(SEG.java:159)
  at org.kapott.hbci.protocol.factory.SEGFactory.createSEG(SEGFactory.java:60)
  at org.kapott.hbci.protocol.MultipleSEGs.parseAndAppendNewElement(MultipleSEGs.java:82)
  at org.kapott.hbci.protocol.MultipleSyntaxElements.initData(MultipleSyntaxElements.java:396)
  ... 24 more
Caused by: org.kapott.hbci.exceptions.ParseErrorException: reststring in DialogEndAnonRes.MsgHead.SegHead.code: 
  at org.kapott.hbci.protocol.MultipleSyntaxElements.initData(MultipleSyntaxElements.java:476)
  at org.kapott.hbci.protocol.MultipleSyntaxElements.init(MultipleSyntaxElements.java:539)
  at org.kapott.hbci.protocol.MultipleDEs.init(MultipleDEs.java:146)
  at org.kapott.hbci.protocol.factory.MultipleDEsFactory.createMultipleDEs(MultipleDEsFactory.java:61)
  at org.kapott.hbci.protocol.DEG.parseNewChildContainer(DEG.java:110)
  at org.kapott.hbci.protocol.SyntaxElement.parseAndAppendNewChildContainer(SyntaxElement.java:457)
  at org.kapott.hbci.protocol.SyntaxElement.initData(SyntaxElement.java:388)
  at org.kapott.hbci.protocol.SyntaxElement.init(SyntaxElement.java:452)
  at org.kapott.hbci.protocol.DEG.init(DEG.java:127)
  at org.kapott.hbci.protocol.factory.DEGFactory.createDEG(DEGFactory.java:60)
  at org.kapott.hbci.protocol.MultipleDEGs.parseAndAppendNewElement(MultipleDEGs.java:87)
  at org.kapott.hbci.protocol.MultipleSyntaxElements.initData(MultipleSyntaxElements.java:396)
  ... 35 more
Caused by: org.kapott.hbci.exceptions.ParseErrorException: error while creating syntax DE for DialogEndAnonRes.MsgHead.SegHead.code
  at org.kapott.hbci.datatypes.factory.SyntaxDEFactory.createSyntaxDE(SyntaxDEFactory.java:166)
  at org.kapott.hbci.protocol.DE.parseValue(DE.java:222)
  at org.kapott.hbci.protocol.DE.initData(DE.java:279)
  at org.kapott.hbci.protocol.DE.init(DE.java:296)
  at org.kapott.hbci.protocol.factory.DEFactory.createDE(DEFactory.java:61)
  at org.kapott.hbci.protocol.MultipleDEs.parseAndAppendNewElement(MultipleDEs.java:128)
  at org.kapott.hbci.protocol.MultipleSyntaxElements.initData(MultipleSyntaxElements.java:396)
  ... 46 more
  org.kapott.hbci.manager.HBCIUtils.log(HBCIUtils.java:1637)

2026-09-18 05:02:55,160 CEST NpBankTool INFO cb.HBCI.log()
dialog end failed: org.kapott.hbci.exceptions.ParseErrorException: error while creating syntax DE for DialogEndAnonRes.MsgHead.SegHead.code
  org.kapott.hbci.dialog.HBCIDialogEnd.checkResult(HBCIDialogEnd.java:122)

2026-09-18 05:02:55,160 CEST NpBankTool INFO cb.HBCI.log()
org.kapott.hbci.exceptions.ProcessException: dialog end failed
  at org.kapott.hbci.dialog.HBCIDialogEnd.checkResult(HBCIDialogEnd.java:124)
  at org.kapott.hbci.dialog.AbstractRawHBCIDialog.execute(AbstractRawHBCIDialog.java:109)
  at org.kapott.hbci.manager.HBCIInstitute.fetchBPD(HBCIInstitute.java:283)
  at org.kapott.hbci.manager.HBCIInstitute.register(HBCIInstitute.java:373)
  at org.kapott.hbci.manager.HBCIHandler.registerInstitute(HBCIHandler.java:282)
  at org.kapott.hbci.manager.HBCIHandler.<init>(HBCIHandler.java:167)
  at org.kapott.hbci.manager.HBCIHandler.<init>(HBCIHandler.java:116)
  at cb.HBCI.run(HBCI.java:338)
  at java.base/java.lang.Thread.run(Thread.java:840)
  org.kapott.hbci.manager.HBCIUtils.log(HBCIUtils.java:1637)

2026-09-18 05:02:55,160 CEST NpBankTool INFO cb.HBCI.log()
fetching BPD failed: javax.crypto.AEADBadTagException: Tag mismatch!
  org.kapott.hbci.manager.HBCIInstitute.fetchBPD(HBCIInstitute.java:287)


Meine Vermutung: Atruvia schickt sporadisch kryptographisch falsche Daten, das Verhalten von hbci4java ist völlig richtig.

hibiscus

Betreff:

Re: Atruvia hustet beim Saldenabruf

 ·  Gepostet: Heute um 11:17 Uhr  ·  #187969
Ja, man sieht, dass der JVM-Parameter gegriffen hat und als Cipher statt ChaCha20 nun GCM verwendet wurde. Und auch hier der Fehler entsteht. Es ist also nicht Cipher-abhängig.

NP-Portal

Betreff:

Re: Atruvia hustet beim Saldenabruf

 ·  Gepostet: Heute um 11:30 Uhr  ·  #187970
"bad_record_mac" deutet doch darauf hin, dass hier MAC-gesicherte Nachrichten kommen, wo sich beim Nachrechnen der MAC herausstellt, dass die MAC nicht zur Nachricht passt. Dann hat entweder irgend ein Finsterling versucht, die Nachricht zu verfälschen oder eine fehlerhafte Software auf Sender-Seite hat eine falsche MAC erzeugt.

Vielleicht liest ja hier wirklich jemand von Atruvia mit ...

hibiscus

Betreff:

Re: Atruvia hustet beim Saldenabruf

 ·  Gepostet: Heute um 13:39 Uhr  ·  #187972
Guter Hinweis. Die $KI ist basierend auf dem Stacktrace übrigens auch der Meinung, dass ein Fehler auf dem Proxy/Loadbalancer die wahrscheinlichste Ursache ist.

NP-Portal

Betreff:

Re: Atruvia hustet beim Saldenabruf

 ·  Gepostet: Heute um 13:53 Uhr  ·  #187973
Was tun? Ich denke jetzt schon drüber nach, wenn der Fehler auftritt, es nochmal zu probieren, dann klappt es ja vermutlich. Das ist aber die Sorte Lösung, die ich grauenhaft finde.

hibiscus

Betreff:

Re: Atruvia hustet beim Saldenabruf

 ·  Gepostet: Heute um 14:00 Uhr  ·  #187974
Als Workaround hätte ich jetzt auch keine andere Idee. Aber eigentlich müsste man von anderen Bankingprogrammen inzwischen auch mal vergleichbare Fehlermeldungen hören. Möglicherweise tritt es nur im Zusammenspiel mit einer unbekannten Besonderheit in den JVM-Implementierungen auf. Ich verwende Adoptium (https://adoptium.net/). Ich glaube, das ist inzwischen die am häufigsten genutzte.

Vielleicht mal https://aws.amazon.com/de/corretto/ oder https://www.azul.com/products/core/ probieren. Wobei die Frage ist, ob sich die Implementierungen an den entsprechenden Stellen überhaupt relevant unterscheiden.