mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-09-22 22:58:03 +03:00
Xray-core: Forbid unencrypted outbounds on public Internet for VLESS and Trojan; Remove "none/zero/plain" for VMess and Shadowsocks (#6303)
https://github.com/XTLS/Xray-core/pull/5640#issuecomment-4611416512 https://github.com/XTLS/Xray-core/pull/6303#issuecomment-4668055274 --------- Co-authored-by: Meow <197331664+Meo597@users.noreply.github.com>
This commit is contained in:
@@ -85,8 +85,6 @@ func (a *Account) getCipher() (Cipher, error) {
|
||||
IVBytes: 32,
|
||||
AEADAuthCreator: createXChaCha20Poly1305,
|
||||
}, nil
|
||||
case CipherType_NONE:
|
||||
return NoneCipher{}, nil
|
||||
default:
|
||||
return nil, errors.New("Unsupported cipher.")
|
||||
}
|
||||
@@ -186,30 +184,6 @@ func (c *AEADCipher) DecodePacket(key []byte, b *buf.Buffer) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
type NoneCipher struct{}
|
||||
|
||||
func (NoneCipher) KeySize() int32 { return 0 }
|
||||
func (NoneCipher) IVSize() int32 { return 0 }
|
||||
func (NoneCipher) IsAEAD() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (NoneCipher) NewDecryptionReader(key []byte, iv []byte, reader io.Reader) (buf.Reader, error) {
|
||||
return buf.NewReader(reader), nil
|
||||
}
|
||||
|
||||
func (NoneCipher) NewEncryptionWriter(key []byte, iv []byte, writer io.Writer) (buf.Writer, error) {
|
||||
return buf.NewWriter(writer), nil
|
||||
}
|
||||
|
||||
func (NoneCipher) EncodePacket(key []byte, b *buf.Buffer) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (NoneCipher) DecodePacket(key []byte, b *buf.Buffer) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func passwordToCipherKey(password []byte, keySize int32) []byte {
|
||||
key := make([]byte, 0, keySize)
|
||||
|
||||
|
||||
@@ -31,7 +31,6 @@ const (
|
||||
CipherType_AES_256_GCM CipherType = 6
|
||||
CipherType_CHACHA20_POLY1305 CipherType = 7
|
||||
CipherType_XCHACHA20_POLY1305 CipherType = 8
|
||||
CipherType_NONE CipherType = 9
|
||||
)
|
||||
|
||||
// Enum value maps for CipherType.
|
||||
@@ -42,7 +41,6 @@ var (
|
||||
6: "AES_256_GCM",
|
||||
7: "CHACHA20_POLY1305",
|
||||
8: "XCHACHA20_POLY1305",
|
||||
9: "NONE",
|
||||
}
|
||||
CipherType_value = map[string]int32{
|
||||
"UNKNOWN": 0,
|
||||
@@ -50,7 +48,6 @@ var (
|
||||
"AES_256_GCM": 6,
|
||||
"CHACHA20_POLY1305": 7,
|
||||
"XCHACHA20_POLY1305": 8,
|
||||
"NONE": 9,
|
||||
}
|
||||
)
|
||||
|
||||
@@ -251,15 +248,14 @@ const file_proxy_shadowsocks_config_proto_rawDesc = "" +
|
||||
"\x05users\x18\x01 \x03(\v2\x1a.xray.common.protocol.UserR\x05users\x122\n" +
|
||||
"\anetwork\x18\x02 \x03(\x0e2\x18.xray.common.net.NetworkR\anetwork\"L\n" +
|
||||
"\fClientConfig\x12<\n" +
|
||||
"\x06server\x18\x01 \x01(\v2$.xray.common.protocol.ServerEndpointR\x06server*t\n" +
|
||||
"\x06server\x18\x01 \x01(\v2$.xray.common.protocol.ServerEndpointR\x06server*j\n" +
|
||||
"\n" +
|
||||
"CipherType\x12\v\n" +
|
||||
"\aUNKNOWN\x10\x00\x12\x0f\n" +
|
||||
"\vAES_128_GCM\x10\x05\x12\x0f\n" +
|
||||
"\vAES_256_GCM\x10\x06\x12\x15\n" +
|
||||
"\x11CHACHA20_POLY1305\x10\a\x12\x16\n" +
|
||||
"\x12XCHACHA20_POLY1305\x10\b\x12\b\n" +
|
||||
"\x04NONE\x10\tBd\n" +
|
||||
"\x12XCHACHA20_POLY1305\x10\bBd\n" +
|
||||
"\x1acom.xray.proxy.shadowsocksP\x01Z+github.com/xtls/xray-core/proxy/shadowsocks\xaa\x02\x16Xray.Proxy.Shadowsocksb\x06proto3"
|
||||
|
||||
var (
|
||||
|
||||
@@ -23,7 +23,6 @@ enum CipherType {
|
||||
AES_256_GCM = 6;
|
||||
CHACHA20_POLY1305 = 7;
|
||||
XCHACHA20_POLY1305 = 8;
|
||||
NONE = 9;
|
||||
}
|
||||
|
||||
message ServerConfig {
|
||||
|
||||
@@ -38,19 +38,6 @@ func TestUDPEncodingDecoding(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
},
|
||||
{
|
||||
Version: Version,
|
||||
Command: protocol.RequestCommandUDP,
|
||||
Address: net.LocalHostIP,
|
||||
Port: 1234,
|
||||
User: &protocol.MemoryUser{
|
||||
Email: "love@example.com",
|
||||
Account: toAccount(&Account{
|
||||
Password: "123",
|
||||
CipherType: CipherType_NONE,
|
||||
}),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, request := range testRequests {
|
||||
@@ -80,10 +67,6 @@ func TestUDPDecodingWithPayloadTooShort(t *testing.T) {
|
||||
Password: "password",
|
||||
CipherType: CipherType_AES_128_GCM,
|
||||
}),
|
||||
toAccount(&Account{
|
||||
Password: "password",
|
||||
CipherType: CipherType_NONE,
|
||||
}),
|
||||
}
|
||||
|
||||
for _, account := range testAccounts {
|
||||
|
||||
@@ -145,7 +145,6 @@ func (v *Validator) Get(bs []byte, command protocol.RequestCommand) (u *protocol
|
||||
} else {
|
||||
u = user
|
||||
ivLen = user.Account.(*MemoryAccount).Cipher.IVSize()
|
||||
// err = user.Account.(*MemoryAccount).CheckIV(bs[:ivLen]) // The IV size of None Cipher is 0.
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user