HNHacker News
TopNewBestAskShowJobs

eyalitki

205 karma · joined February 15, 2019

Former vulnerability researcher (@EyalItkin). https://eyalitkin.wordpress.com/
submissionscomments
eyalitki··on Astra compressed 600Mb of audio into 20Kb
It didn't compress the data. It understood it is an artificial sound file, reverse engineered it, and then encoded the source if it instead of compressing the output
eyalitki··on GPT-6 Astra in code review: Gains, privacy, and cost
Comparison was done in the scope of coderabbit AI code review tool, which sadly makes it practically irrelevant.

My personal experience as a software engineer, and a former security researcher who did manual code audit, is that this code review tool has such poor results that it isn't worth the "noise" and friction it causes developers during C/I code review

eyalitki··on MRC Protocol: Supercomputer networking to accelerate large scale AI training
OpenAI has released the specifications of the Multipath Reliable Connection (MRC) protocol, and they are now publicly available as part of Open Compute Project (OCP) foundation.

MRC, which is already being used by OAI in production for training their models, aims to provide robust network utilization, allowing improved bandwidth while also efficiently handling network failures automatically at routing level.

eyalitki··on Copy Fail: 732 Bytes to Root on Every Major Linux Distribution
Dup of: https://news.ycombinator.com/item?id=47952181
eyalitki··on Copy Fail: 732 Bytes to Root on Every Major Linux Distribution
The presented LPE vulnerability was gradually introduced to the Linux Kernel through refactors and optimizations, each commit making sense on its own. The vulnerability itself was exploitable since 2017 (!) and also doubles as a container escape.
eyalitki··on [dead]
The employer doesn't "allow" them to take "time off" to fight as part of the IDF as reservists. This is the law in Israel, and has nothing to do with any employer whatsoever. During this time, Israel's National Insurance is reimbursing the employer for the salary of absent employees.
eyalitki··on Static Bundle Object: Modernizing Static Linking
OK, now I understood the gap. There is a technical limitation for relocation resolution when the relocation is against a different section. This means that for function sections we de-facto have no relocation finalization, only conversion of symbols from "global" to "local".

Hence, for a "file-sections" flag, we would only resolve relocations within a given file, but will leave intact relocations that cross the file boundary. Accordingly, this means that "function-sections" is identical to generating a static bundle object per original object file, and bundling them all together inside a .a archive.

eyalitki··on Static Bundle Object: Modernizing Static Linking
Correct me if i'm wrong, but wouldn't "file-sections" be identical to generating a static bundle object per original object file, and wrapping them all inside a .a archive?
eyalitki··on Static Bundle Object: Modernizing Static Linking
Thanks, appreciate your feedback. Crossing my fingers that my PR for GNU ld will go as planned.
eyalitki··on Static Bundle Object: Modernizing Static Linking
> Regarding --whole-archive, is it correct that it would be the default and you could opt-out of it with the function-sections/gc-sections combination?

This is the current intention, as implemented in the up-to-date draft: https://github.com/bminor/binutils-gdb/commit/99aef6ba8db670.... Please note however that one would no longer need to specify the "--whole-archive" flag, hence resolving issues with potential duplicate placement of the static library in the linker's CLI.

> Are there cases in which function-sections doesn't work (GCs too much) but a hypothetical "file-sections" does? For example cases in which the code relies on side effects of global constructors, but those would be left out by function-sections?

Good question. In the first article in this series I discussed issues with global constructors and was pretty much waved away, being told that code should not be written this way. One of the members of the ELF committee did suggest an alternative for handling it yet pretty much mentioned that there are still missing pieces that require handling for their proposal to work (https://groups.google.com/g/generic-abi/c/sT25-xfX9yc/m/NRo0...).

eyalitki··on Static Bundle Object: Modernizing Static Linking
There is nothing magical in resolving the local relocations. It is just that current static libraries (static archives of plain .o files) are produced directly using "ar" and don't even go through the linker... The changes to the linker so to apply the relocation finalization are less than 50 lines of code on top of the existing "ld -r" that creates a relocatable object (which despite its name, does not handle relocations).

The key point in the proposal for a static-bundle-object is to properly handle static libraries as linked objects, instead of as a bunch of plain .o files.

eyalitki··on Static Bundle Object: Modernizing Static Linking
OP here, it was also my opinion that the handling of static libraries should significantly be improved, and ld should have a "--static-lib" flag to properly handle it. Sadly, the ELF committee prefers a more subtle approach, hence even the proposed build of the static bundle object is done on top of the existing "ld -r", and the output is still wrapped inside a .a archive for compatibility.

I hope that once integrated to linkers the adoption of this new format will help convince that it deserves significantly better tooling.

eyalitki··on Static Bundle Object: Modernizing Static Linking
The article is a follow up for an earlier thread of mine that was published here a few months ago: https://news.ycombinator.com/item?id=44613791.

While the previous article presented the problem domain (multiple issues with using .a archives of plain object-code files for static libraries), this article presents the technical white paper that formally proposes an alternative format (accompanied by a POC on top of GNU's ld), as well as the gist of the ELF committee's discussion about the proposal.

Given the decision of the ELF committee, the format will be judged by adoption in practice and the feedback it receives from users. In other words, your opinion is more than welcome.

eyalitki··on We committed to a zero-bugs policy
In the world we have more than just bugs. We also have features, and refactoring and whatnot. Prioritization should be done across all tasks, so a bug could be "medium" but the team might not even work on bugs this week unless they are a show stopper.

Isn't this policy overruling the judgement of the team/product lead and focuses too much "only" on the bugs?

eyalitki··on We committed to a zero-bugs policy
It would be interesting to know how many of bugs are triaged and declared as "won't fix" in order to comply with the zero bugs policy.

Aside from that, while it might seem like an ideal engineering culture, I find it a bit extreme. The harsh SLA leaves little room for prioritization. Sometime the team is in fact working on a tough integration deadline, and medium-level bugs can wait for it to finish.

Going over my current list of bugs, some are minor and can wait to the last mile of the release and some will be resolved by new features we have in planning. I do aim to minimize the list of bugs and even my email inbox is based on a "zero inbox" policy. Still "zero" in this case is some small epsilon that is under control, and will go down to zero if no new bugs/emails arrive in the meantime. Call it a sliding window of epsilon width, but it almost never really reaches zero.

eyalitki··on Project Zero – Policy and Disclosure: 2025 Edition
Not sure what is the measurable metric here, and what will be considered a success in this trial period.

Propagating the fix downstream depends on the release cycles of all downward vendors. Giving them a heads up will help planning, but I doubt it will significantly impact the patching timeline.

It is highly more likely that companies will get stressed that the public knows they have a vulnerability, while they are still working to fix it. The pressure from these companies will probably shut this policy change down.

Also, will this policy apply also to Google's own products?

eyalitki··on The .a file is a relic: Why static archives were a bad idea all along
If someone needs a wrapper for a technology, that modifies the output it provides (like meson and bazel do), maybe there is an issue with said technology.

If pkg-config was never meant to be consumed directly, and was always meant to be post processed, then we are missing this post processing tool. Reinventing it in every compilation technology again and again is suboptimal, and at least Make and CMake do not have this post processing support.

eyalitki··on The .a file is a relic: Why static archives were a bad idea all along
Yeah, but when the product is an SDK, and customers develop on top of it (using their own toolchains) there isn't a lot left for me to play with.
eyalitki··on The .a file is a relic: Why static archives were a bad idea all along
1. "Advanced" compilation environments (meson) probably limit this ability to some extent. 2. Package managers (rpmbuild for instance) mandate build with debug symbols and they do the strip on their own so to create the debug packages. This limits our control of these steps.
eyalitki··on The .a file is a relic: Why static archives were a bad idea all along
Agree, there should be a prefix. But if 2 of my dependencies didn't use a prefix, why is it my fault when I fail to link against them?

Also, some managers object to a prefix within non-api functions, and frankly I can understand them.

eyalitki··on Adding 16 kb page size to Android
RHEL tried that in that past with 64KB on AARCH64, it led to MANY bugs all across the software stack, and they eventually reverted it - https://news.ycombinator.com/item?id=27513209.

I'm impressed by the effort on Google's side, yet I'll be surprised if this effort will pay off.

eyalitki··on CrowdStrike admits faulty content update wasn't tested on a real machine
Rapid Content Update file (detection signatures) are tested on the cloud side "Content Validator" which had a bug and didn't detect the issue with the faulty file. No where in the post mortem to CrowdStrike mention that these files are actually being tested on a real machine where the issue would have been detected. On top of that, they blame they software bug in the Content Validator.
eyalitki··on Lessons from Securing FreeRDP
FreeRDP's recent version (3.0.0) contains a new security mechanism aimed at blocking information-leak vulnerabilities. Said fix would have blocked more than 50% of the info-leak vulnerabilities discovered in the project since 2018, which are 28% of all vulnerabilities in FreeRDP

The article describes the technical background about the "Reverse RDP" attack vector, the software design flaw in FreeRDP and the security patch that was integrated into the project (and that took 2 years to get officially released to the public).

eyalitki··on 1M Cell Minesweeper
I have written one for that years ago in Java. It generates a map according to my first "click" and solves it deterministically. If it reaches a state in which it has to guess, it regenerates the map, and tries again.

It happens so fast behind the scenes that the user isn't aware of it, and it makes sure I won't have to guess anything when I play. Purely skill, no random.

eyalitki··on 1M Cell Minesweeper
Only on Ubuntu, in which the first click must be "0". On Windows it could for example be "2" and then you have to guess which of the adjacent 8 cells are the 2 mines...
eyalitki··on Fixing critical vulnerabilities in Apache's remote desktop
Here is the link to the full technical paper: https://research.checkpoint.com/2020/apache-guacamole-rce/
eyalitki··on IP-in-IP protocol routes arbitrary traffic by default
The printers get it from treck (HP OfficeJet and LaserJet use it), which probably means that other clients of this TCP/IP stack will be vulnerable as well. Although I can't figure out why this feature should be "on-by-default" in treck, as most clients probably don't need it activated.
eyalitki··on Safe-Linking – Eliminating a 20 year-old malloc() exploit primitive
Yes. We have 12 bits masking just the lower page, in addition to more than 10 bit above that. Chances to guess that correctly are VERY slim.
eyalitki··on Safe-Linking – Eliminating a 20 year-old malloc() exploit primitive
Too sad we had to wait 22 years to a similar change to find its way to the more widely used glibc / uclibc(-NG)
eyalitki··on Safe-Linking – Eliminating a 20 year-old malloc() exploit primitive
While ptmalloc/dlmalloc/tcmalloc use a single-linked list meta-data that is stored adjacent to the user buffers, in jemalloc there is no such meta-data. jemalloc's design stores the sensitive meta-data separately, thus removing the need to add a dedicated protection layer for it.
Page 1 of 2Next →