1.2, имятакое (?), 11:23, 29/03/2021 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
вот это не понял.
"0177.0.0.1", которое соответствует "127.0.0.1"
поясните пожалуйста
| |
|
2.4, Аноним (4), 11:28, 29/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
0177 - восьмиричная система счисления
переводим в 10-ю и получаем 127
| |
2.5, A.Stahl (ok), 11:30, 29/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
0 в начале числа по традиции у программистов означает 8-ричную систему счисления. 177 в восьмеричной равно 127 в десятичной.
| |
|
3.22, Lex (??), 12:15, 29/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
Странная традиция
Для интереса посмотрел що в жс как записывается( все начинается с нуля, далее исчисление и само число что гораздо универсальней и наглядней ):
Бинарные - 0b11 ( 3 )
Восьмеричные - 0o11 ( 9 )
Шестнадцатеричные - 0x11 ( 17 )
Хотя и начинание с нуля тож работает - число воспринимается как восьмеричное.. и даже если тех нулей с десяток )
| |
|
4.27, userd (ok), 12:49, 29/03/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
Кто писал на C, тот привык.
C появился на PDP-11, там восьмеричная система счисления была много популярнее шестнадцатеричной.
| |
|
|
2.6, Аноним (6), 11:33, 29/03/2021 [^] [^^] [^^^] [ответить]
| –1 +/– |
$ ping 0177.0.0.1
PING 0177.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.042 ms
| |
|
3.7, Леголас (ok), 11:39, 29/03/2021 [^] [^^] [^^^] [ответить]
| +8 +/– |
- поясните пожалуйста, почему это равно этому
- да, смотри, это равно этому
| |
3.23, userd (ok), 12:19, 29/03/2021 [^] [^^] [^^^] [ответить]
| +8 +/– |
Для полноты картины нужно попинговать 0x7F.0.0.1 , 0x7f.1 , 0x7F000001 , 017700000001 и 2130706433 .
| |
|
|
|
4.75, Ыыы (??), 17:22, 29/03/2021 [^] [^^] [^^^] [ответить]
| +3 +/– |
Почему католические программисты путают Хеллоуин и Рождество?
Потому, что Oct 31 === Dec 25
| |
|
|
|
1.8, Аноним (8), 11:39, 29/03/2021 [ответить] [﹢﹢﹢] [ · · · ]
| –5 +/– |
Было большой ошибкой додуматься до включение восьмеричных чисел в спецификации IP-адресов, которые было очевидно чо в будущем никто читать не будет?
| |
|
2.9, Аноним (9), 11:42, 29/03/2021 [^] [^^] [^^^] [ответить]
| –2 +/– |
Авторы спеков "так видят", пойми. Скажи спасибо еще римские цифры не добавили.
| |
2.66, Аноним (66), 16:36, 29/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
Обезьянки взяли спеки, и написали "по спекам", как привыкли.
В реальном мире всё оказалось гораздо неожиданнее.
| |
2.76, Аноним (76), 17:26, 29/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
> было большой ошибкой додуматься...
Ваша способность выявлять ошибки вызывает сомнения
| |
|
1.16, Аноним (66), 12:01, 29/03/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Зевнул.
Уже даже не смешно.
Норма для ноды, руби и прочих растов с композерами.
| |
|
2.20, Аноним (15), 12:12, 29/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
Дело не в ноде, а коде inet_aton на C который изначально нарушал стандарт.
| |
|
|
|
5.42, 1 (??), 13:47, 29/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
de facto standard
Это и не стандарт вовсе, а "так принято".
А стандарт допускает и десятеричное число в качестве ip адреса.
| |
5.45, Аноним (45), 13:58, 29/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
Какие еще стандарты, там галимотья на кофескрипте конвертящая тупостроки. Афтор небось и не слышал ни про какие inet_aton() за все свои 14 лет жизни.
| |
|
6.49, Аноним (15), 14:03, 29/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
Если задача стояла конвертить строки, то логично что работа идёт в т числе и со строками. Не вижу в этом проблему. А то что автор не смотрел на inet_aton это хорошо, потому что это как раз с него не надо брать пример.
| |
|
7.63, Аноним (-), 15:42, 29/03/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
Ну еслиб тебя не роняли в детстве на голову так часто - то смог бы осилить айпи адресацию и понимал как это работает, а не нёс пургу в духе "если там строки то в том числе и строки"
| |
|
|
|
|
3.52, Онаним (?), 14:23, 29/03/2021 [^] [^^] [^^^] [ответить]
| +4 +/– |
Дело снова в отсутствии полноценной валидации входных данных.
То есть в кривых руках.
А заодно - в избыточном доверии к стороннему говнокоду.
То есть снова в кривых руках.
| |
|
|
1.17, Анонимно Аффтор (?), 12:03, 29/03/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
Магия и остроумие костыликов: сделать просто - договориться о волшебном значении нуля в начале строки.
А чё, простое и остроумное решение. И сколько ж встречено таких кроильщиков...
Кроилово ведёт к попадалово.
| |
|
2.60, ryoken (ok), 15:12, 29/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
Вы таки будете смеяться, но если в вендовой командной строке так что-то попинговать - будет соответствие RFC и пинги поедут на 8-ричный адрес :D.
| |
|
1.18, Аноним (15), 12:07, 29/03/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +8 +/– |
Вот они удивятся когда узнают что можно не только восьмеричные писать, но и 16-ричные
ping 0x7F.0x0.0x0.0x1
| |
|
|
3.61, Аноним (61), 15:13, 29/03/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
Нее. Тот ящик на всех подействовал. И был чужим.
А эти сами себе всё делают.
| |
|
|
1.19, Аноним (15), 12:11, 29/03/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Я пробежал указанный документ. Из него следует что это не особо и то и вина разрабов пакета.
>> So far we've seen two parallel versions of IPv4 address textual
syntax.
То есть сделали по стандарту. А вот этих стандартов куча и даже больше.
| |
1.26, Посылатель нахер (?), 12:46, 29/03/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Забавно смотреть как поступи ничего из себя не представляющие обитатели местного зоопарка хейтят платформу столь сильно оказывающую влияние на развитие индустриии. Уязвимость даже не в самой платформе а в пакете, пакетный менеджер работает аналогично всем остальным в других платформах. Но нет, побомбить то принято именно с ноды. В святом расте то такое уж точно недопустимо.
| |
|
2.39, Аноним (25), 13:44, 29/03/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
Уж больно есть что плохого в платформе.
Да. Повлияла на индустрию. Но мир внутри мог бы быть лучше. Увы и ах.
| |
2.41, Аноним (41), 13:45, 29/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
На всех (двух) нормальных языках в природе. Пакетный менеджер так не работает (да его и нет)
| |
|
1.28, mymedia (ok), 13:03, 29/03/2021 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
> Исследователи лишь предполагают, что владельцы 87.0.0.1 (Telecom Italia) и 177.0.0.1 (Brasil Telecom) имеют возможность обойти ограничение доступа к 127.0.0.1.
Не только эти два указанных реальных IP могут обойти проверку. Получается, любые адреса в данных подсетях размера /8, могут обращаться к локалхосту за node-netmask. Так 0177.0177.0177.0177 превратится в 127.127.127.127, а это как раз локальный хост.
| |
|
2.103, B (?), 19:24, 30/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
А на авторов либы гоните. Тут свою гений RUSTут!
| |
|
1.38, onanim (?), 13:35, 29/03/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
> В приложении при оценке правил доступа не будет определена тождественность с "127.0.0.1" и ресурс будет загружен с "0177.0.0.1" (фактически с 127.0.0.1), несмотря на запрет обращения к адресам loopback-интерфейса.
это проблема не в node, а вообще во всех языках.
проверка if ($IP != "127.0.0.1") выдаст true для строки вида "0177.0.0.1", но по факту подключение-то будет к 127.0.0.1, а не к 177.0.0.1.
| |
|
2.46, Аноним (46), 13:58, 29/03/2021 [^] [^^] [^^^] [ответить]
| +4 +/– |
> проверка if ($IP != "127.0.0.1") выдаст true
и для строки вида "127.0.00.1". Сравнивать строковые представления ip адресов — проблема явно не в языках.
| |
2.47, onanim (?), 13:59, 29/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
... так что проверять юзерский инпут нужно не только на неравность строке "127.0.0.1", но и что это вообще является IP адресом, а не неведомой бинарной фигнёй с кавычками и спецсимволами.
| |
|
3.73, пох. (?), 17:08, 29/03/2021 [^] [^^] [^^^] [ответить]
| +2 +/– |
А чо не так-то в моем юзерском инпуте ? Как по мне - норм же ж ip-адрес?!
linups:~> ping 0x7f.0.0.1
PING 0x7f.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.036 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.064 ms
^C
--- 0x7f.0.0.1 ping statistics ---
Всегда ж так пингую
Вот додуматься сравнивать их как СТРОКИ - это действительно какие-то уникальные грибы у этих ребят уродились. Не надо таких жрать, а то так и останешься поехавшим.
Ну и просто прекрасно именно то, что такой костылекод используется примерно везде, где они работают с адресами.
Помнити npm leftpad!
| |
|
|
1.40, Аноним (41), 13:44, 29/03/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +3 +/– |
Скажу крамольную, на данном сайте вещь. Но даже сам великий и ужасный Раст не помог бы защититься от такой уязвимости.
| |
|
2.43, Аноним (36), 13:50, 29/03/2021 [^] [^^] [^^^] [ответить]
| –3 +/– |
Писатели на расте никогда бы не написали код, который строится на допущении, что IP-адрес - это десятичные числа, разделенные точками.
Нужно быть совсем непроцарапанной макакой, чтобы срезать ведущий ноль. Это в языке, где встроенный Number парсит восьмеричные по признаку ведущего нуля и во всех книгах про это в самом начале. То есть либу писали люди, не знающие даже сам джаваскрипт. Это нонсенс.
Надо конкретных программистам волчий билет за такое выдать.
| |
|
3.77, Аноним (77), 18:34, 29/03/2021 [^] [^^] [^^^] [ответить]
| +2 +/– |
println!("{:?}", "0177.0.0.1".parse::<Ipv4Addr>());
Ok(177.0.0.1)
| |
3.86, Аноним (92), 20:02, 29/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
0177.0.0.1 даже стандартная регулирочка из всех книжек по программированию не пропустит. Никто не ожидает что в адресе будут какие то восьмиричные числа.
Кроме анонимных опеннет экспертов, конечно.
| |
|
2.44, 1 (??), 13:51, 29/03/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
не вижу в этом уязвимости.
Просто нормальное поведение преобразования адреса.
А кто там себе напридумывал, что локалхост это "^127" пусть обламаются.
| |
2.84, Аноним (92), 19:54, 29/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
Точно? У rust есть поддержка up адресов в стандартной библиотеке. Вроде бы. У java точно есть. У питона даже маски есть. А у js нет ничего
| |
|
3.94, пох. (?), 10:02, 30/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
Дык, вот такая поддержка у них и есть: "Проблеме подвержена стандартная библиотека std::net::Ipv4Addr языка Rust"
Ну с чего бы хрустерам уметь думать в голову. Они ж туда едят!
| |
|
|
1.48, Аноним (15), 14:01, 29/03/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
В защиту JS могу сказать, что багованный код написан был НЕ на JavaScript.
| |
1.56, Аноним (56), 14:50, 29/03/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Если бы это была уязвимость, то обновление вышло бы как 1.0.7.
А это явно фича, и пакет теперь 2.0.0.
| |
|
2.58, gogo (?), 14:57, 29/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
Точно. Чтобы у те, кто хочет оставить себе этот баг в системе, могли не апдейтить зависимость на версию 2.х
| |
|
3.70, Аноним (68), 16:51, 29/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
Так может у них код приложения именно так и написан чтобы эта либа принимала восьмеричные значения. Чтобы ничего не ломать надо повышать версию.
| |
|
|
|
|
3.81, Аноним (-), 19:28, 29/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
Базовая, либсишная функция со времен появления айпи. Откуда его вдруг за пол века стало больше ?
| |
|
|
1.78, Аноним (78), 19:00, 29/03/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
ребят, а как же говорили что Линукс, ГНУ, Опенсурс - это надежно, нет бакдоров, суперсекюрити, потому что тысячи глаз смотрят код, он открытый, это гарантирует, что он в тысячу раз лучшее и надежнее, чем закрытый Уиндоус. Как же так? Неужели врали все эти десятки лет??!
| |
|
2.91, Аноним (91), 23:52, 29/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
Тысячи глаз и нашли. Обновись просто. В npm выводит предупреждения, если есть vulnerable
| |
2.99, Аноним (-), 15:05, 30/03/2021 [^] [^^] [^^^] [ответить]
| +/– |
> ребят, а как же говорили что Линукс, ГНУ, Опенсурс - это надежно, нет бакдоров, суперсекюрити, потому что тысячи глаз смотрят код,
никто такого не говорил. на гнуорг вообще обратное написано - что каждый думает что сосед проверит и в итоге все пользуются дырявым кодом.
| |
|
|
2.98, Noname (??), 13:53, 30/03/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
Так задача ж была валидатор писать, а не знать.
Чё не так- то?
| |
|
1.82, Аноним (82), 19:30, 29/03/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Это даже уязвимостью назвать нельзя.
Библиотека явно предполагает на входе IP-адрес в десятичном формате, и не заявляет, что занимается валидацией. Не провалидировал - сам себе буратино. Типичный gargabe in - garbage out.
| |
|
2.93, пох. (?), 09:42, 30/03/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Библиотека явно предполагает на входе IP-адрес в десятичном формате,
и плевать что ее единственная задача - преобразование форматов.
Ну оок.
Давайте подключим еще пятнадцать библиотек чтобы провалидировать. И потом в них будем искать увизгвимости отдельно.
Ведь на ноде-макакс нельзя самому в три строки уместить то же самое, надо обязательно втянуть список зависимостей на две страницы.
И продолжим сравнивать ip адреса как строки.
| |
|
1.95, PnD (??), 11:43, 30/03/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Что-то мне никак не хватает воображения представить эксплоит.
Типовая задача "прикрыть что-то ACL" предполагает что какие надо CIDR пишет администратор системы. Да хоть "0x7F000000/8", если его библиотека такое переваривает (и коллеги не поколотят).
С другой стороны, адрес прилетевшего v4-пакета прописан 32 битами без знака. И ничего там не нахимичишь. Если только "сетевой" порядок с "обычным" перепутать. Но такие ляпы уже́ много лет как покрыты тестами.
Что остаётся? Системы, в которых пользователю разрешено что-то заслать на адрес. E.g. looking-glass. Но там адрес можно вколотить любой "by design" и это не дыра.
Или какие-то наркоманы конвертят uint32 в oct-строку и потом её сравнивают? Тогда "огласите весь список, пожалуйста".
| |
1.97, Чолхан (ok), 13:49, 30/03/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
где-то в глубине используемых шелловых сценариев для таких случаев применяется sipcalc - он не дает себя обмануть:
Address must be given in the "standard" dotted quad format, ie.: xxx.xxx.xxx.xxx with an optional netmask that can be given in three different ways:
- CIDR, ex. /n where n >= 0 <= 32.
- Dotted quad, ex. xxx.xxx.xxx.xxx.
- A hex value, ex 0xnnnnnnnn or nnnnnnnn.
sipcalc 0177.0.0.1
-[int-ipv4 : 0177.0.0.1] - 0
-[ERR : Unable to retrieve interface information]
-
-------
sipcalc 127.0.0.1
-[ipv4 : 127.0.0.1] - 0
[CIDR]
Host address - 127.0.0.1
Host address (decimal) - 2130706433
Host address (hex) - 7F000001
Network address - 127.0.0.1
Network mask - 255.255.255.255
Network mask (bits) - 32
Network mask (hex) - FFFFFFFF
Broadcast address - 127.0.0.1
Cisco wildcard - 0.0.0.0
Addresses in network - 1
Network range - 127.0.0.1 - 127.0.0.1
-
| |
1.104, Chupaka (ok), 11:25, 31/03/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
> Например, атакующий может запросить ресурс, указав значение "0177.0.0.1", которое в десятичном представлении соответствует "127.0.0.1"
А, напомните, почему атакующий не может просто запросить ресурс, указав значение "127.0.0.1", раз уж ему дали разрешение указывать значения?..
| |
|