Forwarded from Техножрица 👩💻👩🏫👩🔧
Итак, небольшой ликбез по "научным закрытиям" - то есть, опровержениям и "отмене" научных исследований, которые на поверку оказались ошибочными или содержали подтасовки, а также список ресурсов, из которых можно об этих "закрытиях" узнавать.
—
В идеале заведомо ошибочные или недобросовестные научные статьи должны отсекаться ещё на этапе рецензирования, но из-за несовершенства системы это удаётся сделать далеко не всегда. Бывает и так, что серьёзные ошибки или фальсификации выявляются уже после публикации, и тогда уважающий себя научный журнал отзывает такой материал (это называется "ретракция", фактически "отмена" статьи). После этого публикация больше не считается действительной и не учитывается в наукометрии. Сам текст статьи, как правило, остаётся доступен на сайте, но сверху на него добавляют большой штамп со словами "RETRACTED", "WITHDRAWN", "WRONG PROOF", "WRONG DATA" и т.п.
Также случается, что статьи отзывают не из-за фактических ошибок или подтасовок, а из-за нарушения других принципов scientific integrity (научной добросовестности), например, плагиата или отсутствия добровольного информированного согласия пациентов на эксперимент. К сожалению, редакция журнала не всегда дает подробное объяснение того, почему именно статью отозвали, а ведь знать причины может быть важно, чтобы сделать правильные выводы. Однако, существует ряд ресурсов, которые систематически разбирают причины ретракций, а также указывают на ошибки и подтасовки в ещё не отозванных статьях:
1️⃣ Retraction Watch ( https://retractionwatch.com/ ) - пожалуй, самый известный блог на тему научных скандалов и ретракций, основанный научными журналистами Ivan Oransky и Adam Marcus. Кроме блога, авторы создали некоммерческую организацию под названием Center for Scientific Integrity и базу данных отозванных статей. В этой базе описана информация о том, где, когда и кем была опубликована каждая статья + краткие причины её отзыва. Любители анализа данных могут скачать её здесь: https://gitlab.com/crossref/retraction-watch-data/-/blob/main/retraction_watch.csv и посчитать по ней какие-нибудь интересные статистики.
2️⃣ Data Colada ( https://datacolada.org/ ) - блог, занимающийся выявлением статистических аномалий в данных из научных экспериментов - в основном, по behavioural science, - с целью разоблачений подтасовок. Пример - их анализ экспериментов печально известной Франчески Джино: https://datacolada.org/118 . Также ребята занимаются обнаружением p-hacking и других методологических проблем в исследованиях.
3️⃣ For Better Science ( https://forbetterscience.com/ ) - блог научного журналиста Leonid Schneider. Публикует журналистские расследования, как правило, связанные с научными скандалами в области медицины и биологии.
4️⃣ Science Integrity Digest ( https://scienceintegritydigest.com/ ) - блог микробиолога Elisabeth Bik с выявлением подлога в научных статьях, в основном, снова по биологии и медицине. Тут надо пояснить, что в таких статьях фотографии - например, клеток под микроскопом или результатов спектроскопии - нередко используются в качестве важного подтверждения правильности выводов. Так вот, Элизабет специализируется на выявлении фальсификаций в подобных изображениях - например, копипасты или следов использования фотошопа.
5️⃣ PubPeer ( https://pubpeer.com/ ) - ресурс, на котором можно рецензировать научные статьи пост-фактум уже после публикации, находить и анонимно описывать найденные в них ошибки и махинации. В основном посвящен статьям по биологии, медицине, но также рассматриваются статьи и по другим естественным наукам.
Что же касается моей научной области ( AI / ML / DL ), тут с отслеживанием ретракций всё сложно: специальных блогов на эту тему я не находила, да и сами ретракции случаются редко и проходят почти незамеченными. Максимум - где-нибудь в Proceedings появится пометка "withdrawn", да на https://openreview.net/ повезет найти обсуждение, из которого понятно, что пошло не так. И то не всегда: часть таких дискуссий остаётся закрытой. Надеюсь, эта ситуация улучшится в будущем.
#академический_ликбез #наука
—
В идеале заведомо ошибочные или недобросовестные научные статьи должны отсекаться ещё на этапе рецензирования, но из-за несовершенства системы это удаётся сделать далеко не всегда. Бывает и так, что серьёзные ошибки или фальсификации выявляются уже после публикации, и тогда уважающий себя научный журнал отзывает такой материал (это называется "ретракция", фактически "отмена" статьи). После этого публикация больше не считается действительной и не учитывается в наукометрии. Сам текст статьи, как правило, остаётся доступен на сайте, но сверху на него добавляют большой штамп со словами "RETRACTED", "WITHDRAWN", "WRONG PROOF", "WRONG DATA" и т.п.
Также случается, что статьи отзывают не из-за фактических ошибок или подтасовок, а из-за нарушения других принципов scientific integrity (научной добросовестности), например, плагиата или отсутствия добровольного информированного согласия пациентов на эксперимент. К сожалению, редакция журнала не всегда дает подробное объяснение того, почему именно статью отозвали, а ведь знать причины может быть важно, чтобы сделать правильные выводы. Однако, существует ряд ресурсов, которые систематически разбирают причины ретракций, а также указывают на ошибки и подтасовки в ещё не отозванных статьях:
1️⃣ Retraction Watch ( https://retractionwatch.com/ ) - пожалуй, самый известный блог на тему научных скандалов и ретракций, основанный научными журналистами Ivan Oransky и Adam Marcus. Кроме блога, авторы создали некоммерческую организацию под названием Center for Scientific Integrity и базу данных отозванных статей. В этой базе описана информация о том, где, когда и кем была опубликована каждая статья + краткие причины её отзыва. Любители анализа данных могут скачать её здесь: https://gitlab.com/crossref/retraction-watch-data/-/blob/main/retraction_watch.csv и посчитать по ней какие-нибудь интересные статистики.
2️⃣ Data Colada ( https://datacolada.org/ ) - блог, занимающийся выявлением статистических аномалий в данных из научных экспериментов - в основном, по behavioural science, - с целью разоблачений подтасовок. Пример - их анализ экспериментов печально известной Франчески Джино: https://datacolada.org/118 . Также ребята занимаются обнаружением p-hacking и других методологических проблем в исследованиях.
3️⃣ For Better Science ( https://forbetterscience.com/ ) - блог научного журналиста Leonid Schneider. Публикует журналистские расследования, как правило, связанные с научными скандалами в области медицины и биологии.
4️⃣ Science Integrity Digest ( https://scienceintegritydigest.com/ ) - блог микробиолога Elisabeth Bik с выявлением подлога в научных статьях, в основном, снова по биологии и медицине. Тут надо пояснить, что в таких статьях фотографии - например, клеток под микроскопом или результатов спектроскопии - нередко используются в качестве важного подтверждения правильности выводов. Так вот, Элизабет специализируется на выявлении фальсификаций в подобных изображениях - например, копипасты или следов использования фотошопа.
5️⃣ PubPeer ( https://pubpeer.com/ ) - ресурс, на котором можно рецензировать научные статьи пост-фактум уже после публикации, находить и анонимно описывать найденные в них ошибки и махинации. В основном посвящен статьям по биологии, медицине, но также рассматриваются статьи и по другим естественным наукам.
Что же касается моей научной области ( AI / ML / DL ), тут с отслеживанием ретракций всё сложно: специальных блогов на эту тему я не находила, да и сами ретракции случаются редко и проходят почти незамеченными. Максимум - где-нибудь в Proceedings появится пометка "withdrawn", да на https://openreview.net/ повезет найти обсуждение, из которого понятно, что пошло не так. И то не всегда: часть таких дискуссий остаётся закрытой. Надеюсь, эта ситуация улучшится в будущем.
#академический_ликбез #наука
👍6❤2🔥1
Forwarded from Neural Meduza
МВД предложило ввести уголовную ответственность за административную ответственность
🫡13😁6🌚2
#prog #rust хайлайты:
Реализовали derive через macro_rules!-макросы. Учитывая, насколько часто код, генерируемый derive, весьма простой, это позволит сильно упростить их написание, а также избежать выделения отдельного крейта только под процедурный макрос и, разумеется, не компилировать макрос в отдельную программу, которая общается с компилятором по RPC.
Реализовали derive через macro_rules!-макросы. Учитывая, насколько часто код, генерируемый derive, весьма простой, это позволит сильно упростить их написание, а также избежать выделения отдельного крейта только под процедурный макрос и, разумеется, не компилировать макрос в отдельную программу, которая общается с компилятором по RPC.
GitHub
Implement declarative (`macro_rules!`) derive macros (RFC 3698) by joshtriplett · Pull Request #145208 · rust-lang/rust
This is a draft for review, and should not be merged yet.
This is layered atop #145153 , and has
only two additional commits atop that. The first handles parsing and provides a
test for various par...
This is layered atop #145153 , and has
only two additional commits atop that. The first handles parsing and provides a
test for various par...
❤5👍4🤯2🔥1
Forwarded from Астрофизика и митенки
Вроде никакой конфиденциальной инфы тут нет, так что не могу не поделиться этой шедевральной идеей )
Контекст - активисты из разных уголков земного шара придумывают разные способы оставаться на видеосвязи с активистами из РФ
Контекст - активисты из разных уголков земного шара придумывают разные способы оставаться на видеосвязи с активистами из РФ
😁27🤣12
Обнаружил, что в коде по работе одно и то же поле примитивного целочисленного типа имеет разный смысл в зависимости от того, в каком типе хранится объемлющая структура.
#трудовыебудни #бомбёжкипост
#трудовыебудни #бомбёжкипост
😭17❤🔥2🤯1
Forwarded from Кресты на моей кукухе
Есть известный мем про отсутствие менеджмента памяти в ракетах, потому что она утекает дольше, чем ракета летит
Тут, видимо, новый кейс нашёлся
Тут, видимо, новый кейс нашёлся
🤡18🤣15😁3
#prog #rust #itsec #article
hyper HTTP/2 (Didn't) MadeYouReset
Протокол HTTP/2 позволяет открыть несколько стримов поверх одного соединения, каждый из которых может быть отменён (reset) любой стороной в любой момент. В некоторых случаях это нужно сделать обязательно — например, когда одна из сторон присылает невалидные сообщения. Это сделало возможным уязвимость, названную MadeYouReset. Суть её в том, что злоумышленник инициирует соединение с максимально возможным числом стримов, а затем постоянно их сбрасывает путём отправки невалидных фреймов. Обработка всех этих запросов и следование протоколу отнимает ресурсы сервера, что делает возможным Denial of service.
Эта уязвимость очень схожа с уязвимостью Rapid Reset, но, как описано в статье от Cloudflare, она несколько более хитрая. Rapid Reset полагается на явную отмену стримов клиентом через посылку фрейма RST_STREAM. MadeYouReset же работает через посылку невалидных фреймов, заставляя сервер парсить запросы и отменять стримы уже с его стороны.
Многие реализации HTTP/2 на практике делали работу по обработке запроса даже после закрытия стрима. Простые меры предосторожности против Rapid Reset, отслеживающие только фреймы RST_STREAM от клиента, бесполезны против MadeYouReset.
h2 (Rust-библиотека для работы с протоколом HTTP/2) оказалась не подвержена этой уязвимости. Почему? На это есть несколько причин.
Во-первых, в h2 несколько лет назад добавили меру предосторожности против абьюза клиентами отмен стримов. Именно, h2 отслеживает, сколько раз фрейм от клиента привёл к отмене стрима со стороны клиента, и когда это число достигает настраиваемого порога, закрывает соединение целиком. Это уже хорошая защита, которая на практике успешно защищала от Rapid Reset, но она была не безупречна — для одного типа фреймов (WINDOW_UPDATE) на одном из путей исполнения это число не обновлялось (разумеется, это поправили).
Во-вторых, h2 — библиотека, а не фреймворк, и всегда передаёт вызывающему коду информацию об отмене стрима. Разумеется, от этого мало толку, если вызывающий код на это никак не реагирует.
И это подводит нас к третьей причине: контекст использования. На практике h2 использовалась совместно с hyper, Rust-библиотеке для HTTP, абстрагированной от конкретной версии протокола. В коде hyper для стримов ожидается исполнение двух футур: поставляющей новые фреймы из стрима и обрабатывающей запросы из этого стрима. При получении отмены стрима hyper отменяет футуру, обрабатывающую запрос.
Итого: даже без закрытия бага с WINDOW_UPDATE h2 не был подвержен MadeYouReset. Разумеется, это во многом заслуга продуманной архитектуры h2 и hyper. Но также это и заслуга того, как реализована асинхронность в Rust: с ключевым методом Future::poll, позволяющим достаточно просто дожидаться исполнения нескольких футур одновременно, и встроенная поддержка отмены футур просто через вызов drop. Добиться подобной защиты от MadeYouReset в языке с активными тасками и явной в коде отменой (как, например, в C# или в Go с context.Done) значительно сложнее.
hyper HTTP/2 (Didn't) MadeYouReset
Протокол HTTP/2 позволяет открыть несколько стримов поверх одного соединения, каждый из которых может быть отменён (reset) любой стороной в любой момент. В некоторых случаях это нужно сделать обязательно — например, когда одна из сторон присылает невалидные сообщения. Это сделало возможным уязвимость, названную MadeYouReset. Суть её в том, что злоумышленник инициирует соединение с максимально возможным числом стримов, а затем постоянно их сбрасывает путём отправки невалидных фреймов. Обработка всех этих запросов и следование протоколу отнимает ресурсы сервера, что делает возможным Denial of service.
Эта уязвимость очень схожа с уязвимостью Rapid Reset, но, как описано в статье от Cloudflare, она несколько более хитрая. Rapid Reset полагается на явную отмену стримов клиентом через посылку фрейма RST_STREAM. MadeYouReset же работает через посылку невалидных фреймов, заставляя сервер парсить запросы и отменять стримы уже с его стороны.
Многие реализации HTTP/2 на практике делали работу по обработке запроса даже после закрытия стрима. Простые меры предосторожности против Rapid Reset, отслеживающие только фреймы RST_STREAM от клиента, бесполезны против MadeYouReset.
h2 (Rust-библиотека для работы с протоколом HTTP/2) оказалась не подвержена этой уязвимости. Почему? На это есть несколько причин.
Во-первых, в h2 несколько лет назад добавили меру предосторожности против абьюза клиентами отмен стримов. Именно, h2 отслеживает, сколько раз фрейм от клиента привёл к отмене стрима со стороны клиента, и когда это число достигает настраиваемого порога, закрывает соединение целиком. Это уже хорошая защита, которая на практике успешно защищала от Rapid Reset, но она была не безупречна — для одного типа фреймов (WINDOW_UPDATE) на одном из путей исполнения это число не обновлялось (разумеется, это поправили).
Во-вторых, h2 — библиотека, а не фреймворк, и всегда передаёт вызывающему коду информацию об отмене стрима. Разумеется, от этого мало толку, если вызывающий код на это никак не реагирует.
И это подводит нас к третьей причине: контекст использования. На практике h2 использовалась совместно с hyper, Rust-библиотеке для HTTP, абстрагированной от конкретной версии протокола. В коде hyper для стримов ожидается исполнение двух футур: поставляющей новые фреймы из стрима и обрабатывающей запросы из этого стрима. При получении отмены стрима hyper отменяет футуру, обрабатывающую запрос.
Итого: даже без закрытия бага с WINDOW_UPDATE h2 не был подвержен MadeYouReset. Разумеется, это во многом заслуга продуманной архитектуры h2 и hyper. Но также это и заслуга того, как реализована асинхронность в Rust: с ключевым методом Future::poll, позволяющим достаточно просто дожидаться исполнения нескольких футур одновременно, и встроенная поддержка отмены футур просто через вызов drop. Добиться подобной защиты от MadeYouReset в языке с активными тасками и явной в коде отменой (как, например, в C# или в Go с context.Done) значительно сложнее.
seanmonstar
hyper HTTP/2 (Didn't) MadeYouReset
A new HTTP/2 attack vector was disclosed today called MadeYouReset. hyper’s h2 is negligably affected, weathering the attack well. But, we have provided patc...
❤8👍7🔥4