Skip to content

Commit b4642c8

Browse files
Merge pull request #597 from RUB-NDS/invalidCruveFix
Fixes and improvements to the invalid curve attack
2 parents 509c740 + 655ffb1 commit b4642c8

File tree

13 files changed

+33
-24
lines changed

13 files changed

+33
-24
lines changed

Attacks/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>de.rub.nds.tlsattacker</groupId>
66
<artifactId>TLS-Attacker</artifactId>
7-
<version>3.2</version>
7+
<version>3.3.0</version>
88
</parent>
99
<artifactId>Attacks</artifactId>
1010
<packaging>jar</packaging>

Attacks/src/main/java/de/rub/nds/tlsattacker/attacks/ec/oracles/RealDirectMessageECOracle.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ public boolean checkSecretCorrectnes(Point ecPoint, BigInteger secret) {
7676

7777
ECDHClientKeyExchangeMessage message = (ECDHClientKeyExchangeMessage) WorkflowTraceUtil.getFirstSendMessage(
7878
HandshakeMessageType.CLIENT_KEY_EXCHANGE, trace);
79+
message.prepareComputations();
7980

8081
// modify public point base X coordinate
8182
ModifiableBigInteger x = ModifiableVariableFactory.createBigIntegerModifiableVariable();
@@ -92,7 +93,6 @@ public boolean checkSecretCorrectnes(Point ecPoint, BigInteger secret) {
9293
ModifiableByteArray pms = ModifiableVariableFactory.createByteArrayModifiableVariable();
9394
byte[] explicitePMS = BigIntegers.asUnsignedByteArray(curve.getModulus().bitLength() / 8, secret);
9495
pms.setModification(ByteArrayModificationFactory.explicitValue(explicitePMS));
95-
message.prepareComputations();
9696
message.getComputations().setPremasterSecret(pms);
9797

9898
if (numberOfQueries % 100 == 0) {

Attacks/src/main/java/de/rub/nds/tlsattacker/attacks/impl/InvalidCurveAttacker.java

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -85,22 +85,18 @@ public Boolean isVulnerable() {
8585
EllipticCurve curve = CurveFactory.getCurve(config.getNamedGroup());
8686
Point point = Point.createPoint(config.getPublicPointBaseX(), config.getPublicPointBaseY(),
8787
config.getNamedGroup());
88-
for (int i = 0; i < getConfig().getProtocolFlows(); i++) {
89-
if (config.getPremasterSecret() != null) {
90-
premasterSecret = config.getPremasterSecret();
91-
} else {
92-
Point sharedPoint = curve.mult(new BigInteger("" + i + 1), point);
93-
premasterSecret = sharedPoint.getX().getData();
94-
if (premasterSecret == null) {
95-
premasterSecret = BigInteger.ZERO;
96-
}
97-
LOGGER.debug("PMS: " + premasterSecret.toString());
98-
}
88+
89+
int protocolFlows = getConfig().getProtocolFlows();
90+
if (config.getPremasterSecret() != null) {
91+
protocolFlows = 1;
92+
}
93+
94+
for (int i = 0; i < protocolFlows; i++) {
95+
setPremasterSecret(curve, i, point);
9996
try {
10097
WorkflowTrace trace = executeProtocolFlow();
10198
if (!WorkflowTraceUtil.didReceiveMessage(HandshakeMessageType.SERVER_HELLO, trace)) {
10299
LOGGER.info("Did not receive ServerHello. Check your config");
103-
104100
return null;
105101
}
106102
if (!WorkflowTraceUtil.didReceiveMessage(HandshakeMessageType.FINISHED, trace)) {
@@ -116,6 +112,19 @@ public Boolean isVulnerable() {
116112
return false;
117113
}
118114

115+
private void setPremasterSecret(EllipticCurve curve, int i, Point point) {
116+
if (config.getPremasterSecret() != null) {
117+
premasterSecret = config.getPremasterSecret();
118+
} else {
119+
Point sharedPoint = curve.mult(new BigInteger("" + (i + 1)), point);
120+
premasterSecret = sharedPoint.getX().getData();
121+
if (premasterSecret == null) {
122+
premasterSecret = BigInteger.ZERO;
123+
}
124+
LOGGER.debug("PMS: " + premasterSecret.toString());
125+
}
126+
}
127+
119128
private WorkflowTrace executeProtocolFlow() {
120129
Config tlsConfig = getTlsConfig();
121130
WorkflowTrace trace = new WorkflowConfigurationFactory(tlsConfig).createWorkflowTrace(WorkflowTraceType.HELLO,

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# TLS-Attacker
22

3-
[![release](https://img.shields.io/badge/Release-v3.0-blue.svg)](https://github.com/RUB-NDS/TLS-Attacker/releases)
3+
[![release](https://img.shields.io/badge/Release-v3.3.0-blue.svg)](https://github.com/RUB-NDS/TLS-Attacker/releases)
44
![licence](https://img.shields.io/badge/License-Apachev2-brightgreen.svg)
55
[![travis](https://travis-ci.org/RUB-NDS/TLS-Attacker.svg?branch=master)](https://travis-ci.org/RUB-NDS/TLS-Attacker)
66

TLS-Client/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>de.rub.nds.tlsattacker</groupId>
66
<artifactId>TLS-Attacker</artifactId>
7-
<version>3.2</version>
7+
<version>3.3.0</version>
88
</parent>
99
<name>TLS-Client</name>
1010
<artifactId>TLS-Client</artifactId>

TLS-Core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>de.rub.nds.tlsattacker</groupId>
66
<artifactId>TLS-Attacker</artifactId>
7-
<version>3.2</version>
7+
<version>3.3.0</version>
88
</parent>
99
<artifactId>TLS-Core</artifactId>
1010
<packaging>jar</packaging>

TLS-Forensics/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>de.rub.nds.tlsattacker</groupId>
66
<artifactId>TLS-Attacker</artifactId>
7-
<version>3.2</version>
7+
<version>3.3.0</version>
88
</parent>
99
<artifactId>TLS-Forensics</artifactId>
1010
<packaging>jar</packaging>

TLS-Mitm/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>de.rub.nds.tlsattacker</groupId>
66
<artifactId>TLS-Attacker</artifactId>
7-
<version>3.2</version>
7+
<version>3.3.0</version>
88
</parent>
99
<artifactId>TLS-Mitm</artifactId>
1010
<packaging>jar</packaging>

TLS-Server/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>de.rub.nds.tlsattacker</groupId>
66
<artifactId>TLS-Attacker</artifactId>
7-
<version>3.2</version>
7+
<version>3.3.0</version>
88
</parent>
99
<artifactId>TLS-Server</artifactId>
1010
<packaging>jar</packaging>

TraceTool/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>de.rub.nds.tlsattacker</groupId>
66
<artifactId>TLS-Attacker</artifactId>
7-
<version>3.2</version>
7+
<version>3.3.0</version>
88
</parent>
99
<artifactId>TraceTool</artifactId>
1010
<packaging>jar</packaging>

0 commit comments

Comments
 (0)