From bfb458110c7083924fb9b641fd93eb47f81f1405 Mon Sep 17 00:00:00 2001 From: Eric Date: Fri, 8 Nov 2024 08:55:38 -0800 Subject: [PATCH] added protection against game-query-packet spam attack --- .efrocachemap | 88 +++++++++---------- CHANGELOG.md | 4 +- src/assets/ba_data/python/baenv.py | 2 +- .../classic/support/classic_app_mode.cc | 3 +- src/ballistica/shared/ballistica.cc | 2 +- 5 files changed, 51 insertions(+), 48 deletions(-) diff --git a/.efrocachemap b/.efrocachemap index 04e1122f..b6502856 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -4099,50 +4099,50 @@ "build/assets/windows/Win32/ucrtbased.dll": "2def5335207d41b21b9823f6805997f1", "build/assets/windows/Win32/vc_redist.x86.exe": "b08a55e2e77623fe657bea24f223a3ae", "build/assets/windows/Win32/vcruntime140d.dll": "865b2af4d1e26a1a8073c89acb06e599", - "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "c7f929ea72e941731448dd9eb1ff103c", - "build/prefab/full/linux_arm64_gui/release/ballisticakit": "69b54059d300e5af4649fc150daa745f", - "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "77a9cb940c68bf2f066b4816e98189ba", - "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "bc25c1ad96452b43ec0726bb44cbaa7d", - "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "c46135bff8bd128b9767d54a0fc1e3ef", - "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "f94f4c535a18c949325ce78c8436fc36", - "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "478b0ff5ea9a318c57e30afa0bff309c", - "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "bbc3c1084f79c764c7b795e0dd47791e", - "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "d80a116f33ea624fc255922e11b0e691", - "build/prefab/full/mac_arm64_gui/release/ballisticakit": "3edb93486fb92a57c8922cb069b56204", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "58b5347eaf3b22c3a289496561d91b82", - "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "515e4b481a8d836dd66c2c26d5a33683", - "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "760c4f2a06552388a6b2471153407c95", - "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "37fc4b306fdf241bf8f20b62b6522c07", - "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "7c6b02573764c31069d57b9830a49788", - "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "0a0fd92dabdd46ae8bd7cbe5eda1691a", - "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "2d5182a35948e4ab1f34c0db7abd04a8", - "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "88e3d75df70c5840b7574e8f4cb120f0", - "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "2e3b8abb31a64ac55ee0f299e44b9fc2", - "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "863ef09ad556227ca507d367db8808a8", - "build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "ffa1f56e340a4c8ff4d801eca23da2e2", - "build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "6dfd5c8a2af1118f3d756a279f95cda1", - "build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "ffa1f56e340a4c8ff4d801eca23da2e2", - "build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "6dfd5c8a2af1118f3d756a279f95cda1", - "build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "bb35138babeb07c358adc834f4ed8c2e", - "build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "973f0df433d467431d0aaf4fc7534446", - "build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "bb35138babeb07c358adc834f4ed8c2e", - "build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "973f0df433d467431d0aaf4fc7534446", - "build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "09d1ebc7496cae1ecc011dc771e2f452", - "build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "c18995f1322e4ec94cbeff05559521a7", - "build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "09d1ebc7496cae1ecc011dc771e2f452", - "build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "c18995f1322e4ec94cbeff05559521a7", - "build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "2152d332baa5a62c93f9e4e5bf9385bf", - "build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "d371f717382406b209143c33b843aaa4", - "build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "6fbb391cb33b40f51a3d5d9f275cc9b8", - "build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "d371f717382406b209143c33b843aaa4", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "3b1d54bd110f234116682501398ec585", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "bfa1cf5952ab524912de7142d11c528e", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "6bb5e44746dc0e90da484c1f2a641eb3", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "5dd796d8e611242b7bae209702465710", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "6d6b34cfb5c5a3e73115a4795b033e85", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "ec77777ec5b80017b0846c084cc29cbd", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "675df177441a2317bb1f8ee61478566b", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "1f28de0b14414abe131d1694c38f9f89", + "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "a6841d15af7004dd8d2d386a842b4709", + "build/prefab/full/linux_arm64_gui/release/ballisticakit": "20c661b438cde04f39290c2be62ea75e", + "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "183103bc7744a6be137f143462bca148", + "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "3a8b771b086d7f32bd0f77728eb8c887", + "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "a678e196b105a83509177ecb9a9a6d5a", + "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "37e331129561ac101082fce08ffbc486", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "0751de47e88db5d9ce64f58f8bb45762", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "92514f06443aa7dac0ad3d8988622976", + "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "a7ca029db29d4b8327ed503db48d85f2", + "build/prefab/full/mac_arm64_gui/release/ballisticakit": "36c37c66319acfd4b7743e62b7cb1e77", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "1604c4533a5ac25e8eecaa142dcc2f6e", + "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "702f21a77364207bd5d16db422eb86f7", + "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "1b43680783be88f487d7970b8aced715", + "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "4a731236b62ff6c55256a466a85f6ce9", + "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "e10dcd80e905db982cb27a25a95855c0", + "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "cf665bb5ff3b616c309890834f38cf50", + "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "7b8324461441b1e0357ee2b5964772f7", + "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "7442618d1ffd96cc4d68bdc30e62ad20", + "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "f1dc5326c6e36828a390d04e6c01ba8d", + "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "14071d8daeafb1ccbc11076ef6ac5774", + "build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "45b1203c8f48993bb49cb5ede270cbbf", + "build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "462796ac70e26fe008fc0930753e8036", + "build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "45b1203c8f48993bb49cb5ede270cbbf", + "build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "462796ac70e26fe008fc0930753e8036", + "build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "5be54ca87f60ffd6430108322a3b2751", + "build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "7f6452f6dea8fe19e32de7a7b1dc1fff", + "build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "5be54ca87f60ffd6430108322a3b2751", + "build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "7f6452f6dea8fe19e32de7a7b1dc1fff", + "build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "b028662de3f7a0343598bdc09b12cde8", + "build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "601828216b02db67da60ae8f0f75964e", + "build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "b028662de3f7a0343598bdc09b12cde8", + "build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "601828216b02db67da60ae8f0f75964e", + "build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "9da47d5c11e1ef092a181c59ff4b9e6c", + "build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "bb665a4035cd8ec9352d20c59c72031c", + "build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "9a326b4ecd0db9be46adf95955f8da6f", + "build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "bb665a4035cd8ec9352d20c59c72031c", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "0ece1fdeab74de4be599504a591d949f", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "079c882f0c6baa10f2ef7f42b087f617", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "abcf724404c5b00035caaf079fc050e6", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "452d56bc2ac76417a381e264ad125308", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "8b6394f42bcc5f399b0cd4c01a5fbd38", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "d1575db9537f7d238be33f78b024e02e", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "b542956867ac391f152b9f891449a655", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "ebf8090869fbc6f443a8eef83b1efebd", "src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c", "src/assets/ba_data/python/babase/_mgen/enums.py": "794d258d59fd17a61752843a9a0551ad", "src/ballistica/base/mgen/pyembed/binding_base.inc": "3a583e7e03bd4907b21adc3bf5729d15", diff --git a/CHANGELOG.md b/CHANGELOG.md index abbbddef..1f872f0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -### 1.7.37 (build 22082, api 9, 2024-11-07) +### 1.7.37 (build 22086, api 9, 2024-11-08) - Bumping api version to 9. As you'll see below, there's some UI changes that will require a bit of work for any UI mods to adapt to. If your mods don't touch UI stuff at all you can simply bump your api version and call it a day. @@ -145,6 +145,8 @@ - (build 22072) Added a 'Use insecure connections' option in settings -> advanced. This may make it possible to play from places such as Iran where ssl connections are being blocked. Do not enable this if you don't need to. +- (build 22085) Added protection against an attack consisting of spamming + invalid game-query packets. ### 1.7.36 (build 21944, api 8, 2024-07-26) - Wired up Tokens, BombSquad's new purchasable currency. The first thing these diff --git a/src/assets/ba_data/python/baenv.py b/src/assets/ba_data/python/baenv.py index 4f78222f..255f6aa4 100644 --- a/src/assets/ba_data/python/baenv.py +++ b/src/assets/ba_data/python/baenv.py @@ -53,7 +53,7 @@ if TYPE_CHECKING: # Build number and version of the ballistica binary we expect to be # using. -TARGET_BALLISTICA_BUILD = 22082 +TARGET_BALLISTICA_BUILD = 22086 TARGET_BALLISTICA_VERSION = '1.7.37' diff --git a/src/ballistica/classic/support/classic_app_mode.cc b/src/ballistica/classic/support/classic_app_mode.cc index bccae5c1..c2f985e7 100644 --- a/src/ballistica/classic/support/classic_app_mode.cc +++ b/src/ballistica/classic/support/classic_app_mode.cc @@ -1506,7 +1506,8 @@ void ClassicAppMode::HandleGameQuery(const char* buffer, size_t size, g_base->network_writer->PushSendToCall(msg_buffer, SockAddr(*from)); } else { - g_core->Log(LogName::kBaNetworking, LogLevel::kError, + // Log invalid packets only once to avoid weaponized log spam. + BA_LOG_ONCE(LogName::kBaNetworking, LogLevel::kError, "Got invalid game-query packet of len " + std::to_string(size) + "; expected 5."); } diff --git a/src/ballistica/shared/ballistica.cc b/src/ballistica/shared/ballistica.cc index 105437c4..6afe9a23 100644 --- a/src/ballistica/shared/ballistica.cc +++ b/src/ballistica/shared/ballistica.cc @@ -39,7 +39,7 @@ auto main(int argc, char** argv) -> int { namespace ballistica { // These are set automatically via script; don't modify them here. -const int kEngineBuildNumber = 22082; +const int kEngineBuildNumber = 22086; const char* kEngineVersion = "1.7.37"; const int kEngineApiVersion = 9;